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

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

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

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

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

Категории

Все категории
Loading categories
AsmLdr — Динамический загрузчик шеллкода с изощрёнными возможностями обхода обнаружения | Kitploit
Инструменты/GitHubGitHub/0xninjacyclone/asmldr
Генерация полезной нагрузкиОбход IDS/IPSШелл-кодПост-эксплуатацияRed TeamingРазработка Полезной Нагрузки
GitHub0xninjacyclone/asmldr

AsmLdr

Динамический загрузчик шеллкода с изощрёнными возможностями обхода обнаружения

Репозиторий
34651511 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

AsmLdr: динамический загрузчик шеллкода для Windows x64

Обзор

AsmLdr — это продвинутый загрузчик шеллкода, реализованный на языке ассемблера x64 и предназначенный для сред Windows x64. Его основная цель — выполнение зашифрованных полезных нагрузок при минимизации обнаружения современными антивирусами, системами обнаружения и реагирования на конечных точках (EDR), песочницами и отладчиками. Это достигается за счёт динамического разрешения модулей, API и системных вызовов во время выполнения, что устраняет статические зависимости, такие как таблицы импорта или жёстко заданные адреса. Такой подход создаёт компактный бинарный файл с низким профилем обнаружения.

Загрузчик использует module stomping для размещения шеллкода в исполняемом разделе существующей DLL, дешифрует полезную нагрузку в памяти и запускает её через непрямые системные вызовы со спуфингом стека. Он включает функции обхода обнаружения, такие как анти-отладочные меры, корректировку таймингов для имитации обычных паттернов приложений и обход трассировки событий Windows (ETW). Эти возможности делают его инструментом для red teaming и исследований в области безопасности. Этическое предупреждение: Этот проект предназначен исключительно для образовательных и исследовательских целей. Он демонстрирует низкоуровневые внутренние механизмы Windows, включая обход PEB, разбор таблицы экспорта, снятие хуков с системных вызовов и манипулирование защитой памяти. Используйте в контролируемых средах (например, в виртуальных машинах). Использование во вредоносных целях незаконно и неэтично. Автор снимает с себя ответственность за любое неправомерное использование.

Ключевые возможности

AsmLdr предлагает ряд функций для скрытного выполнения полезной нагрузки и обхода обнаружения. Каждая из них описана ниже с акцентом на её назначение и преимущества:

Инициализация и начальная загрузка

  • Обнаружение PEB и ntdll: Загрузчик находит PEB без стандартных методов доступа, чтобы избежать обнаружения.
    • Основной метод (сканирование стека): Он анализирует обратные адреса в стеке, чтобы найти корректный указатель на PEB. После обнаружения он получает базовый адрес ntdll из списка модулей и настраивает обработку системных вызовов.
    • Запасной метод (сканирование PE-заголовков): Если основной метод не сработал, он ищет в памяти сигнатуры PE-файлов, чтобы найти ntdll.dll, а затем использует системный вызов для подтверждения расположения PEB.

Механизмы динамического разрешения

  • Разрешение модулей через обход PEB: Загрузчик перечисляет запущенные модули, проходя по цепочке модулей PEB. Он сопоставляет имена модулей с помощью сравнения Unicode-строк, чтобы найти и вернуть базовый адрес нужной DLL. Этот метод обходит стандартные функции загрузки, снижая риск перехвата.

  • Разрешение API из таблиц экспорта: Загрузчик анализирует каталог экспорта DLL для поиска функций. Он сопоставляет API с помощью хэширования или, опционально, прямых проверок имён с проверкой длины, чтобы избежать путаницы между похожими именами функций. Это даёт адрес функции без использования предварительно слинкованных импортов.

