Active Directory

長期間ログオンしていないADユーザーを調べる方法

2021年11月14日


Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

こんにちは!そーまんです。

今回は、Active Directoryで長期間ログオンしていないADユーザーをPowerShellを使って洗い出す方法についてご紹介いたします。


長期間ログオンしていないADユーザーを調べる理由

企業で使用されなくなったADユーザーアカウントの管理をプロセスに基づいて厳しく管理している企業もある一方で、そういった管理が殆どされずに放置状態のまま多く残っている企業もあったりします。

人に紐づくADユーザーアカウントであれば退職後、即時アカウントを無効にして、そこから90日後に削除などそういったプロセスで管理している企業が比較的多いのかなと思っています。

一方でシステム管理用のADユーザーアカウントはどうでしょうか?明確に上のようにプロセスが決まっていなかったりするのではないでしょうか?そもそもそういったADユーザーアカウントを作成するプロセスも無く、システム管理者が運用担当が増えた事によって、メールや直接依頼を受けてその場で作成するみたいな現場も決して少なくはないかと思っています。

したがってそういったユーザーアカウントが担当者の離任などにより実際には使用されていないにも関わらず、一定期間放置の状態になっていると大きなリスクにつながる恐れがあります。

Active Directory にすべてのユーザーのアカウントが含まれています。 時間の経過とともに、ユーザーが組織を離れ、それらのユーザー アカウントを Active Directory から削除できないことがあります。 以前の従業員や外部の攻撃者がこれらのアカウントを使用して組織を攻撃できるため、古いユーザー アカウントはセキュリティ上の重大な問題です。

Active Directoryに非アクティブなユーザーアカウントがないか定期的に確認し、あれば削除する | Microsoft

今回はそういったADユーザーアカウントを調べる方法だけではなく、放置しておくと実際にどのようなリスクがあるかも調べましたのでご紹介いたします。


長期間ログオンしていないADユーザーがあると起こりうるリスク

昨今では外部から直接ドメインコントローラに侵入するのではなく、以下の画像のように一旦社内のPCに標的型攻撃を仕掛けてから、そのPCを使ってドメインコントローラに侵入する方法が多いようです。

ちなみにもし殆ど使わていないドメイン管理者ユーザーが万が一あった場合は、攻撃者は「Golden Ticket」という偽装チケットというものを作ってそのドメイン管理者ユーザーになりすましされてしまう可能性があり、そこからファイルサーバにアクセスして機密情報を窃取して外部に持ち出されるような重大なセキュリティーリスクになる恐れがあるので特に注意が必要です。

ちなみに一旦「Golden Ticket」でなりすましされると、それが攻撃者によるログオンかそうでないかの判別が困難なようです。

Golden Ticket (ゴールデンチケット)

ゴールデンチケットとは「Active Directoryのドメイン管理者になりすます認証チケット」を指します。つまり、悪意あるユーザーまたは攻撃者はゴールデンチケットを取得したADドメイン全体にアクセスすることができます。


長期間ログオンしていないADユーザーをPowerShellで調べる

PowerShellを使って対象ユーザーアカウントがあれば一覧で表示することができます。

サンプルのスクリプト (Microsoft から引用) は以下に貼り付けていますので、そのままコピペすれば使えます。

ちなみに実行結果で表示される「PasswordLastSet」と「LastLogonTimeStamp」は以下のとおりです。

属性意味
PasswordLastSet最後にパスワードを変更した日時
LastLogonTimeStamp最後にログオンした日時

$d = [DateTime]::Today.AddDays(-7) の -7 は過去7日間にログオンしていないという意味なので、これを180とかに置き換えてもらえればOKです。

実行結果

定期的に実施して対象のADユーザーは無効にしてから削除すること

長期間ログオンしていないADユーザーをPowerShell で定期的に洗い出しましょう。年間で決めた期間に決まった方法で対応すれば良いと思います。あとそもそも特権ユーザーの作成を極力すくなくしたりする為の施策も考えるべきでしょう。

長期間ログオンしていないADユーザーがあれば、例えば削除用のOUに移動し無効にしてから一定期間経過したら削除すれば良いと思います。

また、ADユーザーアカウントをOUに移動したり無効にしたりする方法はPowerShellでできますし、以下の記事で紹介していますのでご参考になれば幸いです。

サービスアカウントは人のアカウントではありませんので間違って削除しないように気をつけてください。

最後に

いかがでしょうか。

PowerShellなど使ってADユーザーアカウントを洗い出す方法ももちろん定期的に実施すべきですが、そもそもそういったアカウントを放置してしまわない為にはどうすれば良いのか?という点が本質でとても大事だと思いますので、もしプロセスが無いようであれば重要なこととして取り扱って対策するようにすることをお勧めいたします。

それでは最後までお読みいただき有難うございました!

  • この記事を書いた人

そーまん

セキュリティエンジニアやってます。
ブログ歴3年。PVは月15万PV程度。
趣味はボクシング、筋トレ、登山です。
穏やかで人見知りな性格です。

人気記事

1

こんにちは!そーまんです。 今回は、PC に適用されている GPO を確認する方法について書きました。 本題に入る前に、一応参考までにGPOの適用タイミングについての記事をここに貼りましたので、必要に ...

2

こんにちは!そーまんです。 今回は sysprep について、全体的に PC をセットアップする観点から書いてみました。長々と書いてあります。まずは前置きからです。 まずはじめに 組織では PC のラ ...

3

こんにちは!そーまんです。 今回は、グループポリシー (GPO) を使って、特定のコンピューターに対して、ドメインユーザーに ローカル管理者権限 (以下は特権と記載) を付与する方法について書きました ...

4

こんにちは!そーまんです。 今回は、Windows サインイン後に一時ユーザープロファイルが読み込まれてしまった場合の解決方法について書きました。 Windows 10 の検証環境をいじってたらサイン ...

5

こんにちは!そーまんです。 今回は、ユーザープロファイルを削除する方法について書いてみました。 企業の場合よくあることですが、1 台の PC を共有 PC として複数人で使ったり、また余り無いかもしれ ...

6

こんにちは!SE ブログの相馬です。       今回は、繰り返し文について書いてみました。PowerShell では他のプログラミング言語同様、繰り返し処理を行うことが ...

7

コマンドを使って CPU とメモリの使用率をデータで取得してみましたので、例えば PC のトラブルシューティングで問題を再現させる際にデータを取得しておくと、原因の特定に役立つ場合があるかと思います。

8

既存の PC と同じ構成で別のメーカーの PC でマスターイメージを作る際、インストールされているアプリを同一にする為に必要になるかと思います。

9

企業で多くの GPO が適用されている環境では、PC に GPO が適用されなかったりする問題が発生する場合があるかと思います。その中でも、コンピューターの構成またはユーザーの構成のどちらかで、...

10

こんにちは!そーまんです。 今回は、Windows Server 2019 で NTP サーバーと同期する方法について書きました。 NTP サーバーの必要性や時刻同期の重要性を理解することは社内のシス ...

-Active Directory
-, ,


Warning: Trying to access array offset on value of type null in /home/r5652521/public_html/soma-engineering.com/wp-content/plugins/amazonjs/amazonjs.php on line 637

Warning: Trying to access array offset on value of type null in /home/r5652521/public_html/soma-engineering.com/wp-content/plugins/amazonjs/amazonjs.php on line 637