
Практический курс по разработке вредоносного ПО для Windows: хеширование API, DLL sideloading, выполнение shellcode, манипуляция PE-файлами, размещение payload и лабораторные работы по доставке.
Desktop development with C++Кроме того (необязательно), для более полного опыта реверс-инжиниринга настройте символы:
setx _NT_SYMBOL_PATH c:\Symbols;srv*c:\Symbols*https://msdl.microsoft.com/download/symbols
mkdir \symbols
Откройте PMD.sln в Visual Studio.
Выберите проект setup и убедитесь, что вы можете:
a. Скомпилировать проект
b. Увидеть отладочный вывод в DebugView++.
Обновите флаги компилятора и компоновщика проекта template, чтобы управлять записями IAT и другими свойствами PE.
a. Освойтесь с динамическим разрешением API и документацией MSDN.
b. Есть ли другие свойства, которые бросаются в глаза? Если вы запустите Strings.exe на бинарном файле, бросаются ли в глаза какие-нибудь строки?
c. Можете ли вы удалить/изменить их?
Для выполнения упражнения используйте любой инструмент по вашему выбору (например, dumpbin/PE Bear). В scripts\props.py предоставлена обёртка вокруг pefile (убедитесь, что установили зависимости).
Скачайте несколько образцов вредоносного ПО с VXUG
a. В чём основные различия между безвредными и вредоносными исполняемыми файлами?
b. В чём основные различия между нашим бинарным файлом и безвредными исполняемыми файлами?
Текущий алгоритм хеширования API — fnv1a.
solution и вызовите MessageBoxA с помощью фреймворка хеширования API.Скачайте Cisco Webex (https://www.webex.com/downloads.html)
Найдите CiscoCollabHost и посмотрите, какие DLL загружаются
Откройте CiscoCollabHost в Ghidra и найдите различные способы получения выполнения кода через sideloading
Измените dll_template, чтобы выполнить sideload целевого бинарного файла. Убедитесь, что вы видите отладочную строку в DebugView++.
Обновите LastWriteTime и CreationTime для dll_template.dll, чтобы они совпадали с целевой DLL.
Скомпилируйте и запустите проект utility.
a. Кроме того, рассмотрите возможность запуска его на вашей хост-системе.
Скопируйте определённую DLL в каталог x64/{Debug,Release} и обновите код загрузчика.
Обновите execute_sc, чтобы выполнять ваш шеллкод с помощью другой функции в фреймворке хеширования API.
Зарегистрируйтесь у провайдера облачного хранения (например, AWS/CloudFlare)
Упакуйте ваш пейлоад и загрузите его
a. Кроме того, изучите способы ограничения/аудита доступа к загрузкам
Сделайте снимок вашей ВМ
Вернитесь к базовой ВМ и проиграйте полный сценарий «доставки»
.github\workflows\build.yml, чтобы добавить желаемую предварительную/последующую обработку, экономящую время. Вот несколько идей:
props.py и проверяйте/включайте выводLastWriteTime и CreationTime для соответствия целевому файлу