此方法利用 TLS 回调来执行有效负载,而无需在远程进程中生成任何线程。此方法受到 无线程注入的启发 因为 RemoteTLSCallbackInjection 不会调用任何 API 调用来触发注入的有效负载。
实施步骤
PoC 遵循以下步骤:
-
使用CreateProcessViaWinAPIsW函数(即 RuntimeBroker.exe)创建一个暂停的进程。
-
获取远程进程映像基地址,然后读取该进程的 PE 头。
-
获取 TLS 回调函数的地址。
-
修补固定的 shellcode (即 g_FixedShellcode) 并使用运行时检索的值。此 shellcode 负责恢复 TLS 回调函数地址的原始字节和内存权限。
-
注入两个 shellcode:g_FixedShellcode 和主 payload。
-
修补 TLS 回调函数的地址并将其替换为我们注入的有效载荷的地址。
-
恢復過程。
然后, g_FixedShellcode shellcode将在调用主payload 之前恢复原始 TLS 回调的原始地址,以确保主 payload 只执行一次。TLS 回调可以在进程的整个生命周期内执行多次,因此通过将原始代码路径执行恢复到原始 TLS 回调函数来控制触发有效负载的次数非常重要。
演示
下图显示了我们的实现RemoteTLSCallbackInjection.exe,它生成一个cmd.exe 作为其主要有效载荷。
项目地址:
原文始发于微信公众号(Ots安全):RemotetlscallbackIndext方法利用TLS回调执行有效负载,而无需在远程过程中产生任何线程
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论