Явка провалена: выводим AgentTesla на чистую воду. Часть 1


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

    Этим постом мы открываем серию статей о том, как проводить анализ подобных потенциально опасных файлов, а самых любопытных ждем 5 декабря на бесплатный интерактивный вебинар по теме «Анализ вредоносного ПО: разбор реальных кейсов». Все подробности — под катом.

    Механизм распространения


    Нам известно, что вредоносное ПО попало на машину жертвы через фишинговые письма. Получатель письма был, вероятно, поставлен в скрытую копию.


    Анализ заголовков показывает, что отправитель письма был подделан. В действительности письмо ушло с vps56[.]oneworldhosting[.]com.


    В аттаче письма находится архив WinRar qoute_jpeg56a.r15 с вредоносным исполняемым файлом QOUTE_JPEG56A.exe внутри.


    Экосистема ВПО


    Теперь посмотрим, как выглядит экосистема исследуемого вредоносного ПО. На схеме ниже изображена его структура и направления взаимодействия компонентов.


    Теперь рассмотрим каждый из компонентов ВПО подробнее.

    Загрузчик


    Исходный файл QOUTE_JPEG56A.exe представляет собой откомпилированный AutoIt v3 скрипт.


    Для обфускации исходного скрипта использовался обфускатор с аналогичными PELock AutoIT-Obfuscator характеристиками.
    Деобфускация производится в три этапа:

    1. Снятие обфускации For-If

      Первым делом необходимо восстановить поток управления скрипта. Запутывание потока управления (Control Flow Flattening) — один из наиболее распространенных способов защиты бинарного кода приложений от анализа. Запутывающие преобразования резко увеличивают трудоемкость выделения и распознавания алгоритмов и структур данных.


    2. Восстановление строк

      Для шифрования строк используются две функции:
      • gdorizabegkvfca — выполняет Base64-подобное декодирование

      • xgacyukcyzxz — простой побайтовый XOR первой строки с длиной второй




    3. Снятие обфускации BinaryToString и Execute


    Основная нагрузка хранится в разделенном виде в директории Fonts секции ресурсов файла.


    Порядок склейки следующий: TIEQHCXWFG, IME, SPDGUHIMPV, KQJMWQQAQTKTFXTUOSW, AOCHKRWWSKWO, JSHMSJPS, NHHWXJBMTTSPXVN, BFUTIFWWXVE, HWJHO, AVZOUMVFRDWFLWU.

    Для дешифровки извлеченных данных используется WinAPI-функция CryptDecrypt, а в качестве ключа применяется сессионный ключ, сгенерированный на основе значения fZgFiZlJDxvuWatFRgRXZqmNCIyQgMYc.

    Дешифрованный исполняемый файл поступает на вход функции RunPE, которая осуществляет ProcessInject в RegAsm.exe при помощи встроенного ShellCode (также известного как RunPE ShellCode). Авторство принадлежит пользователю испанского форума indetectables[.]net под ником Wardow.



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

    Сам ShellCode довольно прост и привлекает к себе внимание лишь позаимствованной у хакерской группы Anunak\Carbanak. функцией хеширования API-вызовов.




    Нам также известны случаи использования Frenchy Shellcode различных версий.
    Помимо описанного функционала мы также выявили неактивные функции:

    • Блокировка ручного завершения процесса в менеджере задач

    • Перезапуск дочернего процесса в случае его завершения

    • Обход UAC

    • Сохранение полезной нагрузки в файл

    • Демонстрация модальных окон

    • Ожидание смены позиции курсора мыши

    • AntiVM и AntiSandbox

    • Самоуничтожение

    • Выкачивание полезной нагрузки из сети


    Нам известно, что такой функционал характерен для протектора CypherIT, которым, судя по всему, и является исследуемый загрузчик.


    Основной модуль ВПО


    Далее кратко опишем основной модуль ВПО, а более подробно рассмотрим его во второй статье. В данном случае он представляет собой приложение на .NET.


    В ходе анализа мы выявили, что использовался обфускатор ConfuserEX.


    IELibrary.dll


    Библиотека хранится в виде ресурса основного модуля и является известным плагином для AgentTesla, который предоставляет функционал для извлечения различной информации из браузеров Internet Explorer и Edge.

    Agent Tesla — это модульное программное обеспечение для шпионажа, распространяемое по модели malware-as-a-service под видом легального кейлоггер-продукта. Agent Tesla способен извлекать и передавать на сервер злоумышленникам учетные данные пользователя из браузеров, почтовых клиентов и клиентов FTP, регистрировать данные буфера обмена, захватывать экран устройства. На момент анализа официальный сайт разработчиков был недоступен.

    Точкой входа служит функция GetSavedPasswords класса InternetExplorer.


    В целом, исполнение кода линейно и не содержит средств защиты от анализа. Внимания заслуживает лишь нереализованная функция GetSavedCookies. Видимо, функционал плагина предполагалось расширить, но это так и не было сделано.


    Закрепление загрузчика в системе


    Изучим, каким образом загрузчик закрепляется в системе. Исследуемый экземпляр не осуществляет закрепления, однако в аналогичных событиях оно происходит по следующей схеме:

    1. В папке С:\Users\Public создается скрипт Visual Basic

      Пример скрипта:

    2. Содержимое файла загрузчика дополняется нулевым символом и сохраняется в папку %Temp%\<Произвольное имя папки>\<Имя файла>
    3. В реестре создается ключ на автозапуск для файла скрипта HKCU\Software\Microsoft\Windows\CurrentVersion\Run\<Имя скрипта>

    Итак, по результатам первой части анализа нам удалось установить названия семейств всех компонентов изучаемого ВПО, разобрать схему заражения, а также получить объекты для написания сигнатур. Мы продолжим разбор этого объекта в следующей статье, где более детально рассмотрим основной модуль AgentTesla. Не пропустите!

    Кстати, 5 декабря приглашаем всех читателей на бесплатный интерактивный вебинар по теме «Анализ вредоносного ПО: разбор реальных кейсов», где автор этой статьи, специалист CERT-GIB, в онлайн-режиме покажет первый этап анализа ВПО — полуавтоматическую распаковку сэмплов на примере трех реальных мини-кейсов из практики, а вы сможете принять участие в анализе. Вебинар подойдет специалистам, которые уже имели опыт анализа вредоносных файлов. Регистрация строго с корпоративной почты: зарегистрируйтесь. Ждем вас!


    Yara



    rule AgentTesla_clean{
    meta:
        author = "Group-IB"
        file = "78566E3FC49C291CB117C3D955FA34B9A9F3EEFEFAE3DE3D0212432EB18D2EAD"
        scoring = 5
        family = "AgentTesla"
    strings:
        $string_format_AT = {74 00 79 00 70 00 65 00 3D 00 7B 00 30 00 7D 00 0D 00 0A 00 68 00 77 00 69 00 64 00 3D 00 7B 00 31 00 7D 00 0D 00 0A 00 74 00 69 00 6D 00 65 00 3D 00 7B 00 32 00 7D 00 0D 00 0A 00 70 00 63 00 6E 00 61 00 6D 00 65 00 3D 00 7B 00 33 00 7D 00 0D 00 0A 00 6C 00 6F 00 67 00 64 00 61 00 74 00 61 00 3D 00 7B 00 34 00 7D 00 0D 00 0A 00 73 00 63 00 72 00 65 00 65 00 6E 00 3D 00 7B 00 35 00 7D 00 0D 00 0A 00 69 00 70 00 61 00 64 00 64 00 3D 00 7B 00 36 00 7D 00 0D 00 0A 00 77 00 65 00 62 00 63 00 61 00 6D 00 5F 00 6C 00 69 00 6E 00 6B 00 3D 00 7B 00 37 00 7D 00 0D 00 0A 00 73 00 63 00 72 00 65 00 65 00 6E 00 5F 00 6C 00 69 00 6E 00 6B 00 3D 00 7B 00 38 00 7D 00 0D 00 0A 00 5B 00 70 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 73 00 5D 00}
        $web_panel_format_string = {63 00 6C 00 69 00 65 00 6E 00 74 00 5B 00 5D 00 3D 00 7B 00 30 00 7D 00 0D 00 0A 00 6C 00 69 00 6E 00 6B 00 5B 00 5D 00 3D 00 7B 00 31 00 7D 00 0D 00 0A 00 75 00 73 00 65 00 72 00 6E 00 61 00 6D 00 65 00 5B 00 5D 00 3D 00 7B 00 32 00 7D 00 0D 00 0A 00 70 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 5B 00 5D 00 3D 00 7B 00 33 00 7D 00 00 15 55 00 52 00 4C 00 3A 00 20 00 20 00 20 00 20 00 20 00 20 00 00 15 55 00 73 00 65 00 72 00 6E 00 61 00 6D 00 65 00 3A 00 20 00 00 15 50 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 3A 00}
    condition:
         all of them
    }
    
    rule  AgentTesla_obfuscated {
    meta:
        author = "Group-IB"
        file = "41DC0D5459F25E2FDCF8797948A7B315D3CB075398D808D1772CACCC726AF6E9"
        scoring = 5
        family = "AgentTesla"
    strings:
        $first_names = {61 66 6B 00 61 66 6D 00 61 66 6F 00 61 66 76 00 61 66 79 00 61 66 78 00 61 66 77 00 61 67 6A 00 61 67 6B 00 61 67 6C 00 61 67 70 00 61 67 72 00 61 67 73 00 61 67 75 00}
        $second_names = "IELibrary.resources"
    condition:
         all of them
    }
    
    rule AgentTesla_module_for_IE{
    meta:
        author = "Group-IB"
        file = "D55800A825792F55999ABDAD199DFA54F3184417215A298910F2C12CD9CC31EE"
        scoring = 5
        family = "AgentTesla_module_for_IE"
    strings:
        $s0 = "ByteArrayToStructure" 
        $s1 = "CryptAcquireContext" 
        $s2 = "CryptCreateHash" 
        $s3 = "CryptDestroyHash" 
        $s4 = "CryptGetHashParam" 
        $s5 = "CryptHashData"
        $s6 = "CryptReleaseContext" 
        $s7 = "DecryptIePassword" 
        $s8 = "DoesURLMatchWithHash" 
        $s9 = "GetSavedCookies" 
        $s10 = "GetSavedPasswords" 
        $s11 = "GetURLHashString"  
    condition:
         all of them
    }
    
    rule RunPE_shellcode {
    meta:
        author = "Group-IB"
        file = "37A1961361073BEA6C6EACE6A8601F646C5B6ECD9D625E049AD02075BA996918"
        scoring = 5
        family = "RunPE_shellcode"
    strings:
        $malcode = {
          C7 [2-5] EE 38 83 0C // mov     dword ptr [ebp-0A0h], 0C8338EEh
          C7 [2-5] 57 64 E1 01 // mov     dword ptr [ebp-9Ch], 1E16457h
          C7 [2-5] 18 E4 CA 08 // mov     dword ptr [ebp-98h], 8CAE418h
          C7 [2-5] E3 CA D8 03 // mov     dword ptr [ebp-94h], 3D8CAE3h
          C7 [2-5] 99 B0 48 06 // mov     dword ptr [ebp-90h], 648B099h
          C7 [2-5] 93 BA 94 03 // mov     dword ptr [ebp-8Ch], 394BA93h
          C7 [2-5] E4 C7 B9 04 // mov     dword ptr [ebp-88h], 4B9C7E4h
          C7 [2-5] E4 87 B8 04 // mov     dword ptr [ebp-84h], 4B887E4h
          C7 [2-5] A9 2D D7 01 // mov     dword ptr [ebp-80h], 1D72DA9h
          C7 [2-5] 05 D1 3D 0B // mov     dword ptr [ebp-7Ch], 0B3DD105h
          C7 [2-5] 44 27 23 0F // mov     dword ptr [ebp-78h], 0F232744h
          C7 [2-5] E8 6F 18 0D // mov     dword ptr [ebp-74h], 0D186FE8h
          }
    condition:
        $malcode 
    }
    
    rule AgentTesla_AutoIT_module{
    meta:
        author = "Group-IB"
        file = "49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08C05B5E3BD36FD52668D196AF"
        scoring = 5
        family = "AgentTesla"
    strings:                                    
        $packedexeau = {55 ED F5 9F 92 03 04 44 7E 16 6D 1F 8C D7 38 E6 29 E4 C8 CF DA 2C C4 E1 F3 65 48 25 B8 93 9D 66 A4 AD 3C 39 50 00 B9 60 66 19 8D FC 20 0A A0 56 52 8B 9F 15 D7 62 30 0D 5C C3 24 FE F8 FC 39 08 DF 87 2A B2 1C E9 F7 06 A8 53 B2 69 C3 3C D4 5E D4 74 91 6E 9D 9A A0 96 FD DB 1F 5E 09 D7 0F 25 FB 46 4E 74 15 BB AB DB 17 EE E7 64 33 D6 79 02 E4 85 79 14 6B 59 F9 43 3C 81 68 A8 B5 32 BC E6}
    condition:
         all of them
    }
    


    Hashes



    Name qoute_jpeg56a.r15
    MD5 53BE8F9B978062D4411F71010F49209E
    SHA1 A8C2765B3D655BA23886D663D22BDD8EF6E8E894
    SHA256 2641DAFB452562A0A92631C2849B8B9CE880F0F8F

    890E643316E9276156EDC8A
    Type Archive WinRAR
    Size 823014


    Name QOUTE_JPEG56A.exe
    MD5 329F6769CF21B660D5C3F5048CE30F17
    SHA1 8010CC2AF398F9F951555F7D481CE13DF60BBECF
    SHA256 49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08

    C05B5E3BD36FD52668D196AF
    Type PE (Compiled AutoIt Script)
    Size 1327616
    OrginalName Unknown
    DateStamp 15.07.2019
    Linker Microsoft Linker(12.0)[EXE32]


    MD5 C2743AEDDADACC012EF4A632598C00C0
    SHA1 79B445DE923C92BF378B19D12A309C0E9C5851BF
    SHA256 37A1961361073BEA6C6EACE6A8601F646C5B6ECD

    9D625E049AD02075BA996918
    Type ShellCode
    Size 1474
    Group-IB
    Компания

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

      0
      Классно, и паттерн и хеши картинкой зафигачить.
        –1
        спасибо, enjoy!

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

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