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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/playboisk8/poc-cve-2017-8464-opencalculator
Анализ уязвимостейЭксплуатацияАнализ Бинарных ФайловРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubplayboisk8/poc-cve-2017-8464-opencalculator

POC-CVE-2017-8464-OpenCalculator

Эксплуатация уязвимости .lnk и механизмов обработки операционной системой explorer.exe и USB-накопителей.

Репозиторий
21 месяц назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2017-8464 / исследование + PoC

Создаём 1 ярлык + 1 .DLL с вредоносной нагрузкой => закидываем на USB и отправляем жертве => жертва открывает USB => нагрузка активируется автоматически!

CVE-2017-8464.gif

ПЕРВОПРИЧИНА

  1. Прежде всего, нам нужно точно знать, из-за чего возникает эта ошибка! Всё дело в функции под названием Plug-and-Play (Подключи и играй) — ОС автоматически обнаруживает устройство, выделяет ресурсы и загружает подходящий драйвер, чтобы оно заработало сразу, без перезагрузки компьютера. Когда вы вставляете USB и открываете папку через Windows Explorer explorer.exe, операционная система сканирует файлы, чтобы отобразить пользователю соответствующие значки (иконки)!

  2. Начиная со старых версий Windows, Microsoft хотела, чтобы ярлыки (.lnk), указывающие на функции Панели управления (по сути, файлы .cpl или .dll), могли гибко отображать динамические значки. Поэтому в базовой библиотеке управления интерфейсом Windows shell32.dll была спроектирована функция с названием

CPL_LoadCPLModule
  • Слепое использование LoadLibrary: Чтобы получить значок из файла-апплета Панели управления, операционная система не читает просто статический файл изображения, а использует функцию LoadLibraryW для прямой загрузки всей динамически подключаемой библиотеки в адресное пространство процесса explorer.exe. После загрузки она вызывает стандартную экспортируемую функцию CPlApplet, чтобы получить значок и отрисовать его на экране

  • LoadLibraryW.png

    Чтобы доказать, что LoadLibraryW действительно связана с приведённой выше цепочкой эксплуатации:

    1/ Включите x64dbg с правами администратора

    2/ Подключитесь к explorer.exe

    3/ Введите команду bp LoadLibraryW

    4/ Нажмите F9, чтобы explorer.exe продолжил работу

    5/ Вставьте USB — и сразу сработает брейкпоинт!

    Проблема с PoC и решение

    У меня была проблема: цепочка эксплойта полностью молчала, сколько бы я ни пытался проверить и отладить всё что можно, найти способ исправить не удавалось! Затем я попробовал найти чужой PoC и запустить его, но тоже безуспешно!

    Пример: https://github.com/3gstudent/CVE-2017-8464-EXP

    Однако, когда я ушёл на обед и вернулся, ко мне снова пришли сосредоточенность и спокойствие. Я начал задаваться вопросом: почему PoC этого парня работает, а на моей машине — нет? Окей, я начал слегка дизассемблировать его .lnk и .dll и обнаружил две вещи!

    1 / Мой .dll длиннее, чем у него! Но это не страшно, это не проблема!

    2 / Когда я кинул .lnk в HxD, чтобы прочитать строки, я обнаружил, что этот парень использует не относительный путь, а абсолютный!

    Относительный: ../example.dll

    Абсолютный: O:/example.dll

    him.png

    Окей, теперь решение будет таким: нам нужно узнать, какой буквой диска автоматически обозначается USB при подключении к машине жертвы, затем прописать абсолютный путь — и всё получится, потому что на моей Win7 при подключении USB он всегда появляется как диск F, так что синтаксис сборки у меня такой:

    root@kitploit:~
    python Make_PoC.py FakeGoogleChrome F:\Pwned.dll
    

    Как Microsoft закрыла эту архитектуру?

    Поскольку это ошибка проектирования архитектуры системы (логическая/архитектурная уязвимость), а не переполнение буфера, Microsoft пришлось полностью изменить способ обработки Панели управления:

    • Подпись кода (Code Signing): Современные ОС требуют, чтобы файлы .cpl или .dll, загружаемые системным процессом, имели действительную цифровую подпись Microsoft или находились в строго защищённых системных каталогах (например, System32), чтобы избежать ошибки "Binary Planting" с USB.
    • Изоляция процессов (Process Isolation): Вместо прямой загрузки в важный процесс explorer.exe [cite: 1058] новые версии Windows запускают апплеты Панели управления через изолированный промежуточный процесс (например, dllhost.exe или rundll32.exe). Даже если DLL упадёт или будет содержать вредоносный код, она лишь обрушит этот промежуточный процесс, но не сможет получить контроль над всей пользовательской интерфейсной системой.

    Ссылки

    Исследование VN

    • https://github.com/TrG-1999/DetectPacket-CVE-2017-8464

    PoC

    • https://github.com/3gstudent/CVE-2017-8464-EXP

    Инструмент для сборки уязвимого .lnk

    • https://github.com/nixawk/labs/blob/master/CVE-2017-8464/exploit_CVE-2017-8464.py
    Скачать инструмент