Files
Operator 0799bfbae8 Initial public portfolio release
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.
2026-06-23 16:12:14 -04:00

172 lines
6.2 KiB
YAML

---
# AWS Attack Box Deployment Playbook
# Based on attk-box-setup but optimized for AWS deployment
- name: Deploy Attack Box on AWS
hosts: localhost
connection: local
gather_facts: false
vars_files:
- vars.yaml
vars:
ansible_python_interpreter: "{{ ansible_playbook_python }}"
deployment_type: "attack_box"
attack_box_name: "{{ attack_box_name | default('a-' + deployment_id) }}"
attack_box_type: "{{ attack_box_type | default('kali') }}"
aws_region: "{{ aws_region | default(aws_region_choices | random) }}"
instance_type: "{{ aws_instance_type | default('t2.medium') }}"
ssh_key_name: "attack-box-{{ deployment_id }}"
# Attack box AMI mapping (use Kali Linux AMIs)
attack_box_ami_map:
us-east-1: "{{ kali_ami_map['us-east-1'] | default('ami-061b17d332829ab1c') }}"
us-east-2: "{{ kali_ami_map['us-east-2'] | default('ami-061b17d332829ab1c') }}"
us-west-1: "{{ kali_ami_map['us-west-1'] | default('ami-061b17d332829ab1c') }}"
us-west-2: "{{ kali_ami_map['us-west-2'] | default('ami-061b17d332829ab1c') }}"
tasks:
- name: Validate AWS credentials
assert:
that:
- aws_access_key is defined and aws_access_key != ""
- aws_secret_key is defined and aws_secret_key != ""
fail_msg: "AWS credentials are required"
- name: Debug attack box deployment
debug:
msg: "Deploying {{ attack_box_type }} attack box on AWS in {{ aws_region }}"
- name: Set attack box AMI
set_fact:
attack_box_ami: "{{ attack_box_ami_map[aws_region] | default(attack_box_ami_map['us-east-1']) }}"
- name: Generate SSH key pair for attack box
ec2_key:
name: "{{ ssh_key_name }}"
region: "{{ aws_region }}"
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
state: present
register: ec2_key_result
- name: Save private key locally
copy:
content: "{{ ec2_key_result.key.private_key }}"
dest: "~/.ssh/{{ ssh_key_name }}"
mode: '0600'
when: ec2_key_result.key.private_key is defined
- name: Create security group for attack box
ec2_group:
name: "attack-box-sg-{{ deployment_id }}"
description: "Security group for attack box {{ deployment_id }}"
region: "{{ aws_region }}"
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
rules:
- proto: tcp
ports:
- 22
cidr_ip: "{{ operator_ip | default('0.0.0.0/0') }}/32"
rule_desc: "SSH access from operator IP"
- proto: tcp
ports:
- 80
- 443
cidr_ip: 0.0.0.0/0
rule_desc: "HTTP/HTTPS for tools"
rules_egress:
- proto: all
cidr_ip: 0.0.0.0/0
tags:
Name: "attack-box-sg-{{ deployment_id }}"
DeploymentID: "{{ deployment_id }}"
Type: "attack-box"
register: security_group
- name: Launch attack box EC2 instance
ec2:
key_name: "{{ ssh_key_name }}"
group: "{{ security_group.group_name }}"
instance_type: "{{ instance_type }}"
image: "{{ attack_box_ami }}"
region: "{{ aws_region }}"
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
wait: true
count: 1
instance_tags:
Name: "{{ attack_box_name }}"
DeploymentID: "{{ deployment_id }}"
Type: "attack-box"
Environment: "{{ attack_box_type }}"
user_data: |
#!/bin/bash
# Update system
apt-get update
apt-get upgrade -y
# Install additional tools if needed
{% if attack_box_type == 'kali' %}
# Kali already has most tools
apt-get install -y nmap curl wget git
{% else %}
# Install basic pentest tools for other distros
apt-get install -y nmap curl wget git python3-pip
{% endif %}
# Set hostname
echo "{{ attack_box_name }}" > /etc/hostname
hostname "{{ attack_box_name }}"
# Create deployment info
mkdir -p /root/deployment-info
cat > /root/deployment-info/info.txt << EOF
Deployment ID: {{ deployment_id }}
Attack Box Name: {{ attack_box_name }}
Attack Box Type: {{ attack_box_type }}
Region: {{ aws_region }}
Instance Type: {{ instance_type }}
SSH Key: {{ ssh_key_name }}
EOF
register: ec2_result
- name: Wait for SSH to be available
wait_for:
host: "{{ ec2_result.instances[0].public_ip }}"
port: 22
delay: 60
timeout: 300
- name: Display attack box information
debug:
msg:
- "Attack box deployed successfully!"
- "Instance ID: {{ ec2_result.instances[0].id }}"
- "Public IP: {{ ec2_result.instances[0].public_ip }}"
- "Private IP: {{ ec2_result.instances[0].private_ip }}"
- "SSH Command: ssh -i ~/.ssh/{{ ssh_key_name }} root@{{ ec2_result.instances[0].public_ip }}"
- name: Save deployment information
copy:
content: |
# Attack Box Deployment Information
Instance ID: {{ ec2_result.instances[0].id }}
Public IP: {{ ec2_result.instances[0].public_ip }}
Private IP: {{ ec2_result.instances[0].private_ip }}
SSH Key: ~/.ssh/{{ ssh_key_name }}
SSH Command: ssh -i ~/.ssh/{{ ssh_key_name }} root@{{ ec2_result.instances[0].public_ip }}
Region: {{ aws_region }}
Instance Type: {{ instance_type }}
AMI: {{ attack_box_ami }}
Security Group: {{ security_group.group_name }}
dest: "logs/attack_box_{{ deployment_id }}_info.txt"
- name: Set attack box facts for other playbooks
set_fact:
attack_box_instance_id: "{{ ec2_result.instances[0].id }}"
attack_box_public_ip: "{{ ec2_result.instances[0].public_ip }}"
attack_box_private_ip: "{{ ec2_result.instances[0].private_ip }}"
attack_box_security_group: "{{ security_group.group_name }}"