Классические вирусы обычно пишут на C/C++, ассемблере и прочих низкоуровневых языках. Но это не обязательно делает их наиболее эффективными. Малварь, написанная на .NET, может доставить кучу проблем, потому что методы обфускации этого кода стали весьма могучими.
В какой‑то степени этому помогло открытие исходников платформы .NET. Конечно же, вирмейкеры изучили исходники и сделали соответствующие выводы. В итоге мы имеем многослойное шифрование, различные манипуляции с процессами, массу антиотладочных и обфусцирующих приемов.
Еще по теме: Деобфускация PowerShell
Как анализировать файл написанный на .NET
Чтобы как‑то решать такие проблемы, была создана замечательная программа под названием GarbageMan. Она нам и поможет в анализе файла. Дело в том, что рабочий Heap и стек .NET-приложения представляют собой настоящий кладезь информации о типах данных, связанности объектов друг с другом и прочих вещах. При помощи GarbageMan мы будем ее извлекать и исследовать.
GarbageMan создает снимки состояния загруженного в него приложения и отображает информацию: даже если в файле используется обфусцирование или шифрование (как в нашем случае), во время выполнения вредонос расшифрует эту информацию.
GarbageMan — это набор инструментов, предназначенных для анализа Heap в .NET. Эти инструменты предлагают следующие преимущества для исследователей вредоносного ПО:
- Возможность быстро извлекать полезные данные в виде открытого текста (PE-изображения и т.д.) из Heap .NET.
- Легкость анализа зашифрованных сетевых протоколов, признаков утечки данных и подобных случаев.
- Способность преодолевать техники противодействия дампингу, используемые вредоносным ПО (psnotify).
Загрузим наш .NET-файл в GarbageMan и наделаем несколько снимков его работы с промежутком в несколько сот миллисекунд.


У меня получилось извлечь список сервисов, с которыми взаимодействует Agent Tesla, его почту, почтовый сервер и много другой информации. Неплохо за минуту работы приложения!
ПОЛЕЗНЫЕ ССЫЛКИ: