Método de depuración del proceso de inicio de sesión de contraseña del sistema Win 7

  
7 introduce los principios básicos del sistema de Windows
Windows7 después del proceso Winlogon es dinámica, se creará un usuario se conecta proceso Winlogon, por lo que el sistema es completamente puede haber proceso de inicio de sesión múltiple, proceso Winlogon llegará a su fin después de cerrar la sesión.
WinDbg romper NtCreateUserProcess observó Windows7 iniciar el proceso:
mi árbol proceso básico de acabado de la siguiente manera:
smss.exe autochk.exe
smss.exe 00000000 0000003c //sesión 0
CSRSS.exe
Wininit.exe
Services.exe
arranque del proceso de iniciar el servicio
LSASS.exe
lsm.exe
smss.exe 00000001 0000003c //sesión 1
CSRSS.exe
Winlogon.exe
logonui.exe
logonui.exe responsable de la interfaz de autenticación de usuario, después de Windows 7 ya no usan msgina.dll, pero el uso de múltiples procesos con la finalización del proceso de autenticación de usuario , el proceso es generalmente 1, Winlogon inicia la espera de credenciales de entrada de usuario LogonUI 2, Winlogon mediante notificación de inicio de sesión de usuario ALPC Lsass. 3, Lsass módulo de búsqueda de identidad de secuencia. 4] [autenticación local Msv1_0.dll, el resultado de la autenticación devuelto Lsass. Bajo siguiente diagrama de bloques
proceso de puesta en marcha 7
Windows debe estar Tucao, bajo la depuración de aplicaciones windbg núcleo windows7 menudo no menos rotos, haciendo que me pierda mucho esfuerzo ~~ resume de forma segura y fiable: < Br> 1,! Process 0 0 Ver la situación básica del proceso de destino, principalmente Cid.
2, pb nt KiFastCallEntry "! j poi (@ $ TEB + 20) = 0x1a0 ""; "GC" " el Cid real 1A0 de reemplazar.
3, después del golpe de punto de interrupción, bp winlogon! XXXXX
4, .reload /user, bl Mire, asegúrese de que la función se resuelva en la dirección.
primer vistazo a la interacción entre Winlogon y LogonUI, logonui.exe es una concha, similar a svchost, la función real se logra mediante Authui.dll módulo, desde la introducción de "Windows Internals5", winlogon es lo mismo que por ALPC Lsass Comunicación, pero LogonUI no dijo mucho, supongo que el 80% es lo mismo, debería ser la llamada RPC.
llamadas RPC Excelente servicio y el cliente, el cliente en última instancia RPCRT4! NdrClientCall2 hacer la llamada, y el servidor finalmente se ejecutará
RPCRT4! invocación de realizar funciones específicas.
rompemos winlogon NdrClientCall2 en observación [! Bp RPCRT4 NdrClientCall2 no aquí principalmente para evitar la interferencia de otros procesos, ya que las llamadas RPC en el sistema] es muy frecuente, simplemente introduzca una contraseña, golpeó: Usa nosotros
aquí encontró winlogon hace uso de llamadas RPC para realizar el proceso interactivo, prestar atención al nombre de la función se WluiDisplayStatus, de hecho, muy claro que nos diga winlogonUIDisplayStatus, entonces la RPC fue finalmente ejecutado dónde está? es evidente que la RPCRT4 punto de interrupción en Authui.dll! invocar golpeado, a continuación, ejecutar alrededor de un solo paso, como se muestra:
rechazó Authui.dll registrada servicios RPC directamente de la AIF
directamente desde el interior de todas las funciones de la interfaz RPC volcar la siguiente manera :!
WluirRequestCredentials que es motivo de preocupación, la función WluirRequestCredentials winlogon correspondiente de la siguiente manera:
Winlogon Authui.dll con LogonUI completado en una a una interfaz RPC llamadas a través de la función La siguiente es una llamada al proceso de prueba de contraseña incorrecta, seguida de la llamada:
número de serie nombre de la función descripción
1
ganar Logon! WluiRequestCredentials Solicitar al usuario que introduzca las credenciales Nota: Esta función es una función de bloqueo que espera hasta que el usuario confirma que entrar antes de regresar.
2
winlogon! ¿WluiDisplayStatus muestra el estado? No se ha estudiado.
3
winlogon! WluiReportResulta los resultados del informe.
4
winlogon! WluiDisplayRequestCredentialsError muestra un mensaje de error de inicio de sesión.
Hemos encontrado que el proceso no LogonUI haciendo básicamente en vivo, por lo que los movimientos son winlogon de interfaz WluiXXXXXX por mensajes,
AIF que se encuentra un montón de código de la interfaz DirectUI.
Winlogon máquina de estados para mantener todo el proceso de inicio de sesión diversos procesamientos por Winlogon StateMachineSetSignal
de conmutación de estado se lleva a cabo, todo el estado se define como :!
ejemplo [No corte volcado completo]: ! punto de interrupción Winlogon StateMachineSetSignal clic en el botón deshabilitado la pantalla de inicio de sesión, pulsa el siguiente:
en cuenta dos parámetros corresponden a que es el estado, es g_xWinsrv_AccessNotify_Signal, winlogon e interacción LogonUI comprobar el estado del proceso que corresponde esencialmente 9 Básicamente claro, concentrémonos en los detalles de winlogon y el proceso lsass para completar la autenticación de contraseña.
Winlogon también utilizan la llamada RPC para completar la interacción con lsass, la diferencia es que estas ventanas de algunas llamadas RPC empaquetada en una forma de DLL, son SspiCli cliente y el servidor SspiSrv, con el tiempo se llama la función RPCRT4, las siguientes pruebas:
desde la interfaz de llamada RPC AIF en DUMP directa a cabo SSPISRV sigue:
Winlogon llama SspiCli LsaLogonUser completar el inicio de sesión, la función llama finalmente Lsass :: SspiSrv por RPC SspirLogonUser

donde AuthenticationInformation parámetro que contiene la información necesaria para conectarse estructura específica es la siguiente: pantalla
WinDbg aquí contraseña está encriptada, ja, siguiente punto de interrupción de escritura de memoria, golpeó la pila de la siguiente manera:
Winlogon ! WLGeneric_Request_Logon_Credz_Execute correspondiente código es el siguiente: Usa esta función
primera solicitud de credenciales de acceso de función RequestCredentials, inicie la sesión si el modo local, esta función será finalmente llamar WluiRequestCredentials funcionan para ejecutar servicio RPC WluiRequestCredentials proceso LogonUI función authui, solicitando la entrada del usuario! Credenciales de inicio de sesión.
authui final! CRequestCredentialsCallbackData :: getCredential obtener un credenciales de acceso de usuario, estructura de datos _CRED_PROV_CREDENTIAL * Desafortunadamente, no hay una definición de estructura de datos.
de entrada y " qqqqqqqq y " DUMP espectáculo de depuración sigue:
memoria a la rotura: Ba w1 0027e5c8 + 3e, golpeó la pila de la siguiente manera: Función Aquí windbg
pantalla de funciones CRequestCredentialsCallbackData :: GetShutdownChoice + 0x63 está mal, en realidad la función sub_7483CBE7:
mirar a la memoria de datos, de la siguiente manera:
dirección de origen es 0027e510, la longitud es 000000b0:


Ba W1 0027e510 + 3e, golpeó vista dirección de origen 238df78: seguir la pista de memoria Ba W1 238df78 + 3e
vista de la memoria de la siguiente manera:
es una función KerbInteractiveUnlockLogonPack puede google para funcionar, Muy bien !
02 024df8fc 024df924 024df928 authui KerbInteractiveUnlockLogonPack + 0x90

ba de quiebre W1 023888b8 golpean pila
CredProtect función de MSDN de la siguiente manera:

ver el segundo argumento de la pila, lo que realmente es una contraseña en texto plano:
correspondiente función de descifrado CredUnprotect
contenido real dentro de proceso de descifrado lsass, el punto de interrupción ! ADVAPI32 CredUnprotectW golpeó la pila de la siguiente :!
autenticación de contraseña final se realiza por LsaApLogonUserEx2 amado por el msv1_0 masas, de la siguiente manera:
imágenes de arriba se registra Oh!
Copyright © Conocimiento de Windows All Rights Reserved