Содержание статьи
- Схема
- Образ GW.img (post_1)
- Испытываем GW.img на QEMU в Windows (нет привилегий, есть эксфильтрация)
- Испытываем GW.img на qemu-system в Linux (нет привилегий, есть эксфильтрация)
- Образ GW.img (post_2)
- Испытываем GW.img на VirtualBox в Windows (есть привилегии, есть эксфильтрация)
- Испытываем GW.img на qemu-system в Linux (есть привилегии, есть эксфильтрация)
- Заключение
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Сегодня скачать эксплоит, ввести IP-адрес и пробить периметр может любой школьник. Благодаря многочисленным сканерам безопасности и разнообразным информационным ресурсам порог входа в область поиска и эксплуатации уязвимостей стал куда ниже, чем раньше.
Но очень часто полученный доступ — это лишь начало длинного пути. Когда в результате поисков наконец‑то обнаружена уязвимость и пробит внешний периметр, впереди нас ждет самое веселое — продвижение по внутренней инфраструктуре. Ведь настоящий взлом — процесс многоступенчатый.
Вообще, экосистема внутренних сетей может разительно отличаться от того, что видно на внешнем периметре, даже у одной и той же компании. Мне доводилось наблюдать кардинально противоположные картины: идеально причесанные и обновленные ресурсы, смотрящие в интернет, и полный бардак во внутренней сети.
На самом деле внутренние сети, благодаря их закрытости от внешнего мира, недостижимы для разнообразных вирусов, сканеров и хакеров, поэтому подчиняются иным законам и время там течет гораздо медленнее. Если на внешних ресурсах мы едва ли найдем сильно устаревший софт, то во «внутрянке» вполне можно обнаружить множество десятилетних уязвимостей. Ведь главный защитный механизм внутренних ресурсов — это их изоляция от внешнего мира.
Сразу после получения доступа к внутренним ресурсам руки сами тянутся проверить массу потенциальных уязвимостей из разряда low-hanged fruits — чего‑то достаточно простого, часто встречающегося и дающего максимальный импакт. А уж если в придачу к скомпрометированному хосту мы получили еще и доменную учетку — то держись, домен, и с ним вся внутренняя инфраструктура!
Однако если админы и сетевики молодцы, то сразу же после пробития периметра у нас начнутся проблемы. Примерно в половине случаев простого халявного реверс‑шелла мы не получим. Чуть реже нас могут ждать обломы с ICMP и даже проблемы с DNS-туннелями. Так или иначе, в большинстве случаев мы все же можем организовать какой‑то мало‑мальски пригодный канал эксфильтрации хотя бы для передачи файлов. Но порою про комфортный внутренний пентест приходится забыть.
С чего вообще начинается любой пентест, хоть внутренний, хоть внешний? Конечно же, с разведки, поиска внутренних узлов, то есть сканирования портов. Думаю, большинство пентестеров постарается протащить на скомпрометированный хост Nmap. Хорошо, допустим, удалось его передать и разведать какие‑то потенциальные уязвимости. А что потом? Копируем подобным же образом эксплоиты? А к ним еще в придачу — рантайм, например? 50-мегабайтовый Python, на котором написана половина эксплоитов?
Весь хакерский арсенал создавался с прицелом на удобство использования и функциональность, но мало кто закладывал в него легковесность и переносимость. В итоге при перемещении по внутренней инфраструктуре мы вынуждены будем большую часть времени заниматься копированием скриптов и программ, а также выгрузкой результатов. Иными словами, администрированием в весьма экстремальной форме.
Но это в идеальном случае. Если нам «посчастливилось» пробиться через Windows-машину, то вполне вероятно, что с нами по соседству будет антивирус, скажем тот же Defender. Эти приложения будут удалять добрую половину хакерского софта, причем не только экзешники, но и даже скрипты на PowerShell из того же PowerSploit, столь популярного для разведки и атаки, без которого многие пентестеры останутся как без рук.
А если безопасники не дремлют, то каждое исчезновение только что скопированной хакерской тулзы — это еще и алерт в SOC, так что пентест может очень быстро закончиться. И наконец, кто нам гарантировал, что на подконтрольной машине будут админские или root-права? Их отсутствие также доставит массу проблем.
В итоге получается забавная, но часто возникающая ситуация: вроде бы мы и скомпрометировали какую‑то систему, и пробили периметр, и в результате у нас появился сетевой доступ до каждого внутреннего узла. По ощущениям — кругом дыры в безопасности, и нам кажется, что мы в двух шагах от контроллера домена, но почему‑то в реальности ничего мы сделать не можем. И виной тому не защитные меры, а лишь технические нюансы. Но отсутствие нормального канала передачи данных, антивирусы, ограниченные права — это не защита, а всего лишь палки в колеса. Настоящего хакера это не остановит.
Схема
При постэксплуатации хакер может столкнуться со следующими проблемами:
- ограниченные права;
- невозможность запивотиться (отсутствие пригодного канала эксфильтрации);
- наличие антивируса;
- специфика ОС.
Получается, нам могут встретиться восемь различных условий среды:
- Windows-система + пользовательский доступ + канал эксфильтрации (post_1);
- Linux-система + пользовательский доступ + канал эксфильтрации (post_1);
- Windows-система + административный доступ + канал эксфильтрации (post_2);
- Linux-система + root-доступ + канал эксфильтрации (post_2);
- Windows-система + пользовательский доступ + отсутствие канала эксфильтрации (post_3);
- Linux-система + пользовательский доступ + отсутствие канала эксфильтрации (post_3);
- Windows-система + административный доступ + отсутствие канала эксфильтрации (post_4);
- Linux-система + root-доступ + отсутствие канала эксфильтрации (post_4).
Использование эмуляции и виртуализации станет для нас универсальным решением всех проблем, с которыми мы только сможем столкнуться при постэксплуатации. Во‑первых, эмуляция и виртуализация абстрагируют нас от ОС на скомпрометированной машине и предлагают единый интерфейс как для Windows, так и для Linux. Такой подход для Windows отлично устраняет дефицит ее сетевых возможностей.
Во‑вторых, наличие в атакуемой системе административных или root-прав не будет для нас необходимым условием. Реально же права администратора могут потребоваться в двух случаях.
Первый — это гипервизор, использующий аппаратные возможности CPU. В современных виртуальных машинах он обеспечивает производительность, схожую с производительностью хостовой ОС, поскольку код гостевой ОС выполняется реальным процессором, а не эмулируемым. А безопасная изоляция ресурсов виртуалки от хостовой ОС достигается как раз привилегированными инструкциями виртуализации процессора.
Второй случай, когда нам могут потребоваться права, — это виртуальный сетевой интерфейс гостевой ОС. Он может быть объединен с любым другим интерфейсом хостовой ОС с помощью сетевого моста. И то и другое для нас не критично. За первое мы заплатим лишь производительностью гостевой ОС, ведь теперь весь ее код будет выполняться виртуальным процессором (то есть транслироваться). Второй случай не позволит нам получить полноценный сетевой доступ к окружению скомпрометированной машины. Однако сетевой доступ в режиме NAT у нас будет в любом случае, и его хватит как для большинства пивотинг‑механизмов, так и для подавляющего числа атак.
Наконец, существует еще один важный момент — вся наша активность будет происходить под завесой эмуляции и виртуализации, с использованием исключительно API виртуальной ОС, а не хостовой. И локальные средства защиты (антивирусы/EDR) окажутся за бортом.
Развивать атаки в каждом из возможных случаев мы сможем с использованием всего двух виртуальных ОС:
-
gw.
— развитие атак с правами или без прав и с каналом эксфильтрации;img -
attack.
— развитие атак с правами или без прав и без канала эксфильтрации.img
Сами же образы для максимальной обратной совместимости будут 32-битными, а интерфейс управления виртуалками — максимально простым и пригодным для любой, даже самой тяжелой обстановки, когда нет GUI-доступа или нормального реверс‑шелла.
Наконец, подход from scratch подразумевает сборку образа под любую ситуацию. Ведь никогда не знаешь наперед, насколько тонким будет канал передачи данных и сколько места на атакуемом хосте мы получим в свое распоряжение.
В каком бы окружении при постэксплуатации мы ни оказались, с помощью виртуализации или эмуляции мы выйдем победителем каждый раз.
И каждый раз мы будем использовать одни и те же привычные нам инструменты любимого Linux.
Образ GW.img (post_1)
Вне зависимости от того, имеются ли у нас административные права на скомпрометированной машине или нет, если у нас есть канал передачи данных наружу, мы всегда должны использовать его для организации сетевого доступа и развития последующих атак. Не стоит развивать атаки непосредственно со скомпрометированной системы, они выполняются с ноутбука атакующего, а скомпрометированный узел используется лишь в качестве шлюза.
Pivoting не сильно требователен в плане прав, и практически все то, что мы способны сделать при наличии высоких системных привилегий, можно будет реализовать и без них. Поэтому сперва посмотрим на более общие сценарии, не требующие административных прав, то есть развиваемые с уровня L3, пригодного для совершения большинства последующих атак.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»