首页
社区
课程
招聘
[翻译]HijackFileHandle - 在不注入代码的情况下劫持一个远程进程的文件
发表于: 2022-2-10 10:12 14392

[翻译]HijackFileHandle - 在不注入代码的情况下劫持一个远程进程的文件

2022-2-10 10:12
14392

翻译
原文地址:https://www.x86matthew.com/view_post?id=hijack_file_handle

功能:在不注入代码的情况下劫持一个远程进程的文件


这篇文章介绍了我前段时间开发的一项技术,它允许在远程进程中操纵文件句柄,而不需要依赖代码注入。

这个方法利用了Windows重新使用句柄索引的事实。当一个句柄被关闭时,在该进程中创建的下一个句柄将重新使用先前的句柄索引。这个事实是众所周知的,所以我相信其他人也会想出类似的想法。

这主要用于将一个日志文件(或任何其他输出文件)重定向到一个不同的位置,但通过一些小的代码修改,它有可能被用来替换目标进程中的一个配置文件。这适用于任何使用持久化文件句柄的软件。

我们可以通过以下步骤来利用这一机制:
1. 创建一个新的输出文件——目标句柄将被重定向到这里。
2. 使用NtSuspendProcess暂停目标进程。
3. 使用NtQuerySystemInformation循环浏览目标进程中的所有句柄。
4. .通过检查ObjectTypeIndex值忽略任何非文件句柄。我已经写了一个函数来计算文件句柄的正确ObjectTypeIndex。
5. 使用NtQueryInformationFile与FileNameInformation在远程进程中找到目标文件句柄,以检索文件路径。这里需要一些技巧来避免死锁。
6. 使用带有DUPLICATE_CLOSE_SOURCE标志的DuplicateHandle关闭远程进程中的目标文件句柄。
7. 使用DuplicateHandle将新的输出文件(来自步骤#1)复制到目标进程中。确认复制的句柄与原始目标句柄相匹配。
8. 使用NtResumeProcess恢复目标进程。

我的概念验证程序采取以下参数:


为了演示这个概念,我们将执行ping 8.8.8.8 -t > output.txt来启动一个无法计量的ping,并写入output.txt。

在第二个命令窗口中,我们可以执行以下命令。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2022-2-11 17:51 被梦幻的彼岸编辑 ,原因:
收藏
免费 4
支持
分享
最新回复 (3)
雪    币: 8117
活跃值: (4909)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
太棒了 这个技术值得研究下  
2022-2-10 11:23
0
雪    币: 576
活跃值: (2035)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
mark 想起了多开关句柄
2022-2-10 13:35
0
雪    币: 1848
活跃值: (2251)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
4
猜测 打开带密码数据库sqlite3 能否用这种方法
2022-2-17 00:05
0
游客
登录 | 注册 方可回帖
返回
//