12.07.2015 Views

img - Xakep Online

img - Xakep Online

img - Xakep Online

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CODINGBotMasterСписок сгенерированных доменовв своем распоряжении ключ для расшифровки этого файла. Идеяхорошая, но мы пойдем другим путем, воспользовавшись прелестямисовременных технологий.В июньском номере ][ в статье «Уязвимости ONLINE» мы рассмотрелибазовые аспекты создания веб-сервисов на основе технологийASP.NET. Теперь копнем немного глубже и посмотрим, как строятсязащищенные веб-приложения — это пригодится нам для построенияадминистративной панели командного центра. Веб-приложение, в роликоторого выступает «админка», предоставляет ресурсы (то есть командныйфайл) своим клиентам (ботам). Всем «нежелательным» личностямвеб-приложение должно показывать маршрут в сторону леса.Процесс определения санкционированного клиента состоит из двухпоследовательных этапов:• Аутентификация — непосредственно распознавание клиента, запрашивающегоресурс;• Авторизация — определение, имеет ли аутентифицированный клиентнеобходимые права на запрашиваемый им ресурс.Для установки процесса аутентификации в конфигурационном файлевеб-сервиса Config.Web необходимо внести соответствующие изменения:Таким образом мы устанавливаем процесс аутентификации на основеCookies-файлов. Далее для аутентификации клиента необходимо принятьот него данные (UserLogin и UserPassword), сверить их с требуемымии, в случае успеха, передать ему cookies-файлы, которые понадобятсяклиенту для получения доступа к защищенной части сайта, гдехранится командный файл:void Login_Click(Object sender, EventArgs E) {if ((UserLogin.Value == "DotSiteTeam")&& (UserPassword.Value == "BestITResource")) {CookieAuthentication.RedirectFromLoginPage(UserLogin.Value,true);}else {//âûâîä ñîîáùåíèÿ î íåïðàâèëüíî ââåäåííûõ äàííûõ}}BotBotBotСхема децентрализованной топологииВ ASP.NET различают два вида авторизации, которые определяют, естьли у клиента соответствующие права на доступ к запрашиваемому URL,где хранится файл с командами: URL и File. Нам интересен первыйспособ управления доступом, позволяющий проводить разграничениедоступа клиента к ресурсу в зависимости от его имени и роли.Например, следующая конфигурация разрешает доступ к URL всемклие нтам, прошедшим аутентификацию, и запрещает всем остальным:BotBot«Пилить» административную часть ботнета можно не менее продолжительноевремя, чем самого бота, тем более, если в распоряженииимеются интересные технологи защиты веб-приложений ASP.NET, поэтомумы не будем пытаться объять необъятное, а перейдем к ключевойчасти — боту.ÁÎÒ Â ÐÀÇÐÅÇÅЛюбой современный ботнет должен подразумевать расширение своегофункционала. Зачем? Ну, например, если у бот-мастера возникло желаниепереквалифицировать свою армию зомби в сеть распределенныхвычислений, которая будет моделированием последствий ядерныхвзрывов. Плагинная архитектура позволяет «развязать» руки администраторусети и наращивать или обновлять функционал по мере необходимости.Учитывая данный факт, составим алгоритм действий нашегобота:1. получение команды от сервера;2. обработка команды, то есть ее классификация на «известную» или«неизвестную»;3. обработка соответствующим образом параметров команды в зависимостиот ее типа;4. выполнение команды.Получение команд заключает в скачивании текстового файла с сервера(command.txt). Реализацию скачивания файла берет на себя функцияHTTPDownload(char *FileUrl, char *FileName). Данная функциятакже используется и для скачивания необходимых .dll для ботнета.Я решил не заниматься рутиной, работая с сокетами, а воспользоватьсястандартной библиотекой, которая присутствует в Windows: wininet.dll.Данная DLL представляет собой API для доступа к общим протоколаминтернет, включая FTP, HTTP и Gopher. Это высокоуровневый API,позволяющий, в отличие от WinSock или TCP/IP, не заботиться о деталяхреализации соответствующих интернет-протоколов.106 XÀÊÅÐ 08 /139/ 10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!