一句话概括
“An easy way to get syscall indices, even if AV overwrites them, … simply enumerate all Zw* stubs and then sort them by address.”
翻译
通过获取 TEB 得到 PEB,然后找到 Ntdll,通过解析 EAT 找到所有 Zw 开头的函数,然后按地址排序
介绍
本来我是打算自己实现这个的,但是刚写个开头,然后发现 github 已经有老哥用 nim 写过了,直接拿来用。
使用
参考 README.md
1 | python3 nimwhispers.py -o nimwhispers -f NtOpenProcess,NtAllocateVirtualMemory,NtWriteVirtualMemory,NtProtectVirtualMemory,NtCreateThreadEx |
这样就会在 out 里面生成一个 nim 文件
然后直接在你的项目里 import 后调用 Nt 函数就行了
实战
1 | import winim |
大致就这样的一个文件,这个马是远程注入的
然后生成 msf shellcode 的弹窗,简单加个编码 x64/xor_dynamic
和 base64 编码一下
加进去之后呢,通过下面的命令在 windows 生成木马
1 | nim c --app:gui -d:noRes test.nim |
丢到装 360 的机器上运行
Bypassing User-Mode Hooks and Direct Invocation of System Calls for Red Teams