Когда вредонос решил собрать всё сразу: разбираем один очень насыщенный образец

Мне попался интересный файл, и я решил поделиться его разбором.
Почему именно этот? Потому что обычно при анализе попадается что-нибудь одно: загрузчик, стилер, RAT, какой-нибудь PowerShell-скрипт на три строки или очередной invoice.exe, который очень хочет стать invoice.pdf.
А тут разработчик, похоже, решил не выбирать.
PowerShell есть. Python есть. WMI есть. Scheduled Tasks есть. wscript.exe, cmd.exe, curl.exe, mshta.exe, rundll32.exe, regsvr32.exe — тоже на месте. Есть проверки окружения, изменение реестра, работа с hosts, попытки вмешательства в защиту, загрузка дополнительных файлов и даже признаки кражи данных.
Короче говоря, для человека, который занимается с вирусами, такие образцы — просто подарок. Можно открыть процесс-граф и несколько часов сидеть с лицом человека, которому принесли коробку с надписью «неизвестно что внутри», а внутри почему-то оказалось всё.
Поэтому предлагаю пройти эту цепочку от первого запуска до сетевой активности и посмотреть, что именно происходило на заражённой системе.
Что попало на анализ
Исходный объект — архив:
almost there.zipТип: ZIP archive
SHA-256: 2FD3E4FED8A88F9AA00A921CBB6FB564AA64943B20FC512CE3EB134D5EBFD2D3
MD5: F3CC6EFB88EE5613C97AD6A4FF45CFD1
SHA-1: 846D6535E15AE964818FC02B7F86C60608FE79ED
Анализ проводился на Windows 10 Professional x64, сборка 19044. В качестве основного исполняемого файла после распаковки фигурирует:
virusvippro.exeПо поведению это не один небольшой payload, а многоступенчатая цепочка. Сам архив пользователь открывает вручную, после чего начинается уже совсем другая история :(
И вот здесь становится интересно.
Начинаем с обычного ZIP
Первый шаг максимально банальный:
almost there.zip
|
v
WinRAR
|
v
virusvippro.exeАрхив распаковывается во временную директорию пользователя, после чего запускается virusvippro.exe.
На этом моменте ещё можно подумать:
Ну хорошо, очередной EXE из архива. Посмотрим, чем он нас порадует.
Порадует...
Первый поворот: PowerShell и Python
После запуска virusvippro.exe начинает использовать интерпретаторы и системные инструменты.
В цепочке появляются PowerShell и Python. Они используются для выполнения дополнительных команд, загрузки компонентов и изменения настроек системы. Также зафиксировано использование wscript.exe и cmd.exe для запуска VBScript и batch-команд.
Получается примерно такая конструкция:
virusvippro.exe
|
+---- powershell.exe
|
+---- python
|
+---- wscript.exe
|
+---- cmd.exe
И вот это уже гораздо интереснее, чем просто «запустился вредонос». Почему? Потому что основной EXE постепенно превращается в диспетчера. Сам он может делать не так уж много. Зато у него под рукой весь стандартный набор Windows:
PowerShell — выполнить команды;
WMI — собрать информацию;
cmd.exe— выполнить системные команды;wscript.exe— запустить VBScript;curl.exe— скачать или отправить данные;mshta.exe— запустить HTA;rundll32.exe— выполнить DLL;regsvr32.exe— зарегистрировать DLL.
То есть зачем писать собственный функционал, если Windows уже всё написала за тебя?
Следующий слой — проверяем, куда мы попали
Перед тем как развернуться на полную мощность, вредонос проверяет окружение. Были зафиксированы проверки BIOS, серийного номера BIOS, разрешения экрана и объёма оперативной памяти. Также используется WMI для получения информации об операционной системе и системе в целом.
Схема здесь примерно такая:
virusvippro.exe
|
v
WMI
|
+------------+------------+
| | |
v v v
BIOS RAM Screen
|
v
"А это точно
настоящий ПК?"Это типичная история для вредоносов, которые не хотят выполнять полезную нагрузку в виртуальной машине или песочнице. Если окружение кажется подозрительным, часть логики можно не выполнять. Для аналитика это, конечно, очень удобно. Особенно когда ты уже поставил Wireshark, Procmon, Sysmon, отладчик и приготовил кофе.
А теперь немного защиты
Следующий интересный момент — работа с защитными механизмами. В поведении образца зафиксированы изменения параметров Windows, в том числе реестра и настроек безопасности. Отдельно отмечены действия, связанные с Defender и изменением настроек мониторинга.
То есть логика становится примерно такой:
Запустились
|
v
Проверили систему
|
v
Проверили окружение
|
v
Попробовали уменьшить количество
помех со стороны защиты
|
v
Можно работать дальше
Это один из тех моментов, где динамический анализ особенно полезен. Статически можно увидеть PowerShell-команду и предположить, что она что-то меняет. A в динамике уже видно, что после неё действительно меняется состояние системы.
Затем появляется настоящий зоопарк LOLBins
Если посмотреть на список действий, становится понятно, что автор образца любит штатные инструменты Windows.
Используются:
cmd.exe
powershell.exe
wscript.exe
mshta.exe
rundll32.exe
regsvr32.exe
wmic.exe
curl.exe
netsh.exeПричём это не просто наличие файлов в системе. Они реально участвуют в цепочке выполнения. Например, mshta.exe используется для запуска HTA/HTML, rundll32.exe — для запуска файла, regsvr32.exe — для регистрации/запуска DLL, а wmic.exe используется для получения системной информации. В результате дерево начинает выглядеть уже довольно весело:
virusvippro.exe
├── powershell.exe
│ ├── cmd.exe
│ ├── curl.exe
│ └── ...
│
├── wscript.exe
│ └── powershell.exe
│
├── wmIC.exe
│
├── mshta.exe
│
├── rundll32.exe
│
└── regsvr32.exe
И вот тут уже хочется спросить разработчика:
Ты точно вредонос писал, а не собирал коллекцию системных бинарников?
VBScript тоже приехал
Один из интересных артефактов, который остаётся после выполнения:
C:\ProgramData\bsjpgczzn.vbsКроме него появляются дополнительные исполняемые файлы:
C:\ProgramData\MicrosoftLogsBEBD9AC8\SoftUpdateb320.exe
C:\ProgramData\Windows\csrss.exe
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\coronavirus.exeПоследний путь особенно интересен. Папка Startup — это уже не случайное место. Если туда положить исполняемый файл, Windows может запустить его при входе пользователя в систему.
А имя:
coronavirus.exeвыглядит так, будто автор просто открыл генератор имён и сказал:
Давай что-нибудь максимально подозрительное.
Причём ещё интереснее файл:
C:\ProgramData\Windows\csrss.exeПотому что настоящий csrss.exe находится совсем в другом месте. Именно поэтому имя системного процесса само по себе ещё ничего не говорит. Смотреть нужно на полный путь, родительский процесс и контекст запуска.
Persistence: вредонос не хочет уезжать домой
После первоначального запуска задача вредоносного ПО — не просто что-нибудь сделать и закрыться. Нужно остаться. В отчёте зафиксировано создание Scheduled Tasks с триггерами ONLOGON и повышенными привилегиями. То есть после следующего входа пользователя вредонос может снова запуститься. Упрощённо:
Первый запуск
|
v
Создание Scheduled Task
|
v
reboot
|
v
пользователь входит
|
v
task запускается
|
v
malware снова жив
Для злоумышленника это удобно. Для администратора — уже не очень.
И не только Scheduled Task
Помимо задач планировщика, в отчёте отмечены и другие механизмы закрепления и изменения системы.
В частности:
WMI Event Subscription;
COM-related persistence;
изменения реестра;
Startup;
модификация системных настроек.
То есть вредонос не ставит всё на одну карту. Если один механизм переживёт уборку, другой может остаться. И это одна из причин, почему после удаления одного exe нельзя просто сказать:
Всё, вирус удалён.
Нет. Нужно проверить всю цепочку.
Hosts тоже не оставили в покое
Отдельно зафиксирована модификация файла:
hostsЭто интересный приём. Если изменить соответствие имени и IP, можно заставить приложение обращаться не туда, куда оно должно.
Например:
example.com -> malicious-ipИ приложение продолжит думать, что разговаривает с обычным доменом. В образце прямо отмечено изменение hosts и необходимость восстановления его содержимого после очистки. Это хороший пример того, почему анализ файловой системы и конфигурации иногда не менее важен, чем просмотр процессов.
А теперь самое интересное — сеть
После подготовки системы вредонос начинает активно работать с сетью. В цепочке фигурируют HTTP-запросы за дополнительными файлами:
http://178.16.54.109/64.exe
http://safeifm.com/wp-admin/maint/bin.exe
http://out-agent.duckdns.org:49094/client.ps1Также в отчёте присутствуют многочисленные дополнительные URL и IP-адреса, связанные с загрузкой исполняемых файлов и другой сетевой активностью.
И вот здесь становится понятна архитектура:
virusvippro.exe
|
v
PowerShell / curl
|
v
download
|
v
next payload
|
v
execution
|
v
next payload
То есть архив — это фактически только первая дверь. Открыл её — дальше программа сама начинает искать следующие двери.
Почему здесь так много разных файлов?
Потому что каждый этап может выполнять свою задачу.
Например:
virusvippro.exe
|
+---- загрузчик
|
+---- PowerShell
|
+---- VBScript
|
+---- дополнительные EXE
|
+---- инструменты Windows
|
+---- полезная нагрузка
Такой подход усложняет анализ. Ты смотришь на один файл и пытаешься понять его назначение, а он в ответ:
Я ничего не знаю, я просто вызываю PowerShell.
Смотришь PowerShell:
Я просто скачиваю файл.
Смотришь скачанный файл:
Я просто создаю Scheduled Task.
И так можно ходить по кругу до тех пор, пока кофе не закончится.
Но дальше становится ещё веселее
В поведении присутствуют признаки credential stealing и работы с данными браузеров. В образце также отмечена возможность кражи учётных данных и browser-related information. То есть после того, как вредонос закрепился и получил необходимую информацию о системе, следующая логичная цель — данные пользователя. И здесь уже речь идёт не просто о «загрузчике». Цепочка выглядит скорее так:
ZIP
|
v
virusvippro.exe
|
+----+----+
| |
PowerShell Python
|
+----> Discovery
|
+----> Defense Evasion
|
+----> Persistence
|
+----> Download
|
+----> Credential Theft
|
+----> Exfiltration
Telegram в качестве транспорта
Отдельный интерес представляет использование curl.exe. Зафиксирована отправка данных через Telegram Bot API. То есть curl используется не только для загрузки файлов.
Он может стать обычным почтальоном:
похищенные данные
|
v
curl.exe
|
v
Telegram Bot API
|
v
операторИ это довольно удобная схема для злоумышленника. Не нужно писать собственный сетевой клиент. Не нужно придумывать сложный протокол. Есть curl, есть HTTPS и есть готовая инфраструктура. Windows опять всё сделала за него.
Получается довольно красивая цепочка
Если собрать всё вместе, получается примерно следующее:
almost there.zip
|
v
WinRAR
|
v
virusvippro.exe
|
+--------------+--------------+
| | |
v v v
PowerShell Python wscript.exe
| | |
+--------------+--------------+
|
v
Discovery / Checks
|
+----------+----------+
| |
v v
WMI VM/Sandbox checks
|
v
System information
|
v
Defense Evasion
|
+------+------+
| |
v v
Registry Defender
| |
+------+------+
|
v
Persistence
|
+------+------+
| |
v v
Scheduled Task Startup
| |
+------+------+
|
v
Download stage
|
+------+------+------+
| | | |
v v v v
curl mshta rundll32 regsvr32
|
v
Additional payloads
|
v
Credential / Browser data
|
v
curl.exe
|
v
Telegram Bot API
И это, пожалуй, самое интересное в этом образце. Перед нами не просто файл. Перед нами маленький конвейер.
Что осталось после выполнения
После анализа были зафиксированы следующие интересные артефакты:
C:\ProgramData\bsjpgczzn.vbs
C:\ProgramData\MicrosoftLogsBEBD9AC8\SoftUpdateb320.exe
C:\ProgramData\Windows\csrss.exe
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\coronavirus.exeА также временные PowerShell-файлы:
C:\Users\admin\AppData\Local\Temp\__PSScriptPolicyTest_*.ps1Их наличие особенно полезно при расследовании, потому что по ним можно восстановить часть выполнявшейся PowerShell-логики.
Что я бы искал в инфраструктуре
После такого анализа я бы не ограничивался поиском SHA-256 исходного архива. Гораздо интереснее искать саму цепочку.
Например:
wscript.exe
|
+--> powershell.exeили:
virusvippro.exe
|
+--> cmd.exeили запуск PowerShell из необычных директорий.
Отдельно стоит мониторить:
powershell.exe
curl.exe
wscript.exe
mshta.exe
rundll32.exe
regsvr32.exe
wmic.exeв связке с:
созданием Scheduled Task;
изменением Defender;
изменением hosts;
записью в Startup;
загрузкой файлов;
последующим запуском загруженного файла.
Именно связка событий здесь гораздо интереснее отдельных IOC.
Почему такие образцы я люблю разбирать
Потому что в них хорошо видно, как на практике собирается атака. Нет какого-то одного магического вызова:
evil()Вместо этого есть десятки совершенно обычных действий:
запустить PowerShell
узнать версию Windows
посмотреть BIOS
проверить RAM
изменить реестр
создать задачу
скачать файл
запустить VBScript
вызвать curl
изменить hosts
положить EXE в StartupЕсли смотреть на каждое событие отдельно — часть из них вообще выглядит нормально. Но если соединить их в одну временную линию, картина меняется полностью. Именно поэтому динамический анализ я считаю одним из самых интересных этапов реверса вредоносного ПО. Ты не просто читаешь код. Ты смотришь, как программа реально живёт на системе.
Итог
almost there.zip оказался хорошим примером многоступенчатой вредоносной цепочки.
После ручного запуска из архива выполняется virusvippro.exe, который использует PowerShell, Python и штатные инструменты Windows для дальнейшего выполнения. Затем идут сбор информации о системе и проверки окружения, попытки изменения защитных настроек, persistence через Scheduled Tasks и Startup, работа с WMI, загрузка дополнительных компонентов и дальнейшая сетевой активность. В цепочке также присутствуют признаки кражи данных и отправки информации через Telegram Bot API. Именно поэтому этот образец мне и понравился. Здесь практически учебник по тому, как вредонос может использовать штатные возможности Windows против самой Windows. А самое приятное для аналитика — каждый новый найденный процесс приводит ещё к одному вопросу:
«А этот-то зачем здесь?»
И очень часто ответ находится через пять минут. А иногда через пять часов. Но именно за такие находки мы и любим разбирать вредоносное ПО.
IOC
Архив:
almost there.zip
MD5:
F3CC6EFB88EE5613C97AD6A4FF45CFD1
SHA1:
846D6535E15AE964818FC02B7F86C60608FE79ED
SHA256:
2FD3E4FED8A88F9AA00A921CBB6FB564AA64943B20FC512CE3EB134D5EBFD2D3Основной файл:
virusvippro.exeЗафиксированные артефакты:
C:\ProgramData\bsjpgczzn.vbs
C:\ProgramData\MicrosoftLogsBEBD9AC8\SoftUpdateb320.exe
C:\ProgramData\Windows\csrss.exe
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\coronavirus.exeНаблюдавшиеся сетевые направления включают:
178.16.54.109
safeifm.com
out-agent.duckdns.org:49094
ny.lshdw.cc
62.60.226.140
193.178.158.107
192.162.199.186KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.