关于ThreadStackSpoofer
ThreadStackSpoofer是一种先进的内存规避技术,它可以帮助广大研究人员或红/蓝队人员更好地隐藏已注入的Shellcode的内存分配行为,以避免被扫描程序或分析工具所检测到。
ThreadStackSpoofer是线程堆栈欺骗技术的一个示例实现,旨在规避恶意软件分析、反病毒产品和EDR在检查的线程调用堆栈中查找Shellcode帧的引用。其思想是隐藏对线程调用堆栈上针对Shellcode的引用,从而伪装包含了恶意代码的内存分配行为。
在该工具的帮助下,可以帮助现有的商业C2产品安全性有更好的提升,并协助红队研究人员开发出更好的安全产品/工具。
工具运行机制
ThreadStackSpoofer的大致运行机制和算法如下所示:
从文件中读取Shellcode的内容;
从dll获取所有必要的函数指针,然后调用SymInitialize;
设置kernel32!Sleep狗子,并指向回我们的回调;
通过VirtualAlloc + memcpy +
CreateThread注入并启动Shellcode。线程应该通过我们的runShellcode函数启动,以避免线程的StartAddress节点进入某些意外或异常的地方(比如说ntdll!RtlUserThreadStart+0x21);当Beacon尝试休眠的时候,我们的MySleep回调便会被调用;
接下来,我们将栈内存中最新返回的地址重写为0;
最后,会发送一个针对::SleepEx的调用来让Beacon继续等待后续的连接;
休眠结束之后,我们将恢复之前存储的原始函数返回地址并继续执行挂起的任务;
函数的返回地址会分散在线程的堆栈内存区域周围,由RBP/EBP寄存器存储其指向。为了在堆栈上找到它们,我们需要首先收集帧指针,然后取消对它们的引用以进行覆盖:

*(PULONG_PTR)(frameAddr + sizeof(void

ThreadStackSpoofer是一种内存规避技术,用于隐藏Shellcode内存分配,防止被安全工具检测。该工具通过线程堆栈欺骗,避免在调用堆栈中出现Shellcode帧,以提升C2产品的安全性。它的工作流程包括读取Shellcode,获取函数指针,注入并启动Shellcode,以及在休眠时修改栈内存。文章提供了工具下载和使用示例,展示了开启欺骗技术前后线程调用栈的区别。
最低0.47元/天 解锁文章
776

被折叠的 条评论
为什么被折叠?



