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