-
-
[翻译]HijackFileHandle - 在不注入代码的情况下劫持一个远程进程的文件
-
发表于:
2022-2-10 10:12
14339
-
[翻译]HijackFileHandle - 在不注入代码的情况下劫持一个远程进程的文件
翻译
原文地址: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
被梦幻的彼岸编辑
,原因: