Простой и мультифункциональный - это ли не идеальный вирус? Анализ стиллера FormBook. Часть вторая
Приветствую, это вторая часть анализа вредоноса FormBook, без лишних слов и воды, сразу переходим к делу. Также, если вы не читали первую часть, то советую ознакомиться с ней Простой и мультифункциональный - это ли не идеальный вирус? Анализ стиллера FormBook. Часть первая.
Дисклеймер
На самом деле я против зла и то, что я покажу вам далее, может быть, практически применено различного рода антагонистами. Сразу предупреждаю, что я, как автор этой писанины , снимаю с себя ответственность за то с каким умыслом будет использована эта информация дальше. Виноват только и только тот, кто применяет знания, но не тот, кто ими делится. Автор лишь преследует благие цели, используя способы и пути злоумышленников, раскрывает суть преступного механизма, открывая людям глаза, демонстрируя способы защиты, ведь лучший протект - это знания.
Закрепление себя в системе, уничтожение потенциально опасных процессов, определение среды выполнения
Итак, сразу же отмечаю, что вредонос закрепляет себя в системе не совсем обычным образом, этот нестандартный процесс характерен практически для всех модификаций вредоноса. Так как Формбук извлекается непосредственно в память системы и его основное тело представлено в виде шеллкода, то “физически” на устройстве он не существует.
Также существует ряд нюансов, затрудняющих анализ, во-первых, все более важные API скрыты с помощью хэшей, но благо умные люди из западных антивирусных компаний их расшифровали, к примеру 0C84882B8h => CoCreateInstance() и 44E954F9h => CreateDirectoryW. Оставляю ссылку на полную таблицу вызовов и их хэшей. Во-вторых, некоторые хэш-коды задаются постоянным значением, а некоторые расшифровываются из ConfigObj и из-за этого могут существовать разногласия с таблицей.
Ранее мы извлекли его с помощью утилиты HollowsHunter, но могли и немного иначе. Так как чтобы закрепиться в системе вредоносу нужно себя материализовать.
Процесс этот действительно занятный, потому что вредонос не просто создает свою материальную копию, а перезаписывает уже имеющийся системный файл.
Но обо всем по порядку, сперва Формбук создает нечто вроде временного хранилища своих данных под названием mainfile.tmp. Директории, где это происходит отличаются от версии к версии, конкретно в этой сие действо происходит непосредственно в C:\Users\%user%.
Затем Формбук обращается к файлу «AddInProcess32.exe» , который является частью .NET Framework и расположен в C:\Windows\Microsoft.NET\Framework\. Следом используя системный вызов CopyFileEx он копирует его в папку Temp, где проводит модификацию.
Перезапись происходит достаточно просто: сперва происходит запуск скопированного файла, с помощью очередного системного вызова CreateProcessAsUser() с параметром 4U. 4U в данном случае обозначает “CreateSuspended”, то есть создать замороженный процесс. После Формбук воспользуется ещё один системным вызовов WriteProcessMemory и перезапишет память легитимного процесса, внедряясь туда.
Однако это ещё не конец, ведь после этого та самая копия AddInProcess32.exe будет полностью перезаписана посредством вызова WriteFile. И считайте полностью легитимный .exe превращается в вредонос. Ну и конечно все это переносится в папку автозагрузки, создается соответствующий ключ в реестре Windows.
Сложно и занимательно, я истинно не понимаю зачем было реализовывать именно такой механизм? Вирус и так будет рано или поздно обнаружен, как ты его не маскируй, а вот эти шеллкодовые махинации только вызывают больше вопросов, чем понимания.
Долой эти шизодвижения, давайте перейдем к системам безопасности, у вредоноса имеется целый список процессов, которые он считает потенциально опасными для своей жизнедеятельности, туда входят: vmwareuser.exe, vmwareservice.exe, VBoxService.exe, VBoxTray.exe, sandboxiedcomlaunch.exe, sandboxierpcss.exe, procmon.exe, filemon.exe, Wireshark.exe, NetMon.exe, prl_tools_service.exe, prl_cc.exe, vmtoolsd. exe, vmsrvc.exe, vmusrvc.exe, python.exe, perl.exe, regmon.exe.
Все эти наименования процессов содержатся в конфигурационном модуле ConfigOBJ в виде хэшей. Для поиска и обнаружения вредонос использует API ZwQuerySystemInformation() с параметром SystemProcessInformation, чтобы собрать информацию обо всех запущенных процессах.
А вызов KillProcessByName() поможет Формбуку уничтожить любой потенциально опасный для него процесс.
Сбор информации о системе жертвы и связь с C&C сервером
Итак, здесь реализовано все достаточно просто. Сперва происходит проверка наличия интернет-соединения, путем банального пингования широко известных ресурсов, типа Google или Bing.
После этого вредонос использует системный API CreateFileA, чтобы создать временный файл для записи информации об устройстве в директории C:\Users\User\AppData\Roaming. Имя этого файлика совершенно рандомно и отличается с каждым запуском вредоноса, на этот раз мы имеем - B909090h.
А дальше идут типичные для каждого вируса подобного типа действия: будет совершен ещё один запрос на любой ресурс, отображающий IP адрес устройства жертвы.
Также с помощью системного вызова SystemInfo, вирусняк получает следующие данные: версия операционной системы, имя пользователя, количество оперативной памяти, тип и количество процессоров.
Как можно догадаться, дальше эта информация записывается в ранее созданный файл и отправляется на командный сервер, примечательно, что не происходит никакой проверки доступности инфраструктуры управления, чисто POST запрос. А вдруг он недоступен? Сам IP адрес командного сервера расположен в модуле ConfigOBJ и зашифрован обычным Base64 и о нем мы поговорим немного позже.
Непосредственно кража данных
И здесь я немного разочаровался. Если честно, несколько лет назад, я уже писал анализ Формбука более старой версии. И тогда это был образец гениальной инженерной мысли, но сейчас… Что-то все немного стало попроще.
Начнем с браузеров. Здесь все достаточно просто, вредонос снова использует функцию mw_parsing_browser_db, которая является простой реализацией поиска. С помощью этой функции Формбук способен найти все, что ему потребуется. Здесь нет особых проблем и путаницы, как это было в ранних версиях Редлайна, просто происходит поиск по словарю, который захардкоджен, в этот словарь входят следующие браузеры: Firefox: %APPDATA%\Mozilla\Firefox\, IceCat: %APPDATA%\Mozilla\icecat\, PaleMoon: %APPDATA%\Moonchild Productions\Pale Moon\, SeaMonkey: %APPDATA%\Mozilla\SeaMonkey\, Flock: %APPDATA%\Flock\Browser\, K-Meleon: %APPDATA%\K-Meleon\, Postbox: %APPDATA%\Postbox\, Thunderbird: %APPDATA%\Thunderbird\, IceDragon: %APPDATA%\Comodo\IceDragon\, WaterFox: %APPDATA%\Waterfox\, BlackHawk: %APPDATA%\NETGATE Technologies\BlackHawk\, CyberFox: %APPDATA%\8pecxstudios\Cyberfox\, Opera Browser: %APPDATA%\Opera Software\Opera Stable, Yandex Browser: %APPDATA%\Yandex\YandexBrowser\User Data, Iridium Browser: %APPDATA%\Iridium\User Data, Chromium: %APPDATA%\Chromium\User Data
Рядом не просто так указана целевая директория, где хранятся данные, в случае обнаружения Формбук попросту копирует эту папку и доставляет в архив, который впоследствии будет отправлен на командный сервер.
Аналогичная методика работает не только с браузерами, но и с ВПН сервисами и популярными FTP менеджерами.
Формбук как кейлоггер и троян удаленного доступа
Думаю, излишним будет пояснять, что такое кейлоггер и RAT, все таки не для детсадовцев пишу. Здесь все немного интереснее, так как Формбук имеет простенький модуль кейлоггера, который не отличается особой уникальностью и такое чувство, будто он просто был взят с гитхаба и немного переписан. Все ведь помнят историю, когда один такой простенький репозиторий был модифицирован Но да ладно. Давайте рассмотрим его более детально.
Как видно на скриншоте, здесь все работает на системном вызове GetKeyState, данный метод является типичным для большинства вредоносов. Захваченные нажатия будут сохранены в файл log.txt, который также будет добавлен к архиву с ворованными данными. Интересным является то, что после первой отправки кейлоггер остается активным и через определенный временной промежуток логи будут отправлены на командный сервер снова и уже отдельно от архива. То есть этот модуль практически не зависит от основного тела вредоноса.
Также здесь присутствует функция захвата экрана, то есть злоумышленник может получить снимки рабочего пространства с устройства жертвы, реализовано все с помощью функции System.Drawing.Imaging.
Возможностей у вредоноса множество, но я пытаюсь выделить самые основные, иначе статья будет иметь третью часть. Ещё одним интересной фичей Формбук есть наличие продвинутой системы экстрафильтрации данных. Что-то наподобие файлового менеджера:злоумышленник может просмотреть любой каталог на зараженном устройстве, скачать любой файл и загрузить его туда же.
Система очень схожа с той, которая присутствует в ранних образцах Агента Теслы, так как тоже происходит через TOR соединение.
Формбук задействует функцию mw_tor_http_request и с её помощью выгружает целевой файлик на командный сервер.
Выводы
Не хотел делать эту статью слишком длинной, так как понимаю - аналитический материал скучный, но может кому-то зайдет. На этом у меня всё. Формбук действительно уникальный представитель вирусной братии, он не подкупает чем-то продвинутым, но функционалом.
На данном этапе новые версии Формбука очень быстро обнаруживаются и добавляются в антивирусные базы. Поэтому его эффективность на данном этапе под огромным вопросом. А на этом у меня всё. Остаемся на связи. Ваш DeathDay.
Последнее редактирование: