diff --git a/tasks/configure_c2.yml b/tasks/configure_c2.yml index 1de4cec..235a801 100644 --- a/tasks/configure_c2.yml +++ b/tasks/configure_c2.yml @@ -156,15 +156,6 @@ owner: root group: root -- name: Remove any existing Sliver or Havoc - file: - path: "{{ item }}" - state: absent - with_items: - - "/usr/local/bin/sliver" - - "/usr/local/bin/sliver-server" - ignore_errors: yes - - name: Install Havoc C2 Framework shell: "/root/Tools/havoc_installer.sh" args: diff --git a/tasks/configure_c2_with_havoc.yml b/tasks/configure_c2_with_havoc.yml deleted file mode 100644 index 4f9fe9d..0000000 --- a/tasks/configure_c2_with_havoc.yml +++ /dev/null @@ -1,251 +0,0 @@ ---- -# Common tasks for configuring C2 server with Havoc C2 and EDR evasion -# Shared across all providers - -- name: Update apt cache - apt: - update_cache: yes - -- name: Set a custom MOTD - template: - src: "../templates/motd-linode.j2" - dest: /etc/motd - owner: root - group: root - mode: '0644' - -- name: Install base utilities and tools via apt - apt: - name: - - git - - wget - - curl - - unzip - - python3-pip - - python3-venv - - tmux - - pipx - - nmap - - tcpdump - - hydra - - john - - hashcat - - sqlmap - - gobuster - - dirb - - enum4linux - - dnsenum - - seclists - - responder - - golang - - proxychains - - tor - - crackmapexec - - jq - - build-essential - - zip - - unzip - - postfix - - certbot - - opendkim - - opendkim-tools - - dovecot-core - - dovecot-imapd - - dovecot-pop3d - - dovecot-sieve - - dovecot-managesieved - - yq - - build-essential - - mingw-w64 - - nasm - - cmake - - ninja-build - - python3-pip - - libfontconfig1 - - libglu1-mesa-dev - - libgtest-dev - - libspdlog-dev - - libboost-all-dev - - libncurses5-dev - - libgdbm-dev - - libssl-dev - - libreadline-dev - - libffi-dev - - libsqlite3-dev - - libbz2-dev - - mesa-common-dev - - qtbase5-dev - - qtchooser - - qt5-qmake - - qtbase5-dev-tools - - libqt5websockets5 - - libqt5websockets5-dev - state: present - -- name: Create directories for operational scripts - file: - path: "{{ item }}" - state: directory - mode: '0700' - owner: root - group: root - with_items: - - /root/Tools - - /root/Tools/beacons - - /root/Tools/payloads - -- name: Copy operational scripts - copy: - src: "{{ item }}" - dest: "/root/Tools/{{ item | basename }}" - mode: '0700' - owner: root - group: root - with_items: - - ../files/clean-logs.sh - - ../files/secure-exit.sh - - ../files/havoc_installer.sh - -- name: Copy post-install script - copy: - src: "../files/post_install_c2.sh" - dest: "/root/Tools/post_install_c2.sh" - mode: '0700' - owner: root - group: root - -- name: Copy port randomization script - copy: - src: "../files/randomize_ports.sh" - dest: "/root/Tools/randomize_ports.sh" - mode: '0700' - owner: root - group: root - -- name: Create post-install instructions - copy: - content: | - ================================================================ - C2ingRed Post-Installation Instructions - ================================================================ - - To complete your setup with SSL certificates, run: - /root/Tools/post_install_c2.sh - - This script will guide you through: - - Setting up Let's Encrypt certificates - - Starting required services - - Setting up the redirector (if desired) - - Displaying DNS configuration recommendations - - For enhanced OPSEC, you can also randomize ports: - /root/Tools/randomize_ports.sh - - Run these after you've configured your DNS records to point to this server. - dest: "/root/POST_INSTALL_INSTRUCTIONS.txt" - mode: '0644' - owner: root - group: root - -- name: Install Havoc C2 Framework - shell: "/root/Tools/havoc_installer.sh" - args: - creates: /opt/havoc/Teamserver/teamserver - register: havoc_installation_result - -- name: Display Havoc installation output - debug: - var: havoc_installation_result.stdout_lines - when: havoc_installation_result.stdout_lines is defined - -- name: Create Havoc payload generation script - template: - src: "../templates/generate_havoc_payloads.sh.j2" - dest: "/root/Tools/generate_havoc_payloads.sh" - mode: '0700' - owner: root - group: root - -- name: Create Linux loader script template - template: - src: "../templates/linux_loader.sh.j2" - dest: "/root/Tools/linux_loader.template" - mode: '0644' - owner: root - group: root - -- name: Create Windows PowerShell loader template - template: - src: "../templates/windows_loader.ps1.j2" - dest: "/root/Tools/windows_loader.template" - mode: '0644' - owner: root - group: root - -- name: Create beacon server script from template - template: - src: "../templates/serve-havoc-payloads.sh.j2" - dest: "/root/Tools/serve-beacons.sh" - mode: '0700' - owner: root - group: root - vars: - redirector_subdomain: "{{ redirector_subdomain | default('cdn') }}" - domain: "{{ domain }}" - redirector_port: "{{ redirector_port | default('443') }}" - -- name: Generate Havoc payloads - shell: "/root/Tools/generate_havoc_payloads.sh" - args: - creates: /opt/havoc/payloads/manifest.json - register: payload_generation_result - environment: - PATH: "{{ ansible_env.PATH }}:/usr/local/bin" - ignore_errors: yes - -- name: Display payload generation output - debug: - var: payload_generation_result.stdout_lines - when: payload_generation_result.stdout_lines is defined - -- name: Start payload server - shell: | - nohup /root/Tools/serve-beacons.sh > /dev/null 2>&1 & - args: - executable: /bin/bash - register: beacon_server_result - -- name: Create NGINX configuration fragment for redirector - template: - src: "../templates/redirector-havoc-fragment.j2" - dest: "/root/Tools/redirector-config.conf" - mode: '0644' - owner: root - group: root - vars: - c2_ip: "{{ ansible_host }}" - redirector_domain: "{{ redirector_subdomain }}.{{ domain }}" - -- name: Create Havoc usage guide - template: - src: "../templates/havoc-guide.j2" - dest: "/root/havoc-guide.txt" - mode: '0600' - owner: root - group: root - vars: - c2_ip: "{{ ansible_host }}" - redirector_domain: "{{ redirector_subdomain }}.{{ domain }}" - -- name: Set up cron job for log cleaning if zero-logs enabled - cron: - name: "Clean logs" - minute: "0" - hour: "*/6" - job: "/root/Tools/clean-logs.sh > /dev/null 2>&1" - when: zero_logs | bool - -# Include integrated tracker tasks if requested -- name: Include integrated tracker setup - include_tasks: "configure_integrated_tracker.yml" - when: setup_integrated_tracker | default(false) | bool \ No newline at end of file diff --git a/tasks/security_hardening.yml b/tasks/security_hardening.yml index ccb6843..94588e0 100644 --- a/tasks/security_hardening.yml +++ b/tasks/security_hardening.yml @@ -79,19 +79,19 @@ - /root/Tools/beacons - /root/Tools/payloads -- name: Create Sliver service file +- name: Create Havoc service file copy: content: | [Unit] - Description=Sliver C2 Server + Description=Havoc C2 Server After=network.target [Service] Type=simple User=root Group=root - WorkingDirectory=/root/.sliver - ExecStart=/usr/local/bin/sliver-server daemon + WorkingDirectory=/root/Tools/havoc/Teamserver + ExecStart=/root/Tools/havoc/Teamserver/havoc server -d Restart=always RestartSec=10 @@ -106,7 +106,7 @@ [Install] WantedBy=multi-user.target - dest: /etc/systemd/system/sliver.service + dest: /etc/systemd/system/havoc.service mode: '0644' owner: root group: root @@ -128,9 +128,9 @@ - name: Configure and start beacon server shell: | - sed -i "s/C2_HOST=.*/C2_HOST=\"{{ ansible_host }}\"/g" /root/Tools/serve-beacons.sh - chmod +x /root/Tools/serve-beacons.sh + sed -i "s/C2_HOST=.*/C2_HOST=\"{{ ansible_host }}\"/g" /root/Tools/serve-havoc-payloads.sh + chmod +x /root/Tools/serve-havoc-payloads.sh # Check if beacon server is already running - if ! pgrep -f "/root/Tools/serve-beacons.sh" > /dev/null; then - nohup /root/Tools/serve-beacons.sh > /dev/null 2>&1 & + if ! pgrep -f "/root/Tools/serve-havoc-payloads.sh" > /dev/null; then + nohup /root/Tools/serve-havoc-payloads.sh > /dev/null 2>&1 & fi \ No newline at end of file