98103466d8
Sanitized version of red team infrastructure automation platform. Operational content (implant pipelines, lures, credential capture) replaced with documented stubs. Architecture and infrastructure automation code intact.
92 lines
3.6 KiB
YAML
92 lines
3.6 KiB
YAML
---
|
|
# tasks/port_randomization.yml
|
|
# Task file to randomize ports for C2 infrastructure with improved host-based service management
|
|
|
|
- name: Create port randomization script
|
|
copy:
|
|
src: "../files/randomize_ports.sh"
|
|
dest: "/root/Tools/randomize_ports.sh"
|
|
mode: '0700'
|
|
owner: root
|
|
group: root
|
|
|
|
- name: Execute port randomization script
|
|
shell: |
|
|
cd /root/Tools && ./randomize_ports.sh
|
|
register: randomize_result
|
|
when: randomize_ports | default(true) | bool
|
|
|
|
- name: Display port randomization results
|
|
debug:
|
|
msg: "{{ randomize_result.stdout_lines }}"
|
|
when: randomize_ports | default(true) | bool
|
|
|
|
- name: Store randomized ports in variables
|
|
shell: |
|
|
PORT_CONFIG="/root/Tools/port_config.json"
|
|
if [ -f "$PORT_CONFIG" ]; then
|
|
cat "$PORT_CONFIG"
|
|
else
|
|
echo '{"error": "Port configuration not found"}'
|
|
fi
|
|
register: port_config_result
|
|
when: randomize_ports | default(true) | bool
|
|
|
|
- name: Set port fact variables
|
|
set_fact:
|
|
randomized_http_port: "{{ (port_config_result.stdout | from_json).http_c2_port | default(8888) }}"
|
|
randomized_https_port: "{{ (port_config_result.stdout | from_json).https_c2_port | default(443) }}"
|
|
randomized_mtls_port: "{{ (port_config_result.stdout | from_json).mtls_c2_port | default(31337) }}"
|
|
randomized_shell_handler_port: "{{ (port_config_result.stdout | from_json).shell_handler_port | default(shell_handler_port) }}"
|
|
when: randomize_ports | default(true) | bool and port_config_result.rc == 0
|
|
|
|
- name: Update shell handler configuration with randomized port
|
|
replace:
|
|
path: "/root/Tools/shell-handler/persistent-listener.sh"
|
|
regexp: "LISTEN_PORT=.*"
|
|
replace: "LISTEN_PORT={{ randomized_shell_handler_port | default(shell_handler_port) }}"
|
|
when: randomize_ports | default(true) | bool and port_config_result.rc == 0
|
|
|
|
- name: Update shell handler service with randomized port
|
|
lineinfile:
|
|
path: "/etc/systemd/system/shell-handler.service"
|
|
regexp: 'Environment="LISTEN_PORT='
|
|
line: 'Environment="LISTEN_PORT={{ randomized_shell_handler_port | default(shell_handler_port) }}"'
|
|
insertafter: '^\\[Service\\]'
|
|
when: randomize_ports | default(true) | bool and port_config_result.rc == 0
|
|
|
|
# Improved service management - checks for service existence before restarting
|
|
- name: Determine services to restart based on host type
|
|
set_fact:
|
|
services_to_restart: []
|
|
when: randomize_ports | default(true) | bool and port_config_result.rc == 0
|
|
|
|
- name: Check if Havoc service exists
|
|
stat:
|
|
path: "/etc/systemd/system/havoc.service"
|
|
register: havoc_service_stat
|
|
when: randomize_ports | default(true) | bool and port_config_result.rc == 0
|
|
|
|
- name: Add Havoc to services list if it exists
|
|
set_fact:
|
|
services_to_restart: "{{ services_to_restart + ['havoc'] }}"
|
|
when: randomize_ports | default(true) | bool and port_config_result.rc == 0 and havoc_service_stat.stat.exists | default(false)
|
|
|
|
- name: Check if shell-handler service exists
|
|
stat:
|
|
path: "/etc/systemd/system/shell-handler.service"
|
|
register: shell_handler_service_stat
|
|
when: randomize_ports | default(true) | bool and port_config_result.rc == 0
|
|
|
|
- name: Add shell-handler to services list if it exists
|
|
set_fact:
|
|
services_to_restart: "{{ services_to_restart + ['shell-handler'] }}"
|
|
when: randomize_ports | default(true) | bool and port_config_result.rc == 0 and shell_handler_service_stat.stat.exists | default(false)
|
|
|
|
- name: Reload and restart services
|
|
systemd:
|
|
daemon_reload: yes
|
|
name: "{{ item }}"
|
|
state: restarted
|
|
with_items: "{{ services_to_restart }}"
|
|
when: randomize_ports | default(true) | bool and port_config_result.rc == 0 and services_to_restart | length > 0 |