Набор EternalBlue, переписанный на C/C++, который включает: эксплойт MS17-010, детектор уязвимости EternalBlue, детектор DoublePulsar и загрузчик Shellcode и DLL для DoublePulsar
Набор инструментов EternalBlue, переписанный на C/C++, включающий:



Затем эти значения (Recvbuff[18] -> Recvbuff[22]) передаются через функцию калькулятора XOR-ключа DoublePulsar, которая генерирует беззнаковый целочисленный XOR-ключ, используемый для шифрования шеллкода или DLL-нагрузки, которая будет загружена в DoublePulsar. Протестировано на Windows 7 x64.
Пример скриншота:

Тот же ключ из оригинального бинарника АНБ в FUZZBUNCH

DoublePulsar_structure_ping.cpp — Эта программа отправляет 4 SMB-пакета: 1 согласование, 1 установка сессии, 1 подключение к дереву и пакет Trans2 SESSION_SETUP. Отличие от doublepulsar_check.cpp в том, что здесь пакет Ping DoublePulsar Trans2 генерируется с использованием структуры, а не жёстко заданной SMB-шестнадцатеричной строки, взятой из образца WannaCry. Ещё одно отличие: эта программа динамически генерирует пакет TreeConnect, а не использует жёстко заданный из образца WannaCry. Сгенерированный пакет ping сообщит, установлен ли DoublePulsar на удалённой машине.
DoublePulsar_structure_exec.cpp — Эта программа отправляет 5 SMB-пакетов: 1 согласование SMB, 1 установка сессии, 1 подключение к дереву, 1 пакет Ping DoublePulsar Trans2 SESSION_SETUP и 1 пакет выполнения DoublePulsar Trans2 SESSION_SETUP. Отличие от Doublepulsar_UploadShellcode.cpp в том, что здесь пакет выполнения DoublePulsar Trans2 генерируется с использованием структуры, а не жёстко заданной SMB-шестнадцатеричной строки из образца WannaCry.
Doublepulsar_UploadDLL.cpp — Эта программа предназначена для DLL. Она отправляет 4 SMB-пакета вместе с данными DLL в пакетах SMB Trans2: 1 согласование, 1 установка сессии, 1 подключение к дереву, 1 запрос Ping Trans2 SESSION_SETUP и пакет выполнения Trans2 SESSION_SETUP. Пакет запроса Ping Trans2 SESSION_SETUP отправляется для получения SMB-подписи в ответном пакете Trans2 SESSION_SETUP. Эта подпись обрабатывается через калькулятор XOR-ключа DoublePulsar. Затем программа читает DLL-файл и объединяет его с 64-битным шеллкодом ядра и пользовательского пространства для запуска DLL, а затем выполняет XOR буфера с вычисленным XOR-ключом DoublePulsar. Пакет генерируется путём выделения памяти, копирования пакета Trans2, редактирования значений, необходимых для работы SMB-транзакции (UserID, TreeID, TotalDataCount, DataCount, ByteCount), затем копирования XOR-данных (шеллкод ядра + DLL) в конец и циклической отправки частями по 4096 байт за раз в DoublePulsar. Общая длина пакета = 4178; 4096 байт — это XOR-зашифрованные данные. В будущих версиях будет реализовано использование структур SMB и TRANSACTION2.
Doublepulsar_UploadShellcode.cpp — Эта программа отправляет 5 SMB-пакетов: 1 согласование, 1 установка сессии, 1 подключение к дереву, 1 пакет Ping Trans2 SESSION_SETUP и 1 пакет выполнения Trans2 SESSION_SETUP. Пакет запроса Trans2 SESSION_SETUP отправляется для получения SMB-подписи в ответном пакете TRANS2 SESSION_SETUP. Эта подпись обрабатывается через калькулятор XOR-ключа DoublePulsar. Затем программа копирует шеллкод ядра и пример шеллкода из буфера, выполняет XOR буфера с вычисленным XOR-ключом DoublePulsar. Пакет генерируется путём выделения памяти, копирования пакета выполнения Trans2, редактирования значений, необходимых для работы SMB-транзакции (UserID, TreeID, TotalDataCount, DataCount, ByteCount), затем копирования параметров SESSION_SETUP и 4096 байт XOR-шеллкода в конец и отправки в DoublePulsar общей длиной 4178 байт. Длина NetBIOS будет 4174, поскольку заголовок NetBIOS не учитывает себя. 12 байт этого пакета — параметры SESSION_SETUP DoublePulsar; 4096 байт — XOR-зашифрованные данные. В будущем релизе будут использоваться структуры SMB и TRANSACTION2.
