Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Если во время пентеста атакующий оказался в системе, на которой отсутствует канал для эксфильтрации, отчаиваться рано. На помощь придет магия эмуляции и виртуализации. Эти технологии позволяют не только выполнять пивотинг, но и активно развивать атаки, даже если дело поначалу казалось безнадежным.
После пробития периметра возможны разные варианты развития атак уже во внутренней сети. Скорее всего, реально нащупать канал передачи данных, через который можно предоставить себе удаленный сетевой доступ. Тем не менее бывают ситуации, когда между атакующим и жертвой нет подходящего канала передачи данных — эксфильтрации.
Дело в том, что далеко не все каналы эксфильтрации пригодны для проброса соединений и организации удаленного доступа. Например, внутренняя сеть компании отрезана от интернета, но на ее рабочие станции могут приходить электронные письма извне. В этом случае стандартные техники пивотинга неприменимы. Но возможность приема файлов сохраняется, а вместе с ней сохраняется и возможность развития атак.
Со сложностями, описанными в этой статье, ты, скорее всего, столкнешься при анализе защищенности удаленных рабочих мест: например, наткнувшись на какой‑нибудь хитрый терминальный RDP-доступ или секьюрно настроенный SSH-шлюз. Как бы то ни было, даже если запивотиться невозможно, отчаиваться рано. Нам нужно идти дальше и развивать атаки непосредственно со скомпрометированной машины. Здесь нам на помощь вновь придет магия эмуляции и виртуализации.
info
Эта статья — продолжение публикации «Виртуальная магия. Используем эмуляцию и виртуализацию для пивотинга».
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Это третий кейс постэксплуатации. У нас нет прав и нет канала эксфильтрации, пригодного для пивотинга. Атаки предстоит разворачивать непосредственно с атакуемой системы.
Поскольку развитие атак с административными привилегиями — это своего рода частный случай развития атак вообще, который всегда включает в себя атаки, выполняемые с уровня L3, мы сперва рассмотрим их. Такие атаки не будут требовать административных или root-привилегий.
Техника сетевого доступа с гостевой ОС в хостовую сеть на скомпрометированной машине та же самая, что в post_1, разница лишь в отсутствии туннелей и необходимости развивать атаку непосредственно изнутри образа гостевой ОС.
Развитие атак с уровня L3 — через непривилегированные TCP/UDP-сокеты NAT-режима
Мы можем не создавать образ с нуля, а воспользоваться любым готовым, тем же Kali Linux. Однако нужно иметь в виду, что сейчас мы рассматриваем ситуации, когда пригодных каналов эксфильтрации нет, а значит, доставка образа в несколько гигабайтов может вызвать нешуточные сложности. Мне как‑то доводилось протаскивать инструментарий через вложения по электронной почте множеством кусочков по 5 Мбайт.
Поэтому будем стараться разумно использовать дисковое пространство и добиваться минимального размера финального образа. Ведь сборка минималистичного образа, лишенного всего ненужного, размером в пару‑тройку сотен мегабайт может оказаться очень кстати.
Начинаем собирать образ файловой системы. Используем Alpine:
sudo docker pull i386/alpine:3.18 sudo docker run --name attack -it i386/alpine:3.18 /bin/sh
Как ранее с образом GW, мы отталкиваемся от начальной файловой системы объемом в 5 Мбайт. На минуточку, 10 Мбайт — это эмулятор, 5 Мбайт — образ Linux, а в 15 Мбайт у нас помещается готовая рабочая Linux-система, которую мы можем запускать где угодно, без установки и без прав! Неплохое начало…
Для лучшей обратной совместимости мы используем 32-битный образ, более переносимый (он работает в системах x64, но не наоборот). Этот образ менее популярен, и оттого установка некоторых пакетов с предкомпилированными файлами под x64 потребует уже перекомпилировать их в x32. Поэтому нам придется установить некоторые лишние пакеты. Если же ты решишь создать x64-образ, то установка многих пакетов будет проще и не потребует части зависимостей.
Теперь перейдем к наполнению образа теми утилитами, которые так или иначе могут понадобиться нам при развитии атак во внутренней сети. Тут все несколько субъективно, поэтому я продемонстрирую наполнение attack-образа хакерскими утилитами на все случаи жизни во внутренней сети по своему вкусу.
Начнем с жизненно необходимых утилит:
apk update apk add tmux busybox-extras openrc dhclient iptables git curl socat proxychains-ng openssl tcpdump
Потенциально мы можем столкнуться со сценарием постэксплуатации, когда у нас не будет удобного GUI и нам потребуется предварительно автоматически настроить сеть в используемом для атаки образе. Так мы сможем по сети управлять системой хоть с консоли, хоть с веб‑шелла. Для начала обеспечим системе автоматический выход с нами на связь:
touch /etc/local.d/init.start chmod +x /etc/local.d/init.start vi /etc/local.d/init.start #!/bin/sh dmesg -n 1 mount -o remount,rw / ifconfig lo 127.0.0.1 netmask 255.0.0.0 #dhclient eth0 ifconfig eth0 10.0.2.15 netmask 255.255.255.0 route add -net default gw 10.0.2.2 busybox-extras telnetd rc-update add localpasswd root adduser user chmod u+s /bin/busybox
Значительная часть арсенала эксплоитов инфраструктуры Active Directory написана на Python, так что ставим его и его пакетный менеджер:
apk add python3 python3-dev py3-pip
Нам, как ни крути, потребуется компиляция, поэтому устанавливаем GCC:
apk add gcc make libc-dev
Размер образа заметно вырос — сразу на 200 Мбайт. И по мере установки всех необходимых нам пакетов он раздуется аж до 2 Гбайт. Однако в конце, после сборки всего необходимого, мы удалим все ненужное.
Теперь добавим главный хакерский пакет против Windows-систем, содержащий необходимые многим скриптам библиотеки:
apk add rust cargo openssl-dev libffi-dev pip3 install impacket rm -r /root/.cargo
Целых 55 Мбайт, но в придачу к impacket мы получаем пачку крутых исполняемых файлов для удаленного администрирования и не только.
Далее по порядку перейдем к установке утилит разведки, эксплоитов, без которых не обойтись, и средств для постэксплуатации — куда без них?
Что за тестирование на проникновение без сканирования портов? Ставим Nmap и его скриптовый движок:
apk add nmap nmap-scripts
С помощью Nmap мы можем не только сканировать порты, но и решать множество других задач — собирать дополнительные сведения от служб, искать некоторые уязвимости и проводить атаки с подбором пароля. И это обошлось нам всего в 25 Мбайт!
Поскольку основная цель атаки — домен, требуется инструмент для взаимодействия с LDAP. Пакет openldap-clients предоставляет ряд нативных утилит поиска (ldapsearch), добавления (ldapadd), изменения (ldapmodify) и удаления (ldapdelete) объектов и атрибутов в AD, причем этот инструментарий весит всего лишь мегабайт:
apk add openldap-clients
Привычный и удобный резолв при помощи host или dig будет стоить нам 6 Мбайт:
apk add bind-tools
А вот основной инструмент разведки, поиска уязвимостей и мисконфигов в Active Directory:
git clone https://github.com/fox-it/BloodHound.py
Скрипт для сбора всеобъемлющей информации о AD обойдется всего в 1 Мбайт. Его дамп можно будет впоследствии выгрузить и проанализировать уже на своем компьютере. Однако продвижение по сетям с Active Directory — это не только анализ мисконфигов, но еще и эксплуатация уязвимостей, так что перейдем к наиболее актуальным эксплоитам.
Вот, пожалуй, самый низко висящий фрукт в инфраструктуре AD, не требующий ни учетки, ни наличия IP-адреса и пробивающий сразу DC:
git clone https://github.com/dirkjanm/CVE-2020-1472 zerologon
Воспользуемся крайне популярной сейчас темой с так называемыми принуждениями к аутентификации (coerce):
git clone https://github.com/p0dalirius/Coercer rm -r .git/ documentation/
Техника coerce используется в большом количестве атак на инфраструктуру AD для захвата Kerberos-билетов или обхода NTLM-аутентификации.
Правда, в нашем случае имеет место существенное ограничение — у запущенной без прав виртуалки не будет своего IP-адреса из локальной сети и возможности занять 445-й порт. Однако если мы принудим хост выполнить подключение на порт выше 1024, то его реально будет завернуть на виртуалку без админских прав и реализовать в дальнейшем ту или иную атаку.
Если мы используем coerce в сочетании с Kerberos, то обязательно берем с собой следующий инструмент:
git clone https://github.com/dirkjanm/krbrelayx
Нелишним будет использовать нашумевшие техники повышения привилегий через ADCS:
pip3 install certipy-ad git clone https://github.com/dirkjanm/PKINITtools
Еще одна уязвимость постарше, позволяющая скомпрометировать DC:
git clone https://github.com/dirkjanm/PrivExchange
Не забываем про эксплуатацию ACL-мисконфигов:
git clone https://github.com/ShutdownRepo/pywhisker && pip3 install rich git clone https://github.com/Hackndo/pyGPOAbuse
Также всегда полезно посмотреть информацию на сетевых дисках с помощью того же grep
или find
, например с целью поиска cpassword. Для монтирования удаленной SMB-шары и превращения ее в локальную папку потребуется лишь один пакет:
apk add cifs-utils
Теперь вспомним о тех уязвимостях непосредственно рабочих станций и серверов, которые чаще всего встречаются и эксплуатация которых дает наивысший импакт и не требует особых условий и усилий. Среди них — уязвимость подсистемы печати Windows:
git clone https://github.com/cube0x0/CVE-2021-1675 PrintNightmare
Уязвимость MS17-010 — это самый низко висящий фрукт на рабочих станциях и Windows-серверах. Да, уязвимость уже не так молода, но иногда встречается в редко обновляемых системах:
git clone https://github.com/3ndG4me/AutoBlue-MS17-010
Пару слов про Linux. Самый простой и наиболее вероятный способ быстро компрометнуть Linux-хост — это подобрать к нему пароль по SSH, а затем использовать OpenSSH:
apk add openssh-client
Также на Linux иногда встречается RCE-мисконфиг неограниченного доступа к X-серверу, эксплуатируемый с помощью xdotool:
apk add xdotool
И про активное сетевое оборудование тоже не забываем. Это уязвимость из разряда by-design, позволяющая выгрузить или залить конфиг на Cisco:
git clone https://github.com/frostbits-security/SIETpy3
Ну и напоследок можно немного пошуметь в сети с Nuclei:
wget https://github.com/projectdiscovery/nuclei/releases/download/v3.2.2/nuclei_3.2.2_linux_386.zip unzip nuclei_3.2.2_linux_386.zip nuclei -d /usr/local/bin/ git clone https://github.com/projectdiscovery/nuclei-templates ~/nuclei-templates rm -r ~/nuclei-templates/.git/
Если пентестеру удастся продвинуться по локальной сети, то для раскручивания горизонтального перемещения все же сложно будет обойтись без следующего инструментария:
apk add g++ libxml2-dev libxslt-dev jpeg-dev git clone https://github.com/byt3bl33d3r/CrackMapExec pip3 install .rm -r CrackMapExec rm -r /root/.cargo/ apk del rust cargo libxml2-dev libxslt-dev jpeg-dev
Правда, объем пакетов составляет 120 Мбайт. Зато вместе с CrackMapExec
будет установлен pypykatz
, предназначенный для выдергивания учетных записей из дампов процесса lsass.exe
прямо на нашей виртуалке. И lsassy
, позволяющий удаленно распарсить его прямо на машине жертвы.
Источник: xakep.ru