MS17-010
Этот репозиторий содержит мою публичную работу над MS17-010. Я не планирую оказывать какую-либо поддержку. На все вопросы по поддержке я не буду отвечать.
Файлы
- BUG.txt Детали бага MS17-010 и некоторый анализ
- checker.py Скрипт для поиска доступного именованного канала
- eternalblue_exploit7.py Эксплойт Eternalblue для Windows 7/2008
- eternalblue_exploit8.py Эксплойт Eternalblue для Windows 8/2012 x64
- eternalblue_poc.py PoC Eternalblue для бага переполнения буфера
- eternalblue_kshellcode_x64.asm x64 шеллкод ядра для моего эксплойта Eternalblue. Этот шеллкод должен работать на Windows Vista и новее
- eternalblue_kshellcode_x86.asm x86 шеллкод ядра для моего эксплойта Eternalblue. Этот шеллкод должен работать на Windows Vista и новее
- eternalblue_sc_merge.py Скрипт для объединения x86 и x64 шеллкода Eternalblue. Эксплойту Eternalblue, поддерживающему и x86, и x64, с объединённым шеллкодом не нужно определять архитектуру цели
- eternalchampion_leak.py PoC Eternalchampion для части утечки информации
- eternalchampion_poc.py PoC Eternalchampion для управления RIP
- eternalchampion_poc2.py PoC Eternalchampion для получения выполнения кода
- eternalromance_leak.py PoC Eternalromance для части утечки информации
- eternalromance_poc.py PoC Eternalromance для записи вне границ
- eternalromance_poc2.py PoC Eternalromance для управления транзакцией, приводящей к произвольному чтению/записи
- eternalsynergy_leak.py PoC Eternalsynergy для части утечки информации
- eternalsynergy_poc.py PoC Eternalsynergy для демонстрации heap spraying с большим страничным пулом
- infoleak_uninit.py PoC для утечки информации из неинициализированного буфера данных транзакции
- mysmb.py Расширенный класс SMB из Impacket для упрощения эксплуатации багов MS17-010
- npp_control.py PoC для управления выделением нестраничного пула с помощью команды session setup
- zzz_exploit.py Эксплойт для Windows 2000 и новее (требуется доступ к именованному каналу)
Анонимный пользователь
Анонимный пользователь (null-сессия) получает больше ограничений в настройках по умолчанию новых версий Windows. Для эксплуатации Windows SMB без аутентификации следует учитывать следующее поведение.
- Начиная с Windows Vista, настройки по умолчанию не позволяют анонимному пользователю доступ к любому именованному каналу
- Начиная с Windows 8, настройки по умолчанию не позволяют анонимному пользователю доступ к общему ресурсу IPC$ (IPC$ может быть доступен, но мало что можно сделать)
Об эксплойтах АНБ
- Eternalblue требует только доступа к IPC$ для эксплуатации цели, в то время как другие эксплойты также требуют доступа к именованному каналу. Поэтому эксплойт всегда работает против Windows < 8 в любой конфигурации (если TCP-порт 445 доступен). Однако у Eternalblue шанс вызвать крах цели выше, чем у других эксплойтов.
- Eternalchampion требует доступа к именованному каналу. У эксплойта нет шансов вызвать крах цели.
- Eternalromance требует доступа к именованному каналу. Эксплойт может нацеливаться на Windows < 8, поскольку баг утечки информации исправлен в Windows 8. У эксплойта должно быть меньше шансов вызвать крах цели, чем у Eternalblue. Я никогда не тестировал надёжность эксплойта.
- Eternalsynergy требует доступа к именованному каналу. Я полагаю, что этот эксплойт модифицирован из Eternalromance для атаки на Windows 8 и новее. Eternalsynergy использует другой баг для утечки информации и применяет некоторый трюк для поиска исполняемой памяти (я не знаю, как это работает, потому что читал только выходной журнал и pcap-файл).