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

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

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

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

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

Категории

Все категории
Loading categories
CallStackSpoofer — PoC-реализация для подделки произвольных стеков вызовов при совершении системных вызовов (например, получение дескриптора через NtOpenProcess) | Kitploit
Инструменты/GitHubGitHub/withsecurelabs/callstackspoofer
Обход IDS/IPSПост-эксплуатацияRed TeamingСостязательная Атака
GitHubwithsecurelabs/callstackspoofer

CallStackSpoofer

PoC-реализация для подделки произвольных стеков вызовов при совершении системных вызовов (например, получение дескриптора через NtOpenProcess)

Репозиторий
5897441 год назадПроверено Kitploit

Популярное

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

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

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

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

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

CallStackSpoofer

Этот репозиторий демонстрирует PoC-реализацию для подделки произвольных стеков вызовов при совершении системных вызовов. Полное техническое описание см. в сопроводительной статье в блоге: https://labs.withsecure.com/blog/spoofing-call-stacks-to-confuse-edrs.

По умолчанию он содержит три примера стеков вызовов для имитации, которые можно выбрать с помощью аргументов --wmi, --rpc или --svchost, как показано ниже:

readmeexample

Эти стеки вызовов были получены при запуске SysMon с включёнными событиями доступа к процессам и поиске событий, в которых lsass был целью операции с дескриптором.

NB В качестве предостережения: этот PoC тестировался на следующей сборке Windows:

  • 10.0.19044.1706 (21h2)

Он не тестировался на других версиях, и смещения, очевидно, могут отличаться (и, следовательно, ломаться) в разных сборках Windows.

Если у вас возникли проблемы, один из методов отладки ошибок — найти процесс, создающий события OpenProcess в SysMon, и присоединиться к нему в WinDbg. После подключения выполните bp ntdll!NtOpenProcess, а когда сработает точка останова, выполните knf.

Это выведет результат, похожий на приведённый ниже, который будет содержать полное разрешение символов и корректное пространство, занимаемое стеком (указано в столбце 'Memory'):

root@kitploit:~
0:003> knf
 #   Memory  Child-SP          RetAddr               Call Site
00           00000037`f01fe300 00007ffd`221d2ea6     ntdll!NtOpenProcess+0x12
01         8 00000037`f01fe308 00007ffd`1ffee959     KERNELBASE!ProcessIdToSessionId+0x96
02        80 00000037`f01fe388 00007ffd`23b99633     lsm!RpcOpenEnum+0x129
03       430 00000037`f01fe7b8 00007ffd`23b33711     RPCRT4!Invoke+0x73
04        40 00000037`f01fe7f8 00007ffd`23bfd77b     RPCRT4!Ndr64UnmarshallHandle+0xe1
05        70 00000037`f01fe868 00007ffd`23b7d2ac     RPCRT4!Ndr64StubWorker+0xb0b
06       6c0 00000037`f01fef28 00007ffd`23b7a408     RPCRT4!NdrServerCallAll+0x3c
07        50 00000037`f01fef78 00007ffd`23b5a266     RPCRT4!DispatchToStubInCNoAvrf+0x18
08        50 00000037`f01fefc8 00007ffd`23b59bb8     RPCRT4!RPC_INTERFACE::DispatchToStubWorker+0x1a6
09        e0 00000037`f01ff0a8 00007ffd`23b68a0f     RPCRT4!RPC_INTERFACE::DispatchToStub+0xf8
0a        70 00000037`f01ff118 00007ffd`23b67e18     RPCRT4!LRPC_SCALL::DispatchRequest+0x31f
0b        d0 00000037`f01ff1e8 00007ffd`23b67401     RPCRT4!LRPC_SCALL::HandleRequest+0x7f8
0c       110 00000037`f01ff2f8 00007ffd`23b66e6e     RPCRT4!LRPC_ADDRESS::HandleRequest+0x341
0d        a0 00000037`f01ff398 00007ffd`23b6b542     RPCRT4!LRPC_ADDRESS::ProcessIO+0x89e
0e       140 00000037`f01ff4d8 00007ffd`24ab0330     RPCRT4!LrpcIoComplete+0xc2
0f        a0 00000037`f01ff578 00007ffd`24ae2f26     ntdll!TppAlpcpExecuteCallback+0x260
10        80 00000037`f01ff5f8 00007ffd`23387034     ntdll!TppWorkerThread+0x456
11       300 00000037`f01ff8f8 00007ffd`24ae2651     KERNEL32!BaseThreadInitThunk+0x14
12        30 00000037`f01ff928 00000000`00000000     ntdll!RtlUserThreadStart+0x21

Следует отметить, что общий объём памяти стека, используемой текущей точкой вызова, указан в строке ниже (например, ntdll!NtOpenProcess занимает всего 8 байт). Как уже упоминалось, полное техническое описание приведено в блоге по ссылке в начале этого README, где это (и такие понятия, как Child-SP) объясняется более подробно. Значения, сгенерированные windbg, затем можно использовать для сопоставления с тем, что возвращает CalculateFunctionStackSize(), в случае каких-либо проблем.

Связанные работы

Благодарим проект unicorn_pe (https://github.com/hzqst/unicorn_pe) за пример кода по разбору UNWIND_CODE.

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