0799bfbae8
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.
115 lines
4.3 KiB
YAML
115 lines
4.3 KiB
YAML
---
|
|
# AWS Shared Infrastructure Deployment Playbook
|
|
|
|
- name: Deploy shared AWS infrastructure
|
|
hosts: localhost
|
|
gather_facts: false
|
|
connection: local
|
|
vars_files:
|
|
- vars.yaml
|
|
vars:
|
|
# Deployment identifiers
|
|
deployment_id: "{{ deployment_id | default('') }}"
|
|
infra_name: "infra-{{ deployment_id }}"
|
|
# Region settings
|
|
deployment_region: "{{ aws_region | default(aws_region_choices | random) }}"
|
|
# Check if using split regions (C2 and redirector in different regions)
|
|
split_regions: "{{ c2_region is defined and redirector_region is defined and c2_region != redirector_region }}"
|
|
# Check if only deploying one component (C2 only or redirector only)
|
|
single_component: "{{ c2_only | default(false) | bool or redirector_only | default(false) | bool }}"
|
|
|
|
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: Skip shared infrastructure if using split regions
|
|
meta: end_play
|
|
when: split_regions | bool
|
|
|
|
- name: Print infrastructure deployment info
|
|
debug:
|
|
msg: "Deploying shared infrastructure in {{ deployment_region }}"
|
|
when: not split_regions | bool and not single_component | bool
|
|
|
|
- name: Check if deploying just C2 or just redirector
|
|
debug:
|
|
msg: "Skipping shared infrastructure for single component deployment ({{ 'C2 only' if c2_only | default(false) else 'Redirector only' }})"
|
|
when: single_component | bool
|
|
|
|
- name: Skip shared infrastructure for single component deployment
|
|
meta: end_play
|
|
when: single_component | bool
|
|
|
|
- name: Create shared VPC
|
|
amazon.aws.ec2_vpc_net:
|
|
name: "{{ infra_name }}-vpc"
|
|
cidr_block: "10.0.0.0/16"
|
|
region: "{{ deployment_region }}"
|
|
tags:
|
|
Name: "{{ infra_name }}-vpc"
|
|
deployment_id: "{{ deployment_id }}"
|
|
state: present
|
|
register: vpc_result
|
|
when: not split_regions | bool and not single_component | bool
|
|
|
|
- name: Store shared VPC ID
|
|
set_fact:
|
|
shared_vpc_id: "{{ vpc_result.vpc.id }}"
|
|
when: not split_regions | bool and not single_component | bool and vpc_result is defined
|
|
|
|
- name: Create internet gateway
|
|
amazon.aws.ec2_vpc_igw:
|
|
vpc_id: "{{ shared_vpc_id }}"
|
|
region: "{{ deployment_region }}"
|
|
state: present
|
|
tags:
|
|
Name: "{{ infra_name }}-igw"
|
|
deployment_id: "{{ deployment_id }}"
|
|
register: igw_result
|
|
when: not split_regions | bool and not single_component | bool and shared_vpc_id is defined
|
|
|
|
- name: Create subnet
|
|
amazon.aws.ec2_vpc_subnet:
|
|
vpc_id: "{{ shared_vpc_id }}"
|
|
cidr: "10.0.1.0/24"
|
|
region: "{{ deployment_region }}"
|
|
az: "{{ deployment_region }}a"
|
|
map_public: yes
|
|
tags:
|
|
Name: "{{ infra_name }}-subnet"
|
|
deployment_id: "{{ deployment_id }}"
|
|
register: subnet_result
|
|
when: not split_regions | bool and not single_component | bool and shared_vpc_id is defined
|
|
|
|
- name: Create routing table
|
|
amazon.aws.ec2_vpc_route_table:
|
|
vpc_id: "{{ shared_vpc_id }}"
|
|
region: "{{ deployment_region }}"
|
|
tags:
|
|
Name: "{{ infra_name }}-rtb"
|
|
deployment_id: "{{ deployment_id }}"
|
|
routes:
|
|
- dest: "0.0.0.0/0"
|
|
gateway_id: "{{ igw_result.gateway_id }}"
|
|
subnets:
|
|
- "{{ subnet_result.subnet.id }}"
|
|
register: route_table_result
|
|
when: not split_regions | bool and not single_component | bool and shared_vpc_id is defined and igw_result is defined and subnet_result is defined
|
|
|
|
- name: Write infrastructure info to state file
|
|
copy:
|
|
content: |
|
|
{
|
|
"vpc_id": "{{ shared_vpc_id }}",
|
|
"subnet_id": "{{ subnet_result.subnet.id }}",
|
|
"igw_id": "{{ igw_result.gateway_id }}",
|
|
"region": "{{ deployment_region }}",
|
|
"deployment_id": "{{ deployment_id }}"
|
|
}
|
|
dest: "infrastructure_state.json"
|
|
mode: "0600"
|
|
when: not split_regions | bool and not single_component | bool and shared_vpc_id is defined and subnet_result is defined and igw_result is defined |