AWS Pen-Testing Laboratory
Лаборатория пен-тестинга, развернутая как IaC с помощью Terraform на AWS.
Развёртывает экземпляр Kali Linux, доступный через SSH и Wireguard VPN.
Уязвимые экземпляры в приватной подсети.
ПРИМЕЧАНИЕ:
- Идентификаторы (Ids) определены только для региона "eu-west-1"
- Для других регионов необходимо указать AMI ID Kali, а также ID Metasploitable3 (после его сборки)
Журнал изменений
- [2022-01-30]
- Установлены права sudoers для разрешения sudo nmap для группы пользователей
- Группа безопасности разрешает входящие подключения к портам 8800-8899 (для обратных оболочек)
- [2021-12-26]
- Автоматически устанавливается первая зона доступности
- Созданы новые AMI Metasploitable с помощью Packer
- Начальная интеграция уязвимости log4jshell в машину Metasploitable3 (но она не используется)
- [2021-12-22]
- Packer для сборки образов Metasploitable (см. ./metasploitable3/)
- Исправления в скрипте user_data Kali
- Развертывание в us-east-1 подтверждено
- [2021-12-09]
- Поиск последнего AMI ID Kali Linux вместо предоставления идентификаторов
- terraform template_file заменен, так как он устарел
- AMI Windows Server (todo: установить уязвимое ПО)
- [2021-09-15]
- Исправления при создании нескольких пиров Wireguard
- Приложение Infection Monkey интегрировано в Kali Linux
- Обновление до новой версии Kali 2021.3
- [2021-06-02] Изменены AMI ID для использования Kali 2021.2
- [2021-03-10] Использована новая версия Kali 2021.1
Диаграмма

Компоненты
- Экземпляр Kali (закрытый ключ сохраняется в kali.pem)
- Сервис Wireguard VPN: файл клиента client_vpn.wg
- Доступен через ssh/scp
- Публичная подсеть 10.0.0.5/24
- Infection Monkey запущен на порту 5000 (доступ только через VPN или SSH)
- Уязвимая машина "Metasploitable" (образ AMI опубликован)
- Приватная подсеть 10.0.1.5/24
- Дополнительные уязвимые лаборатории/машины/docker (в планах)
Добавленные функции
- Управление пользователями
- Автоматическое создание непривилегированных пользователей в экземпляре Kali с использованием RSA
- Файл клиента Wireguard VPN для каждого пользователя
- Журналирование командной строки в syslog
- Включен auditd с ключами sudo_log и users_log для аудита действий пользователей (также см. команду ausearch)
- ToDo: Пересылка журнала терминала в CloudWatch или S3 Bucket с политикой однократной записи
Как использовать
- Требования:
- Terraform CLI руководство по установке
- AWS CLI руководство по установке
- $PATH настроен для AWS CLI и Terraform
- Учетная запись AWS и настройка учетных данных через AWS CLI:
aws configure
- Подписка на Kali Linux в AWS Marketplace
- Предварительно собранный образ AMI Metasploitable3 (публичный AMI доступен для региона eu-west-1) см.
Развертывание
- Включите/отключите развертывание уязвимых экземпляров, установив
0 или 1 в 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"
}
- Используйте Terraform для развертывания инфраструктуры
terraform init
terraform plan
terraform apply -auto-approve
Выходные данные
Выходные данные Terraform покажут следующие записи:
- Команда SSH для подключения к пользователю kali (root через sudo)
- Файл клиента Wireguard для пользователя kali будет автоматически получен с сервера Kali
- Команда SCP для получения файла клиента Wireguard (на случай, если определенная команда terraform local-exec не сработает)
- Для каждого из обычных пользователей, созданных в экземпляре Kali:
- Файл закрытого ключа для SSH-подключения
- Файл клиента Wireguard для VPN-подключения
Использование
Подключитесь к Kali через SSH или Wireguard:
- SSH: (только командная строка) Используйте автоматически сгенерированный закрытый ключ (см. выходные данные Terraform)
KALI_IP=<KALI_IP> # configure kali public ip
ssh -i kali.pem -o StrictHostKeyChecking=no -o IdentitiesOnly=yes kali@${KALI_IP}
- Wireguard: Подключите локальный экземпляр Kali через Wireguard (см. сгенерированный файл 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
Уничтожение
terraform destroy -auto-approve
Ссылки