Letcrew Escapades

El blogo de loco - laravel, php, linux, python, thoughts

Reverse Engineering .NET + ConfuserEX

1 week ago · 1 MIN READ
#Reverse Engineering  #.NET 

Чтобы самому не забыть, я решил выделить полезные инструменты в .NET RE мире

Часто .NET приложения, из-за своей архитектуры байткода, MSIL, JIT, собранные по-умолчанию остаются очень легкой добычей для Reverse Engineering'a. Можно получить очень понятный, и чуть ли не рабочий исходный код, с хорошими названиями переменных, классов, методов и прочего (чего не будет например никогда в C++ или C, ну если только не добавить отладочную информацию).

Конечно в некоторые приложениях, так нельзя, поэтому люди заморочились за обфускаторы, виртуальные машины с псевдокодом....

Вот например возможности довольно неплохого протектора .net кода ConfuserEX

  • Symbol renaming - переименование символов
  • WPF/BAML renaming - Windows Presentation Foundation переименование конструкций, отвечающих за интерфейсы и около того
  • Control flow obfuscation - запутывание хода выполнения (control flow)
  • Method reference hiding - сокрытие ссылок на метод
  • Anti debuggers/profilers - антидебаггерные и антипрофайлерные приемы
  • Anti memory dumping - помеха при попытке сдампить память приложения
  • Anti tampering (method encryption) - усложнение возможности изменить код (шифрование методов)
  • Embedding dependency - встраивание зависимости ??
  • Constant encryption - шифрование констант
  • Resource encryption - шифрование ресурсов
  • Compressing output - сжатие на выходе всех результатов по защите

Тут уже многие новички реверсеры сдуются... И если не сдуются, то напрягутся

Первая утилита

Detect It Easy - DIE - поддерживает разные форматы и архитектуры исполняеямых файлов PE (win), ELF (Linux), MSDOS, MACH (MacOS) определить что это за файл, сколько бит, кем чем упакован, сжат ли, посмотрев на энтропию можно легко понять, что файл зашифрован или сжат ). Круто что DIE есть и под винду и под линукс и под мак!

CFF Explorer - мощная утилита, для просмотра и редактирования PE файлов, поддержкой .NET конструкций, и прочего. В отличии от DIE требует уже понимания, архитектуры исполняемых файлов, да и вообще...

0xd4d

0xd4d

DnSpy - редактор сборок, дебаггер и дизассемблер .NET кода. Очень крутая штука, легко использовать, хорошие возможности. Единственный минус - это когда смотришь переменные текущего scope все в одном месте, нет сортировки, поиска, мешает когда много переменных.

De4dot - деобфускатор и анпакер и вообще помошник распутать, защиту .net приложения. Консольная тулза, из коробки работает только для самых популярных случаев. В случае если, обфускатор автоматом не определен, тандем dnspy + de4dot позволяет легко идти дальше.

Например у нас зашифрованы все строки, методы.... в dnspy смотрим и анализируем код, и определеяем метод (или несколько), которые ответственные за расшифровку строк - их довольно легко вычислить по частоте (кол-во) обращений, ну и по возращаемым адекватным строкам. Далее сохраняем method token - 32 битный номер, начинается например - 06012345.

Получается что нам надо применить динамическую расшифровку строк

de4dot file1.dll --strtyp delegate --strtok 06012345 --strtok 060ABCDE

De4dot загрузит сборку file1.dll в память через Assembly.Load(). Когда он определяет вызовы (call) к одному из методов, которые дешифруют строки (06012345 и 060ABCDE), он вызовет их создавая динамический метод, и сохраняет результат (расшифрованную строку). Вызов (call) дешифратора строки будет убран, и дешифрованная строка займет свое место.

Так как сборка (assembly) в этом случае загружается и выполняется, выполняйте это в sandbox среде (песочнице), если есть подозрения на вредоносный код.

(с) немного их доку перевел

Процессы память

MegaDumper Process Hacker Sysinternals Tools

Декомпиляторы

Фри

Конечно же вначале поставлю DnSpy

ILSpy + Reflexil плагин для редактирования

[Simple Assembly Explorer - SAE](https://github.com/wickyhu/simple-assembly-explorer ) - вообщем проект может и не развивается, ну довольно интересный

Telerik JustDecompile

DotPeek

Trial

.NET Reflector

Зачем так много декомпиляторов? Дело в том, что у каждого из них есть свои особенности, кто-то сломается от обфусцированных имен в сборке, а кто-то сможет разрулить ситуацию.

Дальше больше

Если будет необходимость выполнить или написать, какой то код - например по расшифвровке записей БД, которые изначально спрятаны за Rijndael (симметричный алгоритим шифрования, один из вариантов произношения "Rain Doll" он так же называется AES - Advanced Encryption Standard). Часто видел .NET приложениях, ибо есть Rijndael Class

Вообщем комплект, поможет вам написать, протестировать любой код. MS Visual Studio + JetBrains ReSharper Ultimate

Могу с теплом сказать, что JetBrains делает мега продукты и хоть больше я знаком с PhpStorm и PyCharm - все равно понимаешь, что и другие их продукты на уровне DotPeek, Resharper (для темы .NET)

Буду пополнять этот пост... Не все тут есть)

···

Yuri Karasev


comments powered by Disqus


Proudly powered by Canvas · Sign In