Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
EternalBlueC — Набор EternalBlue, переписанный на C/C++, который включает: эксплойт MS17-010, детектор уязвимости EternalBlue, детектор DoublePulsar и загрузчик Shellcode и DLL для DoublePulsar | Kitploit
Инструменты/GitHubGitHub/bhassani/eternalbluec
Фреймворки для эксплойтовАнализ уязвимостейЭксплуатацияШелл-кодАнализ вредоносных программТестирование на ПроникновениеОбучение и ОбразованиеГенерация ШеллкодаРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubbhassani/eternalbluec
6131381 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

EternalBlueC

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

Репозиторий

License: GPL v3

EternalBlueC

Набор инструментов EternalBlue, переписанный на C/C++, включающий:

  • Эксплойт MS17-010 (содержит DoublePulsar)
  • Детектор уязвимости EternalBlue/MS17-010
  • Детектор DoublePulsar
  • Загрузка DLL через DoublePulsar
  • Загрузка шеллкода через DoublePulsar
  • Загрузка DLL через DoublePulsar с SMB-структурой
  • Загрузка шеллкода через DoublePulsar с SMB-структурой
  • Загрузка EXE внутри DLL через DoublePulsar

Достижения проекта

  • Загрузка шеллкода — выполнено и работает, внедряйте свой шеллкод в любой процесс по желанию
  • Загрузка DLL — выполнено и работает, внедряйте свою DLL в любой процесс по желанию
  • Загрузка DLL со встроенным exe — выполнено, внедряйте свою DLL в любой процесс по желанию, исполняемый файл сохраняется как "mssecsvc.exe"

Цели проекта

  • Обеспечить динамическую генерацию пакетов DoublePulsar для согласования, установки сессии, подключения к дереву, TransNamedPipe и Transaction2 с использованием SMB-структур и hex-захватов
  • Разрешить редактирование полезной нагрузки эксплойта EternalBlue для удаления импланта DoublePulsar и отправки вместо него пользовательских шеллкодов
  • Обеспечить динамическую генерацию пакетов EternalBlue
  • Запрашивать ввод пользователя для всех IP-адресов, полезных нагрузок (шеллкод или пути к файлам) и подтверждение для продолжения
  • Сделать вывод более подробным
  • Добавить отображение версии Windows из SMB-ответа на экране
  • Добавить поддержку параметров командной строки (DoublepulsarExecute.exe -h 192.168.0.8 -f PopCalculatorShellcode.bin)
  • Добавить больше проверок ошибок, например, тайм-аут сокета

Набор EternalBlue и DoublePulsar

  • ms17_vuln_status.cpp — Эта программа отправляет 4 SMB-пакета: 1 согласование, 1 установка сессии, 1 подключение к дереву и 1 запрос TransNamedPipe. Затем программа читает NT_STATUS из ответа TransNamedPipeRequest (запрос PeekNamedPipe) и определяет, равен ли NT_STATUS в SMB-пакете 0xC0000205 (STATUS_INSUFF_SERVER_RESOURCES). Если это так, цель уязвима для MS17-010. Протестировано на непропатченной Windows 7 x64.

ms17vulnstatus

  • doublepulsar_check.cpp — Эта программа отправляет 4 SMB-пакета: 1 согласование, 1 установка сессии, 1 подключение к дереву и пакет Trans2 SESSION_SETUP. Отправляя пакет Trans2 SESSION_SETUP, можно сравнить отправленный мультиплексный ID с мультиплексным ID в ответном пакете Trans2: 0x51 или 81. DoublePulsar считывает отправленный мультиплексный ID, и после успешной команды ping возвращает +10 в шестнадцатеричном виде для мультиплексного ID в ответе Trans2 SESSION_SETUP. После этого отправляются команды для сжигания бэкдора DoublePulsar. Команда сжигания DoublePulsar находится в параметрах тайм-аута SMB-пакета. После этого DoublePulsar переходит в спящий режим и не удаляется из системы. Протестировано на Windows 7 x64.

doublepulsar_check

  • DoublePulsarXORKeyCalculator.cpp — Эта программа отправляет 4 SMB-пакета: 1 пакет согласования и 3 запроса. Последний запрос — это запрос Trans2 SESSION_SETUP. Получается ответ Trans2 SESSION_SETUP, и извлекается SMB-подпись в диапазоне Recvbuff[18] -> Recvbuff[22]. Recvbuff[22] указывает на тип архитектуры: если 1 — цель x64, если 0 — x86/32 бита. SMB-подпись преобразуется из беззнаковых символов в беззнаковое целое число.

SMBSignatureWireshark

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

Пример скриншота:

XORCalculator

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

  • 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.

