
В последние годы мобильные трояны активно вытесняют трояны для персональных компьютеров, поэтому появление новых вредоносных программ под старые добрые «тачки» и их активное использование киберпреступниками, хотя и неприятное, но все-таки событие. Недавно центр круглосуточного реагирования на инциденты информационной безопасности CERT Group-IB зафиксировал необычную фишинговую рассылку, за которой скрывалась новая вредоносная программа для ПК, сочетающая в себе функции Keylogger и PasswordStealer. Внимание аналитиков привлекло то, каким образом шпионская программа попадала на машину пользователя — с помощью популярного голосового мессенджера. Илья Померанцев, специалист по анализу вредоносного кода CERT Group-IB рассказал, как работает вредоносная программа, чем она опасна, и даже нашел ее создателя — в далеком Ираке.

Итак, пойдем по порядку. Под видом вложения в таком вот письме содержалась картинка, при клике на которую пользователь попадал на сайт cdn.discordapp.com, и оттуда загружался вредоносный файл.
Использование Discord, бесплатного голосового и текстового мессенджера, достаточно нестандартно. Обычно для этих целей используются другие мессенджеры или социальные сети.

В процессе более детального анализа было установлено семейство ВПО. Им оказался новичок на рынке вредоносных программ — 404 Keylogger.
Первое объявление о продаже кейлоггера было размещено на hackforums пользователем под ником «404 Coder» 8 августа.

Домен магазина был зарегистрирован совсем недавно — 7 сентября 2019 года.

Как уверяют разработчики на сайте 404projects[.]xyz, 404 — это инструмент, созданный, чтобы помочь компаниям узнавать о действиях своих клиентов (с их разрешения) или он нужен тем, кто желает защитить свой бинарный файл от реверс-инжиниринга. Забегая вперед, скажем, что с последней задачей 404 точно не справляется.

Мы решили разреверсить один из файлов и проверить, что из себя представляет «BEST SMART KEYLOGGER».
Экосистема ВПО
Загрузчик 1 (AtillaCrypter)
Исходный файл защищен при помощи EaxObfuscator и осуществляет двухэтапную загрузку AtProtect из секции ресурсов. В ходе анализа других сэмплов, найденных на VirusTotal, стало понятно, что эта стадия не предусматривалась самим разработчиком, а была добавлена его клиентом. В дальнейшем было установлено, что этим загрузчиком является AtillaCrypter.

Загрузчик 2 (AtProtect)
По факту этот загрузчик является неотъемлемой частью ВПО и, по замыслу разработчика, должен брать на себя функционал по противодействию анализу.

Однако на практике механизмы защиты крайне примитивны, и наши системы успешно детектят это ВПО.
Загрузка основного модуля осуществляется при помощи Franchy ShellCode различных версий. Однако мы не исключаем, что могли использоваться и другие варианты, например, RunPE.
Конфигурационный файл

Закрепление в системе
Закрепление в системе обеспечивается загрузчиком AtProtect, если установлен соответствующий флаг.

- Файл копируется по пути %AppData%\\GFqaak\\Zpzwm.exe.
- Создается файл %AppData%\\GFqaak\\WinDriv.url, запускающий Zpzwm.exe.
- В ветке HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run создается ключ на запуск WinDriv.url.
Взаимодействие с C&C
Загрузчик AtProtect
При наличии соответствующего флага ВПО может запустить скрытый процесс iexplorer и перейти по указанной ссылке, чтобы уведомить сервер об успешном заражении.
DataStealer
Вне зависимости от используемого метода сетевое взаимодействие начинается с получения внешнего IP жертвы с помощью ресурса [http]://checkip[.]dyndns[.]org/.
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR1.0.3705;)
Одинакова и общая структура сообщения. Присутствует заголовок
|------- 404 Keylogger — {Type} -------|, где {type} соответствует типу передаваемой информации.

