Windows system >> Windowsの知識 >  >> Windows 7システムチュートリアル >> Windows 7システムチュートリアルについて >> 勝利7システムパスワードログインプロセスのデバッグ方法

勝利7システムパスワードログインプロセスのデバッグ方法

  
Technologeeko Winlogonプロセスは動的である後7は、Windows
Windows7のシステムの基本的な原則を紹介し、それがユーザーWinlogonプロセスを記録しますので、システムが完全に複数のログオンプロセスがあるかもしれないです、Winlogonプロセスがログアウトした後、最後に来るが作成されます。


私の仕上げの基本的なプロセスツリーを次のように:
SMSS.EXE autochk.exeを
SMSS.EXE 00000000 0000003C //セッション0を
NtCreateUserProcessはWindows7のプロセスを開始観察破るのWinDbg
Csrss.exe
Wininit.exe
Services.exe
電源投入時の自己起動サービスプロセス
Lsass.exe
Lsm.exe
smss.exe 00000001 0000003c //session 1
Csrss.exe
Winlogon.exe
LogonUI.exe
LogonUI.exeはユーザー認証インターフェイスを担当し、Windows 7はmsgina.dllを使用しなくなりますが、ユーザー認証プロセスを完了するために複数のプロセスを使用します。 、プロセスは、一般に1であり、Winlogonプロセスは、ALPCのLsassユーザログイン通知によってユーザ入力クレデンシャルLogonUI 2、Winlogonプロセスを待って開始する。3、Lsassのクエリー配列識別モジュール4] [MSV1_0.dllローカル認証を、認証結果がLsassのを返さ。ブロック図は以下のとおりです。









Br> 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は、「WindowsのInternals5」導入から、実際の機能は、authui.dllモジュールによって達成されるのsvchostに似シェル、で、WinlogonプロセスはALPC Lsassのことで同じことがあります通信は、LogonUIはあまり言っていない、私は80%が同じであると思います、それはRPC呼び出しでなければなりません。
RPCはサーバーとクライアントを呼び出し、クライアントは最後にRPCRT4!NdrClientCall2が呼び出しを実行し、サーバーは最終的に
RPCRT4を実行します!特定の機能を実行するために呼び出します。 !私たちは観察下にWinlogon NdrClientCall2を破る
非常に頻繁にあるだけで、パスワードを入力し、[!システムのRPCコールがあるためBpのRPCRT4 NdrClientCall2ない、ここでは主に、他のプロセスによる干渉を避けるために]、ヒット:ここで私たちを

Winlogonプロセスは、RPCは、インタラクティブなプロセスを実行するために呼び出しを使用していた、関数名に注意を払うWluiDisplayStatusで、私たちにwinlogonUIDisplayStatusに伝えるために実際には、非常に明確で、それがどこにあるか、そして、RPCが最終的に実行されたのですか?それは明らかauthui.dllにブレークポイントRPCRT4ということです!呼び出します図に示すように、ヒットしてから、ステップバイステップで、:

直接authui.dll登録RPCサービス内のIDAから

直接から直接

すべてのRPCインターフェイス関数を直接配置以下のように、対応のWinlogon WluirRequestCredentials機能懸念の原因である:!

WluirRequestCredentialsを次のようにダンプ:

Winlogonのauthui.dll logonUIで1つのRPCインターフェイスに1で完成機能を通じて呼び出します以下は、間違ったパスワードテストプロセスでパスワードを入力しようとしたものです。
シーケンス関数名の説明
1
win Logn!WluiRequestCredentialsはユーザーに資格情報の入力を要求します注:この機能はブロック機能であり、ユーザーがログインを確認するまで待機します。
2
winlogon!WluiDisplayStatusはステータスを表示しますか?未調査。
3
winlogon!WluiReportResultのレポート結果。
4
winlogon!WluiDisplayRequestCredentialsErrorはログインエラープロンプトを表示します。基本的にLogonUIプロセスが機能していないことがわかりました。そのため、アクションはwinlogonのWluiXXXXXXインターフェイスによって駆動されます。
IDAはDirectUIインターフェイスコードを多数見つけます。
Winlogonプロセスは、ステートマシンのWinlogon StateMachineSetSignal
状態切り替えによって全体のログインプロセスの様々な処理を維持するために達成される、全体の状態が[いいえカットDUMP完全] :!
ログイン例えば次のように定義されます。 !2つのパラメータは、それがg_xWinsrv_AccessNotify_Signal状態でされ、WinlogonプロセスとLogonUIの相互作用は、基本的に9に対応するプロセスの状態をチェックするために対応して注意

:ブレークポイントのWinlogon StateMachineSetSignalは、ログイン画面無効ボタンをクリックし、次のようにヒット基本的に明らかに、パスワード認証を完了するためのwinlogonとlsassプロセスの詳細に焦点を当てましょう。
Winlogonプロセスはまた、LSASSとの相互作用を完了するために、RPCコールを使用し、相違点は、いくつかのRPC呼び出しがDLL形式にパッケージこれらのウィンドウは、SspiCli SspiSrvクライアントとサーバ、最終的に呼び出されRPCRT4機能は、以下の証拠であるということです。直接DUMPでRPC呼び出しインタフェースIDAから

アウトSSPISRVは次のとおりです。

WinlogonプロセスがSspiCliからLsaLogonUserは、ログインを完了呼び出して、関数が最終的にLsassのを呼び出します:: SspiSrv RPC SspirLogonUserによって

AuthenticationInformationパラメータには、ログインに必要な情報が含まれています:具体的な構造は次のとおりです:Windbgはここでパスワードが暗号化されていることを示しています。 !WLGeneric_Request_Logon_Credz_Execute対応するコードは次のとおりです。RequestCredentials機能のログイン資格情報、ローカルモードであれば、ログインすることにより

この機能最初の要求を、この関数は、最終的WluiRequestCredentialsは、ユーザーの入力を要求し、RPCサービス機能LogonUIプロセスauthuiのWluiRequestCredentialsを実行するために機能を呼び出します!ログイン資格情報
Final authui!CRequestCredentialsCallbackData :: GetCredentialユーザーのログイン認証情報を取得します。データ構造は_CRED_PROV_CREDENTIALです。*残念ながら、データ構造の定義はありません。

入力' qqqqqqqq' DUMPショーのデバッグは、次のとおりです。

メモリ破断を:Baが次のようにスタックを打つ、0027e5c8 + 3eはW1:ここでwindbgの

機能表示機能CRequestCredentialsCallbackData次のように、データメモリを見て
:::: GetShutdownChoice +は0x63は、実際にsub_7483CBE7機能、間違っている

送信元アドレスが0027e510で、長さは000000b0です:



ビューメモリ:

は、KerbInteractiveUnlockLogonPackが機能するには、Googleできる機能です>
Baがビュー元アドレス238df78を打つ、+ 3E 0027e510をW1とても良い!

02 024df8fc 024df924 024df928 authui KerbInteractiveUnlockLogonPack + 0x90を

ブレークポイントBA W1 023888b8ヒットスタック

CredProtect MSDN機能を次のように


スタックの2番目のパラメータを表示する、それはクリアテキストのパスワードです。

対応する復号化関数CredUnprotect


内容は実際にはlsassプロセス、ブレークポイントで復号化されます。 !:!

最終パスワード認証がLsaApLogonUserEx2によって行われ、以下のようにADVAPI32 CredUnprotectWは次のように、大衆のMSV1_0に愛さスタックを打つ:

上記ああ写真を記録しています!
Copyright © Windowsの知識 All Rights Reserved