Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 其他分享 › Fiber | 使用 Fibers 以不同且隐蔽的方式运行内存代码

Fiber | 使用 Fibers 以不同且隐蔽的方式运行内存代码

Eswlnk的头像
Eswlnk
2023-06-14 22:08:23
Fiber | 使用 Fibers 以不同且隐蔽的方式运行内存代码-Eswlnk Blog
智能摘要 AI
纤程是一种轻量级线程,需手动调度而非依赖Windows的优先级调度机制。它们允许多个执行流共享同一线程资源,具有独立的寄存器状态和堆栈,对内核不可见,适合内存中代码执行及隐蔽操作。创建纤程需先转换主线程为纤程,再通过SwitchToFiber函数在不同纤程间切换。纤程的优点包括高效运行内存代码、避免新线程生成、隐藏堆栈以及躲避EDR检测;缺点则有只能单纤程调度、堆栈仍驻留内存易被发现、需额外混淆等。总体而言,纤程适用于特定场景,但仍需谨慎使用。

引言

纤程是一种执行单元,需要由应用程序手动调度,而不是依赖于 Windows 内置的基于优先级的调度机制。纤程通常被称为轻量级线程。虽然纤程需要更多的手动控制,但它们对于在内存中运行代码非常有效,并且在隐藏恶意行为时非常有用。

Fiber | 使用 Fibers 以不同且隐蔽的方式运行内存代码-Eswlnk Blog

什么是纤程?

纤程允许在单个线程中有多个执行流,每个执行流都有自己的寄存器状态和堆栈。另一方面,纤程对内核是不可见的,这使得它们成为一种比生成新线程更隐秘(也更便宜)的内存代码执行方法。

如何使用纤程?

一个线程可以创建多个纤程,并通过调用SwitchToFiber函数在它们之间随意切换。在此之前,当前线程本身必须通过调用ConvertThreadToFiber成为纤程,因为只有纤程才能创建其他纤程。最后,为了创建一个在调度时执行内存代码的纤程(例如,在反射加载 PE 或一些 shellcode 之后),只需要调用CreateFiber。

SwitchToFiber 函数

SwitchToFiber 函数是此过程中最重要的部分,也是所有魔法发生的地方。此功能允许调度一根纤程或另一根纤程,所有这些都发生在用户空间上。这个功能非常重要,因为它允许控制过程切换到有效载荷过程,然后再次切换回来。根据官方文档,“SwitchToFiber函数保存当前纤程的状态信息,并恢复指定纤程的状态”。这意味着当调用此函数时,寄存器的值和堆栈将从当前纤程状态切换到目标纤程状态,从而允许在过程完成后“隐藏”当前纤程的堆栈。这也允许从执行停止的同一点继续执行目标纤程(与调度程序根据其自己的优先级逻辑在线程之间切换时发生的方式相同)。

纤程的优点

使用纤程可能对某些类型的有效载荷(如 C2 信标)有利。以下是使用纤程的几个优点:

  1. 纤程允许运行内存中的代码,而无需使用指令JMP或CALL从加载程序指向未支持的内存区域。
  2. 此执行是在没有创建新线程的情况下执行的,从而防止从内核生成可由 EDR 收集的回调。
  3. 当有效负载进入可警报状态或需要等待挂起的 I/O 操作时,可以隐藏有效负载纤程的堆栈。这是使用带有从磁盘运行代码的普通堆栈的控制纤程来完成的。这种“隐藏”比常规的线程堆栈欺骗过程更便宜、更容易实现。
  4. 纤程对内核是不可见的,所有切换过程都发生在用户空间,这使得它更容易躲避 EDR。

纤程的缺点

使用纤程也有缺点:

  1. 纤程上一次只能调度一个纤程,这意味着为了使用纤程获得真正的并发性,您需要生成更多线程。
  2. 尽管在控制光纤切换回时有效载荷光纤的堆栈被隐藏,但它仍保留在进程内存中,并且可以通过内存检查发现。
  3. 仍然需要混淆以隐藏内存中的植入,这只是隐藏堆栈和执行方法。
Fiber | 使用 Fibers 以不同且隐蔽的方式运行内存代码-Eswlnk Blog

总结

使用纤程在内存中运行代码的优点和缺点都非常明显。纤程提供了一种不同于线程的执行单元,在某些情况下,这种技术可以提供额外的优势。但是,由于使用纤程需要更多的手动控制,并且不是所有应用程序都支持该技术,因此使用它需要慎重考虑。

相关内容

Fiber
下载
本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。
工具线程软件
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
MAAD-AF | 快速有效的M365和Azure AD安全测试攻击工具
上一篇
轻松解决APP误报毒!一键打包,随机更换包名和签名,还可以上传APK!
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「亲测有效」Google Gemini 学生优惠:解决身份验证和支付卡验证
  • 解决国际版EdgeOne绑卡和手机验证问题
  • 小工具开发之EdgeOne免费计划兑换工具
  • 「其他分享」市面上静态页面服务商比较与推荐:选择最适合您的平台
  • 「图片优化」利用Cloudflare CDN减少回源Bucket流量
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

SQL工程设计之职工考勤管理系统
2021-12-02 0:34:44
「其他分享」Windows 10 隐藏6 个用户文件夹
2022-08-16 15:23:20
「其他分享」从零设计通信协议(二)
2022-08-11 14:37:21

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.852 秒   |  SQL查询 32 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