跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

利用globalAPIhooks在Win7系统下隐藏进程


cnhackteam7

推荐的帖子

0x00 前言

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

这次介绍另外一个隐藏进程的方法——利用全局应用程序接口挂钩

优点是即时生效,不需要等待系统重启

0x01 简介

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

参考链接:

https://www。代码项目。com/articles/49319/easy-way-to-setup-global-API-hooks?显示=打印

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

0x02 原理

在用户层,通过全局应用程序接口挂钩将测试动态链接库注入到系统的所有进程,实现对指定进程的隐藏

hook方式

修改注册表键值AppInit _ DLLs

位置:

HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Windows NT \当前版本\ Windows

参数说明:

LoadAppInit_DLLs:

(REG_DWORD)全局启用或禁用AppInit _ DLLs的值。

0x 0禁用AppInit _ DLLs .

0x 1应用程序init _ dll已启用。

AppInit_DLLs:

(注册_SZ)

要加载的以空格或逗号分隔的动态链接库列表。应该使用短文件名指定动态链接库的完整路径C:\PROGRA~1\Test\Test.dll

RequireSignedAppInit_DLLs:

(REG_DWORD)需要代码签名dll .

0x 0加载任何dll .

0x 1仅加载代码签名的dll .

代码实现

通过Mhook库实现应用程序接口挂钩

优点:

开源

支持x86和x64

使用简便

参考地址:

http://codefromthe70s.org/mhook22.aspx

0x03 实际测试

测试环境:

Win7x86

1.设置注册表键值AppInit_DLLs

参照代码:

https://github。com/subTee/AppInitGlobalHooks-Mimikatz/blob/master/appinit。车辆注册号。车辆注册号文件如下:

Windows操作系统注册表编辑器5.00版

[HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ current version \ Windows]

AppInit _ dll '=' C:\ \ Tools \ \ appinithookx 64。' dll,C:\\Tools\\AppInitHook.dll '

LoadAppInit _ dll '=dword:00000001

RequireSignedAppInit _ dll '=dword:00000000

表示

AppInit _ DLLs已启用

加载任何dll,不需要代码签名的动态链接库

动态链接库路径:C:\Tools\AppInitHookx64.dll,C:\Tools\AppInitHook.dll

注:

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

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

参照工程:

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

3.运行mimikatz.exe

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

流程浏览器不存在mimikatz.exe

Tasklist.exe不存在mimikatz.exe

注:

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

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

使用流程浏览器查看新建的进程,均加载了AppInitHook.dll,如图

2-1.png

注:

管理员权限运行流程浏览器,可查看高权限进程加载的动态链接库

4.Win7x64测试

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

注:

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

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

HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \

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

HKEY _ LOCAL _ MACHINE \ SOFTWARE \ wow 6432 node \ Microsoft \

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

64位的注册表键值位置:

[HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Windows nt \ current version \ Windows]

32位的注册表键值位置:

[HKEY _ LOCAL _ MACHINE \ SOFTWARE \ wow 6432 node \ Microsoft \ Windows NT \ current version \ Windows]

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

https://github。com/3g student/AppInitGlobalHooks-Mimikatz/blob/master/app init 64。车辆注册号

修改后使用流程浏览器查看如图

2-2.png

2-3.png

成功注入32位和64位进程

0x04 补充

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

2-4.png

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

原因如下:

微软从Win8系统开始限制app init _ dll:BIOS中默认开启的安全引导会禁用app init _ dll,使其无效。

请参考:

https://msdn . Microsoft . com/en-us/library/windows/desktop/dn 280412(v=vs . 85)。aspx

0x05 防御

仅适用于Win7和Windows Server 2008 R2及以下版本。

1.查看注册表键值

[HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Windows nt \ current version \ Windows]

[HKEY _ LOCAL _ MACHINE \ SOFTWARE \ wow 6432 node \ Microsoft \ Windows NT \ current version \ Windows]

AppInit _ DLLs项中有没有可疑的dll路径?

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

0x06 小结

本文介绍了在Win7系统中使用全局API钩子隐藏进程的方法,并结合使用它的思想,帮助人们更好地捍卫这种使用方式。

当然,使用全局API挂钩还可以做更多的事情。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...