Кейлоггер с сюрпризом: анализ клавиатурного шпиона и деанон его разработчика


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

    Комментарии 7

      0
      Создается файл %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!» точно заставляют пойти глянуть, а вот такой способ запуска ярлыков — нет.
        0
        Закрепляться в системе или нет — это опция. Клиент может ее не выбрать. Тогда малвара закрепляться в системе не будет. А во-вторых, если антивирус не делает этого автоматически, то эта функция не принесет пользы, потому что датастиллер начинает кражу данных сразу, как только запустился.
          0
          Тут Вы правы. Закрепляться нужно какому-то бекдору или хотя бы червю. В последнем случае — скажем почтовый будет мониторить появление новых адресов в книге и рассылать себя.
        +1
        Лишний повод глянуть вывод docs.microsoft.com/en-us/sysinternals/downloads/autoruns
          0
          Осуществляется с помощью поиска процессов vmtoolsd

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

            0

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

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

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое