ActiveDirectoryでの弱いパスワードの監査
Active Directoryドメインのユーザーパスワードの複雑さは、ユーザーデータとドメインインフラストラクチャ全体の両方にとって重要なセキュリティ要素の1つです。多くのユーザーは、個人情報、辞書の単語、および単純な組み合わせをパスワードとして使用しないことを推奨しているにもかかわらず、単純で覚えやすいパスワードを使用することを好みます。この記事では、Active Directoryユーザーのパスワードを監査し、PowerShellを使用して脆弱で単純なパスワードを見つける方法を説明します。
複雑なドメインパスワードポリシーを使用している場合でも、ユーザーは技術的に
Pa $$ w0rd
のような弱いパスワードまたはデフォルトのパスワードを設定できます。 またはP@ ssw0rd
。
DSInternals(Directory Services Internals)PowerShellモジュールをインストールするにはどうすればよいですか?
Active Directoryデータベース(ntds.ditファイル)に保存されているユーザーパスワードのハッシュを、単純で一般的なパスワードの辞書と比較するために、サードパーティのPowerShellモジュールであるDSInternals。を使用できます。 このモジュールには、オンラインモードまたはオフラインモードで(直接ntds.ditを使用して)ADデータベースでさまざまなアクションを実行できるようにする多数のコマンドレットが含まれています。特に、 Test-PasswordQualityに関心があります 弱い、類似した、標準の、空白のパスワード(パスワードは不要)を持っているユーザー、またはパスワードが期限切れにならないユーザーを検出できるコマンドレット。
注。 当然、ADデータベースからプレーンテキストとしてユーザーパスワードを取得することはできません。 ActiveDirectoryに保存されているパスワードはハッシュ化されます。ただし、ADユーザーのパスワードハッシュを辞書ファイルの単語のハッシュと比較して、脆弱なパスワードを見つけることができます。PowerShellバージョン5(およびそれ以降)では、次のように、公式のPowerShellスクリプトギャラリーからDSInternalsモジュールをオンラインでインストールできます。
Install-Module DSInternals
以前のバージョンのPowerShellまたは切断された環境では、GitHub(https://github.com/MichaelGrafnetter/DSInternals/releases)から最新のモジュールバージョンを含む.zipアーカイブをダウンロードする必要があります。この記事が書かれた時点で、最新のリリースはDSInternalsv4.4.1でした。 このアーカイブをPowerShellモジュールを含むディレクトリの1つに抽出します。
- C:\ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules \ DSInternals
- C:\ Users \%username%\ Documents \ WindowsPowerShell \ Modules \ DSInternals
または、次のコマンドを使用して、DSInternalsモジュールを現在のPowerShellセッションにインポートします。
Import-Module C:\ distr \ PS \ DSInternals \ DSInternals.psd1
を読み込めません
」というエラーが表示された場合 モジュールをインポートすると「」が表示されます。現在のPowerShell実行ポリシーを変更し、少なくとも現在のセッションで外部PSスクリプトを実行できるようにする必要があります。
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass –Force
使用可能なモジュールコマンドレットのリストは、次のように取得できます。
Get-Command -Module DSInternals
Test-PasswordQualityコマンドレットを使用して弱いActiveDirectoryパスワードを検索する
次に、パスワード辞書を作成する必要があります。これは、一般的に使用される、弱い、およびその他の不正なパスワードのリストを含む単純なテキストファイルになります。インターネットからパスワード辞書ファイルをダウンロードするか、自分で作成することができます。 DSInternalモジュールを使用すると、ActiveDirectory内のユーザーのパスワードのハッシュをこのファイルの単語のハッシュと比較できます。パスワードをテキストファイルPasswordDict.txtに保存します 。
次に、小さなPowerShellスクリプトを作成します。次の変数で、パスワードファイルへのパス、ドメイン名、およびドメインコントローラー名を指定します。
$ DictFile ="C:\ distr \ PS \ DSInternals \ PasswordDict.txt"
$ DC ="lon-dc01"
$ Domain ="DC =woshub、DC =loc" コード>
次に、 Get-ADReplAccountを使用します コマンドレット、ADのユーザーのリストを取得します(Get-ADUserなど)。さらに、このコマンドレットは、ハッシュ履歴だけでなく、NTハッシュとLMハッシュも返します。次に、ユーザーごとに、パスワードのハッシュを辞書ファイルのハッシュと比較します(チェックは無効なユーザーアカウントに対しても実行されます):
Get-ADReplAccount -All -Server $ DC -NamingContext $ Domain | Test-PasswordQuality -WeakPasswordsFile $ DictFile -IncludeDisabledAccounts
スクリプトを実行した結果は次のようになります。
Active Directory Password Quality Report ---------------------------------------- Passwords of these accounts are stored using reversible encryption: LM hashes of passwords of these accounts are present: These accounts have no password set: TEST\DefaultAccount TEST\Guest Passwords of these accounts have been found in the dictionary: TEST\a.adams TEST\jbrion TEST\jsanti These groups of accounts have the same passwords: Group 1: TEST\a.novak TEST\Administrator TEST\amuller TEST\k.brown Group 2: TEST\a.adams TEST\jbrion TEST\jsanti These computer accounts have default passwords: Kerberos AES keys are missing from these accounts: Kerberos pre-authentication is not required for these accounts: Only DES encryption is allowed to be used with these accounts: These administrative accounts are allowed to be delegated to a service: TEST\a.adams TEST\a.novak TEST\Administrator TEST\jbrion TEST\jsanti TEST\k.brown TEST\krbtgt Passwords of these accounts will never expire: TEST\a.adams TEST\Administrator TEST\DefaultAccount TEST\Guest TEST\k.brown TEST\krbtgt TEST\web These accounts are not required to have a password: TEST\ADFS1$ TEST\DefaultAccount TEST\Guest These accounts that require smart card authentication have a password:
DSInternalモジュールの以前のバージョンでは、
ShowPlainText
ハッシュが辞書で見つかった場合、パラメータを使用してユーザーのパスワードをクリアテキストで表示できました。 Test-PasswordQualityの現在のリリースにはありません。古いバージョンのDSInternalsモジュールを使用する場合は、次のコマンドを使用してインストールします。
Install-Module -Name DSInternals -RequiredVersion 2.23
ADに保存されているユーザーパスワード履歴を含むハッシュ検索が実行されます。ご覧のとおり、単純なパスワードを持つADユーザーが正常に検出されました(パスワードは辞書と一致します)。同じパスワードを持つ複数のユーザーも見つかりました。このスクリプトは、カスタムのきめ細かいパスワードポリシーの対象となる単純なパスワードを持つアカウントを見つけるのに役立ちます。
弱いパスワードを持つユーザーの場合、強力なランダムパスワードを生成し、PowerShellを介してADでそれらを強制的に変更できます。Active Directoryデータベースファイル(ntds.dit)のオフラインスキャンを実行することもできます。 ntds.ditファイルのコピーは、シャドウコピーまたはドメインコントローラーのバックアップから取得できます。
ntds.ditファイルのユーザーハッシュをオフラインで確認するには、次のコマンドを使用します。
$ keyboot =Get-BootKey -SystemHiveFilePath'C:\ ADBackup \ repository \ SYSTEM'
Get-ADDBAccount -All -DatabasePath'C:\ ADBackup \ ntds.dit -BootKey $ keyboot | Test-PasswordQuality -WeakPasswordsFile $ DictFile
すべてのハッシュのリストをテキストファイルにエクスポートすることもできます:
Get-ADDBAccount -All -DBPath'C:\ ADBackup \ ntds.dit' -Bootkey $ keyboot |フォーマット-カスタム-ViewHashcatNT|アウトファイルc:\ ps \ ad_hashes.txt -Encoding ASCII
したがって、このシナリオを使用すると、ADユーザーパスワードの品質、ブルートフォース攻撃に対する抵抗を簡単に分析し、現在のドメインパスワードポリシーの複雑さを結論付け、必要な結論を出すことができます。 Active Directory管理者は、この監査を定期的に実行できます(実行する必要があります)。
-
Zabbix:Active Directoryでのシングルサインオン(SSO)認証
この記事では、Kerberosを使用したActiveDirectoryでのZabbix4.0(またはそれ以降)の透過的なSSO(シングルサインオン)認証の段階的な構成について検討します。 その結果、ユーザーはクレデンシャルを入力せずにZabbixフロントページで自動的に認証されます。これを行うには、ユーザーはZabbixで指定されたActiveDirectoryドメインアカウントでWindowsにログインする必要があります。さらに、ユーザーはブラウザーを構成する必要があります(Kerberosサポートを有効にし、信頼できるイントラネットサイトをIEで設定する必要があります)。 シ
-
Windows 10 で Active Directory を有効にする方法
Active Directory は Windows Server Technical Preview を管理します。管理者が権限を付与し、ネットワーク上のリソースにアクセスするために使用するツールです。デフォルトでは、Windows PC にはインストールされません。ただし、Microsoft の公式 Web サイトからオンラインで入手して、デバイスにインストールすることができます。 Windows 10 で Active Directory を使用する方法について混乱していますか?答えが「はい」の場合、この記事は Windows 10 で Active Directory を有効にする方法