Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

articles:botnet [2017/09/05 02:55] (текущий)
Строка 1: Строка 1:
 +====== botnet ======
 +<​sub>​{{botnet.odt|Original file}}</​sub>​
 +
 +====== захват чужих ботнетов ======
 +
 +крис касперски ака мыщъх, no-email
 +
 +**воодушевленные разрушительной силой вирусных эпидемий,​ хакеры начали оснащать своих червей механизмами удаленного управления,​ превратив их в покорный инструмент с практически неограниченными возможностями применения. армада червей будет подчинятся любому,​ кто сможет подчинить ее себе, а подчинить ее проще простого…**
 +
 +===== введение =====
 +
 +Термин бот (bot) произошел от IRC, где он означал специального робота,​ висящего на канале и автоматически раздающего варез всем желающим. В чем достоинства такого подхода по сравнению с тем же FTP например?​ Поднять FTP-сервер не проблема,​ но вот как донести его адрес до народа?​ А для подключения к боту достаточно соединится с IRC-сервером и зайти на соответствующий канал. Управлять ботами через IRC на самом деле очень удобно. Вместо того, чтобы пыхтеть над системой удаленного управления,​ можно использовать уже готовые компоненты и IRC-сервера. Неудивительно,​ что создатели червей взяли эту технику на вооружение.
 +
 +Проникнув на атакуемую машину,​ червь устанавливает на ней бота, и этот бот через определенные промежутки времени (или при каждом выходе в сеть) стучится на один или несколько IRC-серверов и терпеливо ждет распоряжений со стороны атакующего,​ часто называемого Мастером или Магом. Машина с установленным ботом называется зомби (zombie) или дроном (drone). Армия дронов,​ управляемая Мастером,​ образует ботнет (botnet — сеть ботов). Некоторые из таких сетей содержат сотни тысяч узлов и представляют собой довольно мощное оружие,​ способное задавить кого одного. Пусть каждая дрон имеет 33 Кбитный канал (дронами обычно становятся домашние компьютеры,​ за "​здоровьем"​ которых никто не следит),​ тогда эффективная пропускная способность стотысячного поголовья дронов достигает 3 Гбит/​с,​ что вполне достаточно,​ чтобы перегрузить любой корпоративный сервер,​ большинство из которых висят на T1, а T1 это всего лишь 1.5 Мбит/​с.
 +
 +Обычно ботнеты организуются для рассылки спама, накрутки баннеров,​ похищения номеров кредитных карт и других подобных целей. Создать свою собственную армию дронов может далеко не каждый,​ и возникает естественный соблазн захватить уже раскрученную сеть или если не захватить,​ то хотя бы воспользоваться ее услугами. Естественно,​ это противозаконно и вообще маст дай, поэтому,​ мы будем действовать строго в исследовательский целей, во всем придерживаясь УК.
 +
 +{{botnet_Image_0.png?​552}}
 +
 +Рисунок 1 структура типичного ботнета
 +
 +===== что нам понадобится =====
 +
 +Для захвата чужих ботнетов нам потребуется постоянное соединение с Интернетом (например,​ DSL), но на худой конец сойдет и unlimiteddial-up. Еще нам понадобиться непатченная W2K, играющая роль приманки. Большинство червей атакуют именно ее. Чтобы самому не стать жертвой атаки, приманку следует расположить либо на отдельной машине,​ либо на виртуальном узле, работающем под управлением VM Ware.
 +
 +Наблюдение за деятельностью атакующих и грабеж проходящего мимо трафика возьмет на себя любая система обнаружения вторжений,​ ну или на худой конец персональный брандмауэр типа SyGate PersonalFirewall 4.х. Для некоммерческого применения он бесплатен. Более поздние версии не позволяют грабить содержимое пакетов без регистрации,​ и для наших целей уже не подходят. Еще потребуется антивирусный сканнер,​ нацеленный на поиск AdWare. Я рекомендую MicrosoftAntiSpyware,​ бету-версию которого распространяется на свободной основе. Не надо плеваться. Да, Microsoft! Да, тормозит как бегемот и ведет себя как слон в посудной лавке, но другие работают еще хуже!
 +
 +Исследование внутренностей червя не обходится без отладчика и дизассемблера,​ в роли которых обычно выступают Soft-Ice и IDA PRO. Это коммерческие продукты,​ но их легко найти в Осле, Sharez'​е,​ IRC или на любом хакерском диске.
 +
 +Управление ботнетом обычно осуществляется через IRC, а, значит,​ мы должны обзавестись ISSR или другим клиентом,​ распространяемым в исходных текстах и поддающиеся доработке. Популярный mIRC к таковым не относится и идет лесом, то есть на хрен. Еще нам потребуется богатый опыт работы с IRC, без которого в ботнет лучше не соваться.
 +
 +{{botnet_Image_1.png?​553}}
 +
 +Рисунок 2 внешнийвид Microsoft AntiSpyware Beta 1
 +
 +===== как мы будем действовать =====
 +
 +Устанавливаем на компьютер VM Ware, если только не сделали этого ранее, устанавливаем заплатку Кости Кортчинского (см. врезку "​дообработка VM-Ware"​),​ создаем новую виртуальную машину (File->​NewVirtualMachine),​ и открываем ей доступ в Интернет. Это можно сделать либо через Bridge (Мост), либо через NAT (NetworkAddressTranslation – Трансляция Сетевых Адресов). В случае моста виртуальная машина просто подключается к локальной сети как обычный Ethernet-узел,​ имеющий свой IP и с точки зрения атакующего ничем не отличающийся от всех остальных узлов сети. Естественно,​ виртуальный IP должен быть предварительно выкуплен у провайдера,​ иначе у нас ничего не получится. Провайдеры довольно неохотно раздают IP-адреса,​ поэтому установка NAT намного предпочтительнее. В этом случае,​ снаружи торчит лишь ваш собственный IP-адрес (неважно динамический или нет), а все поступающие на него запросы перенаправляются на виртуальный узел и атакующий даже не подозревает с кем он реально имеет дело.
 +
 +Впрочем,​ все порты транслировать совершенно необязательно и можно ограничиться лишь четырьмя из них: 135/TCP (RPC), 139/TCP (NetBIOSSessionService),​ 445/TCP (Microsoft-DS) и 137/UDP (NetBIOSNameService). Большинство червей ломятся именно сюда. Чтобы задействовать NAT в настойках виртуальной машины выбираем:​ VM->​Setting->​NIC->​NAT:​Usedtosharethehost'​sIPaddress. Затем входим в EditVirtualNetworkSettingNATEditPortForwarding,​ нажимаем "​Add"​ и поле "​Hostport"​ вводим порт, который мы ходим транслировать,​ например,​ "​135"​. В графе "​ForwardedIPAddress"​ указывается IP-адрес виртуального адаптера и целевой порт, совпадающий с транслируемым портом.
 +
 +Еще необходимо оттранслировать порты, используемые ботнетами для удаленного управления,​ иначе Мастер просто не сможет дотянется до дрона. Эти порты не стандартизированы и у каждого ботнета они свои. Чаще всего используются:​ 6667 (IRC), 903 (NetDevilBackdoor),​ 2745 (BagleBackdoor),​ 3127 (MyDoomBackdoor),​ 6129 (DamewareRemoteAdmin) и некоторые другие.
 +
 +Устанавливаем на виртуальную машину девственно-чистую W2K, водружаем поверх нее SyGatePersonalFirewall,​ приказывая ему грабить весь трафик (ToolsOptionsLogCaptureFullPacket,​ Maximumlogfilesizeis 1.048.576 KB — конкретный размер лога выбирается по вкусу. Здесь действует принцип — лучше перебрать,​ чем недобрать,​ иначе критически важные пакеты будут безвозвратно утеряны). Чтобы брандмауэр не надоедал постоянными запросами,​ в меню Security выбираем "​AllowAll",​ что означает "​дозволено все"​. Затем устанавливаем MicrosoftAntiSpyware и дезактивируем Защиту Реального Времени (OptionsSettingReal-TimeProtection). Нам он будет нужен только как сканер. Противодействие червям не входит в наши планы.
 +
 +Вот и все. Открываем пиво, входим в Интернет и терпеливо ждем, когда какой-нибудь червь не заползет на наш компьютер. Долго ждать не придется. Каждый день на мой компьютер залазит по меньшей мере пара-тройка червей,​ многие из которых являются ботами. Известные черви опознаются сканером,​ неизвестные выявляются просмотром логов брандмауэра (естественно,​ нужно знать основы TCP/IP чтобы их дешифровать).
 +
 +{{botnet_Image_2.png?​553}}
 +
 +Рисунок 3 ловушка для червя
 +
 +===== как побороть червя =====
 +
 +Просматривая трафик,​ награбленный брандмауэром (LogsTraffic/​PacketLogs),​ ищем соединения,​ установленные с 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 runningonopenbsdi368"​ и вырубить все команды автоматичесокго ответа (autoresponsetriggeringcommands),​ иначе Мастер легко обнаружит наше присутствие на канале и либо поставит бан, либо армия дронов запигует наш узел до смерти.
 +
 +Захват чужих ботнетов — это действительно рискованно и очень опасно,​ поэтому,​ без предварительной подготовки в этот дремучий лес лучше не ходить.
 +
 +{{botnet_Image_3.png?​558}}
 +
 +Рисунок 4 просмотр логов брандмауэра на предмет поиска червя
 +
 +===== >>>​ врезка:​ самый популярный ботнет =====
 +
 +Первое место по популярности занимает Agobot, насчитывающий свыше пятисот (!) своих модификаций. Это довольно продвинутый червь, написанный на приплюснутом Си с четко выраженной модульной структурой,​ значительно упрощающий наращивание функциональности червя. Agobot использует кросс-платформенную библиотеку libpcap для перехвата трафика и PCRE (PerlCompatibleRegularExpressions — Perl-Совместимые Регулярные Выражения) для обработки перехваченного контента (например,​ поиска паролей,​ номером кредиток и т. д.).
 +
 +Внутри червя обнаруживается целый "​букет"​ антиотладочных приемов. Agobot распознает большинство отладчиков (SoftICE, OllyDbg) и виртуальных машин (VMWare, VirtualPC) отказываясь работать в их присутствии. Кроме того, он может прятаться в NTFS-потоках,​ скрывая факт своего присутствия от многих примитивных ревизоров.
 +
 +Agobot был написан конкретным немецким пареньком по кличке Ago, так же известного под именем Wonk, арестованным в мае 2004 года за "​компьютерные преступления"​. Так хакерское сообщество потеряло одного из самых талантливых своих представителей. Сейчас он сидит в тюрьме,​ а его творение гуляет на свободе,​ распространясь в исходных текстах по лицензии GPL (отсюда и огромное количество модификаций).
 +
 +{{botnet_Image_4.png?​552}}
 +
 +Рисунок 5 червь Agobot, загруженный в дизассемблер
 +
 +===== >>>​ доработка VM-Ware =====
 +
 +Известно по меньшей мере три пути обнаружения VM-Ware. Во-первых,​ по оборудованию. Виртуальные машины несут на своем борту довольно специфический набор железа,​ практически не встречающийся в "​живой природе":​ а) видеокарта VMwareInc [VMwareSVGAII] PCIDisplayAdapter;​ б) сетевая карта: AdvancedMicroDevices [AMD] 79c970 [PCnet 32 LANCE] (rev 10); в) жесткие диски: VMwareVirtualIDEHardDrive и 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 определение версии VMWare
 +
 +Для маскировки виртуальной машины,​ Костей Кортчинским (KostyaKortchinsky) был написан специальный падч, изменяющий идентификационные строки оборудования,​ MAC-адреса и магический номер backdoor'​а.
 +
 +===== >>>​ врезка:​ где брать IP-адреса в P2P сетях =====
 +
 +Слепое сканирование IP-адресов которым занималось первое поколение червей сейчас уже непопулярно. Это слишком заметно и катастрофически непроизводительно. Вот поэтому некоторые черви предпочитают черпать IP-адреса из файлообменных сетей (например,​ eDonkey). Достаточно установить P2P клиента,​ выложить несколько файлов с заманчивыми названиями ("​голая анжелика монс",​ например) и юзеры потянутся за ними изо всех уголков сети. Сколько из них будет дырявыми можно даже не говорить! Поэтому,​ прежде чем качать порно из Осла обязательно сходите на Windows Update и установите все заплатки,​ которые только там есть.
 +
 +===== >>>​ врезка:​ полезные ссылки =====
 +
 +  - **www****.****honeynet****.****org**:​
 +    - официальный сайт некоммерческой исследовательской группы TheHoneynetProject,​ специализирующийся на червях. Это лучший источник информации по ботнетам на сегодняшний день!
 +  - **Know your Enemy**:
 +    - офф-лайновый архив статей по внутреннему устройству червей и ботнетов с кучей технических подробностях,​ интересных любому хакеру (на английском языке):​ __http://​www.honeynet.org/​misc/​files/​papers.tar.gz__;​
 +  - **vmpatch**:​
 +    - заплатка для VM-Ware, скрывающая ее присутствие от глаз червя, без этого Agobot и многие другие ботнеты просто не будут работать! __http____://​____honeynet____.____rstack____.____org____/​____tools____/​____vmpatch____.____c__;​
 +  - **IRSSI**:
 +    - бесплатный консольный IRC-клиент,​ распространяемый в исходных текстах:​ __http____://​____irssi____.____org____/​__;​
 +===== >>>​ врезка:​ где найти исходные тексты Agobot'​a?​ =====
 +
 +{{botnet_Image_5.png?​553}}
 +
 +Рисунок 6 исходные тексты ботнетов проще всего найти Осле
 +
 +===== заключение =====
 +
 +Что можно сделать с захваченным ботнетом?​ Самое благородное — отдать дронам команду на самоуничтожение,​ если, конечно,​ нам не жаль расставаться с властью и богатством. Ботнет — это выносливая лошадка,​ готовая распространять варез, видеоклимы,​ mp3 и т. д. Ботнеты,​ насчитывающие десятки и сотни тысяч машин, здорово помогают при вскрытии паролей методом тупого перебора. Дроны, снабженные микрофоном,​ сотовым телефоном или на худой конец обыкновенным модемом,​ можно превратить в подслушивающие устройство (про web-камеры мы вообще промолчим).
 +
 +Масса идей по управлению дронами содержится в новелле Джона Варли "​PressEnter",​ как раз и описывающую такой ботнет. Правда,​ конец, повествования трачен,​ так что прежде чем ложить лапы на клавиатуру,​ давайте задумается о том, к чему все это приведет.
 +
 +