Методы обхода обнаружения

  • Анти-отладочная защита: Загрузчик обнаруживает отладку с помощью нескольких проверок и корректно завершает работу, если какая-либо из них указывает на анализ.

    • Проверки API Kernel32: Он запрашивает наличие отладчика и удалённых подключений, завершая работу при их обнаружении.
    • Проверка флагов PEB: Он анализирует флаги процесса на признаки отладки, такие как включённые режимы отладки, и останавливается, если они установлены.
    • Обнаружение аппаратных точек останова: Он получает отладочные регистры потока для проверки установленных точек останова и останавливается, если какие-либо активны.
    • Запрос порта отладки: Он проверяет процесс на наличие подключённого порта отладки и завершает работу, если он существует.
    • Выход при обнаружении: При любом срабатывании он восстанавливает стек и выполняет ранний возврат, чтобы не раскрывать своё поведение.
  • Генерация мусорного кода для затруднения анализа: Загрузчик выполняет последовательности необязательных операций, создавая запутанные паттерны в дизассемблированном коде, что усложняет статический анализ без влияния на эффективность выполнения.

  • Нормализация таймингов и поведения: Загрузчик измеряет скорость системы, чтобы выполнять имитируемые нагрузки, соответствующие обычным паттернам приложений, помогая ему сливаться с легитимными процессами. Он также делает короткие паузы перед ключевыми действиями для нормализации времени выполнения.

  • Обход журналирования ETW: Загрузчик устанавливает аппаратные точки останова на API журналирования ETW, чтобы перехватывать и пропускать вызовы записи событий, предотвращая появление следов в системных журналах.

Обработка системных вызовов

  • Многоуровневое снятие хуков: Загрузчик динамически получает корректные номера системных вызовов (SSN), проверяя функции напрямую, сканируя близлежащий код при наличии хуков или подсчитывая паттерны в ntdll для оценки номера с учётом известных исключений.

    Используемые техники:

    • Hell's Gate
    • (Halo's/Tartarus) Gate
    • Veles' Reek
  • Непрямые системные вызовы и спуфинг стека: Загрузчик находит «чистые» пути кода в ntdll для системных вызовов и выстраивает цепочку до 32 операций, скрывая стек вызовов для обхода трассировки. После завершения он восстанавливает исходное состояние.

Внедрение и выполнение полезной нагрузки

  • DLL Hollowing: Загрузчик загружает целевую DLL, временно разрешает запись в её секцию кода, вставляет зашифрованный шеллкод, дешифрует его и возвращает защиту в режим «только выполнение».

  • Дешифрование в памяти: Загрузчик дешифрует шеллкод, применяя повторяющийся ключевой паттерн непосредственно во внедрённой памяти.

  • Вспомогательные функции: Загрузчик включает средства для измерения длины строк, сравнения строк (обычных или широких символов), хэширования имён для поиска, проверки корректности указателей памяти и чтения временных меток для управления таймингами.

Дополнительные возможности

  • Не используются права памяти RWX — только переключение между RW и RX для скрытности.
  • Нет IAT и ни одного статически связанного API, чтобы избежать хуков и статического анализа.
  • AsmLdr работает в фоновом режиме без вывода консоли или чего-либо подозрительного.
  • Все необходимые вызовы API разрешаются с помощью хэшей для обфускации.

Методология подготовки шеллкода

Python-скрипт generate.py шифрует файл «сырого» шеллкода. Он добавляет выравнивающие padding-байты, создаёт или использует ключ и XOR-ит каждый байт с ключом в повторяющемся цикле. Выходной файл shellcode.asm определяет размеры, массивы зашифрованных данных и ключа, а также процедуру загрузки данных во время выполнения. Дешифрование в загрузчике повторяет этот процесс в памяти. Учтите, что более длинные ключи увеличивают время ожидания.

Использование

Подготовка

Подготовьте бинарный файл с «сырым» шеллкодом (например, payload.bin). Запустите python generate.py payload.bin [optional_key], чтобы получить shellcode.asm.

Настройка

Измените szDllName (шестнадцатеричные Unicode-слова в evader.asm) для альтернативных DLL, например urlmon.dll. Пересчитайте хэши DJB2 для новых API с помощью логики str_hash. Для отладки закомментируйте макросы (например, KILL_DEBUGGERS).

Ограничения и замечания

AsmLdr оптимизирован для Windows 10 и 11 x64; обновления ядра могут изменить смещения (например, PEB+0x18) или паттерны NTDLL (например, 0xb8d18b4c), что требует проверки. Обработка ошибок полагается на возвращаемые значения NTSTATUS (например, <0 означает сбой); встроенное журналирование отсутствует. Мусорные и фиктивные операции потребляют такты процессора, что может привлечь внимание мониторов ресурсов на системах с ограниченными ресурсами. Используйте только в контролируемых средах.

Скачать инструмент