加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 安全 > 正文

如何使用ThreadStackSpoofer隐蔽Shellcode的内存分配行为

发布时间:2022-02-10 09:53:24 所属栏目:安全 来源:互联网
导读:ThreadStackSpoofer是一种先进的内存规避技术,它可以帮助广大研究人员或红/蓝队人员更好地隐藏已注入的Shellcode的内存分配行为,以避免被扫描程序或分析工具所检测到。 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寄存器存储其指向。为了在堆栈上找到它们,我们需要首先收集帧指针,然后取消对它们的引用以进行覆盖。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读