CODINGДенис «c0n Difesa» Макрушин condifesa@gmail.com, http://defec.ruÈñêóññòâîçîìáèðîâàíèÿÀçáóêà ñîçäàíèÿ íåóãîíÿåìûõ áîòíåòîâÑîâðåìåííûå áîò-ñåòè ïî ñâîåé ÷èñëåííîñòè äàâíî ïåðåøàãíóëèìèëëèîííóþ ïëàíêó. Èõ ìàñøòàáû ïîçâîëÿþò áîò-ìàñòåðàì«ðàñïàðàëëåëèòü» ôèíàíñîâûå ïîòîêè îò ïðåäîñòàâëÿåìûõóñëóã. Íûíåøíèå ïîäõîäû ê ïðîåêòèðîâàíèþ áîòíåòà ïîçâîëÿþòèñïîëüçîâàòü åãî êàê äëÿ îñóùåñòâëåíèÿ óæå ñòàâøèõ êëàññèêîéâ íàøå âðåìÿ DDoS-àòàê, òàê è äëÿ ðàáîòû íà óðîâíå îòäåëüíî âçÿòûõõîñòîâ.Зачем? Например, с целью получения какой-либо конфиденциальнойинформации, сбора TAN (Transaction authentication number, используетсяв качестве дополнительного средства аутентификации в сервисахонлайн-банкинга), аккаунтов к целевым ресурсам. И все эти манипуляцииосуществляются в параллельном режиме разными частямиодной бот-сети. По мере роста «персональной армии» могут появитьсядополнительные подводные камни, которые трудно отследить на этапепроектировки бота и еще труднее от них избавиться, так как любое изменениев его архитектуре может разрушить ботнет как карточный домик.Именно поэтому у будущего бот-мастера должно быть четкое представлениемасштабов своей сети, решаемых ею задач и варианты действийна случай ее утраты. Последний пункт особенно актуален для бот-сетейбольших масштабов или принадлежащих к кардерской инфраструктуре.Заинтересоваться детищем могут как конкуренты, так и правоохранительныеорганы. Все возможные риски должны быть также выявлены иустранены на этапе проектировки. Год назад в нашем журнале концепциюидеального ботнета детально описал Роман Хоменко в своей статье«Вечный ботнет». В ней он изложил принципы создания бота, организациюполучения команд от командного центра, а также внес некоторыепостулаты проектирования бот-сети. Советую взять его материал за основу.В свою очередь, следуя теоретическим аспектам построения «идеальнойармии», мы рассмотрим практическую сторону создания бота.ÀÐÕÈÒÅÊÒÓÐÀ — ÍÀØÅ ÂÑÅСуществует множество способов управления зараженными хостами ипередача команд каждой машине. Все зависит от конкретных предпочтенийбот-мастера. В зависимости от типа используемого протоколакомандным центром может выступать:• Веб-сервер — управление осуществляется через веб-интерфейс. Внастоящее время это самый распространенный способ (кстати, именноего использует нашумевший Zeus).• Instant Message среда — передача команд по одному изIM-протоколов (ICQ, jabber, MSN и т.п.). Используется в бот-сетях снебольшим количеством хостов.• IRC — командный центр находится на одном из IRC-каналов.Морально устаревший метод осуществления контроля. В настоящеевремя практически не используется из-за высокой степени вероятностиизолирования (перехвата) командного центра.• Twitter-среда — управление ботнетом посредством передачи командв твиттер-аккаунте. Довольно экзотический способ, но имеет право насуществование в условиях повсеместной распространенности социальныхсетей и веб-сервисов, предоставляющих свои API. Кстати, в данномслучае можно не задумываться о том, что командный центр можетупасть из-за нагрузки своей же «армии», ведь большинство данныхпроектов рассчитаны на огромную аудиторию и имеют соответствующиесредства масштабируемости.• TCP/IP-based — управление посредством протоколов, базирующихсяна стеке TCP/IP. Под эту категорию попадают все остальные способы,основанные на передаче команд по экзотическим и самописным протоколам.Обилие данных методов можно классифицировать всего лишь по двумпризнакам (смотри соответствующие рисунки):• Передача команд посредством командного центра (централизованнаятопология);• Передача команд от бота к боту или P2P (децентрализованная топология).Удобство централизованных схем объясняется наличием единогоцентра, к которому обращаются боты с целью получения задания.Не нужно беспокоиться о своевременном получении командыконкретным ботом. Факты получения, выполнения, успешного/неуспешного завершения задачи легко фиксируются, что позволяетвести детальную статистику. Однако централизованная топологияостается актуальной лишь для небольших бот-сетей по следующимпричинам:• Плохая масштабируемость (с ростом числа зараженных хостов растетнагрузка на командный центр и увеличивается вероятность осуществленияатаки типа «отказ в обслуживании» на сервер, передающийзадания);104 XÀÊÅÐ 08 /139/ 10
codingMasterBotBotBotСхема централизованной топологии• Централизованное управление (высокая вероятность изолированиякомандного центра, что немедленно «парализует» весь ботнет).Децетрализованная топология полностью лишена вышеперечисленныхнедостатков и в силу особенностей своей архитектуры обеспечиваетбольшую «живучесть» бот-сети. Но, как всегда, в бочку меда обязательнокем-то вылита солидная ложка дегтя, и в нашем случае — не одна:1) Peer-to-peer схема предполагает уведомление каждого бота о существованиидругих зараженных машин. Эта процедура является довольно«палевной», так как необходимо хранить на каждой зараженной рабочейстанции огромный (мы рассматриваем большие ботнеты) файл сосписком IP всех ботов сети и в реальном времени его обновлять, еслитребуется доставка команд каждой «боевой единице»;2) Обновление списка и получение команды требуют дополнительно —открытых портов на зараженной машине, что увеличивает вероятностьобнаружения ботнета;3) Значительное время затрачивается на передачу задания от хоста кхосту (P2P) и, соответственно, растет общее время его выполнения;4) Трудность ведения статистических данных (сколько ботов получили/выполнили задание).В большинстве случаев обилие недостатков и сложность реализацииP2P-ботнетов являются решающими факторами в пользу выбора централизованнойтопологии. Мы также не будем изобретать велосипед, авоспользуемся мировыми практиками.Капризный командный центр, который постоянно находится в условиинеустойчивого равновесия, стремясь упасть при малейшем росте нашей«армии», так и норовит отдаться в руки правоохранительных органов,которые вот-вот прикроют главный домен. Пусть прикрывают — хакерего сменит.ÏÑÅÂÄÎÑËÓ×ÀÉÍÛÅ ÈÌÅÍÀГенератор псевдослучайных чисел имеет одну особенность, котораяявляется ключевой для бот-мастера — получая на вход параметр в видефиксированного значения, ГПЧ генерирует случайную последовательность,которая будет одинакова на различных рабочих станциях приусловии получения их генераторами этого параметра.Чтобы тебе не пришлось долго искать смысл в использовании ГПЧ, рассмотримследующую функцию:Функция генерации псевдослучайнойпоследовательностиint generator (int seed) {srand(seed);/* âûâîä äâàäöàòè ïåðâûõ ýëåìåíòîâïîñëåäîâàòåëüíîñòè*/for (x = 1; x