_______ + VICTIM INFO + _______
IP: {Внешний IP}
Owner Name: {Имя компьютера}
OS Name: {Название ОС}
OS Version: {Версия ОС}
OS PlatForm: {Платформа}
RAM Size: {Размер ОЗУ}
______________________________
И, наконец, — передаваемые данные.
SMTP
Тема письма имеет следующий вид: 404 K | {Тип сообщения} | Client Name: {Имя пользователя}.
Интересно, что для доставки писем клиенту 404 Keylogger используется SMTP-сервер разработчиков.

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

Логика этого действия не совсем понятна, однако это создает дополнительный артефакт для написания поведенческих правил.
%HOMEDRIVE%%HOMEPATH%\\Documents\\A{Произвольное число}.txt
Pastebin
На момент анализа этот метод применяется только для передачи украденных паролей. Причем он используется не как альтернатива первым двум, а параллельно. Условием является значение константы, равное «Vavaa». Предположительно, это имя клиента.

Взаимодействие происходит по https-протоколу через API pastebin. Значение api_paste_private равно PASTE_UNLISTED, что запрещает поиск таких страниц в pastebin.
Алгоритмы шифрования
Извлечение файла из ресурсов
Полезная нагрузка хранится в ресурсах загрузчика AtProtect в виде Bitmap-картинок. Извлечение осуществляется в несколько стадий:
- Из картинки извлекается массив байтов. Каждый пиксель трактуется как последовательность из 3 байтов в порядке BGR. После извлечения первые 4 байта массива хранят длину сообщения, последующие — само сообщение.

- Вычисляется ключ. Для этого высчитывается MD5 от значения «ZpzwmjMJyfTNiRalKVrcSkxCN», указанного в качестве пароля. Полученный хеш записывается дважды.

- Выполняется расшифровка алгоритмом AES в режиме ECB.
Вредоносный функционал
Downloader
Реализуется в загрузчике AtProtect.
- Обращением по [activelink-repalce] запрашивается статус сервера о готовности отдать файл. Сервер должен вернуть “ON”.
- По ссылке [downloadlink-replace] скачивается полезная нагрузка.
- С помощью FranchyShellcode осуществляется инжект полезной нагрузки в процесс [inj-replace].
В ходе анализа домена 404projects[.]xyz на VirusTotal были выявлены дополнительные экземпляры 404 Keylogger, а также несколько видов загрузчиков.

Условно они делятся на два типа:
- Загрузка осуществляется с ресурса 404projects[.]xyz.

Данные закодированы Base64 и зашифрованы AES.
- Этот вариант состоит из нескольких этапов и, вероятнее всего, используется в связке с загрузчиком AtProtect.
- На первой стадии данные загружаются с pastebin и декодируются при помощи функции HexToByte.

- На второй стадии источником загрузки служит сам 404projects[.]xyz. При этом функции декомпрессии и декодирования аналогичны найденным в DataStealer. Вероятно, изначально планировалось реализовать функционал загрузчика в основном модуле.

- На этом этапе полезная нагрузка уже находится в ресурс-манифесте в сжатом виде. Аналогичные функции извлечения также были найдены в основном модуле.
Среди проанализированных файлов были найдены загрузчики njRat, SpyGate и других RAT.
Keylogger
Период отправки лога: 30 минут.
Поддерживаются все символы. Спецсимволы экранируются. Есть обработка клавиш BackSpace и Delete. Учитывается регистр.
ClipboardLogger
Период отправки лога: 30 минут.
Период опроса буфера: 0,1 секунды.
Реализовано экранирование ссылок.

ScreenLogger
Период отправки лога: 60 минут.
Скриншоты сохраняются в %HOMEDRIVE%%HOMEPATH%\\Documents\\404k\\404pic.png.
После отправки папка 404k удаляется.
PasswordStealer
| Браузеры | Почтовые клиенты | FTP-клиенты |
|---|---|---|
| Chrome | Outlook | FileZilla |
| Firefox | Thunderbird | |
| SeaMonkey | Foxmail | |
| IceDragon | ||
| PaleMoon | ||
| Cyberfox | ||
| Chrome | ||
| BraveBrowser | ||
| QQBrowser | ||
| IridiumBrowser | ||
| XvastBrowser | ||
| Chedot | ||
| 360Browser | ||
| ComodoDragon | ||
| 360Chrome | ||
| SuperBird | ||
| CentBrowser | ||
| GhostBrowser | ||
| IronBrowser | ||
| Chromium | ||
| Vivaldi | ||
| SlimjetBrowser | ||
| Orbitum | ||
| CocCoc | ||
| Torch | ||
| UCBrowser | ||
| EpicBrowser | ||
| BliskBrowser | ||
| Opera |

