Laboratório de Pen-Testing AWS
Laboratório de PenTest implantado como IaC com Terraform na AWS.
Implanta uma instância Kali Linux acessível via ssh & VPN wireguard.
Instâncias vulneráveis em uma subnet privada.
NOTA:
- Ids definidos apenas para a região "eu-west-1"
- Para outras regiões, o id da ami kali deve ser especificado e o id do metasploitable3 (após construí-lo)
Histórico de Mudanças
- [2022-01-30]
- definir sudoers para permitir sudo nmap para o grupo de usuários
- grupo de segurança permite conexões de entrada nas portas 8800-8899 (para reverse-shells)
- [2021-12-26]
- definir automaticamente a primeira zona de disponibilidade
- novas amis metasploitable criadas com packer
- integração inicial da vulnerabilidade log4jshell na máquina metasploitable3 (mas não utilizável)
- [2021-12-22]
- Packer para construir imagens metasploitable (veja ./metasploitable3/)
- correções no script user_data do kali
- Implantação em us-east-1 validada
- [2021-12-09]
- Procurar pelo id da ami Kali-linux mais recente em vez de fornecer ids
- template_file do terraform substituído por estar obsoleto
- windows server ami (a fazer: instalar um software vulnerável)
- [2021-09-15]
- Correções na criação de múltiplos peers do wireguard
- Aplicativo Infection Monkey integrado no Kali Linux
- Atualização para nova versão Kali 2021.3
- [2021-06-02] IDs AMI alterados para usar Kali 2021.2
- [2021-03-10] Usar nova versão Kali 2021.1
Diagrama

Componentes
- Instância Kali (chave privada salva em kali.pem)
- Serviço Wireguard VPN: arquivo cliente client_vpn.wg
- Acessível via ssh/scp
- Sub-rede Pública 10.0.0.5/24
- Infection Monkey rodando na porta 5000 (apenas acessível via vpn ou ssh)
- Máquina vulnerável "Metasploitable" (a construção da ami é pública)
- Sub-rede Privada 10.0.1.5/24
- Mais laboratórios/máquinas/docker vulneráveis (a fazer)
Funcionalidades Adicionadas
- Gerenciamento de usuários
- Criar automaticamente usuários não privilegiados na instância kali com rsa
- Arquivo cliente VPN Wireguard por usuário
- Registro de auditoria de linha de comando no syslog
- auditd habilitado com chaves sudo_log e users_log para auditar ações de usuário (veja também comando ausearch)
- A fazer: Encaminhar auditoria de terminal para CloudWatch ou um Bucket S3 com política de escrita única
Como Fazer
- Requisitos:
- Terraform CLI guia de instalação
- AWS CLI guia de instalação
- $PATH configurado para AWS CLI e Terraform
- Conta AWS e configure credenciais via aws cli:
aws configure
- Assinatura Kali Linux no AWS Marketplace
- Imagem AMI Metasploitable3 previamente construída (AMI pública disponível para região eu-west-1) veja
Implantar
- Habilitar/desabilitar instâncias vulneráveis a serem implantadas definindo
0 ou 1 em variables.tf:
variable "deploment-control" {
type = map
default = {
#"instance" = 0 or 1, to disable or enable
"metasploitable3" = 1
"dvca" = 0
}
description = "Control which EC2 instances are deployed, 0 for none or 1"
}
- Use terraform para implantar infraestrutura
terraform init
terraform plan
terraform apply -auto-approve
Saídas
As saídas do Terraform mostrarão as seguintes entradas:
- comando de conexão ssh para o usuário kali (root via sudo)
- arquivo cliente wireguard para o usuário kali será recuperado automaticamente do servidor kali
- comando scp para recuperar o arquivo cliente wireguard (apenas no caso do comando local-exec do terraform definido falhar)
- Para cada um dos usuários normais criados na instância Kali
- Arquivo de chave privada para conexão ssh
- Arquivo cliente Wireguard para conectividade VPN
Uso
Conecte-se ao Kali via ssh ou wireguard:
- SSH: (Apenas linha de comando) Use a chave privada gerada automaticamente (veja a saída do terraform)
KALI_IP=<KALI_IP> # configure kali public ip
ssh -i kali.pem -o StrictHostKeyChecking=no -o IdentitiesOnly=yes kali@${KALI_IP}
- Wireguard: Conecte sua instância kali local via wireguard (veja o arquivo gerado client_vpn.wg)
KALI_IP=<KALI_IP> # configure kali public ip
scp -i kali.pem -o StrictHostKeyChecking=no IdentitiesOnly=yes kali@${KALI_IP}:/home/kali/client_vpn.wg .
####
(local_kali)$ sudo apt-get install –y wireguard
(local_kali)$ sudo gedit /etc/wireguard/wg0.conf # copy contents of client_vpn.wg
(local_kali)$ sudo chmod 700 /etc/wireguard/wg0.conf
(local_kali)$ sudo wg-quick up wg0
(local_kali)$ ping 10.0.0.5 # test connectivity with kali instance in AWS
Destruir
terraform destroy -auto-approve
Referências