はじめに
こんにちは!NTTコミュニケーションズの2024年夏の現場受け入れ型インターンシップに参加させていただきました、大学院1年生の山本です。 現在はフィッシングサイトの検出をテーマに研究活動を行っています。
本記事では、インターンシップを通して体験させていただいた業務内容のうち、特にフィッシングキットの分析について紹介させていただきます!
参加チームについて(NA4Sec)
私はインターンシップの期間中、NA4Secというチームに参加させていただきました。 NA4Secの正式名称は「Network Analytics for Security」であり、「NTTはインターネットを安心、安全にする社会的責務がある」ということを理念として掲げ、攻撃インフラの解明や撲滅を目指して活動しているチームです!1
将来的にセキュリティに携わって人々を守りたいと考えている自分にとって、とても魅力的なチームでした。
インターンシップに参加した経緯
私はフィッシングサイトの検出について研究しているのですが、提案手法の有効性を評価するために本物のフィッシングサイトにアクセスして情報収集をすることがあります。 フィッシングサイトの情報源をX(旧Twitter)やフィッシングメール、SMSなどとしており、フィッシングサイトの情報を収集する際に、Metemcyberアカウント により発信される情報を閲覧したことがありました。
Metemcyberとは、「セキュリティ運用の健全化を提供することを目標として活動しているプロジェクト」2 で、以前のインターンシップでも研究開発が行われていました。 特にXでは、次の投稿のようなフィッシングサイトに関する情報が発信されています。
🚨⚡ #Phishing #フィッシング詐欺 (🇯🇵)
— Metemcyber (@Metemcyber) 2024年10月2日
Brand:#税務署 #国税庁
IP:
🌍 43.133.6[.]103 (ASN:AS132203)
URL:
🎣 hxxps://amaglobal.cn/
🎣 hxxps://canchuan.cn/
🎣 hxxps://exterminator.cn/
🎣 hxxps://hideandseek.cn/
🎣 hxxps://netwalk.cn/
H/T to Team NA4Sec pic.twitter.com/YpZPMP3SGN
このように情報発信するために、どのようにフィッシングサイトの情報を収集・精査し、発信しているのか興味があり、インターンシップへの参加を希望しました。 また以前のインターンシップ体験記から、フィッシング詐欺に関する業務について体験できると知ったため、さらに意欲が向上しました!
体験内容の概観
今回のインターンシップでは、大きく分けて4種類の業務に参加させていただきました。
- 脅威調査(Cobalt Strikeとその悪⽤)
- 脅威探索(Cobalt Strike C2サーバに関して)
- 脅威情報配信(フィッシングサイトに関して)
- フィッシングキット分析
脅威調査、脅威探索、脅威情報配信については今回は割愛し、「フィッシングキット分析」について詳細に紹介させていただきます。3
フィッシングキットの詳細分析
まずフィッシングキットについて簡単に説明すると、「フィッシングサイトお⼿軽作成ツール」です。 フィッシングキットを利用することで、攻撃者は簡単にフィッシングサイトを用意できます。
このようなフィッシングキットを分析することで、フィッシングサイトのサーバ側での処理や設定ファイルに記載されている内容、さらに攻撃者に関わる情報(窃取した情報の送信先、コードに残したコメント)を入手できる可能性があります。 今回は実際に使用されていたフィッシングキットについて詳細に分析し、その分析レポートを作成することになりました。
以前のインターンシップ体験記でもフィッシングキットの分析を扱ったものがありましたが、本体験記ではソースコードレベルでの個別機能把握とそれを踏まえた検知の検討に焦点をあてて紹介します。
今回、分析時の観点として以下について教えていただきました。
- 騙っているブランドはなにか
- どんな情報を窃取しようとしているのか
- どのような処理があるのか
- 検知に活用できそうな情報
- 攻撃者に関係していそうな情報
構成ファイル
分析対象のフィッシングキットは、NA4Secチームが過去に収集して保存していたzipファイルのうちの1つです。 今回のインターンシップでは、NA4Secのアナリストとして自身が入手したフィッシングキットについて分析レポート作成を依頼されたというシナリオベースで分析に取り組みました。 このzipファイルを展開すると、下図のようにいくつかのファイルとフォルダが確認できました。
分析方法
VS Code でソースコードを読むことで処理を追っていきました。 以下にその手順や結果を記載します。
騙っているブランドについて
まず⾃分は、フィッシングキットに含まれる画像からブランドを推測できるのではと考え、画像を探してみました。 すると、「/assets/img」に画像ファイルが存在し、その⼤半は某大手ECサービスに関連しているようでした。 このため、騙っているブランドは某大手ECサービスであると最初は判断していました。
しかし、発見した画像ファイルがどのように呼び出されているのかは不明でした。 そこで「index.php」がまず呼び出されるのではないかと考え、そこから処理を追ってみると、呼び出されているのは「ap/signin.php」や「_ap/signin.php」でした(今回、「ap」はMobile用、「_ap」はDesktop用に用意されたディレクトリ)。 どちらも確認するとログインページのようであり、ともにtitleタグの値に某交通系サービスの名前が記載されていました。
以上から、今回のフィッシングキットによって作成されるフィッシングサイトが騙るブランドは某交通系サービスであると判断しました。 またフィッシングキットに複数のブランド情報があったことから、フィッシングキットは再利用されていること、画像だけ確認して騙っているブランドを判断するのではなく処理を⼀つずつ追うことが重要であることを学びました。
どんな情報を窃取しようとしているのか
phpファイルの処理を確認していくと、以下のような情報などを窃取しようとしていることが分かりました。
- 登録しているメールアドレス、パスワード
- 名前
- 生年月日
- 携帯電話番号
- カード番号
- ワンタイムパスワード
入力フォームに上記のような情報などの入力を求める記述が存在したため、phpファイルを読むだけで窃取しようとしている情報が判明しました。
どのような処理があるのか
クローキングが行われていることが分かりました! クローキングについて以前のインターンシップ体験記を参考に紹介すると、「攻撃者が標的とする対象には悪性の挙動を示し、対象以外には悪性でない挙動を示すようにする処理」です(体験記により詳細に記述されていますので、ぜひご覧ください!)。 自身の収集経験からも、最近のフィッシングサイトではよく行われている処理だと思います。
本フィッシングキットでもクローキング処理がphpファイルで確認できました。 次の図の処理では、$bannedに格納されている⽂字列がアクセスを試みるUser Agentの文字列に含まれている場合、__exit()関数によりフィッシングページを非表示にする処理が行われていました。
また、ipregistry のAPIが利用されていました。 次の図はAPIを利用するためのURLが作成されている箇所を抜粋したものです。 ipregistryのAPIによりフィッシングサイトへのアクセスを試みるIPアドレスに関する情報が取得され、取得した国情報などによるクローキングが行われていました。
クローキング処理以外にも、窃取したデータの送信処理も発見しました。
次の図は、データ送信に利用されたと思われる関数です。
$msg
には窃取したデータが格納されており、窃取したデータはTelegramのAPIを利用した送信処理が行われていました。
本フィッシングキットでは、file_get_contents
により API が利用されていました。
以上のような処理の分析により、データ送信処理や、普段フィッシングサイトの情報収集時に自身もふれていたクローキング処理がどのように実装されているか知ることができました。
検知に活⽤できそうな情報
「この情報に注⽬すれば、フィッシングサイトと判断できるのではないか」という情報を探しました。 今回は3つほど紹介します。
- 敬体と常体の混合:可能性低
フィッシングサイトで⾒られるおかしな⽇本語表現に着⽬しました。 敬体とは「です」「ます」、常体とは「だ」「である」のような語尾で終わる文体です。 フィッシングサイトの中には上図のように敬体と常体が不自然に混ざった文章が登場することがあります。 しかし、おかしな⽇本語表現は正規サイトでも存在するため、フィッシングサイト検知の根拠としては弱いです。
- コピーの痕跡:可能性高
正規サイトのページを保存した痕跡らしきものがフィッシングキットのコード中に残っていました。 通常、正規サイト(特に正規ログインページ)に他サイトからコピーしてきた痕跡があるとは考えにくいので、検知に活⽤できると判断しました。
- urlscanによる調査:可能性高
インターンシップでは、urlscanによる調査方法について指導していただきました。 urlscanとは、指定したURLのスキャンを実行し、スキャンしたURLが安全かどうかなどの情報を確認できるサイトです。 urlscanによりフィッシングサイトを構成するファイルのハッシュ値を確認すると、同様のハッシュ値を持つ、フィッシングサイトと思われるサイトのスキャン結果を得ることができました。 このことから、既知のフィッシングサイトを構成するファイルのハッシュ値を検知に活用できると判断しました。 ただし、一部のハッシュ値を確認すると、正規サイトのスキャン結果が多く得られることもありました。 この理由として、以下の2点が考えられると教えていただきました。
- 対象ファイルがフィッシングサイトにも正規サイトにも存在するから
- クローキングによる正規サイトへのリダイレクトもスキャンされ、正規サイトのファイルも記録されるから
そのため、検知にハッシュ値を利⽤する場合には⼀つのリソースのハッシュ値だけでなくできるだけ全てのハッシュ値を確認する必要があると考えます。
urlscanによる調査の詳細ついては、以前のインターンシップ体験記で紹介されていますので、ぜひご覧ください!
今回の経験から、urlscanの活用方法について知ることができました。
攻撃者に関係していそうな情報
「Capricorn.ini」ファイルに攻撃者に関係していそうな情報が確認できました。 例として、情報送信に使われたであろうTelegramのChatのID情報や、ipregistryのAPIを利用するためのkey情報などが存在しました。
このように、フィッシングキットを確認するだけで攻撃者が利用したサービスの情報についても知ることができました。
おわりに
本インターンシップのカリキュラムで、私は初めてフィッシングキットの分析に挑戦することになりました。 一つ一つの処理を地道に追っていく作業だったので時間がかかりましたが、とても楽しく有意義な経験となりました! 具体的には、フィッシングキット分析関連の業務に多く時間を割いてくださったことで長時間分析に挑戦でき、詳しく知らなかった外部APIサービスについて詳細に調査でき、またメンターの益本さんから知識共有もしていただきました。 加えて分からない箇所についてはアドバイスをいただき(例:urlscanによる調査)、そのアドバイスをもとに調査を行えたことなどから、自身の研究分野であるフィッシングサイトについて知らなかった挙動や検出方法について学ぶことができました。 さらに分析により普段収集していたフィッシングサイトの挙動(例:クローキング)を裏付けることができ、User AgentやIPアドレスを工夫するなど今後どうフィッシングサイトに対応するかについて知見を広げる機会となりました。 今回のインターンシップで得た知識を自身の研究活動の一環であるフィッシングサイトの情報収集に活かしたいです。
上記で紹介した業務以外にも、対面とリモートの両方での業務体験や、NA4Secチームが関わるイベントにも多数参加させていただき、現場の雰囲気も充分に理解できました。 興味のあったフィッシングサイトに関する業務(特にフィッシングサイトの情報収集・精査方法)についても座学や業務体験を通して経験できました。 先述したフィッシング詐欺に関する学びはもちろん、昼休みや夜に行われるイベントでも技術的知識を共有し、チームメンバーの成長を促そうとする現場の上昇志向はぜひとも真似すべきものだと思いました。 現在の自分は研究室に所属しているので、今後研究室メンバーへ色々な知識共有を行うことで、上昇志向的な姿勢を身に着けたいです。
このように、技術面ではフィッシングサイトに関する多くの知識を得たこと、非技術面では現場の積極的な姿勢を学ぶことができたことから、インターンシップへの参加目的を達成できたと思っています。 本当にありがとうございました!
最後に、自分のインターンシップに関わってくださった皆さま、特に上長の神田さん、メンターの益本さん、色々なお世話をしてくださった鮫島さんには本当に感謝しています。 繰り返しになりますが、ありがとうございました!
- NA4Secに関する記述は「BSides登壇のBサイド ~なんで、私が海外セキュリティカンファレンスに!?~ 」という記事を参考にしました。最近のNA4Secに関する活動も執筆されていますので、ぜひご覧ください!↩
- 引用元は「日本を狙ったフィッシングサイトの情報配信はじめました 」という記事です。XでのMetemcyberアカウントによるフィッシングサイトの情報発信について紹介されています。↩
- 脅威調査・脅威探索については、以前のインターンシップ体験記 が参考になると思います!ぜひご覧ください。↩