Противодействие динамическому анализу
- Проверка нахождения процесса под анализом
Осуществляется с помощью поиска процессов taskmgr, ProcessHacker, procexp64, procexp, procmon. Если найден хотя бы один, ВПО завершает работу. - Проверка нахождения в виртуальной среде
Осуществляется с помощью поиска процессов vmtoolsd, VGAuthService, vmacthlp, VBoxService, VBoxTray. Если найден хотя бы один, ВПО завершает работу. - Засыпание на 5 секунд
- Демонстрация диалоговых окон различных типов
Может быть использовано для обхода некоторых песочниц. - Обход UAC
Выполняется через редактирование ключа реестра EnableLUA в настройках групповой политики. - Применение атрибута «Скрытный» для текущего файла.
- Возможность выполнить удаление текущего файла.
Неактивные возможности
В ходе анализа загрузчика и основного модуля были найдены функции, отвечающие за дополнительный функционал, однако они нигде не используются. Вероятно, это связано с тем, что ВПО все еще в разработке, и вскоре функциональность будет расширена.
Загрузчик AtProtect
Была найдена функция, отвечающая за подгрузку и инжект в процесс msiexec.exe произвольного модуля.

DataStealer
- Закрепление в системе

- Функции декомпрессии и дешифровки


Вероятно, скоро будет реализовано шифрование данных при сетевом взаимодействии.
- Завершение процессов антивирусов
| zlclient | Dvp95_0 | Pavsched | avgserv9 |
| egui | Ecengine | Pavw | avgserv9schedapp |
| bdagent | Esafe | PCCIOMON | avgemc |
| npfmsg | Espwatch | PCCMAIN | ashwebsv |
| olydbg | F-Agnt95 | Pccwin98 | ashdisp |
| anubis | Findviru | Pcfwallicon | ashmaisv |
| wireshark | Fprot | Persfw | ashserv |
| avastui | F-Prot | POP3TRAP | aswUpdSv |
| _Avp32 | F-Prot95 | PVIEW95 | symwsc |
| vsmon | Fp-Win | Rav7 | norton |
| mbam | Frw | Rav7win | Norton Auto-Protect |
| keyscrambler | F-Stopw | Rescue | norton_av |
| _Avpcc | Iamapp | Safeweb | nortonav |
| _Avpm | Iamserv | Scan32 | ccsetmgr |
| Ackwin32 | Ibmasn | Scan95 | ccevtmgr |
| Outpost | Ibmavsp | Scanpm | avadmin |
| Anti-Trojan | Icload95 | Scrscan | avcenter |
| ANTIVIR | Icloadnt | Serv95 | avgnt |
| Apvxdwin | Icmon | Smc | avguard |
| ATRACK | Icsupp95 | SMCSERVICE | avnotify |
| Autodown | Icsuppnt | Snort | avscan |
| Avconsol | Iface | Sphinx | guardgui |
| Ave32 | Iomon98 | Sweep95 | nod32krn |
| Avgctrl | Jedi | SYMPROXYSVC | nod32kui |
| Avkserv | Lockdown2000 | Tbscan | clamscan |
| Avnt | Lookout | Tca | clamTray |
| Avp | Luall | Tds2-98 | clamWin |
| Avp32 | MCAFEE | Tds2-Nt | freshclam |
| Avpcc | Moolive | TermiNET | oladdin |
| Avpdos32 | Mpftray | Vet95 | sigtool |
| Avpm | N32scanw | Vettray | w9xpopen |
| Avptc32 | NAVAPSVC | Vscan40 | Wclose |
| Avpupd | NAVAPW32 | Vsecomr | cmgrdian |
| Avsched32 | NAVLU32 | Vshwin32 | alogserv |
| AVSYNMGR | Navnt | Vsstat | mcshield |
| Avwin95 | NAVRUNR | Webscanx | vshwin32 |
| Avwupd32 | Navw32 | WEBTRAP | avconsol |
| Blackd | Navwnt | Wfindv32 | vsstat |
| Blackice | NeoWatch | Zonealarm | avsynmgr |
| Cfiadmin | NISSERV | LOCKDOWN2000 | avcmd |
| Cfiaudit | Nisum | RESCUE32 | avconfig |
| Cfinet | Nmain | LUCOMSERVER | licmgr |
| Cfinet32 | Normist | avgcc | sched |
| Claw95 | NORTON | avgcc | preupd |
| Claw95cf | Nupgrade | avgamsvr | MsMpEng |
| Cleaner | Nvc95 | avgupsvc | MSASCui |
| Cleaner3 | Outpost | avgw | Avira.Systray |
| Defwatch | Padmin | avgcc32 | |
| Dvp95 | Pavcl | avgserv |
- Самоуничтожение
- Загрузка данных из указанного ресурс-манифеста

