不生成线程的远程TLS回调注入Poc

admin 2024年2月26日11:32:20评论22 views字数 807阅读2分41秒阅读模式

文中所涉及的技术、思路及工具等相关知识仅供安全为目的的学习使用,任何人不得将其应用于非法用途及盈利等目的,间接使用文章中的任何工具、思路及技术,我方对于由此引起的法律后果概不负责。

关于

利用 TLS 回调执行有效负载,而不在远程进程中生成任何线程

RemoteTLSCallbackInjection

概述

此方法利用 TLS 回调来执行有效负载,而不在远程进程中生成任何线程。此方法受到无线程注入的启发,因为 RemoteTLSCallbackInjection 不会调用任何 API 调用来触发注入的有效负载。

实施步骤

PoC 遵循以下步骤:

  1. 使用该函数创建一个挂起的进程CreateProcessViaWinAPIsW(即RuntimeBroker.exe)。
  2. 获取远程进程映像基地址,然后读取进程的 PE 标头。
  3. 获取 TLS 回调函数的地址。
  4. 使用运行时检索的值修补固定的 shellcode(即g_FixedShellcode )。该 shellcode 负责恢复 TLS 回调函数地址的原始字节和内存权限。
  5. 注入两个 shellcode:g_FixedShellcode和主要有效负载。
  6. 修补 TLS 回调函数的地址并将其替换为我们注入的有效负载的地址。
  7. 恢复进程。

然后, shellcodeg_FixedShellcode将通过在调用主有效负载之前恢复原始 TLS 回调的原始地址来确保主有效负载仅执行一次。TLS 回调可以在进程的生命周期内执行多次,因此通过将原始代码路径执行恢复到原始 TLS 回调函数来控制有效负载被触发的次数非常重要。

演示

下图显示了我们的实现,RemoteTLSCallbackInjection.exe生成 acmd.exe作为其主要负载。

不生成线程的远程TLS回调注入Poc
项目地址

https://github.com/Maldev-Academy/RemoteTLSCallbackInjection


原文始发于微信公众号(SecHub网络安全社区):不生成线程的远程TLS回调注入Poc

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月26日11:32:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   不生成线程的远程TLS回调注入Pochttp://cn-sec.com/archives/2525476.html

发表评论

匿名网友 填写信息