纤维执行:Windows中隐形的多流控制技术

纤维执行:Windows中隐形的多流控制技术

FiberUsing fibers to run in-memory code.项目地址:https://gitcode.com/gh_mirrors/fiber1/Fiber

项目介绍

在Windows环境中,纤维(Fibers)是一种轻量级线程实现方式,允许在一个线程内部管理多个执行流程,而无需依赖系统级别的优先级调度机制。这个开源项目是一个简单但直观的Proof-of-Concept,它展示了如何利用纤维在内存中隐藏和控制代码执行。通过创建和切换纤维,项目提供了一种避开常规监控的方法,尤其适用于需要长期运行且要求低可见性的任务,如C2信标。

项目技术分析

此项目的核心在于使用Windows API来创建、切换和管理纤维。首先,一个加载器会使用DInvoke库动态映射目标DLL以载入有效负载。然后,主线程被转换为控制纤维,它拥有正常的堆栈。接着,创建一个新的纤维——有效载荷纤维,用于执行映射DLL中的run()函数。控制纤维与有效载荷纤维之间可以自由切换:

  • 当需要执行代码时,控制纤维切换到有效载荷纤维。
  • 一旦有效载荷进入等待状态(如调用了Sleep),它会切换回控制纤维,隐藏其可能包含恶意活动指标的堆栈。
  • 控制纤维完成Sleep操作后,再切回到有效载荷纤维,继续执行。

应用场景

这个项目适合于希望在不引起过多系统回调或者避免被EDR(Endpoint Detection and Response)工具检测到的情况下执行内存中代码的场景。例如,在开发隐蔽式持久化威胁(APT)或地下网络活动时,纤维技术能够提高隐蔽性。

项目特点

  • 低显眼度:无需使用指向非分页内存的JMP或CALL指令,减少异常行为。
  • 无新线程创建:避免了线程创建产生的系统回调,降低被检测风险。
  • 堆栈隐藏:有效载荷纤维在等待期间可以通过控制纤维隐藏堆栈,较之传统的堆栈伪造方法更易于实施。
  • 用户空间切换:所有的纤维切换都在用户空间完成,使得检测更为困难。

编译与使用

在编译之前,需要设置环境变量LITCRYPT_ENCRYPT_KEY,然后分别对有效载荷和加载器进行编译并执行加载器。项目提供了清晰的注释来说明如何创建、管理和调度纤维,并且,通过ProcessHacker等工具观察线程堆栈,可以看到纤维之间的切换过程。

总之,这个开源项目提供了一个深入理解并应用Windows纤维技术的平台,对于开发者来说,无论是学习先进技术,还是构建高级隐蔽的内存执行策略,都是极好的实践资源。

FiberUsing fibers to run in-memory code.项目地址:https://gitcode.com/gh_mirrors/fiber1/Fiber

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颜殉瑶Nydia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值