当前位置: 首页
网络安全
手把手教你用IAT hook技术实现Windows通用密码后门教程

手把手教你用IAT hook技术实现Windows通用密码后门教程

热心网友 时间:2026-07-21
转载

通过调试lsass进程定位到msv1_0!LsaApLogonUserEx2,进一步追踪至ntdll!RtlCompareMemory函数,该函数比较用户输入密码与SAM中密码的MD4哈希。采用IAThook与DLL注入技术替换该函数,当比较长度为16且输入哈希匹配预设通用密码哈希时直接返回成功,实现Windows登录后门。

先简要梳理一下Windows登录验证流程中的几个关键环节。

通常情况下,winlogon进程通过gina.dll获取用户输入的用户名和密码,随后通过LPC将这些信息传递给lsass进程。lsass进程继而调用默认的认证包msv1_0.dll,由该模块负责核对密码是否正确。而msv1_0.dll会从SAM数据库中提取用户信息,其中包含了密码的哈希值。

要构建一个后门,关键在于沿着这一调用链条,定位到最底层的函数,并在该处实施修改。

经过分析,这个最底层的函数位于lsass进程的msv1_0.dll模块中。lsass调用的核心函数是:

msv1_0!LsaApLogonUserEx2

思路非常明确——对lsass进程进行调试,并在该函数上设置断点。

当时采用Windbg配合VMware,通过dbgsrv进行远程的用户态调试。Spat在其博客中详细介绍了使用dbgsrv调试LSA的方法,具体操作如下:

在虚拟机(被调试端)运行:

dbgsrv.exe -t tcp:port=1234,password=spat

然后在调试端运行:

windbg.exe -premote tcp:server=192.168.1.102,port=1234,password=spat

不过有一个小问题:如果登录之后才启动dbgsrv,它会随着登录进程被关闭。因此,这里采用了一个任务计划,让dbgsrv在开机时自动运行。

虚拟机启动后,dbgsrv即可就位,然后用Windbg连接并附加到lsass进程。在msv1_0!LsaApLogonUserEx2处设置断点,让lsass继续执行。随后进行登录操作,Windbg果然成功中断。

这里不得不提Windbg中一个非常强大的命令——wt。它可以一路追踪函数调用关系,直至返回。用法在Windbg帮助文档中有详细说明。不过wt是单步执行,因此运行速度较慢。

wt输出的文本量很大,阅读起来比较困难,于是编写了一个Python脚本,将其转换为TreeCtrl视图以便浏览。注意鼠标点击的那个函数:ntdll!RtlCompareMemory

经过反复调试,可以确定该函数正是我们要找的那个“最底层的函数”。

SIZE_T RtlCompareMemory(IN CONST VOID *Source1, IN CONST VOID *Source2, IN SIZE_T Length);

更为关键的是,在这个过程中我们弄清楚了验证密码时该函数的调用细节:

  • Source1:从SAM中取出的用户密码的Unicode形式MD4哈希。
  • Source2:用户输入密码的Unicode形式MD4哈希。
  • Length:始终为16,因为MD4哈希正好是16字节。

明确了这些信息,实现一个替代函数就水到渠成了:

int WINAPI MyRtlCompareMemory(void *a, void *b, int len) { if (len == 16 && pRtlCompareMemory(PASSWD_HASH, b, len) == 16) return 16; return pRtlCompareMemory(a, b, len); }

这里的pRtlCompareMemory是一个全局变量,存储了真正RtlCompareMemory的地址;PASSWD_HASH则是预设通用密码的哈希值。使用MyRtlCompareMemory去hook掉原始函数,即可实现预期效果:只要比较的是16字节的数据,且第二段内存恰好匹配我们的哈希,就直接返回成功,无论第一段内存的内容是什么。

可能有人会担心:hook了msv1_0模块中所有调用RtlCompareMemory的地方,会不会引发问题?实际上大可放心,恰好同时满足比较16字节且第二段内存与我们的哈希完全一致的概率极低。

实现hook的方法有很多,这里选择了最便捷的一种——IAT hook结合DLL注入。

为此编写了一个小工具InjectDll.exe来完成注入操作。

注入的passdoor.dll会在其DllMain中完成IAT hook。该技术已经非常成熟,网上有大量现成的实现代码,这里不再赘述。

此外还编写了一个pdconfig.exe小工具,用于直接修改passdoor.dll中的预设哈希值。这样更换密码时无需重新编译dll,大大简化了操作。

使用方式:

  • 注入InjectDll.exe -i pid_of_lsass full_path_of_passdoor.dll
  • 卸载InjectDll.exe -U pid_of_lsass full_path_of_passdoor.dll

以上就是整个后门实现的核心思路。代码本身并不复杂,关键在于找到最合适的hook点,并深入理解整个认证流程的底层细节。

来源:https://www.jb51.net/hack/5138.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
零基础Python网络安全学习指南,包住宿实战培训

零基础Python网络安全学习指南,包住宿实战培训

先抛出几个核心判断:网络安全人才缺口确实已经超过70万。这个数字不算夸张,各大招聘网站上安全岗位的薪资涨幅和需求增长都是实实在在的。但实话实说,行业真正缺的是能上手干活的人,不是只懂几个理论概念的新手。因此,一套扎实且成体系的训练方案,对于零基础转行或进阶提升就显得格外关键。 从零基础到能够独立应对

时间:2026-07-25 22:28
网络安全定义与核心概念详解

网络安全定义与核心概念详解

谈到网络安全,不同组织与标准体系对其定义虽有差异,但核心目标高度统一:保护信息与系统不受威胁侵害。以下梳理几种主流定义—— 什么是网络安全? 国际标准化组织(ISO)在ISO-74982文献中将安全定义为:最大程度地降低数据和资源遭受攻击的可能性。该定义虽简短,却精准点出安全的本质——即风险控制。

时间:2026-07-25 22:28
IIS 7.0网站漏洞利用与修复方法指南

IIS 7.0网站漏洞利用与修复方法指南

先来聊聊当前网络安全领域比较流行的一种实战技巧——以PHP环境为例,详细讲解图片马合并与解析漏洞利用的具体操作步骤。整个过程并不复杂,但细节往往决定成败,大家跟着流程逐步操作即可。 合并一张PHP一句话图片马 首先,我们需要将一句话木马脚本与一张正常图片合并,生成一个看似无害的图片文件。合并方式主要

时间:2026-07-25 22:28
织梦管理系统后台查找功能教程

织梦管理系统后台查找功能教程

通过SQL注入漏洞获取织梦CMS(DedeCMS)管理员密码后,满怀期待地准备进入后台,却发现怎么也找不到登录入口——这种情况其实相当常见。别着急,这里有一个实用的技巧值得尝试。 直接在网站地址后面添加以下路径: include dialog select_media php?f=form1 mur

时间:2026-07-25 22:28
微软IE浏览器BrowseDialog类(ccrpbds6.dll)拒绝服务安全漏洞深度分析

微软IE浏览器BrowseDialog类(ccrpbds6.dll)拒绝服务安全漏洞深度分析

BrowseDialog Class (ccrpbds6 dll) 导致 Internet Explorer 拒绝服务漏洞分析 该漏洞的PoC(概念验证代码)实现极为直接——触发浏览器崩溃的条件简单得令人意外。测试环境采用Windows XP Professional SP2(已安装全部补丁)并运行

时间:2026-07-25 22:10
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