最专业的Win10正式版系统下载
当前位置: 新萝卜家园W10系统口令登录过程调试方法图文教程

新萝卜家园W10系统口令登录过程调试方法图文教程

发布日期:2016-07-21 作者:Win10正式版官网 来源:www.52xitong.com
W10

  首先介绍W10系统基本原理

  W10 以后 Winlogon 进程是动态的,有用户登录就会创建一个 Winlogon 进程,因此系统中完全 可能存在多个登录进程,注销后 Winlogon 进程也会随之结束。

  Windbg 断点 NtCreateUserProcess 观察 W10 启动流程:

  我整理的基本进程树如下:

  smss.exe autochk.exe

  smss.exe 00000000 0000003c //session 0

  Csrss.exe

  Wininit.exe

  Services.exe

  开机自启动服务进程

  Lsass.exe

  Lsm.exe

  smss.exe 00000001 0000003c //session 1

  Csrss.exe

  Winlogon.exe

  LogonUI.exe

  LogonUI.exe 负责用户认证界面,W10 以后不再使用 msgina.dll,而是使用多个进程配合,完成用户 认证过程,大致过程为 1、Winlogon 启动 LogonUI 等待用户输入凭证 2、Winlogon 通过 ALPC 通知 Lsass用户登录 3、Lsass 依次查询认证模块【本地认证 MSV1_0.dll】4、Lsass 返回认证结果。框图如下

  W10调试过程

  必须要吐槽下,W10 下 windbg 内核调试应用程序经常断不下了,害我浪费了很多功夫~~现总结 了一个稳当可靠的办法:

  1、!process 0 0 查看目标进程的基本情况,主要是 Cid。

  2、bp nt!KiFastCallEntry "j poi(@$teb+20) = 0x1a0'';'gc'" 把 1a0 替换成实际的 Cid 即可。

  3、等断点命中后,bp winlogon!XXXXX

  4、.reload /user 下,bl 看一下,确保函数解析成地址。

  首先看 Winlogon 和 LogonUI 之间的交互,LogonUI.exe 就是一个壳,类似 svchost,真正的功能是通 过 authui.dll模块完成的,从《Windows Internals5》介绍,winlogon 是通过 ALPC 的东西同 Lsass 通信的,但是 LogonUI 没怎么讲,我估计八成也是一样的,应该就是 RPC 调用。

  RPC 调用分服务端和客户端,客户端最终 RPCRT4!NdrClientCall2 执行调用,而服务端最终会执行

  RPCRT4!Invoke执行具体的函数。

  我们断点 winlogon!NdrClientCall2观察下【这里不 bp RPCRT4!NdrClientCall2主要是避免其他进程干 扰,因为 RPC 在系统中调用很频繁】,随便输入个密码,命中:

  这里我们发现 winlogon 的确使用了 RPC 调用来执行进程交互,注意这个函数名是 WluiDisplayStatus,其 实很明确的告诉我们 winlogonUIDisplayStatus,那么该 RPC 最终在哪里被执行呢?很显然是在 authui.dll 下断点 RPCRT4!Invoke 命中,而后单步跑一下,如图:

  直接从 IDA 里面翻了下 authui.dll注册 RPC 服务

  从

  直接把所有的 RPC 接口函数 DUMP 出来,如下:

  其中 WluirRequestCredentials很惹人关注,对应的 winlogon!WluirRequestCredentials函数如下:

  Winlogon 同 logonUI 的 authui.dll 中通过一一对应的 RPC 函数完成接口调用,下面是一次错误密码测 试过程时,依次命中的调用情况:

  序号函数名描述

  1

  winlogon!WluiRequestCredentials请求用户输入凭证,注:该函数是阻塞函数,会一直等待直到用户确认登录才返回。

  2

  winlogon!WluiDisplayStatus显示状态?未细究。

  3

  winlogon!WluiReportResult通报结果。