JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
¹ 6<br />
РЕШЕНИЕ:<br />
ЗАДАЧА:ОБОЙТИ ФАЙЕРВОЛ, ИСПОЛЬ-<br />
ЗУЯ ICMP(PING)-ТОННЕЛЬ<br />
default.asp). Большинство из них занимаются тем, что инкапсулируют (с<br />
некоторыми изменениями, конечно) пакеты TCP в поле Data ICMP-сообщений.<br />
По идее все просто, но в реализациях много хитростей. Например,<br />
как упомянуто выше, TCP — надежный протокол, а ICMP — нет. В итоге<br />
Схема работы ICMP-прокси (тоннеля)<br />
Предположим, что мы пытаемся проникнуть в закрытую сеть и закрепиться<br />
на каком-нибудь из тамошних хостов. Последних в ней много, но доступа<br />
из внешней сети маловато: пару сервачков наружу, а ушастые юзеры<br />
все сидят за NAT’ом (один внешний IP, через который все и ползают).<br />
Таким образом, к ним с нашей стороны не подключиться. К тому же, доступ<br />
наружу обрезан: предположим только HTTP/HTTPS, да и то через прокси и<br />
к определенным сайтам. В общем-то, классическая ситуация для многих<br />
организаций. Но, как часто это бывает, хотя TCP/UDP-соединения во внешнюю<br />
сеть бдительные админчики фильтруют на файерволе, про такой<br />
протокол, как ICMP забывают (или оставляют для каких-то технических<br />
целей). Этим-то мы и можем воспользоваться :). Основная задача такова:<br />
наполнить ICMP-протокол необходимым функционалом для удаленного<br />
доступа к жертве (точнее ее к нам, если говорить о NAT’е). Напомню, ICMP<br />
(англ. Internet Control Message Protocol, RFC 792, 950) — это, как понятно<br />
из названия, межсетевой протокол управляющих сообщений. То есть<br />
такой сервисный протокол, во многом используемый для сообщения об<br />
ошибках в связи на сетевом (IP) и транспортном уровне(TCP/UDP) по модели<br />
OSI. Я уверен, что ты юзал его не раз, так как он и является основой<br />
такой вещи как ping. Да, когда ты пингуешь какую-нибудь машину, ты<br />
отправляешь ей ICMP-пакет с типом 8, а назад получаешь ICMP-пакет с<br />
типом 0.<br />
Протокол простой: инкапсулируется в IP-пакет, а содержит в себе всего<br />
4 поля. Поле «Type» и «Code» по 8 бит, контрольную сумму пакета — 16<br />
бит, дополнительное поле для некоторых типов и кодов — 32 бита. Далее<br />
поле Data — в общем-то, любые данные. Размер пакета может достигать<br />
64 Кб. Потому мы можем переносить достаточно приличные объемы<br />
информации за один запрос. Что для нас важно, ICMP — это ненадежный<br />
протокол, то есть мы не получаем ответ о доставке нашего сообщения<br />
(как, например, у TCP).<br />
Теперь к практике.<br />
Программок, которые наделяют ICMP, так сказать, возможностями передачи<br />
данных, полным-полно. Это и ptunnel, и itun, и ishell, и даже старенькая<br />
тулза от твоего любимого журнала — x-proxy (xakep.ru/post/16337/<br />
XÀÊÅÐ 09 /140/ 10<br />
корректность работы и производительность тулз невелика.<br />
Лучшей программой, вроде как, является ptunnel(cs.uit.no/~daniels/<br />
PingTunnel). Она все еще живет и развивается, к тому же есть версия под<br />
Windows (под которой обычно сидят все юзеры). Но начну я с несколько<br />
альтернативного решения. Имя ему — Ishell. По сути — это шелл, только<br />
на основе ICMP. То есть у него нет заморочек с передачей данных. Все в<br />
себе, так сказать, и взять можно на icmpshell.sourceforge.net.<br />
Качаем исходники и make’им их.<br />
У жертвы(192.168.0.1) запускаем сервер:<br />
./ishd<br />
А сами коннектимся:<br />
./ish 192.168.0.1<br />
Получаем шелл. Есть возможность настроить тип, идентификатор, размер<br />
ICMP-пакетов. Но это, в общем, не особо нужно. Из плохого: для начала —<br />
не работает под Win, а главное — требует коннекта от нас, то есть не дает<br />
возможности обойти NAT. Хотя сие можно обойти, хорошенько доработав<br />
исходнички и сделав backconnect.<br />
Вернемся к классическому ptunnel (by Daniel Stoedle). В статьях про<br />
него описывается в основном возможность «кражи» интернета,<br />
если у тебя доступен только ICMP. Вешаем сервер («ICMP-прокси»)<br />
где-нибудь в интернете, а сами из «закрытой» сети коннектимся к<br />
нему по ICMP. Сервер же уже реально соединяется с нужным нам<br />
ресурсом по TCP и передает копии «диалога». Как-то так :). Но мы<br />
воспользуемся им по-другому: совместим реверсовый meterpreter из<br />
Metasploit’а(MSF) с ICMP-туннелем. Описывать «установку» ptunnel<br />
не буду, но замечу, что для Win требуются библиотеки WinPCAP<br />
(winpcap.org/install/default.htm). Итак, представим, что IP жертвы<br />
— 192.168.146.1, а наш — 192.168.146.128. Создаем реверсовый<br />
meterpreter на себя самого на 5678 порт в виде exe-файла, который мы<br />
045