こんにちは、マクニカネットワークス のTOMです。今はエンジニアとして、特権ID管理製品を担当しています。
さて、このタイトルを見て「あれ、前にも似たような記事があったぞ!」「パクリ乙」と思われたあなた...相当な「ありマク愛読者」です。感動した!実は、以前にも私は同じようなタイトルで記事を掲載させて頂きました。
https://arimac.macnica.co.jp/blog/mncengineer/post-53.html
(過去の記事もさりげなく紹介していくスタイル)
冗談はさておき、本題に入っていきましょう。最近も、サイバー攻撃に関するニュースが多く報道されていますね。そういった事件が起きると、実際に攻撃者がどのような手法を使って攻撃を行ったのか、という情報が公開されるケースも多いと思います。攻撃手法が特徴的であったり、影響度の大きいものは、例えば「Pass the Hash」「DCShadow」などの様に、攻撃の手法に名前がつくということもよくあります。最近だとZerologon攻撃、というのが世間でも話題になっています。
今回、私が取り上げたいのは「ゴールデンチケット攻撃」という攻撃手法です。この攻撃は、簡単に言うとWindows OSのドメイン内の認証に使われる「チケット」と呼ばれるものを不正に偽造して、認証を突破するという攻撃です。この攻撃自体は結構前からあるもので、セキュリティの勉強をしていても度々目にすることがありました。説明だけ読むと「へぇ~」って感じなのですが、こういう攻撃手法って何となく理屈は分かるんですけど、「じゃあその攻撃がどのぐらいすごいの?」とか「どれぐらい簡単にできるの?」というのは説明を読むだけだと分からないんですよね。料理本を読んでも、実際自分で作ってみないとどんな味がするのか、分からないですよね。私自身も、その「なんとなく知ってる」という状態でした。というわけで、今回のテーマは「ゴールデンチケット攻撃を再現せよ」です。実際にどんな攻撃かを自分で再現することで、その本質に少しでも迫ろう!という目的で検証してみました。
「セキュリティ?興味ないね。」な方も雰囲気でお楽しみ頂ければ幸いです。
~利用ツール~
今回利用したのは、ImpacketというGithubで公開されているツールです。※厳密に言うと、ツールというよりは様々なPythonスクリプトが集まったパッケージの様なものです。今回の検証は自身が管理する検証環境内にて行ったものです。公開されているサーバや、他者のPCに対して攻撃を行うことは犯罪行為となります。くれぐれもご注意ください。
~攻撃シナリオ~
では実際に、ゴールデンチケット攻撃を使った攻撃シナリオを考えていきます。「ゴールデンチケット」とは、簡単にいうと管理者になりすまし、認証を突破できてしまうチケットです。つまり、実際は「administrator」では無いのに、「私はadministratorだよ~」というなりすましを行うことができるチケットを作っていく訳です。免許証やパスポートを偽造するようなものですね。という訳で、攻撃シナリオはこんな感じです。
1.ゴールデンチケットを作る
2.チケットを使って、管理者としてドメインコントローラにアクセスする!
結構あっさりしましたね。これならすぐに出来そうですね!
1.ゴールデンチケットを作る
色々と調べた結果、ゴールデンチケットを作るためには 「krbtgt」と呼ばれるアカウントのパスワードハッシュが必要になるとのこと。とりあえず、パスワードハッシュを取得するスクリプトを使ってドメインコントローラからパスワードハッシュを取得してみます。※パスワードハッシュやIPアドレスなどの情報は一部マスクをしています。
何か色々とハッシュが取れましたね。さて、ここから「krbtgt」アカウントのハッシュを探す訳ですが...それっぽいのがありましたね。(ちなみに、実際は出力結果がもっと多く、探すのに結構時間がかかりました。)
では、実際にゴールデンチケットを作るスクリプトを実行します。先ほどの「krbtgt」アカウントのハッシュを指定して...
コマンドの詳細は割愛させて頂いておりますが、これは動きとして「administrator」ユーザとしてゴールデンチケットを作っています。最後に表示されている、「administrator.ccache」というのがチケットファイルです。つまり、「administrator」の偽造免許証orパスポートが作成されたという訳です。
2.チケットを使って、管理者としてドメインコントローラにアクセスする
先ほど作ったチケットをセットします。
これで、この後の認証時にこのチケットを使うようになりました。では、ドメインコントローラに一発かましてやるとしますか...侵入用のスクリプトを使っていきます。
ここも簡単に内容を説明しますと、先ほどセットしたチケットで、WMIというWindowsの標準プロトコルを介して認証を行い、コマンドプロンプトをドメインコントローラ上で実行...という様なことをしています。実際に、「whoami」という自分が誰なのかを確認するコマンドを実行すると、「administrator」と表示されました。つまり、「ゴールデンチケットを使ってドメインコントローラにAdministratorでログインする」という目的を果たしたことにより、「ゴールデンチケット攻撃を再現せよ」を達成しました!
~まとめ~
今回、簡単ではありますがゴールデンチケット攻撃を自分でも再現しようと奮闘してきました。文字に起こすとあっさりとしたものですが、実際に手を動かす中で様々な苦労がありました。例えば、ツールが想定通りの動作をしなかったり、そもそも「で、こっから次どうすれば良いの?」などなど...それでも、手探りで調べながらやっていくと色々と分かってくることがあります。例えば、
・この動作をした時はこんなイベントログが出るんだな~
・自分の製品だと、この段階でアラートがあがるのか~
・アンチウィルス製品仕事しすぎだろ~
これらの気付きは「ゴールデンチケット攻撃とはこういうものですよ」という説明を読んでいるだけでは決して気付くことが出来なかったものだと思います。
また、今は非常に簡単かつ手軽に攻撃に使えるツールを手に入れることができるんだな、とも思いました。今回、私が実施した内容は特別な知識が殆どなくとも、ツールがあれば誰でも実行できてしまいます。それはすなわち、誰もが簡単に攻撃者になれてしまう世の中ということです。自分達の仕事の大切さと、セキュリティ製品の果たす役割の重要さを再認識しました。
正直なところ、今回の内容はその道に詳しい方からすると非常に初歩的な内容で、かつツッコミどころも多いものだと思います。しかしながら、エンジニアとしてのスキルを高めるためには、こういう小さな一歩一歩が大切だと信じています。そう、あの頃の私たちは「IPアドレスとは何か」「サブネットマスクとは何か」から、必死に勉強していたじゃないか...(急にどうした?)
少しずつ、確実に「経験」を積み重ねることで、自身の「知識」と「技術」に磨きをかけ、より一層エンジニアとしての力を高めていきたいと思います。
ここまでお読み頂き、ありがとうございました。
関連記事
前へ
コロナ禍入社の新入社員奮闘記
次へ
情報収集係