利用global API hooks在Win7系统下隐藏进程

简介: 本文讲的是利用global API hooks在Win7系统下隐藏进程,在之前的文章《Powershell tricks::Hide Process by kd.exe》介绍过通过kd.exe隐藏进程的技巧,最大的缺点是需要开启Local kernel debugging模式,等待重启才能生效
本文讲的是 利用global API hooks在Win7系统下隐藏进程

0x00 前言

在之前的文章《Powershell tricks::Hide Process by kd.exe》介绍过通过kd.exe隐藏进程的技巧,最大的缺点是需要开启Local kernel debugging模式,等待重启才能生效 

这次介绍另外一个隐藏进程的方法——利用global API hooks 
优点是即时生效,不需要等待系统重启

0x01 简介

本文将要参照Sergey Podobry的文章,对该方法进行介绍,分析实际测试中需要注意的细节,并补全在64位下具体的参数设置

参考链接:

https://www.codeproject.com/articles/49319/easy-way-to-set-up-global-api-hooks?display=print

https://github.com/subTee/AppInitGlobalHooks-Mimikatz

0x02 原理

在用户层,通过global API hooks将测试dll注入到系统的所有进程,实现对指定进程的隐藏

hook方式

修改注册表键值AppInit_DLLs

位置:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWindows

参数说明:

LoadAppInit_DLLs:
(REG_DWORD) Value that globally enables or disables AppInit_DLLs.
    ·0x0 – AppInit_DLLs are disabled.
    ·0x1 – AppInit_DLLs are enabled.
AppInit_DLLs:
(REG_SZ) Space - or comma -separated list of DLLs to load. The complete path to the DLL should be specified using short file names. C:PROGRA~1TestTest.dll
RequireSignedAppInit_DLLs:
(REG_DWORD) Require code-signed DLLs.
   ·0x0 – Load any DLLs.
   ·0x1 – Load only code-signed DLLs.

代码实现

通过Mhook library实现API hooking

优点:

开源

支持x86和x64

使用简便

参考地址:

http://codefromthe70s.org/mhook22.aspx

0x03 实际测试

测试环境:Win7x86

1.设置注册表键值AppInit_DLLs

参照代码:

https://github.com/subTee/AppInitGlobalHooks-Mimikatz/blob/master/AppInit.reg

.reg文件如下:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWindows]
"AppInit_DLLs"="C:ToolsAppInitHookx64.dll,C:ToolsAppInitHook.dll"
"LoadAppInit_DLLs"=dword:00000001
"RequireSignedAppInit_DLLs"=dword:00000000

表示

AppInit_DLLs are enabled
Load any DLLs,do not need code-signed DLLs
DLL path:C:ToolsAppInitHookx64.dll,C:ToolsAppInitHook.dll

注:

设置的路径不能存在空格,否则失效

2.编译生成AppInitHook.dll并放在C:Tools下

参照工程:

https://github.com/subTee/AppInitGlobalHooks-Mimikatz

3.运行mimikatz.exe

任务管理器进程列表不存在mimikatz.exe

Process Explorer不存在mimikatz.exe

Tasklist.exe不存在mimikatz.exe

注:

此处没有完全隐藏进程,是将进程名设置为conhost.exe,这是因为mimikatz是控制台应用程序

如果换成putty.exe或calc.exe这种Win32项目,则不存在这个问题,能够完全隐藏进程

使用Process Explorer查看新建的进程,均加载了AppInitHook.dll,如图

利用global API hooks在Win7系统下隐藏进程

注:

管理员权限运行Process Explorer,可查看高权限进程加载的dll

4.Win7x64测试

64位系统同32位系统的区别在注册表也有所体现

注:

详情可参考之前的文章《关于32位程序在64位系统下运行中需要注意的重定向问题》

64位程序对应注册表位置:

HKEY_LOCAL_MACHINESOFTWAREMicrosoft

32位程序对应注册表位置:

HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoft

所以,如果要hook 64位系统下的所有进程(32位和64位),需要修改两处注册表键值

64位的注册表键值位置:

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionWindows]

32位的注册表键值位置:

[HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftWindows NTCurrentVersionWindows]

具体修改代码已上传至github,地址如下:

https://github.com/3gstudent/AppInitGlobalHooks-Mimikatz/blob/master/AppInit64.reg

修改后使用Process Explorer查看如图

利用global API hooks在Win7系统下隐藏进程

利用global API hooks在Win7系统下隐藏进程

成功注入32位和64位进程

0x04 补充

该方法只支持Win7 和 Windows Server 2008 R2,不支持更高版本如Win8、Server2012

