DecoyMini 技术交流社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3697|回复: 1

[工具] Process Hollowing 的另一种用法 - Process Overwriting

[复制链接]

172

主题

34

回帖

30

荣誉

Rank: 9Rank: 9Rank: 9

UID
2
积分
339
精华
1
沃币
2 枚
注册时间
2021-6-24

论坛管理

发表于 2022-2-15 17:08:35 | 显示全部楼层 |阅读模式

Process Overwriting 是一个 PE 注入技术,与 Process Hollowing 和 Module Overloading 密切相关。

Process Hollowing 又名 RunPE,是一个出现比较早且受欢迎的 PE 注入技术,虽然有几种不同的变体玩法,但都存在着以下共同点:

  • 以挂起的方式创建一个进程;
  • 将 PE 模块写入到本身内存当中;
  • 重定向到新模块;
  • 恢复线程;

Process Hollowing 不需要手动加载 payload 的 imports,在上面步骤 3 中,windows 加载器会将我们要植入的 PE 作为进程的主要模块,并在其恢复执行时自动加载 imports。

为了让植入的 PE 被 windows 加载器识别,其 Module Base 必须在 PEB 中设置,通常为以下列两种方式之一:

  • 在最经典的变体玩法中,原始 PE 未从内存映射,而新的 PE 映射到它相同地址上的位置;
  • 在另一个常见玩法中,旧模块保持原样,另一个 PE 映射到新的内存区域,然后手动将新模块的基地址写入到 PEB (链接);

作为这些经典实现,我们得到了一个作为主模块运行的 payload,但它被映射为 MEM_PRIVATE (而不是像通常加载的 PE 那样的 MEM_IMAGE)。为了获得映射为 MEM_IMAGE 的 payload,可以使用一些密切相关的技术,例如 Transacted HollowingGhostly Hollowing

Process Overwriting 是解决这个问题的另一种方法。

与经典的 Process Hollowing 相比,我们不是没映射原始 PE,而是重新写入它,没有分配新内存:我们正在使用最初为进程的主模块分配的内存。

优点

植入的 PE 看起来像是由 windows 加载器加载的

  • 映射的标志为 MEM_IMAGE;
  • 分为具有特定访问权限的部分;
  • image 被命名;

方便加载

  • 无需在注入之前手动重新定位被植入的 PE,windows 加载器将会处理此问题 (而在经典的 Process Hollowing 中,必须重定位模块);
  • 无需填写 imports (就像在 Process Hollowing 的每个变体玩法一样);
  • 无需在进程中分配新内存;

缺点

  • 如果目标启用了 GFG (控制流保护),则它不起作用 (但可以在进程创建禁用它);
  • 目标的 ImageSize 不得小于 payload 的 ImageSize (请记住,我们仅使用已分配的内存) - 此限制不会出现在 Process Hollowing 的变体玩法上;
  • 可以通过将内存的模块与相应文件进行比较来检测 (PE-sive 检测) - 就像 Process Hollowing 的每个变体玩法;

Demo

Demo (demo.bin) payload 被注入到 windows 计算器中 (默认):



在内存中表现的形式 (Process Hacker):



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0

主题

16

回帖

0

荣誉

Rank: 1

UID
4
积分
25
精华
0
沃币
4 枚
注册时间
2021-6-25
发表于 2022-2-16 09:03:47 | 显示全部楼层
优质内容 666
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼

Archiver|小黑屋|DecoyMini 技术交流社区 ( 京ICP备2021005070号 )

GMT+8, 2024-5-8 10:13 , Processed in 0.061858 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表