UploadShellcode

  • Шеллкод, сгенерированный из — zerosum0x0 написал пользовательский шеллкод для ETERNALBLUE, который можно адаптировать для DOUBLEPULSAR с небольшим изменением. Поскольку перезапись системного вызова в скопированном шеллкоде не была нужна для этого случая использования, мы отключили её:
    ;%define SYSCALL_OVERWRITE ; to run at process IRQL in syscall
    перекомпилируйте с: nasm -w-other -o >(xxd -p -c 16 | sed 's/../\x&/g') external/source/shellcode/windows/multi_arch_kernel_queue_apc.asm
    https://github.com/rapid7/metasploit-framework/blob/master/external/source/shellcode/windows/multi_arch_kernel_queue_apc.asm
    https://raw.githubusercontent.com/ninp0/eternalblue/master/eternalblue_kshellcode_x64.asm
    https://raw.githubusercontent.com/ninp0/eternalblue/master/eternalblue_kshellcode_x86.asm
    https://www.rapid7.com/blog/post/2019/10/02/open-source-command-and-control-of-the-doublepulsar-implant/

  • DoublePulsar_UploadExe.cpp — Эта программа предназначена для исполняемых файлов. Исполняемый файл считывается в память и помещается в DLL-загрузчик WannaCry, а затем отправляется через DoublePulsar: 1 согласование, 1 установка сессии, 1 подключение к дереву, 1 пакет Trans2 Ping и несколько пакетов Trans2 exec SESSION_SETUP. Пакет запроса Trans2 Ping отправляется для получения SMB-подписи в ответном пакете Trans2. Эта подпись обрабатывается через калькулятор XOR-ключа DoublePulsar. Затем программа читает EXE-файл и объединяет его с 64-битным шеллкодом ядра и пользовательского пространства, а также с DLL-каркасом, затем выполняет XOR буфера с вычисленным XOR-ключом DoublePulsar. Пакет генерируется путём выделения памяти, копирования пакета выполнения Trans2, редактирования значений, необходимых для работы SMB-транзакции (UserID, TreeID, TotalDataCount, DataCount, ByteCount), затем копирования XOR-данных (шеллкод ядра + DLL + исполняемый файл) в конец и циклической отправки частями по 4096 байт за раз в DoublePulsar. Общая длина пакета = 4178; длина NetBIOS будет 4174, поскольку заголовок NetBIOS не учитывает себя. 12 байт этого пакета — параметры SESSION_SETUP DoublePulsar; 4096 байт — XOR-зашифрованные данные.

Модуль Metasploit

Создан пользовательский модуль Metasploit, который я сделал работоспособным, используя открытый модуль DoublePulsar RCE из Metasploit.

Я изменил логику, чтобы можно было сгенерировать DLL, объединить её с x64 шеллкодом ядра (добавленным в начало), взятым из WannaCry, чтобы DoublePulsar мог запустить DLL.

msfconsole

Дополнительный обучающий код

Репозиторий также содержит следующее в образовательных целях, и оно НЕ поддерживается мной:

  • Скрипт на Python для загрузки DLL DoublePulsar x86/x64

  • Бинарный файл EternalBlue «всё в одном»

  • Ассемблерный код multi arch kernel queue apc и код ядра Windows x86/x64 Multi-Arch Kernel Ring 0 to Ring 3 via Queued APC

  • Шеллкод полезной нагрузки ядра EternalBlue x64/x86 от worawit

  • Файл воспроизведения Eternalblue

Скачать инструмент
  • EternalBlue.cpp — Эта программа отправляет несколько SMB-пакетов: согласование, SessionSetup, TreeConnect и несколько пакетов NT trans и Trans2. Эти пакеты NT trans являются некорректными, что подготавливает эксплойт в памяти целевого компьютера. Дополнительные пустые SMB-пакеты отправляются на цель через несколько сокетов на тот же порт. Большая часть полезной нагрузки EternalBlue в base64 отправляется через сокет 1, где были отправлены пакеты Negotiation, SessionSetup и TreeConnect. Затем создаются ещё 20 сокетов, и данные отправляются на эти сокеты (сокет 3 — сокет 21). После этого DoublePulsar отправляется на сокеты 3–21. Затем программа закрывает сокеты, что приводит к детонации EternalBlue и DoublePulsar на целевом компьютере. Затем отправляется запрос на отключение SMB и выход из системы, и соединение закрывается. Этот эксплойт работает и был протестирован на Windows 7 x64. Для полной активации бэкдора требовалось около 5 секунд, как уже сообщалось в статьях об EternalBlue. Может потребоваться несколько попыток эксплуатации. Однако в настоящее время есть ошибка с неправильной установкой TreeID и UserID в пакетах, которая будет исправлена в более позднем релизе. Эксплойт будет работать против недавно включённых машин, так как TreeID и UserID установлены в значения по умолчанию. Эти пакеты должны иметь обновлённые значения TreeID и UserID, но пока они установлены в значения по умолчанию "08 00". EternalBlue EternalBlue_cmd eternalbluepackets