- Копирование файла по пути %Temp%\\tmpG\\[Текущая дата и время в миллисекундах].tmp

Интересно, что идентичная функция присутствует в ВПО AgentTesla.
- Функционал червя
ВПО получает список съемных носителей. В корне файловой системы носителя создается копия ВПО с именем Sys.exe. Автозапуск реализован при помощи файла autorun.inf.

Профиль злоумышленника
В ходе анализа командного центра удалось установить почту и ник разработчика — Razer, он же Brwa, Brwa65, HiDDen PerSOn, 404 Coder. Далее было найдено любопытное видео на YouTube, где демонстрируется работа с билдером.



Это позволило найти оригинальный канал разработчика.

Стало ясно, что опыт в написании крипторов у него имеется. Там же есть ссылки на страницы в социальных сетях, а также настоящее имя автора. Им оказался житель Ирака.

Вот так, предположительно, выглядит разработчик 404 Keylogger. Фото из его личного профиля в Facebook.



CERT Group-IB оповестил о новой угрозе — 404 Keylogger — круглосуточный центр мониторинга и реагирования на киберугрозы (SOC) в Бахрейне.
Комментарии (7)

user52523
27.11.2019 14:52Лишний повод глянуть вывод docs.microsoft.com/en-us/sysinternals/downloads/autoruns

shep
28.11.2019 07:35Осуществляется с помощью поиска процессов vmtoolsd
Т.к. куча вредоносного софта не хотят быть замеченными, не стоит ли в своей системе на постоянку запустить пару процессов с именами ProcessHacker, procexp64, procexp, procmon, vmtoolsd? Есть мнение, на сколько это поднимет безопасность?

vesper-bot
28.11.2019 11:04Имхо процентов на 25. И вероятнее всего, хватит двух процессов, мимикрирующих под VM-тулзы (вмварь и гиперви), и одного procexp64, ибо винды сейчас почти все 64-битные, кроме ещё выживающих ХР, там надо procexp обычный "держать".

Victor_koly
28.11.2019 15:21Тогда ещё от VirtualBox добавить какой-то процесс, соответствующий установке GuestAdditions.
Victor_koly
Замечал ли кто-то, что какой-то антивирус при задаче «Сканировать автозапуск» по ярлыкам из веток Run не смотрит? Я несколько лет назад увидел, что ярлыки в Roaming\Microsoft\Windows\ Start Menu\Programs\Startup прогу «Dr. Web CureIt!» точно заставляют пойти глянуть, а вот такой способ запуска ярлыков — нет.
EditorGIB Автор
Закрепляться в системе или нет — это опция. Клиент может ее не выбрать. Тогда малвара закрепляться в системе не будет. А во-вторых, если антивирус не делает этого автоматически, то эта функция не принесет пользы, потому что датастиллер начинает кражу данных сразу, как только запустился.
Victor_koly
Тут Вы правы. Закрепляться нужно какому-то бекдору или хотя бы червю. В последнем случае — скажем почтовый будет мониторить появление новых адресов в книге и рассылать себя.