Active DirectoryとKerberos認証、あとセキュリティ対策
企業でシングルサインオンやユーザ管理機能を提供するActive Directoryは常に危険にさらされています。今回はそのセキュリティ対策とKerberos認証の仕組みの記事です。
Active Direcotoryについて
Active Directoryは単一のサービスではなく、主な機能だけでも3つのプロトコルが使用されています。
- ユーザ認証 Kerberos
- ディレクトリサービス LDAP
- ファイル共有 SMB
一口にドメインコントローラ(以下DC)といっても様々な機能を持っています。例えば、DCはKDC(ユーザとサーバの信頼情報を一元的に管理)やAS(認証サーバ)としても働きます。
KDCの下にはレルムというネットワークがあり、論理的にネットワークを定義しています。
Kerberos認証とチケット
Kerberos認証ではクライアントPCに認証チケットをレスポンスとして返します。これでその端末は認証されます。Kerberos認証では、なりすましを防ぐために、時刻同期の仕組みが用意されています。チケットの中には送信時刻が記録されています。チケットを受信したサーバ時刻とチケットのタイムスタンプに5分以上(ADの場合)の違いがあると認証に失敗するようになっています。したがって、NTPを使って、チケット利用側と発行側の時刻を同期させておく必要があります。
Active DirectoryとCisco ASAとの連携
Cisco ASAはcisco製のファイアウォールです。ASAとActive DirectoryはUDPポート88を使用して比較的シンプルなコンフィグで連携ができます。windowsではユーザ認証にデフォルトでKerberosプロトコルが使われています。windowsNT以前ではNTLM認証(NT LAN MANAGER authentication)というのが使われていました。windows2000からはデフォルトでKerberos認証が使われています。
Kerberos認証はひとつのユーザ名とパスワードでどのサーバにもアクセスできます。これはRadiusサーバと同じです。しかし、それってセキュリティ面からしたら怖いですよね。一組のユーザ名とパスワードが窃取されたら全部のサーバへのアクセス権を奪取されたことになります。
まぁKerberos認証の最大の売りはそのシングルサインオンなので仕方ありませんが、セキュリティと効率性は常にトレードオフであるという典型的例ではないでしょうか
Active Directoryを狙った攻撃
こんな運用はないと思いますが、複数の端末で同じパスワードなどを使っていると、パスワードハッシュが窃取され、不正ログインされる範囲が広がり被害が拡大します。(Pass-the-Hash)
また、チケットを窃取し、不正ログインされることもあります。(Pass-the-Ticket)システム上は正規のチケットかどうかの判別が難しく、検知は難しいそうです。
攻撃者はC2サーバ経由で感染端末を遠隔操作し、組織ネットワークの構成や目的とする情報へのアクセス権をもつアカウント、重要なサーバの情報などを調査する。その際に組織内のリソースがADによって管理されている場合には、ADを攻撃し、認証情報の窃取やより権限の高いアカウントの認証情報を窃取する。
(※C2サーバ・・攻撃者が感染PCをリモート操作するためのサーバ。マルウェアはC2サーバとHttp/Httpsで通信し、窃取した情報の送信を行う。C&Cサーバともいう)
- MS14-068の脆弱性を悪用した攻撃が行われた場合、対応するセキュリティ更新プログラムを適用した環境では、攻撃(権限昇格)が失敗したイベントログが記録されます。
- イベントID4769において、エラーコードが「0xf」のログがあれば、攻撃を受けた可能性がある。
※0xf・・・RFC1510におけるKDC_ERR_SUMTYPE_NOSUPP(チェックサムのタイプがサポートされていない)のエラーを指す
代表的なイベントログ
- ID4624(ログインの成功)・・・アカウント名、ネットワークアドレスなどが認証方式に問わず記録される。
- ID4625(ログインの失敗)・・・アカウント名、ネットワークアドレスなどが認証方式に問わず記録される。
- ID4768(Kerberos認証:TGT要求)・・・結果コード0x0(成功)、それ以外は失敗
しかし、Active Directoryのログは膨大ですべてを見るのは現実的ではありません。なので、syslogやアプリケーションログを含め一元的に管理できるツールなどを導入するのが望ましいです。管理者アカウントに関するイベントについてログを絞って解析するなら、以下のグループについて行うとよい。
- Users¥Domain Adminis
- Users¥Enterprise Admins
- Users¥Schema Admins
- Builtin¥Backup Operators
- Builtin¥Account Operators
- Builtin¥Administrators
GoldenTicketによる攻撃の特徴
古いバージョンの特定の攻撃ツールで作成されたGoldenTicket/SilverTicketでが使用された場合、認証イベントに特徴的な文字列が記録されることがある。具体的には、イベントID4624,4672などのアカウントドメインに次のような文字列が記録されている場合である。
eo.oe.kiwi : ) <3 eo.oe ? ANSSI E>
しかし、上記は攻撃ツールのバージョンによっては記録されない。また、SilverTicketが利用されたときにはDCには認証イベントは記録されず、接続先のサーバにのみ記録されるので注意が必要である。
予防策
- 個人のノートPCを会社に持ち込ませない。個人のPCは外部にさらされマルウェアに汚染されていることがある。
- DCやサーバへの不必要なリモートアクセスする運用をやめる。
- コンピュータのメモリに認証情報を保存しない。
- アカウント毎に強固なパスワードを設定する。
- 運用で不要な権限がないかアカウントの棚卸を行う
- 運用で利用されていない(イベント4698などのタスクイベント)タスクを確認する。これがある場合は攻撃されている可能性がある。タスクが保存されているファイルは下記
C:¥Windows¥System32¥Tasks¥[タスク名]
C:¥Windows¥Tasks¥[タスク名].job
なお、golden ticketへの予防策としては、krbtgtというDC上のサービスアカウントのパスワードを2回連続で変更する。ドメイン管理者パスワードの変更も同時に行う。
参考サイト
https://www.jpcert.or.jp/research/AD_report_20170314.pdf