web-dev-qa-db-ja.com

Active Directory LDAPからパスワードハッシュを抽出する

現在、月次の内部セキュリティテストに取り組んでおり、ユーザーが選択した実際のパスワード強度の検証が含まれています。このため、LDAP経由ですべてのユーザーのパスワードハッシュを抽出したいと考えています。私が見つけたものはすべて this technetのディスカッションで、管理者でなくても信じられない(望まない)ハッシュを抽出できないと言われています。

Active Directoryサーバーからパスワードハッシュを抽出する方法はありますか?

私たちがやりたいことは、ハッシュを抽出することですが、パスワードを本当にまたは単に技術的に優れているかどうかを確認するために、ハッシュを音節攻撃で実行できます。

7
davidb

NTDS.DITから%SystemRoot%\ntdsバイナリファイルを取得する必要があります。

ntdsutilを使用してADデータベースのスナップショットを作成し、NTDS.DITをコピーできます。

次に、Windowsパスワード回復ツールなどを使用してハッシュを抽出できます。

https://technet.Microsoft.com/en-us/library/cc753343.aspx

https://technet.Microsoft.com/en-us/library/cc753609(WS.10).aspx

http://www.passcape.com/windows_password_recovery

6
shift_tab

ADまたはAD LDSからハッシュを取得するためにDITファイルを処理する必要はありません。いくつかのプロトコルアクセスもあります。

「userpassword」属性の通常のLDAP読み取り(他のディレクトリ製品でできるように)は常にADで完全にブロックされますが、ADまたはAD LDSからハッシュを読み取る別の公式の方法があります。 Server 2003以降。特別なADアクセス許可(DS-Replication-Get-Changes-All)と公式に文書化されたMicrosoftプロトコル(ADレプリケーションプロトコル)を使用する必要があります。これはマイクロソフトの内部秘密ではありません。サードパーティの実装も存在します。例: https://www.dsinternals.com/en/retrieving-active-directory-passwords-remotely/ (このリンクはやり過ぎですが)これはハックであると主張することで少し)-これでADまたはLDAPプロトコルをハッキングしていない場合、デフォルトでは存在しないAD特権を事前に手動で付与しています。

このDS-Replication-Get-Changes-All特権の正当な使用法は、たとえばMicrosoft Asure ADパスワード同期-ハッシュを転送して、会社のADパスワードをAzureクラウドパスワードと同期します。このためには、「DS-Replication-Get-Changes-All」と呼ばれるADアカウントに割り当てられた特別なLDAP権限が必要です https://msdn.Microsoft.com/en-us/library/windows/デスクトップ/ms684355(v=vs.85).aspx

区別:DIRSYNCコントロールは、 "DS-Replication-Get-Changes"(最後の "-All"を除く)と呼ばれる別のわずかに異なる特権で使用することもできます。末尾に「-All」がない特権では、機密のパスワードハッシュデータを抽出できません(Microsoft MIIS/ILM/FIM/MIMなど、その特権に依存する商用ディレクトリデータ同期製品があります。また、タイプREADONLYのドメインコントローラDMZ使用法は「-All」なしで特権を使用します)

ドメインコントローラー上のパスワードフィルターDLLまたはPCNSインストールは、これら2つの特権を使用せず、格納されているADハッシュへのアクセスも許可しません。彼らはパスワードを(ユーザーが変更した時点で)外部の処理ターゲットに転送することを許可するだけで、社内のサードパーティシステムに同じパスワードを設定します。

パスワードフィルターDLL/PCNSは、フィルター/ PCNSソリューションの展開後にユーザーが変更したパスワードのみを同期できますが、RelicationとDS-Replication-Get-Changes-Allを併用すると、ADパスワードハッシュも同期できます。同期ソリューションが展開される前に存在していました。

2つの特権はどちらも悪ではありません。不注意に使用すると、もちろん非常に問題が発生する可能性があります。しかし、ADでの不注意なACLの変更、ADへの広範なリモートアクセスの許可、ドメイン管理者やスキーマ管理者の許可なども同じことが言えます。開くと、ドアが開かれます。それはあなたがそれを必要としない、そのドアを開けないでください。そして、もしあなたがそのドアを開けたら、それを適切に強化して、計画されたゲストだけがあなたの貴重な部分に触れるためにそのドアに入ることができるようにします。

したがって、このread-password-hashes-from-ADメカニズムの通常のビジネスケースは、ADハッシュを他の正当な認証システムに同期するか、既存の会社のADハッシュを他のサードパーティ認証ディレクトリに移行することです。 (どちらの場合でも、他のシステムは認証目的でハッシュを理解できなければなりません)

13
Alex

だから、この全体の推論はちょっと狂気の種です。事実の後でパスワードの正しさを監査することは悪い考えです(元のパスワード、または効果的にレインボーテーブル化できる弱いハッシュが必要なため)。弱いハッシュを抽出するサービスまたはツールを作成すると、重大なエラーや危険が発生しやすくなります。それほど重要ではありませんが、それはやり過ぎであり、サイクルとリソースの浪費です。

より良い解決策は、ユーザーが実際に変更を行う前に、パスワードフィルターを使用し、パスワードの変更が最小要件を満たしていることを確認することです。次に、複雑さを保証することに真剣に取り組んでいる場合は、すべてのパスワードを期限切れにします(ただし、一部の人を困らせる可能性があります)。

3
Steve

パスワードをリモートでプルするには、DC SYNC(DRSUAPI)テクニックを使用するのが最善の解決策です。ドメインコントローラはこのプロトコルを使用して情報を相互に同期します。ドメイン管理者の資格情報がある場合は、このプロトコルを使用して、ドメインコントローラーからすべてのハッシュを取得します。これを行うには、2つの簡単なツールがあります。

Windowsの場合:Mimikatz( https://github.com/gentilkiwi/mimikatz

使用方法の説明と概要: https://adsecurity.org/?p=1729

Linuxの場合:Impacket、具体的にはsecretsdump.pyサンプルスクリプト( https://github.com/CoreSecurity/impacket

使用方法の説明: https://room362.com/post/2015/using-domain-controller-account-passwords-to-hashdump-domains/

1
shellster