$30 off During Our Annual Pro Sale. View Details »

フィッシングサイトをテイクダウンする方法

phishing-hunter
February 16, 2023
500

 フィッシングサイトをテイクダウンする方法

サイトクローン検出ツール:
https://github.com/phishing-hunter/phishing-blocker
スコアリングとYaraルール:
https://github.com/phishing-hunter/PHOps
---------------------------------------------------------------------------
他にも以下のツールやサービスを提供しております

フィッシングサイト通知サービス「フィッシングハンター」
http://phishing-hunter.com/

類似ドメイン検索サイト
http://demo.phishing-hunter.com/

phishing-hunter

February 16, 2023
Tweet

Transcript

  1. フィッシングサイトをテイクダウンする方法

    View Slide

  2. おしながき
    フィッシング詐欺の流れ
    入手したフィッシングキットの解説
    フィッシングサイトのテイクダウンする方法
    構築したシステム
    まとめ

    View Slide

  3. はじめに
    ● 内容はあくまで自組織に関わる不正なコンテンツの検出やテイクダウンを目的とし
    ており、不正なコンテンツに含まれるセンシティブな情報の利用や拡散を目的とす
    るものではありません
    ● 収集するプログラムには外部にメールや情報を送信する機能が含まれていること
    があり、注意深く取り扱う必要があります。

    View Slide

  4. よくあるフィッシング詐欺の流れ
    ● 攻撃者はホスティングサーバーを購入する

    ● 購入したサーバにフィッシングキットをアップロードしセットアップする

    ● 動作確認を完了させた攻撃者は潜在的な被害者に大量のフィッシングメールを送信する

    ● 被害者はフィッング ページにアクセスして資格情報を入力する

    ● フィッシング キットは資格情報を処理し、外部の電子メール アカウントに送信する

    ● 最後に、攻撃者はこの電子メール アカウントにアクセスし、資格情報を収集する
    参考: https://www.imperva.com/blog/our-analysis-of-1019-phishing-kits/

    View Slide

  5. 入手したフィッシングキットの解説

    View Slide

  6. フィッシングキットを入手するには

    View Slide

  7. フィッシングサイト構築中のアクセス制御
    index.php
    ● サイトにアクセスするためにはパスワードが必要になるオプションが用意されている
    ● パスワードがないと本物のサイトに自動的にリダイレクトされます。
    ● サイト構築中にアクセスしてきたipアドレスをbotと判断しリストに記録している

    View Slide

  8. リサーチャー対策
    killbot.php
    ● botとして判定されたIPアドレスはhttps://killbot.orgに登録される
    ● botを複数のフィッシングキットで共有するための仕組みだと思われる

    View Slide

  9. リサーチャー対策
    antibot.php
    ● botとして判定されたIPアドレスはhttps://antibot.pwに登録される
    ● こちらもbotを複数のフィッシングキットで共有するための仕組みだと思われる

    View Slide

  10. 特定のISPをブロック
    blocker.php
    ● ISP単位で接続をブロックしている

    View Slide

  11. blocklist.dat
    ● 正規表現で書かれたベンダーが所有している
    IPアドレスの一覧ファイル
    アンチウイルスやクラウドベンダーのブロック
    同じようなデータはこちらでも公開されてます。 https://github.com/marcoramilli/PhishingKitTracker

    View Slide

  12. アンチウイルスベンダをブロックする仕組み
    killbot.org antibot.pw
    フィッシングサイトA
    フィッシングサイトB
    アンチウイルスベンダ
    リサーチャーなど
    フィッシングサイト間でブロックリストを共有
    している状態

    View Slide

  13. 実際に入手したフィッシングキットの解説
    submit_email.php
    ● 被害者が入力したemailアドレスやパスワード、IP情報が攻撃者の用意したemail
    アドレスに転送されるようになっている

    View Slide

  14. 実際に入手したフィッシングキットの解説
    ● メールの送信に成功したか失敗したかどうかを記録している

    View Slide

  15. 実際に入手したフィッシングキットの解説
    lang.php
    ● IPアドレスから国を判定して、表示言語を切り替えている

    View Slide

  16. フィッシングサイトをテイクダウンする方法

    View Slide

  17. フィッシングサイトをテイクダウンする方法
    ● Javascriptを使ってサイトを無力化する
    ● 証明書の情報を元に悪意を検出しテイクダウンを依頼する

    View Slide

  18. フィッシングサイトをテイクダウンする方法
    ● Javascriptを使ってサイトを無力化する
    ● 証明書の情報を元に悪意を検出しテイクダウンを依頼する

    View Slide

  19. Javascriptを使ってサイトを無力化する
    https://github.com/phishin
    g-hunter/phishing-blocker
    Step 1
    Step 2
    サイトをテイクダウンせずに攻撃を無力化できる
    正規サイトのパターンを定義
    パッケージのインストール

    View Slide

  20. フィッシングサイトをテイクダウンする方法
    ● Javascriptを使ってサイトを無力化する
    ● 証明書の情報を元に悪意を検出しテイクダウンを依頼する

    View Slide

  21. SSL証明書を取得すると履歴が残る
    ● まず最初に攻撃者はホスティングサーバ購入する必要があります
    ● ホスティング業者は攻撃者との契約が完了するとSSLの証明書と専用のドメインの
    取得を行います。
    ● この段階でCertificate Transparencyの仕組みによって、Certstreamから証明書取
    得のログがインターネット上に公開されます。
    ログが公開される サーバを契約
    攻撃者

    View Slide

  22. Websocketを使って証明書の更新情報を取得する

    View Slide

  23. 証明書の情報から悪意を検出する
    ドメイン名に含まれるキーワード
    ブロックリスト情報(ドメイン名・IP)
    証明書の発行元組織
    HTMLソースコードに含まれる単語

    View Slide

  24. フィッシングサイトを構築段階で検出する方法
    ● 公開されたログのビッグデータ解析を行い、フィッシングに使われる手法が含まれ
    たドメインを抽出しサーバ上のコンテンツを確認
    ● 「Index of 」のようなキーワードがHTMLコンテンツに含まれているか確認
    ● 構築段階でアクセスできれば、攻撃者がサーバに置いたばかりのフィッシングキッ
    トを入手できることがある
    ● 構築段階ではアクセス元を制御する設定がされていない場合が多いため、フィッシ
    ングキットのログに残らないようにアクセスすることが可能
    キットのアップロード
    キットのダウンロード
    攻撃者

    View Slide

  25. 構築途中のフィッシングサイト
    構築途中の段階でアクセスできれば、攻撃者がサーバに置いたば
    かりのフィッシングキットを入手することができることがあります

    View Slide

  26. 悪質なサイトは報告しないと生き続ける
    サイトの構築・設定
    継続的な監視
    通知
    関係組織
    コミュニティ
    攻撃者
    テイクダウン

    View Slide

  27. 証拠保全が大事
    ● 特定のISPからは普通のサイトが表示される場合がある
    ● urlscan.io等のスクリーンショットサービスを使えば簡単に取得できる
    ● 被害者側に伝える場合はモバイル回線などを使って確認するように説明した方が
    いい

    View Slide

  28. Googleセーフブラウジング経由のテイクダウン
    Google セーフブラウジングの報告用フォームから誰でも報告出来ます。

    View Slide

  29. 構築したシステム

    View Slide

  30. 構築したシステム
    Pull Request
    ルールのパフォーマ
    ンスを検証
    ルールのリリース
    スコアリング結果の保存
    フィッシングキットの保存
    Google Safe Browsingへ報告
    承認
    CI/CD
    ダウンロード
    スコアリング&キット収集
    score > 150
    通知

    View Slide

  31. 証明書情報の評価
    AWS EventBridige Pipesを使う
    証明書の情報をSourceに送信するプログラムは別に用意する
    データのエンリッチメントはlambda(Docker)で実装
    Certstreamから
    データを受け取る
    スコアリング
    Yaraルールで検査
    重複排除 クローリング or 通知

    View Slide

  32. スコアリングとコンテンツ検査について
    Step1: ドメインのスコアリング Step2: Yaraルールでコンテンツを検査する
    スコアが高い
    Githubリポジトリ: phishing-hunter/PHOps

    View Slide

  33. Github Actionsを使ったスコアリングルールの検証
    phishing-hunter/PHOps
    docker pull
    トリガー: push
    個人リポジトリ
    トリガー: push

    1.Fork
    3.Pull Request
    2. Git push
    PRが承認されマージが行われたタイミングが
    workflowが実行される
    トリガーがpushなので、リポジトリの所有者が
    workflowを実行する(クレジットを消費する
    )

    View Slide

  34. スコアが高いドメインはDiscordで公開
    Discord招待URL:
    https://discord.gg/c2WWJDpnAw

    View Slide

  35. まとめ
    ● Javascriptを使うことでサイトのドメインをチェックしてフィッシングサイトを無効化することが出来ます。

    ● Certstreamから収集している履歴は定義されたルールに基づいてスコアリングされGoogleドライブへと保存して
    公開しています。

    ● スコアが閾値を超えたドメインについてはurlscanを使ってスキャンを行います。コンテンツが取得できる場合は
    Yaraルールを使ってスキャンを実施し、結果をDiscordに通知しています。

    ● スコアリングルールやYaraルールについてもGithubに公開してるので、プルリクエスト経由で誰でも修正すること
    が可能です。
    Javascriptでサイトを無効化
    (サイト構築後の対策 )
    証明書情報を使ってテイクダウン
    (サイト構築前の対策 )
    AND

    View Slide