【GitGuardianレポート】ハッカーによるインド政府を狙った不正アクセス – 具体的手順を追った詳細分析


本記事は、GitHubから流出した機密情報をリアルタイム検知するサービスを提供するGitGuardian社のホームページで公開されたレポートを日本語に翻訳したものです。
(原題)Analyzing how hackers breached the Indian government – play by play
https://blog.gitguardian.com/indian-government-breached/#prevention

GitGuardianからは以下のレポートも公開しています。

GitGuardianのサービスに関しては以下のページをご覧ください。

はじめに

インド政府は、Sakura Samuraiと呼ばれるホワイトハッカー集団に不正アクセスされ、34ページにも及ぶ脆弱性の開示につながりました。 本件は、ホワイトハッカー集団「Sakura Samurai」による攻撃の一つにすぎませんが、今回の攻撃が特に注目されているのは、複数の国家関連組織が影響を受けたためです。具体的には、26の政府関係部門および組織が被害に遭っています。本投稿では、この攻撃の一部始終を詳細に分析し、攻撃者が実際に使った手法ならびに攻撃で使用されたツールについて考察します。

攻撃概要

Sakura Samuraiがインド政府に関心を持ったのは、NCIIPCと呼ばれる同国の脆弱性開示プログラム(RDVP)が発表された後のことです。このRDVPで、Sakura Samuraiは合法的に利用可能なドメイン一覧を入手しました。 今回の攻撃で公開された情報は以下の通りです:

  • 情報流出の可能性のある(政府システムへの)認証情報ペア認証情報ペア35件
  • 機密ファイルの公開3件
  • 情報流出の可能性のあるサーバーアクセス用プライベートキーペア5件
  • 13,000件を超えるPIIレコード
  • 情報流出の可能性のある警察の機密報告書数件
  • 複数の脆弱性を組み合わせて悪用することによるセッションハイジャック
  • 機密性の高い金融系サーバー上でのリモートコード実行


注意したいのは、今回の攻撃の目的が攻撃手法の確立とその効果の実証という点です。この攻撃で明らかにされた脆弱性は極めて重大であり、Sakura Samuraiが侵入先のネットワーク内部に深く侵入する手前で引き揚げたとしても、かなりの期間、潜伏を続ける可能性があります。この攻撃経路が万一悪用された場合、その被害の大きさは想像に難くありません。

攻撃の手順詳細

ステップ1:境界(ペリメーター)の設定

Sakura Samuraiが最初に行ったのはRVDPで報告されたドメインを使った境界(ペリメーター)の設定です。その上でChaosSubFinderというツールを使い、これらドメインを合法的にテストし、境界内のサブドメインの情報収集を行い、ターゲット候補の候補一覧を作成しました。

この方法で最初に見つかったターゲットは、サターラ警察のウェブサイトのサブドメインです。このサブドメインは、ファイル、ディレクトリが公開される設定になっていました。このディレクトリには、警察の報告文書が複数保管されており、中には重要機密情報であるフォレンジックレポートも含まれていました。


サターラ警察署の警察レポートの画像


ステップ2:境界でアセットを検索する

次に、様々なツールを用いて境界上でサブドメインの列挙を続け、Amassによるアセットの特定、dirsearchによるウェブアプリケーションの不具合・脆弱性特定、RustScanによるポートスキャン、Nucleiによる脆弱性特定といった作業を実行します。

ステップ3:悪用しやすい脆弱性の特定


資産を複数件特定後、その中に簡単に悪用できそうな脆弱性がないかスキャンを開始します(例:データベースの認証情報やAPIキー)。Sakura Samuraiは、この場所で悪用可能な大量の脆弱性を見つけています。その一例を以下に示します:

情報流出の可能性のある.gitディレクトリ10件。この.gitディレクトリには、複数のサーバーおよびMYSQL、SMTP、PHPMailer、Wordpressなどのアプリケーション用認証情報を埋め込んだコードが保管されていました。

.gitディレクトリで見つかったコードに埋め込まれた認証情報の所有者は以下の通りです:

  • ビハール州政府
  • タミルナードゥ州政府
  • ケララ州政府
  • テランガナ州
  • マハラシュトラ州住宅・開発当局
  • ジャールカンド警察
  • Punjab Agro Industries Corporation Limited

MTP、MYSQL、REDIS、SMS Services、Google Recaptchaキーの認証情報が記録された環境(.env)ファイル23件(所有者は多数の政府省庁)。

発見された.envファイルの画像


