文中所涉及的技术、思路及工具等相关知识仅供安全为目的的学习使用,任何人不得将其应用于非法用途及盈利等目的,间接使用文章中的任何工具、思路及技术,我方对于由此引起的法律后果概不负责。
关于
利用 TLS 回调执行有效负载,而不在远程进程中生成任何线程
RemoteTLSCallbackInjection
概述
此方法利用 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:
//github.com/Maldev-Academy/RemoteTLSCallbackInjection
原文始发于微信公众号(SecHub网络安全社区):不生成线程的远程TLS回调注入Poc
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论