Windows 認証のローカル認証

目次

1. Windows 認証プロセス

2. LM ハッシュと NTLM ハッシュ

2.1 LMハッシュの原理

2.2. NTLM ハッシュの原理 


Windows 認証には、ローカル認証、ネットワーク認証、ドメイン認証の 3 つの部分があり、Windows 認証とパスワード キャプチャは、イントラネットへの侵入の第一歩と言えます。

 

1. Windows 認証プロセス

Windows ログイン パスワードは、システムのローカル SAM ファイルに保存されます. Windows にログインするとき、システムは、ユーザーが入力したパスワードと SAM ファイル内のパスワードを比較し、それらが同じであれば、認証は成功です. 

SAM ファイルは %SystemRoot%\system32\config\ ディレクトリにあり、すべてのローカル ユーザーの資格情報を保存するために使用されますが、クリックしても直接表示できないことがわかります。

簡単に言えば、ローカル認証プロセスは 5 つのステップに分けることができます。

winlogon.exe - ユーザーがアカウント パスワードを入力します - lsass.exe - NTLM ハッシュに変換し、それを SAM ファイルの値と比較します - ログインが成功または失敗します。

ユーザーがログアウトして再起動し、画面をロックした後、オペレーティング システムは winlogon.exe にログイン インターフェイス、つまり入力ボックス インターフェイスを表示させ、ユーザーの入力情報を受け取った後、パスワードを lsass に渡します。このプロセス中に、平文のパスワードが保存されます. 平文のパスワードを NTLM ハッシュに暗号化し、SAM データベースを比較して認証します.

Windows ログオン プロセス (winlogon.exe): Windows NT ユーザー ログイン プログラムであり、ユーザーのログインと終了を管理するために使用されます。 

LSASS: Microsoft Windows システムのセキュリティ メカニズムで、ローカル セキュリティとログイン ポリシーに使用されます。 

ローカル認証でユーザーの入力パスワードを処理するために使用されるプロセスは lsass.exe であり、パスワードはこのプロセスでプレーン テキストで保存され、プロセスがパスワードを NTLM に計算します。ハッシュは sam と比較され、mimikatz を使用して、このプロセスで読み取られる平文のパスワードを取得します。

2. LM ハッシュと NTLM ハッシュ

Windows オペレーティング システムは通常、ユーザーのプレーンテキスト パスワードを暗号化するために 2 つの方法を使用します。ドメイン環境では、ユーザー情報は ntds.dit に保存され、暗号化後にハッシュされます。通常、Windows オペレーティング システムのパスワードは 2 つの部分で構成されます。1 つは LM ハッシュ、もう 1 つは NTLM ハッシュです。Windows オペレーティング システムでは、通常、ハッシュ構造は次のようになります。ユーザー名:RID:LM‐HASH:NT‐HASH

2.1 LMハッシュの原理

a. プレーンテキストのパスワードを大文字に変換します. プレーンテキストの Admin@123 を例にとると、大文字の形式は次のようになります: ADMIN@123

b. 文字列を大文字にした後、16 進数の文字列に変換し、41 44 4D 49 4E 40 31 32 33 に変換します。

c. パスワードが 14 バイト未満の場合は、0 で完了し、7 バイトの 2 つのグループに分割する必要があります

 1Byte=8bit、上記の 16 進数文字列は合計 9 バイトで、5 バイトの差があり、00 00 00 00 00 を使用して

 41 44 4D 49 4E 40 31 

32 33 00 00 00 00 00

d. 7 バイトの 16 進数の各グループを 2 進数に変換し、各 7 ビットのグループの末尾に 0 を追加してから、それを 16 進数に変換して 8 バイト コードの 2 つのグループを取得します。

最初のグループ 

 e. 上記の手順で取得した 2 セットの 8 バイト コードを DES キーとして使用して、マジック ストリング KGS!@#$% を暗号化し、KGS!@#$% の 16 進法は 4B47532140232425 です。 

f. 最終結果はスプライスできます。

2.2. NTLM ハッシュの原理 

a. 平文パスワードを次のような 16 進形式に変換します: Admin@123 を Unicode 形式に変換します。つまり、各バイトの後に 0x00 を追加します。

好き:

Admin@123 から 16 進数 41646D696E40313233 

00 を追加: 410064006D0069006E004000310032003300 

b. Unicode 文字列を MD4 で暗号化して、32 ビットの 16 進数文字列を生成します

おすすめ

転載: blog.csdn.net/hmysn/article/details/128514473