発見された認証情報付きの環境変数ファイルの所有者は以下の通りです:訳注:カッコ内は参考訳。

  • インド政府、Ministry of Women and Child Development(女性・子供開発省)
  • 西ベンガル州政府、West Bengal SC ST & OBC Development and Finance Corp.
  • デリー政府、Department of Power GNCTD(電力GNCTD局)
  • インド政府、Ministry of New and Renewable Energy(新・再生可能エネルギー省)
  • インド政府、Department of Administrative Reforms & Public Grievances(行政改革・行政苦情局)
  • ケララ州政府、Office of the Commissioner for Entrance Examinations(入国審査のコミッショナーオフィス)
  • ケララ州政府、Stationery Department(政府刊行物発行局)
  • ケララ州政府、Chemical Laboratory Management System(化学研究所管理システム)
  • パンジャブ州政府、National Health Mission(全国保健ミッション)
  • オリッサ州政府、Office of the State Commissioner for Persons with Disabilities(障害福祉の州コミッショナーオフィス)
  • ゾラム州政府、State Portal(州ポータル)
  • タイ、バンコクのインド大使館
  • テヘランのインド大使館
  • インド総領事館

西ベンガルの医療サービス企業のアプリケーションから採取したSQLダンプには、問い合わせフォームに入力された人の個人情報が含まれていました。

SQLダンプのスクリーンショット


情報流出の可能性のあるクライアントサイド.bash_historyファイルが3件見つかっていますが、そのうちの2件でローカルデータベースのパスワードが確認できます。

情報流出の可能性のある.bash_historyファイルの画像

.bash_historyファイルには、以下が所有者のデータベース認証情報が記載されていました:

  • ケララ州政府
  • マハラシュトラ州政府

情報流出の可能性のある、複数のサーバーへのアクセスが可能なプライベートRSAキー5件。

情報流出の可能性があるRSAキーの画像

















これらRSAキーの所有者は以下の通りです:

  • ケララ州政府、Service and Payroll Administrative Repository
  • 西ベンガル州政府、Directorate of Pension, Provident Fund & Group Insurance
  • インド政府、Competition Commission of India
  • チェンナイ政府、The Greater Chennai Corporation
  • ゴア州政府、Captain of Ports Department

別のSQLファイルからは、インド政府の若年層雇用プログラムのPIIレコード13,000件のダンプが流出しています。

発見された、情報流出の可能性のあるPIIのスクリーンショット


以上のほかに、次のような情報も発見されています。

ほかにも、情報流出の可能性のあるクライアントサイドのwp-config.phpファイル経由で、マニプール州の農業省に影響のあるデータベースの認証情報一式が見つかっています。

ここまで挙げてきただけでも、非常に多くの機密情報が見つかっています。冒頭で述べたように、Sakura Samuraiの目的はシステム内部に奥深く入り込むことではなく、彼らの手法を実証することが目的です。実際、発見した認証情報を使ってそれらのデータベースやアプリケーションにアクセスした形跡はほとんどありません。Sakura Samuraiにとって、そうした行為は本来の目的には不要と考えているためと考えられます。ただし、Sakura Samuraiが見つけた認証情報の公開量を考えると、彼らはインド政府のインフラに対する攻撃手段としてすでに非常に多くの選択肢を手にしていると言っても差し支えないでしょう。これらが万一悪用された場合、データランサムウェアやアカウントの操作、アカウントの作成、PIIを使った悪用など、考え付くだけでも多くの不正行為が可能です。

ただし、攻撃の手順はこれで終わりではありません。次のステップに続きます。

ステップ4:インフラの既知の脆弱性を求めて精査する


アセット(このケースではインフラ)の特定ができたら、次のステップはインフラへのアクセスを可能にする既知のエクスプロイトの検索です。Sakura Samuraiはインフラの脆弱性を精査する中で、複数の攻撃経路を特定しています。ただし、目的は彼らの手法の検証であるため、その目的に最も適した経路を決定しました。それが、今回ターゲットとなったケララ州の地方自治政府の金融サーバーです。

今回、Sakura Samuraiは、この金融サーバーがセキュリティ上脆弱なApache Tomcat Serverを実行しており、またリモートコード実行を可能にする既知のエクスプロイトが入手できることを突き止めています。調査を経て、彼らはコマンドのリモート実行を可能にするエクスプロイトの実行に成功しました。言うまでもありませんが、このレベルの制御ができれば、攻撃者は複数の攻撃経路の展開が可能になります。

サーバー上でコード実行が可能になったことで、Sakura Samuraiはローカル列挙技術を使用し、サーバーにバックアップとして保管されていた財務記録の入ったフォルダーを見つけることに成功しました。

ステップ5:エクスプロイトの活用によりインフラからアプリケーションに移行


