diff --git a/test b/test new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/test @@ -0,0 +1 @@ + diff --git a/windows/gozi-isfb/ReadMe.txt b/windows/gozi-isfb/ReadMe.txt index fa94589..ac5c02c 100644 --- a/windows/gozi-isfb/ReadMe.txt +++ b/windows/gozi-isfb/ReadMe.txt @@ -1,198 +1,199 @@ -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- . +[Translated from Russian using Google Translate] + +ISFB - Bot program designed to analyze and modify HTTP traffic on the client's computer. + +Supports all 32-bit and 64-bit Windows, starting with Windows XP. +Supports all 32-bit and 64-bit versions of Internet Explorer since 6.0. +Supports all 32-bit and 64-bit versions of Mozilla Firefox. +Supports all 32-bit versions of Google Chrome. + +The software is able to install and work without administrator privileges. +Handles all HTTP traffic of the browser including encrypted HTTPS. + +The bot is managed from a remote server, using configuration files and commands. Configuration and command files are signed via RSA. +When receiving files, the bot checks the digital signature, and, if the signature does not match, the file is ignored. + +При первом запуске бот инициирует таймер. В дальнейшем, по таймеру, бот обращается на управляющий сервер за файлами. + +Поддерживается 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 +LOAD_REG_DLL = name, URL[,URL] - загрузить DLL по указанному URL, сохранить её под заданным именем и зарегистрировать для + автоматической загрузки после каждого запуска системы +UNREG_DLL = name - удалить из автоматической загрузки DLL c заданным именем - +Технические детали - - . - Windows (PE32). , , - DLL: 32 64- . - DLL . -DLL , : - , . +Дропер - программа установки. +Дропер представляет собой исполняемый файл Windows (PE32). В файле, в виде бинарного ресурса, содержятся +две упакованые DLL: 32х битный и 64х-битный бот. +При старте дропер распаковывает DLL и регистрирует их для автозапуска. +DLL распаковываются и регистрируются таким образом, чтобы иметь возможность выполняться при любом уровне привелегий: + как при администраторе, так и при пользователе. -DLL - . - (DLL). , DLL. -DLL- . - 2 : . -. - ( explorer.exe). +DLL - бот. +Бот представляет собой динамически загружаемую библиотеку (DLL). Для каждой архитектуры собирается своя, соответствующаяя DLL. +DLL-бот загружается во все запускаемые процессы. +Бот состоит из 2х логических компонентов: парсер и сервер. Парсер активируется в контексте процесса-браузера. +Сервер активируется в контексте процесса оболочки (как правило explorer.exe). - : -- / ( , ; , ) -- , , HTTP +Парсер выполняет следующие функции: +- отправка/получение данных (получение команд, конфигов; отправка форм, файлов) +- непосредственный перехват, анализ, и модификация HTTP траффика - ( explorer.exe) : -- (, ) -- , -- (, ) +Сервер (в контексте explorer.exe) выполняет: +- файловые операции (поиск, создание и удаление файлов) +- запуск программ, обновление +- системные функции (перезагрузка, блокировка ОС) - , , , explorer.exe, - . +Таким образом, все операции, требующие привелегий, выполняются сервером в контексте explorer.exe, +а все операции с сетью исключительно из браузера. - +Сборка и настройка - Microsoft Visual Studio 2005, . - , -. - : +Проект собирается при помощи Microsoft Visual Studio 2005, либо более поздней версии. +В проект интегрирован криптор, который используется по-умолчанию. +В результате сборки и криптовки получаются следующие файлы: Release\crm_p.exe Release\client_p.dll x64\Release\client_p.dll - , ( crm_p.exe) . - : +это упакованные и криптованые версии бота и дропера, причем дропер (файл crm_p.exe) содержит в себе два других. +Некриптованные версии бота лежат там же: Release\crm.exe Release\client.dll x64\Release\client.dll - , : -Release\dname.exe - - ; -Release\rsakey.exe - ; -config.exe - . +Кроме бота, проект включает в себя: +Release\dname.exe - утилита для генерации псевдо-случайных доменных имен; +Release\rsakey.exe - утилита для подписывания файлов команд и конфига; +config.exe - программа конфигуратор. - id.h config.h. -id.h . -config.h : , URL- , - , . +Основные настройки программы находятся в файлах 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. +Сборка с билдером + +Существует возможность собрать 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 - Library for working with the SQLLite database. Used by IM grabbers. +\ZConv - Zeus config converter to ISFB config files.