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


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

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

    Конфигурационный файл


    В таблице ниже перечислено, какие функциональные возможности применяются в используемом сэмпле:
    Описание
    Значение
    Флаг использования KeyLogger
    true
    Флаг использования ScreenLogger
    false
    Интервал отправки лога KeyLogger в минутах
    20
    Интервал отправки лога ScreenLogger в минутах
    20
    Флаг обработки клавиши Backspace. False – только логгирование. True – стирание предыдущей клавиши
    false
    Тип CnC. Варианты: smtp, webpanel, ftp
    smtp
    Флаг активации потока для завершения процессов из списка «%filter_list%»
    false
    Флаг отключения UAC
    false
    Флаг отключения менеджера задач
    false
    Флаг отключения CMD
    false
    Флаг отключения окна «Выполнить»
    false
    Флаг отключения инструмента просмотра реестра
    false
    Флаг отключения точек восстановления системы
    true
    Флаг отключения панели управления
    false
    Флаг отключения MSCONFIG
    false
    Флаг отключения контекстного меню в проводнике
    false
    Флаг закрепления в системе
    false
    Путь для копирования основного модуля при закреплении в системе
    %startupfolder% \\%insfolder%\\%insname%
    Флаг задания атрибутов «Системный» и «Скрытный» для закрепленного в системе основного модуля
    false
    Флаг выполнения рестарта при закреплении в системе
    false
    Флаг перемещения основного модуля во временную папку
    false
    Флаг выполнения обхода UAC
    false
    Формат даты и времени для записи в лог
    yyyy-MM-dd HH:mm:ss
    Флаг использования фильтра программ для KeyLogger
    true
    Тип фильтрации программ.
    1 – имя программы ищется в заголовках окна
    2 – имя программы ищется в имени процесса окна
    1
    Фильтр программ
    «facebook»,
    «twitter»,
    «gmail»,
    «instagram»,
    «movie»,
    «skype»,
    «porn»,
    «hack»,
    «whatsapp»,
    «discord»

    Закрепление основного модуля в системе


    Если установлен соответствующий флаг, основной модуль копируется по пути, указанному в конфиге как путь для закрепления в системе.

    В зависимости от значения из конфига файлу даются атрибуты «Скрытый» и «Системный».
    Автозапуск обеспечивается двумя ветками реестра:

    • HKCU\ Software\Microsoft\Windows\CurrentVersion\Run\%insregname%
    • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run\ %insregname%

    Поскольку загрузчик производит инжект в процесс RegAsm, установка флага персиста для основного модуля приводит к довольно интересным последствиям. Вместо того, чтобы скопировать само себя, ВПО закрепило в системе оригинальный файл RegAsm.exe, в процесс которого осуществлялся инжект.



    Взаимодействие с C&C


    Вне зависимости от используемого метода сетевое взаимодействие начинается с получения внешнего IP жертвы с помощью ресурса checkip[.]amazonaws[.]com/.
    Далее описаны методы сетевого взаимодействия, представленные в ВПО.

    webpanel


    Взаимодействие идет по HTTP-протоколу. ВПО выполняет POST-запрос со следующими заголовками:

    • User-Agent: Mozilla/5.0 (Windows U Windows NT 6.1 ru rv:1.9.2.3) Gecko/20100401 Firefox/4.0 (.NET CLR 3.5.30729)
    • Connection: Keep-Alive
    • Content-Type: application/x-www-form-urlencoded

    Адрес сервера задается значением %PostURL%. Зашифрованное сообщение передается в параметре «p». Механизм шифрования описан в разделе «Алгоритмы шифрования» (Метод 2).

    Передаваемое сообщение имеет следующий вид:

    type={0}\nhwid={1}\ntime={2}\npcname={3}\nlogdata={4}\nscreen={5}\nipadd={6}\nwebcam_link={7}\nclient={8}\nlink={9}\nusername={10}\npassword={11}\nscreen_link={12}

    Параметр type указывает на тип сообщения:


    hwid — записывается MD5-хеш от значений серийного номера материнской платы и ID процессора. Вероятнее всего, используется в качестве User ID.
    time — служит для передачи текущего времени и даты.
    pcname — определяется как <Имя пользователя>/<Имя компьютера>.
    logdata — данные лога.

    При передаче паролей сообщение имеет вид:

    type={0}\nhwid={1}\ntime={2}\npcname={3}\nlogdata={4}\nscreen={5}\nipadd={6}\nwebcam_link={7}\nscreen_link={8}\n[passwords]

    Далее следуют описания украденных данных в формате \nclient[]={0}\nlink[]={1}\nusername[]={2}\npassword[]={3}.

    smtp


    Взаимодействие идет по SMTP-протоколу. Передаваемое письмо имеет формат HTML. Параметр BODY имеет вид:


    Заголовок письма имеет общий вид: <ИМЯ ПОЛЬЗОВАТЕЛЯ>/<ИМЯ КОМПЬЮТЕРА> <ТИП КОНТЕНТА>. Содержимое письма, как и его вложения, не шифруются.


    Взаимодействие идет по ftp-протоколу. На указанный сервер передается файл с именем <ТИП КОНТЕНТА>_<ИМЯ ПОЛЬЗОВАТЕЛЯ>-<ИМЯ КОМПЬЮТЕРА>_<ДАТА И ВРЕМЯ>.html. Содержимое файла не шифруется.


    Алгоритмы шифрования


    В данном кейсе используются следующие методы шифрования:

    Метод 1


    Этот метод используется для шифрования строк в основном модуле. Для шифрования применяется алгоритм AES.

    На вход подается шестизначное десятичное число. Над ним производится следующее преобразование:

    f(x) = (((x >> 2 — 31059) ^ 6380) — 1363) >> 3

    Полученное значение является индексом для вшитого массива данных.

    Каждый элемент массива — последовательность DWORD. При объединении DWORD получается массив байтов: первые 32 байта — ключ шифрования, далее следуют 16 байтов вектора инициализации, а оставшиеся байты — зашифрованные данные.

    Метод 2


    Используется алгоритм 3DES в режиме ECB с дополнением в целых байтах (PKCS7).

    Ключ задается параметром %urlkey%, однако при шифровании используется его MD5-хеш.

    Вредоносный функционал


    Изучаемый сэмпл использует следующие программы для реализации своей вредоносной функции:

    KeyLogger


    При наличии соответствующего флага ВПО при помощи WinAPI-функции SetWindowsHookEx назначает свой обработчик для событий нажатия клавиш на клавиатуре. Функция обработчика начинается с получения заголовка активного окна.

    Если установлен флаг выполнения фильтрации приложений, производится фильтрация в зависимости от заданного типа:

    1. имя программы ищется в заголовках окна
    2. имя программы ищется в имени процесса окна

    Далее в лог добавляется запись с информацией об активном окне в формате:


    Затем записывается информация о нажатой клавише:
    Клавиша
    Запись
    Backspace
    В зависимости от флага обработки клавиши Backspace: False – {BACK}
    True – стирание предыдущей клавиши
    CAPSLOCK
    {CAPSLOCK}
    ESC
    {ESC}
    PageUp
    {PageUp}
    Down
    &darr;
    DELETE
    {DEL}

    &quot;
    F5
    {F5}
    &
    &amp;
    F10
    {F10}
    TAB
    {TAB}
    <
    &lt;
    >
    &gt;
    Пробел
    F8
    {F8}
    F12
    {F12}
    F9
    {F9}
    ALT+TAB
    {ALT+TAB}
    END
    {END}
    F4
    {F4}
    F2
    {F2}
    CTRL
    {CTRL}
    F6
    {F6}
    Right
    &rarr;
    Up
    &uarr;
    F1
    {F1}
    Left
    &larr;
    PageDown
    {PageDown}
    Insert
    {Insert}
    Win
    {Win}
    NumLock
    {NumLock}
    F11
    {F11}
    F3
    {F3}
    HOME
    {HOME}
    ENTER
    {ENTER}
    ALT+F4
    {ALT+F4}
    F7
    {F7}
    Другая клавиша
    Символ в верхнем или нижнем регистре в зависимости от положений клавиш CapsLock и Shift

    С заданной периодичностью собранный лог отправляется на сервер. Если передача оказалась неудачной, лог сохраняется в файл %TEMP%\\log.tmp в формате:


    Когда сработает таймер, файл будет передан на сервер.

    ScreenLogger


    С заданной периодичностью ВПО создает снимок экрана в формате Jpeg со значением Quality равным 50 и сохраняет его в файл %APPDATA %\\<Произвольная последовательность из 10 символов>.jpg. После передачи файл удаляется.

    ClipboardLogger


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


    После этого текст вставляется в лог:


    PasswordStealer


    ВПО может производить выгрузку паролей из следующих приложений:
    Браузеры
    Почтовые клиенты
    FTP клиенты
    Chrome
    Outlook
    FileZilla
    Firefox
    Thunderbird
    WS_FTP
    IE/Edge
    Foxmail
    WinSCP
    Safari
    Opera Mail
    CoreFTP
    Opera Browser
    IncrediMail
    FTP Navigator
    Yandex
    Pocomail
    FlashFXP
    Comodo
    Eudora
    SmartFTP
    ChromePlus
    TheBat
    FTPCommander
    Chromium
    Postbox
    Torch
    ClawsMail
    7Star
    Amigo
    BraveSoftware
    Jabber клиенты
    VPN клиенты
    CentBrowser
    Psi/Psi+
    Open VPN
    Chedot
    CocCoc
    Elements Browser
    Менеджеры загрузки
    Epic Privacy Browser
    Internet Download Manager
    Kometa
    JDownloader
    Orbitum
    Sputnik
    uCozMedia
    Vivaldi
    SeaMonkey
    Flock Browser
    UC Browser
    BlackHawk
    CyberFox
    K-Meleon
    IceCat
    IceDragon
    PaleMoon
    WaterFox
    Falkon Browser


    Противодействие динамическому анализу


    • Использование функции Sleep. Позволяет обойти по таймауту некоторые песочницы
    • Уничтожение потока Zone.Identifier. Позволяет скрыть факт загрузки файла из интернета
    • В параметре %filter_list% задается список процессов, которые ВПО будет завершать с интервалом в одну секунду
    • Отключение UAС
    • Отключение менеджера задач
    • Отключение CMD
    • Отключение окна «Выполнить»
    • Отключение панели управления
    • Отключение инструмента RegEdit
    • Отключение точек восстановления системы
    • Отключение контекстного меню в проводнике
    • Отключение MSCONFIG
    • Обход UAC:

    Неактивные возможности основного модуля


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

    Worm


    В отдельном потоке отслеживаются события подключения съемных носителей. При подключении в корень файловой системы копируется ВПО с именем scr.exe, после чего выполняется поиск файлов с расширением lnk. Команда каждого lnk меняется на cmd.exe /c start scr.exe&start <оригинальная команда>& exit.

    Каждой директории в корне носителя дается атрибут «Скрытый» и создается файл с расширением lnk с именем скрытой директории и командой cmd.exe /c start scr.exe&explorer /root,\"%CD%<ИМЯ ДИРЕКТОРИИ>\" & exit.

    MouseTracker


    Метод выполнения перехвата аналогичен используемому для клавиатуры. Этот функционал пока находится в разработке.

    Файловая активность


    Путь
    Описание
    %Temp%\temp.tmp
    Содержит счетчик попыток обхода UAC
    %startupfolder%\%insfolder%\%insname%
    Путь для закрепления в системе ВПО
    %Temp%\tmpG\{Текущее время в милесекундах}.tmp
    Путь для бэкапа основного модуля
    %Temp%\log.tmp
    Лог-файл
    %AppData%\{Произвольная последовательность из 10 симоволов}.jpeg
    Скриншоты
    C:\Users\Public\{Произвольная последовательность из 10 симоволов}.vbs
    Путь к vbs файлу, который загрузчик может использовать для закрпления в системе
    %Temp%\{Произвольное имя папки}\{Имя файла}
    Путь, используемый загрузчиком для закрепления в системе

    Профиль злоумышленника


    Благодаря «зашитым» данным аутентификации нам удалось получить доступ к командному центру.


    Это позволило нам выявить конечную почту злоумышленников:

    junaid[.]in***@gmail[.]com.

    Доменное имя командного центра зарегистрировано на почту sg***@gmail[.]com.

    Заключение


    В ходе детального анализа ВПО, использовавшегося в атаке, нам удалось установить его функциональные возможности и получить наиболее полный список индикаторов компрометации, актуальных для данного кейса. Понимание механизмов сетевого взаимодействия малвари позволило дать рекомендации по корректировке работы средств защиты информации, а также написать устойчивые IDS-правила.

    Основная опасность AgentTesla как DataStealer в том, что для выполнения своих задач ему не требуется производить закрепление в системе или ожидать получения управляющей команды. Попадая на машину, он немедленно начинает сбор приватной информации и передает ее на CnC. Такое агрессивное поведение в некотором роде схоже с поведением шифровальщиков, с той лишь разницей, что вторым не требуется даже наличие сетевого соединения. При столкновении с этим семейством после очистки зараженной системы от самого ВПО следует в обязательном порядке произвести смену всех паролей, которые могли хотя бы теоретически оказаться сохраненными в одном из перечисленных выше приложений.

    Забегая вперед, скажем, что злоумышленники, рассылающие AgentTesla, очень часто меняют первоначальный загрузчик. Это позволяет в момент атаки оставаться незамеченными для статических сканеров и эвристических анализаторов. А склонность этого семейства сразу же начинать свою деятельность делает бесполезными системные мониторы. Наилучший способ борьбы с AgentTesla — предварительный анализ в песочнице.

    В третьей статье этого цикла мы рассмотрим другие загрузчики, используемые AgentTesla, а также изучим процесс их полуавтоматической распаковки. Не пропустите!

    Hash


    SHA1
    A8C2765B3D655BA23886D663D22BDD8EF6E8E894
    8010CC2AF398F9F951555F7D481CE13DF60BBECF
    79B445DE923C92BF378B19D12A309C0E9C5851BF
    15839B7AB0417FA35F2858722F0BD47BDF840D62
    1C981EF3EEA8548A30E8D7BF8D0D61F9224288DD

    C&C


    URL
    sina-c0m[.]icu
    smtp[.]sina-c0m[.]icu


    RegKey


    Registry
    HKCU\Software\Microsoft\Windows\CurrentVersion\Run\{Имя скрипта}
    HKCU\Software\Microsoft\Windows\CurrentVersion\Run\%insregname%
    HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run\%insregname%

    Mutex


    Индикаторы отсутствуют.

    Files


    Файловая активность
    %Temp%\temp.tmp
    %startupfolder%\%insfolder%\%insname%
    %Temp%\tmpG\{Текущее время в милесекундах}.tmp
    %Temp%\log.tmp
    %AppData%\{Произвольная последовательность из 10 симоволов}.jpeg
    C:\Users\Public\{Произвольная последовательность из 10 симоволов}.vbs
    %Temp%\{Произвольное имя папки}\{Имя файла}

    Samples Info


    Name
    Unknown
    MD5
    F7722DD8660B261EA13B710062B59C43
    SHA1
    15839B7AB0417FA35F2858722F0BD47BDF840D62
    SHA256
    41DC0D5459F25E2FDCF8797948A7B315D3CB0753
    98D808D1772CACCC726AF6E9
    Type
    PE (.NET)
    Size
    327680
    OrginalName
    AZZRIDKGGSLTYFUBCCRRCUMRKTOXFVPDKGAGPUZI_20190701133545943.exe
    DateStamp
    01.07.2019
    Compiler
    VB.NET

    Name
    IELibrary.dll
    MD5
    BFB160A89F4A607A60464631ED3ED9FD
    SHA1
    1C981EF3EEA8548A30E8D7BF8D0D61F9224288DD
    SHA256
    D55800A825792F55999ABDAD199DFA54F3184417
    215A298910F2C12CD9CC31EE
    Type
    PE (.NET DLL)
    Size
    16896
    OrginalName
    IELibrary.dll
    DateStamp
    11.10.2016
    Compiler
    Microsoft Linker(48.0*)
    Group-IB
    66,83
    Компания
    Поделиться публикацией

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

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

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