В последние годы мобильные трояны активно вытесняют трояны для персональных компьютеров, поэтому появление новых вредоносных программ под старые добрые «тачки» и их активное использование киберпреступниками, хотя и неприятное, но все-таки событие. Недавно центр круглосуточного реагирования на инциденты информационной безопасности 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, а также несколько видов загрузчиков.


Условно они делятся на два типа:

  1. Загрузка осуществляется с ресурса 404projects[.]xyz.


    Данные закодированы Base64 и зашифрованы AES.
  2. Этот вариант состоит из нескольких этапов и, вероятнее всего, используется в связке с загрузчиком 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)


  1. Victor_koly
    27.11.2019 13:53

    Создается файл %AppData%\\GFqaak\\WinDriv.url, запускающий Zpzwm.exe.
    В ветке HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run создается ключ на запуск WinDriv.url.

    Замечал ли кто-то, что какой-то антивирус при задаче «Сканировать автозапуск» по ярлыкам из веток Run не смотрит? Я несколько лет назад увидел, что ярлыки в Roaming\Microsoft\Windows\ Start Menu\Programs\Startup прогу «Dr. Web CureIt!» точно заставляют пойти глянуть, а вот такой способ запуска ярлыков — нет.


    1. EditorGIB Автор
      27.11.2019 15:34

      Закрепляться в системе или нет — это опция. Клиент может ее не выбрать. Тогда малвара закрепляться в системе не будет. А во-вторых, если антивирус не делает этого автоматически, то эта функция не принесет пользы, потому что датастиллер начинает кражу данных сразу, как только запустился.


      1. Victor_koly
        27.11.2019 22:20

        Тут Вы правы. Закрепляться нужно какому-то бекдору или хотя бы червю. В последнем случае — скажем почтовый будет мониторить появление новых адресов в книге и рассылать себя.


  1. user52523
    27.11.2019 14:52

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


  1. shep
    28.11.2019 07:35

    Осуществляется с помощью поиска процессов vmtoolsd

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


    1. vesper-bot
      28.11.2019 11:04

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


      1. Victor_koly
        28.11.2019 15:21

        Тогда ещё от VirtualBox добавить какой-то процесс, соответствующий установке GuestAdditions.