この時点で、攻撃手法の実証は完了し、次に報告プロセスに取り掛かります。Sakura Samuraiは最終エクスプロイトを活用し、インフラからアプリケーションの実行というフェーズに移行。攻撃の最終確認に入ります。インフラ内に奥深く入り込み、侵入を拡大する手段としては、複数の選択肢がありましたが、彼らはユーザーセッションの乗っ取りを目的として対象を財務サーバー上で動作するメインアプリケーションに絞りました。まず、管理用の認証情報を含むサーバーの構成情報を使い、このアプリケーションのアクティブユーザーの一覧を入手することに成功すると、Javaのウェブアプリケーションで一般的なセッションクッキー、すなわちJSESSIONIDを悪用することでセッションテイクオーバーのインスタンスを実行。このセッションクッキーは、ランダムユーザーのIDを選別して作成したもので、Sakura Samuraiはこのクッキーを使って財務サーバー上のウェブアプリケーションへの認証に成功しています。このウェブアプリケーションからは、財務予測の参照や、乗っ取ったユーザーアカウントを使ったパネル内からの送信や編集といった操作が可能でした。

この攻撃の後、Sakura Samuraiは米国政府の情報開示プログラムの支援を得て、インド政府に対し34ページからなる脆弱性レポートを提出しました。

攻撃手法の再考

ここまで、攻撃の流れをステップバイステップ形式で見てきましたが、たとえ短縮した形であってもかなりの情報量であるということは自覚しています。しかし、気を取り直し、全情報からコアとなる部分を取り出した場合、攻撃者の手法は以下のようになります。

  • 境界(ペリメーター)を設定する
  • 設定した境界内で資産(アセット)の洗い出しをする
  • 認証情報など、すぐに使えそうな脆弱性がないか精査する
  • 特定したインフラで既知の脆弱性がないか精査する
  • 脆弱性を利用してインフラ内部に侵入する
  • 複数の脆弱性を組み合わせることで、インフラを軸足としてアプリケーションを操作する
  • その場に潜伏し、さらなる機密行動を実行するための足場固めをする


以上は、特に珍しい攻撃手法というわけではありません。実際、Sakura Samuraiが以前UNへの不正侵入に用いた手法とほぼ同じです。しかし、ここには将来の攻撃に対する備えとして、組織が留意すべき重要領域が明確に示されています。

防止策

サイバーセキュリティにおける防止策を議論する場合、出口のない迷路にあえて飛び込むような危険があります。しかし、今回の攻撃から重要なポイントを取り出すだけで、いくつか興味深い結論を導き出すことができます。 特に留意すべき点として、今回の攻撃は完成度という点では極めて低く、少なくとも攻撃経路や損失の大きいインフラといった観点では極めて普通のレベルです。つまり、上で述べてきた手法は、様々なハッカーが幅広く採用する方法となります。

資産への外部からのアクセスを阻止する

すでに述べたように、.gitディレクトリのようなクライアントサイドのアセットは、外部のIPアドレスからのアクセスが可能です。重要データが保管されたディレクトリは、リモートアクセスを阻止するだけでなく、複数の認証レイヤーを設けて、貴重な情報を攻撃者の手の届く処に放置しないようにする必要があります。

自社のペリメーター(境界)上に機密情報がないか精査する

今回の攻撃の中でも最も重要と言える点は、攻撃者がアクセスできた機密情報(認証情報)の量です。機密情報が記載されたファイルの多くはクライアント側のサーバーに置かれていましたが、そうしたファイルへはリモートからもアクセスできました。このことから、私たちは自社のペリメーターで(内部資産を含む)そうした機密情報がないか精査する必要があるということが分かります。

既知のエクスプロイト(脆弱性)に対し、定期的に修正プログラムを適用する

修正プログラムの定期的な適用は、当たり前すぎて見過ごされることも少なくありません。システムを最新の状態に保つことで、攻撃者からの攻撃経路を取り除くことができます。定期的な修正プログラムの適用は、インフラはもちろんですが、アプリケーション内で動作する依存ファイルについても必要です。Snykは、依存ファイルの脆弱性を検出、更新してくれる優れたツールです。


まとめ

今回のケースは、インド政府だけでなく複数の部門・組織に影響が及んだ規模の大きな不正アクセス事案でした。しかしながら、攻撃そのものはすでに確立されたよくある手法に従ったもので、攻撃の完成度もそれほど高いものではありません。それだけに多種多様なハッカーが追随する可能性があります。幸いなことに、このような攻撃に備えた対策として、資産への外部アクセスのブロック、企業のペリメーター上での機密情報の精査、インフラ・アプリケーションへの定期的な修正プログラムの適用など、複数の手段が存在します。これらを実践することで防御体制の強化を図ることが可能です。