Прочел недавно одну из статей Криса Касперски (не путать с создателем всем известного антивиря) "Захват чужих ботнетов". Статья старовата, но достойна внимания, так что выкладываю на всеобщее обозрение. reliable крис касперски ака мыщъх, no-email
воодушевленные разрушительной силой вирусных эпидемий, хакеры начали оснащать своих червей механизмами удаленного управления, превратив их в покорный инструмент с практически неограниченными возможностями применения. армада червей будет подчинятся любому, кто сможет подчинить ее себе, а подчинить ее проще простого…
введение Термин бот (bot) произошел от IRC, где он означал специального робота, висящего на канале и автоматически раздающего варез всем желающим. В чем достоинства такого подхода по сравнению с тем же FTP например? Поднять FTP-сервер не проблема, но вот как донести его адрес до народа? А для подключения к боту достаточно соединится с IRC-сервером и зайти на соответствующий канал. Управлять ботами через IRC на самом деле очень удобно. Вместо того, чтобы пыхтеть над системой удаленного управления, можно использовать уже готовые компоненты и IRC-сервера. Неудивительно, что создатели червей взяли эту технику на вооружение. Проникнув на атакуемую машину, червь устанавливает на ней бота, и этот бот через определенные промежутки времени (или при каждом выходе в сеть) стучится на один или несколько IRC-серверов и терпеливо ждет распоряжений со стороны атакующего, часто называемого Мастером или Магом. Машина с установленным ботом называется зомби (zombie) или дроном (drone). Армия дронов, управляемая Мастером, образует ботнет (botnet — сеть ботов). Некоторые из таких сетей содержат сотни тысяч узлов и представляют собой довольно мощное оружие, способное задавить кого одного. Пусть каждая дрон имеет 33 Кбитный канал (дронами обычно становятся домашние компьютеры, за "здоровьем" которых никто не следит), тогда эффективная пропускная способность стотысячного поголовья дронов достигает 3 Гбит/с, что вполне достаточно, чтобы перегрузить любой корпоративный сервер, большинство из которых висят на T1, а T1 это всего лишь 1.5 Мбит/с. Обычно ботнеты организуются для рассылки спама, накрутки баннеров, похищения номеров кредитных карт и других подобных целей. Создать свою собственную армию дронов может далеко не каждый, и возникает естественный соблазн захватить уже раскрученную сеть или если не захватить, то хотя бы воспользоваться ее услугами. Естественно, это противозаконно и вообще маст дай, поэтому, мы будем действовать строго в исследовательский целей, во всем придерживаясь УК.
что нам понадобится
Для захвата чужих ботнетов нам потребуется постоянное соединение с Интернетом (например, DSL), но на худой конец сойдет и unlimited dial-up. Еще нам понадобиться непатченная W2K, играющая роль приманки. Большинство червей атакуют именно ее. Чтобы самому не стать жертвой атаки, приманку следует расположить либо на отдельной машине, либо на виртуальном узле, работающем под управлением VM Ware. Наблюдение за деятельностью атакующих и грабеж проходящего мимо трафика возьмет на себя любая система обнаружения вторжений, ну или на худой конец персональный брандмауэр типа SyGate Personal Firewall 4.х. Для некоммерческого применения он бесплатен. Более поздние версии не позволяют грабить содержимое пакетов без регистрации, и для наших целей уже не подходят. Еще потребуется антивирусный сканнер, нацеленный на поиск AdWare. Я рекомендую Microsoft AntiSpyware, бету-версию которого распространяется на свободной основе. Не надо плеваться. Да, Microsoft! Да, тормозит как бегемот и ведет себя как слон в посудной лавке, но другие работают еще хуже! Исследование внутренностей червя не обходится без отладчика и дизассемблера, в роли которых обычно выступают Soft-Ice и IDA PRO. Это коммерческие продукты, но их легко найти в Осле, Sharez'е, IRC или на любом хакерском диске. Управление ботнетом обычно осуществляется через IRC, а, значит, мы должны обзавестись ISSR или другим клиентом, распространяемым в исходных текстах и поддающиеся доработке. Популярный mIRC к таковым не относится и идет лесом, то есть на хрен. Еще нам потребуется богатый опыт работы с IRC, без которого в ботнет лучше не соваться.
как мы будем действовать Устанавливаем на компьютер VM Ware, если только не сделали этого ранее, устанавливаем заплатку Кости Кортчинского (см. врезку "дообработка VM-Ware"), создаем новую виртуальную машину (File->New Virtual Machine), и открываем ей доступ в Интернет. Это можно сделать либо через Bridge (Мост), либо через NAT (Network Address Translation – Трансляция Сетевых Адресов). В случае моста виртуальная машина просто подключается к локальной сети как обычный Ethernet-узел, имеющий свой IP и с точки зрения атакующего ничем не отличающийся от всех остальных узлов сети. Естественно, виртуальный IP должен быть предварительно выкуплен у провайдера, иначе у нас ничего не получится. Провайдеры довольно неохотно раздают IP-адреса, поэтому установка NAT намного предпочтительнее. В этом случае, снаружи торчит лишь ваш собственный IP-адрес (неважно динамический или нет), а все поступающие на него запросы перенаправляются на виртуальный узел и атакующий даже не подозревает с кем он реально имеет дело. Впрочем, все порты транслировать совершенно необязательно и можно ограничиться лишь четырьмя из них: 135/TCP (RPC), 139/TCP (NetBIOS Session Service), 445/TCP (Microsoft-DS) и 137/UDP (NetBIOS Name Service). Большинство червей ломятся именно сюда. Чтобы задействовать NAT в настойках виртуальной машины выбираем: VM->Setting->NIC->NAT:Used to share the host's IP address. Затем входим в Edit Virtual Network Setting NAT Edit Port Forwarding, нажимаем "Add" и поле "Host port" вводим порт, который мы ходим транслировать, например, "135". В графе "Forwarded IP Address" указывается IP-адрес виртуального адаптера и целевой порт, совпадающий с транслируемым портом. Еще необходимо оттранслировать порты, используемые ботнетами для удаленного управления, иначе Мастер просто не сможет дотянется до дрона. Эти порты не стандартизированы и у каждого ботнета они свои. Чаще всего используются: 6667 (IRC), 903 (NetDevil Backdoor), 2745 (Bagle Backdoor), 3127 (MyDoom Backdoor), 6129 (Dameware Remote Admin) и некоторые другие. Устанавливаем на виртуальную машину девственно-чистую W2K, водружаем поверх нее SyGate Personal Firewall, приказывая ему грабить весь трафик (Tools Options Log Capture Full Packet, Maximum log file size is 1.048.576 KB — конкретный размер лога выбирается по вкусу. Здесь действует принцип — лучше перебрать, чем недобрать, иначе критически важные пакеты будут безвозвратно утеряны). Чтобы брандмауэр не надоедал постоянными запросами, в меню Security выбираем "Allow All", что означает "дозволено все". Затем устанавливаем Microsoft AntiSpyware и дезактивируем Защиту Реального Времени (Options Setting Real-Time Protection). Нам он будет нужен только как сканер. Противодействие червям не входит в наши планы. Вот и все. Открываем пиво, входим в Интернет и терпеливо ждем, когда какой-нибудь червь не заползет на наш компьютер. Долго ждать не придется. Каждый день на мой компьютер залазит по меньшей мере пара-тройка червей, многие из которых являются ботами. Известные черви опознаются сканером, неизвестные выявляются просмотром логов брандмауэра (естественно, нужно знать основы TCP/IP чтобы их дешифровать).
как побороть червя Просматривая трафик, награбленный брандмауэром (Logs Traffic/Packet Logs), ищем соединения, установленные с IRC-сервером, по умолчанию расположенном на 6667 порту. Среди прочей муры в них должны находится строки PASS, NICK, USER и JOIN, посредством которых червь подключается к "своему" каналу. Приблизительно это выглядит так: <- :mozilla.se.eu.dal.net NOTICE AUTH :*** Looking up your hostname... <- :mozilla.se.eu.dal.net NOTICE AUTH :*** Checking Ident <- :mozilla.se.eu.dal.net NOTICE AUTH :*** Found your hostname <- :mozilla.se.eu.dal.net NOTICE AUTH :*** No Ident response -> PASS drone_pass -> NICK [urX]-3011331 -> USER drone 0 0 :drone <- : mozilla.se.eu.dal.net NOTICE [urX]-3011331 <-:*** If you are having problems connecting due to ping timeouts, please type <-/quote pong ED322722 or /raw pong ED322722 now <- PING :ED322722 -> PONG :ED322722 <- : mozilla.se.eu.dal.net 001 [urX]- 3011331 :Welcome to <- the mozilla.se.eu.dal.net IRC Network [urX]- 3011331!drone @nicetry <- : mozilla.se.eu.dal.net 002 [urX]- 3011331 :Your host is mozilla.se.eu.dal.net, <- running version Unreal3.2-beta19 <- : mozilla.se.eu.dal.net [urX]- 3011331 <- :This server was created Sun Feb 8 18:58:31 2004 <- mozilla.se.eu.dal.net 004 [urX]- 3011331 mozilla.se.eu.dal.net <- Unreal3.2-beta19 iowghraAsORTVSxNCWqBzvdHtGp lvhopsmntikrRcaqOALQbSeKVfMGCuzN Листинг 1 протокол обмена червя с IRC-сервером
Чтобы подчинить червя себе, Мастер должен выполнить команду аутентификации (обычно "auth") и передать секретный пароль, немедленно становящийся достоянием нашей брандмауэра. Остается зайти на канал и призвать всех червей к себе. Некоторые ботнеты допускают смену пароля, что позволяет сместить прежнего Мастера с трона, некоторые носят жестко прошитый (hardcoded) пароль в себе и единолично завладеть таким ботнетом уже не удастся. С одной стороны это плохо, с другой — хорошо. Как узнать какие команды поддерживает червь? Полный ответ дает только дизассемблирование, однако, на первых порах можно ограничиться просмотром HEX-дампа. Команды управления представляют собой обычные ASIIZ-строки, записанные прямым текстом, но увидеть их не так-то легко! Большинство червей упакованы хитроумными полиморфными генераторами, автоматических распаковщиков для которых не существует. Ну не существует и не надо! Берем любой дампер (ProcDump, Lord PE) и дампим червя в живую. Конечно, полученный PE-файл с вероятностью близкой к единице окажется неработоспособен (как минимум необходимо восстановить таблицу импорта и сделать кучу других мелких дел). Фактически это труп червя, но, для наших целей он вполне подойдет. Набор команд разнится от червя к червю, в частности, Agobot может: сменить свой ник; сообщить конфигурацию системы; сделать себе харакири; запустить любой исполняемый файл; определить IP-адрес и доменное имя заданного узла; подключиться/отключится от IRC-сервера; зайти на канал и т. д. Почти все черви используют слегка модифицированный протокол IRC и потому обычные IRC-клиенты для управления ботнетом непригодны, но ведь не писать же своего собственного, верно? Возьмем готового клиента, распространяемого в исходных текстах, например IRSSI, и слегка доработаем его "напильником". Как минимум необходимо вырезать текстовую строку "irssi 0.89 running on openbsd i368" и вырубить все команды автоматичесокго ответа (auto response triggering commands), иначе Мастер легко обнаружит наше присутствие на канале и либо поставит бан, либо армия дронов запигует наш узел до смерти. Захват чужих ботнетов — это действительно рискованно и очень опасно, поэтому, без предварительной подготовки в этот дремучий лес лучше не ходить.
>>> врезка: самый популярный ботнет Первое место по популярности занимает Agobot, насчитывающий свыше пятисот (!) своих модификаций. Это довольно продвинутый червь, написанный на приплюснутом Си с четко выраженной модульной структурой, значительно упрощающий наращивание функциональности червя. Agobot использует кросс-платформенную библиотеку libpcap для перехвата трафика и PCRE (Perl Compatible Regular Expressions — Perl-Совместимые Регулярные Выражения) для обработки перехваченного контента (например, поиска паролей, номером кредиток и т. д.). Внутри червя обнаруживается целый "букет" антиотладочных приемов. Agobot распознает большинство отладчиков (SoftICE, OllyDbg) и виртуальных машин (VMWare, Virtual PC) отказываясь работать в их присутствии. Кроме того, он может прятаться в NTFS-потоках, скрывая факт своего присутствия от многих примитивных ревизоров. Agobot был написан конкретным немецким пареньком по кличке Ago, так же известного под именем Wonk, арестованным в мае 2004 года за "компьютерные преступления". Так хакерское сообщество потеряло одного из самых талантливых своих представителей. Сейчас он сидит в тюрьме, а его творение гуляет на свободе, распространясь в исходных текстах по лицензии GPL (отсюда и огромное количество модификаций).
>>> доработка VM-Ware Известно по меньшей мере три пути обнаружения VM-Ware. Во-первых, по оборудованию. Виртуальные машины несут на своем борту довольно специфический набор железа, практически не встречающийся в "живой природе": а) видеокарта VMware Inc [VMware SVGA II] PCI Display Adapter; б) сетевая карта: Advanced Micro Devices [AMD] 79c970 [PCnet 32 LANCE] (rev 10); в) жесткие диски: VMware Virtual IDE Hard Drive и VMware SCSI Controller. Опросив конфигурацию оборудования, червь сразу поймет где он. Во-вторых, виртуальные сетевые карты имеют довольно предсказуемый диапазон MAC-адресов, а именно: 00-05-69-xx-xx-xx, 00-0C-29-xx-xx-xx и 00-50-56-xx-xx-xx. Червь достаточно выполнить команду "arp -a", чтобы распознать наш план. В-третьих, VM-Ware имеет коварный backdoor, оставленный разработчиками для служебных целей и управляемый через порт 5658h, при этом в регистре EAX должно содержатся "магическое" число 564D5868h. Ниже приведен фрагмент кода червя Agobot, определяющий версию VM-Ware:
mov eax, 564D5868h ; VMWARE_MAGIC mov ecx, 0Ah ; Get VMware version mov edx, 5658h ; VMWARE_PORT in eax, dx Листинг 2 определение версии VM Ware Для маскировки виртуальной машины, Костей Кортчинским (Kostya Kortchinsky) был написан специальный падч, изменяющий идентификационные строки оборудования, MAC-адреса и магический номер backdoor'а.
>>> врезка: где брать IP-адреса в P2P сетях Слепое сканирование IP-адресов которым занималось первое поколение червей сейчас уже непопулярно. Это слишком заметно и катастрофически непроизводительно. Вот поэтому некоторые черви предпочитают черпать IP-адреса из файлообменных сетей (например, eDonkey). Достаточно установить P2P клиента, выложить несколько файлов с заманчивыми названиями ("голая анжелика монс", например) и юзеры потянутся за ними изо всех уголков сети. Сколько из них будет дырявыми можно даже не говорить! Поэтому, прежде чем качать порно из Осла обязательно сходите на Windows Update и установите все заплатки, которые только там есть.
>>> врезка: полезные ссылки www.honeynet.org: o официальный сайт некоммерческой исследовательской группы The Honeynet Project, специализирующийся на червях. Это лучший источник информации по ботнетам на сегодняшний день! Know your Enemy: o офф-лайновый архив статей по внутреннему устройству червей и ботнетов с кучей технических подробностях, интересных любому хакеру (на английском языке): http://www.honeynet.org/misc/files/papers.tar.gz; vmpatch: o заплатка для VM-Ware, скрывающая ее присутствие от глаз червя, без этого Agobot и многие другие ботнеты просто не будут работать! http://honeynet.rstack.org/tools/vmpatch.c; IRSSI: o бесплатный консольный IRC-клиент, распространяемый в исходных текстах: http://irssi.org/;
заключение Что можно сделать с захваченным ботнетом? Самое благородное — отдать дронам команду на самоуничтожение, если, конечно, нам не жаль расставаться с властью и богатством. Ботнет — это выносливая лошадка, готовая распространять варез, видеоклимы, mp3 и т. д. Ботнеты, насчитывающие десятки и сотни тысяч машин, здорово помогают при вскрытии паролей методом тупого перебора. Дроны, снабженные микрофоном, сотовым телефоном или на худой конец обыкновенным модемом, можно превратить в подслушивающие устройство (про web-камеры мы вообще промолчим). Масса идей по управлению дронами содержится в новелле Джона Варли "Press Enter", как раз и описывающую такой ботнет. Правда, конец, повествования трачен, так что прежде чем ложить лапы на клавиатуру, давайте задумается о том, к чему все это приведет.
|