Мне попался интересный файл, и я решил поделиться его разбором.
Почему именно этот? Потому что обычно при анализе попадается что-нибудь одно: загрузчик, стилер, 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 | vWinRAR | vvirusvippro.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.exepowershell.exewscript.exemshta.exerundll32.exeregsvr32.exewmic.execurl.exenetsh.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.exeC:\ProgramData\Windows\csrss.exeC:\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.exehttp://safeifm.com/wp-admin/maint/bin.exehttp://out-agent.duckdns.org:49094/client.ps1
Также в отчёте присутствуют многочисленные дополнительные URL и IP-адреса, связанные с загрузкой исполняемых файлов и другой сетевой активностью.
И вот здесь становится понятна архитектура:
virusvippro.exe | vPowerShell / 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.vbsC:\ProgramData\MicrosoftLogsBEBD9AC8\SoftUpdateb320.exeC:\ProgramData\Windows\csrss.exeC:\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.execurl.exewscript.exemshta.exerundll32.exeregsvr32.exewmic.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.zipMD5:F3CC6EFB88EE5613C97AD6A4FF45CFD1SHA1:846D6535E15AE964818FC02B7F86C60608FE79EDSHA256:2FD3E4FED8A88F9AA00A921CBB6FB564AA64943B20FC512CE3EB134D5EBFD2D3
Основной файл:
virusvippro.exe
Зафиксированные артефакты:
C:\ProgramData\bsjpgczzn.vbsC:\ProgramData\MicrosoftLogsBEBD9AC8\SoftUpdateb320.exeC:\ProgramData\Windows\csrss.exeC:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\coronavirus.exe
Наблюдавшиеся сетевые направления включают:
178.16.54.109safeifm.comout-agent.duckdns.org:49094ny.lshdw.cc62.60.226.140193.178.158.107192.162.199.186
ссылка на оригинал статьи https://habr.com/ru/articles/1081932/