
Инструмент для перехвата Windows API, который динамически подменяет и скрывает аргументы процессов с помощью библиотеки Detours и манипуляции PEB, обеспечивая скрытное создание процессов для операций red team.
Twitter: @AzizWho
NoArgs — это инструмент, предназначенный для динамической подмены и сокрытия аргументов процессов, оставаясь незамеченным. Это достигается путем перехвата API Windows для динамического манипулирования внутренними механизмами Windows на лету. Это позволяет NoArgs незаметно изменять аргументы процессов.




Инструмент в основном работает путем перехвата вызовов создания процессов, выполняемых функцией Windows API CreateProcessW. Когда запускается процесс, эта функция отвечает за порождение нового процесса вместе с любыми указанными аргументами командной строки. Инструмент вмешивается в этот поток создания процесса, гарантируя, что аргументы будут скрыты или изменены до запуска нового процесса.
Перехват CreateProcessW осуществляется с помощью Detours — популярной библиотеки для перехвата и перенаправления функций Win32 API. Detours позволяет перенаправлять вызовы функций на пользовательские реализации, сохраняя при этом исходную функциональность. Перехватывая CreateProcessW, инструмент может перехватывать запросы на создание процесса и выполнять свою пользовательскую логику до того, как процесс будет запущен.
Блок окружения процесса (PEB) — это структура данных, используемая Windows для хранения информации об окружении процесса и состоянии его выполнения. Инструмент использует PEB для манипуляции аргументами командной строки вновь созданных процессов. Изменяя информацию командной строки, хранящуюся в PEB, инструмент может изменять или скрывать аргументы, передаваемые процессу.
Представление Process Hacker:

Представление Process Monitor:

Внедрение в командную строку (cmd): Инструмент внедряет свой код в процесс командной строки, встраивая его как позиционно-независимый код (PIC). Это обеспечивает бесшовную интеграцию в адресное пространство cmd, гарантируя скрытую работу без привязки к конкретным адресам памяти. (Только для обфусцированного исполняемого файла на странице релизов)
Перехват Windows API: Используются Detours для перехвата вызовов функции CreateProcessW. Перенаправляя поток выполнения в пользовательскую реализацию, инструмент может выполнять свою логику до вызова исходной функции Windows API.
Пользовательская функция создания процесса: При перехвате вызова CreateProcessW выполняется пользовательская функция, которая создает новый процесс и при необходимости манипулирует его аргументами.
Изменение PEB: Внутри пользовательской функции создания процесса осуществляется доступ и изменение блока окружения процесса (PEB) вновь созданного процесса для достижения цели манипуляции или сокрытия аргументов процесса.
Перенаправление выполнения: После завершения манипуляций выполнение плавно возвращается в командную строку (cmd) без каких-либо прерываний. Это динамическое перенаправление гарантирует, что последующие команды будут незаметно изменены, избегая механизмов обнаружения и регистрации, которые полагаются на получение информации о процессе из PEB.
Вариант 1: Скомпилировать DLL NoArgs:
Необходимо установить Microsoft Detours.
Скомпилируйте DLL.
Внедрите скомпилированную DLL в любой экземпляр cmd для динамического манипулирования аргументами вновь создаваемых процессов.
Вариант 2: Загрузите скомпилированный исполняемый файл (готовый к работе) со страницы релизов.