利用global API hooks在Win7系统下隐藏进程

如上图,在Win8系统,虽然成功加载AppInitHook.dll,但是无法隐藏进程

原因如下:

从Win8系统开始,微软对AppInit_DLLs做了限制:bios中默认开启的secure boot将会禁用AppInit_DLLs,使其失效


0x05 防御

只针对Win7 和 Windows Server 2008 R2及以下系统

1.查看注册表键值

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionWindows]
[HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftWindows NTCurrentVersionWindows]

AppInit_DLLs项有无可疑dll路径

2.通过Process Explorer查看进程有无加载可疑的dll

0x06 小结

本文对利用global API hooks在Win7系统下隐藏进程的方法做了介绍,结合利用思路,帮助大家对这种利用方式进行更好的防御。当然,利用global API hooks能做的还有更多




原文发布时间为:2017年5月7日
本文作者:3gstudent
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
16天前
|
存储 人工智能 Java
Spring AI与DeepSeek实战四:系统API调用
在AI应用开发中,工具调用是增强大模型能力的核心技术,通过让模型与外部API或工具交互,可实现实时信息检索(如天气查询、新闻获取)、系统操作(如创建任务、发送邮件)等功能;本文结合Spring AI与大模型,演示如何通过Tool Calling实现系统API调用,同时处理多轮对话中的会话记忆。
256 57
|
13天前
|
jenkins 测试技术 Shell
利用Apipost轻松实现用户充值系统的API自动化测试
API在现代软件开发中扮演着连接不同系统与模块的关键角色,其测试的重要性日益凸显。传统API测试面临效率低、覆盖率不足及难以融入自动化工作流等问题。Apipost提供了一站式API自动化测试解决方案,支持零代码拖拽编排、全场景覆盖,并可无缝集成CI/CD流程。通过可视化界面,研发与测试人员可基于同一数据源协作,大幅提升效率。同时,Apipost支持动态数据提取、性能压测等功能,满足复杂测试需求。文档还以用户充值系统为例,详细介绍了从创建测试用例到生成报告的全流程,帮助用户快速上手并提升测试质量。
|
4月前
|
API PHP
2025宝塔API一键建站系统PHP源码
2025宝塔API一键建站系统PHP源码
193 90
|
4月前
|
存储 数据挖掘 BI
API数据源:轻松接入各类业务系统数据
在数字化转型中,企业面临多样化的数据需求。Quick BI推出API数据源功能,支持广泛的数据接入,包括实时天气、电商交易及内部业务数据,极大丰富了可分析数据范围。该功能提供灵活的连接方式(抽取和直连模式)、多元授权机制(基础认证、前置请求)和自动化数据解析,降低了操作门槛,提升了配置效率。通过动态Token获取等最佳实践,确保数据安全与实时性,满足企业具体业务需求。了解更多,请访问Quick BI官方文档或瓴羊官网。
253 77
|
2月前
|
弹性计算 运维 监控
基于进程热点分析与系统资源优化的智能运维实践
智能服务器管理平台提供直观的可视化界面,助力高效操作系统管理。核心功能包括运维监控、智能助手和扩展插件管理,支持系统健康监控、故障诊断等,确保集群稳定运行。首次使用需激活服务并安装管控组件。平台还提供进程热点追踪、性能观测与优化建议,帮助开发人员快速识别和解决性能瓶颈。定期分析和多维度监控可提前预警潜在问题,保障系统长期稳定运行。
93 17
|
3月前
|
存储 API 文件存储
单页图床HTML源码+本地API接口图床系统源码
图床系统是一种用于存储和管理图片文件的在线服务。它允许用户上传图片文件,并生成相应的图片链接,从而方便用户在网页、社交媒体或其他平台上分享图片。
90 2
单页图床HTML源码+本地API接口图床系统源码
|
3月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
107 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
3月前
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
436 5
|
4月前
|
监控 搜索推荐 开发工具
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
271 2
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
|
5月前
|
安全 测试技术 API
探秘驱动软件系统高效协同的高效协同之API接口
在数字化时代,API(应用程序编程接口)作为现代软件开发的核心组件,犹如无形的桥梁,连接不同应用、平台和服务,促进数据和功能自由流动。本文深入探讨API的基本概念、工作原理、核心组成部分及其在现代软件开发中的应用与最佳实践。通过统一数据格式、确保安全性和实施版本控制,API助力高效协同,并在社交媒体、物联网及企业系统中展现出巨大价值。未来,API将朝着智能化方向发展,同时面临并解决安全挑战,推动各行业的数字化转型。
196 6

热门文章

最新文章

下一篇
oss创建bucket