ソーシャル エンジニアリングと 2 要素認証
ソーシャル エンジニアリング キャンペーンは、セキュリティの最も弱いチェーンである人々を標的とするため、企業にとって常に脅威となっています。典型的な攻撃では、被害者のユーザー名とパスワードを取得し、攻撃者が後で再利用できるように保存します。 2 要素認証 (2FA) または多要素認証 (MFA) は、一般に、これらの脅威に対するソリューションと見なされています。
2FA は、一般的なユーザー名とパスワードの上に認証のレイヤーを追加します。一般的な 2FA 実装の 2 つは、ワンタイム パスワードとプッシュ通知です。ワンタイム パスワードは、ハード トークンなどのセカンダリ デバイスによって生成され、特定のユーザーに関連付けられます。これらのパスワードは通常、30 ~ 60 秒以内に期限切れになり、再利用できません。プッシュ通知には、プロンプトをユーザーのモバイル デバイスに送信し、ユーザーにログイン試行の確認を要求することが含まれます。これらの実装はどちらも、ユーザー名とパスワードの組み合わせのみを取得する従来のフィッシング キャンペーンからユーザーを保護します。
リアルタイムフィッシング
2FA は、セキュリティの専門家によって個人用および商用アプリケーションの両方で強く推奨されていますが、確実なソリューションではありません。 2FA の実装は、リアルタイムのフィッシング技術を使用してうまく打ち負かされています。これらのフィッシング攻撃には、攻撃者と被害者の間のリアルタイムの相互作用が含まれます。
簡単な例としては、ユーザー名とパスワードに加えてワンタイム パスワードの入力をユーザーに求めるフィッシング Web サイトがあります。ユーザーがフィッシング Web サイトで認証を完了すると、一般的な「ログイン成功」ページが表示され、ワンタイム パスワードは使用されずに取得されたままになります。この時点で、攻撃者は有効期限が切れる前に被害者の資格情報を再利用するための短い時間枠を持っています。
これらの手法を利用したソーシャル エンジニアリング キャンペーンは新しいものではありません。早ければ 2010 年にリアルタイム フィッシングが実際に行われたという報告がありました。しかし、この種の攻撃は、そのような攻撃を開始することが困難であると認識されているため、ほとんど無視されてきました。この記事は、その認識を変え、問題を認識させ、新しい解決策を生み出すことを目的としています。
ツールの説明
ソーシャル エンジニアリングの評価を改善するために、リアルタイム フィッシング手法を簡素化するReelPhishという名前のツールを開発しました。フィッシング ツールの主要コンポーネントは、攻撃者のシステムで実行されるように設計されています。これは、攻撃者のフィッシング サイトからのデータをリッスンし、 Selenium フレームワークを使用してローカルにインストールされた Web ブラウザを駆動する Python スクリプトで構成されています。このツールは、指定された Web ページに移動し、HTML オブジェクトと対話し、コンテンツをスクレイピングすることにより、攻撃者の Web ブラウザーを制御できます。
ReelPhish の二次コンポーネントは、フィッシング サイト自体にあります。フィッシング サイトに埋め込まれたコードは、取得したユーザー名やパスワードなどのデータを、攻撃者のマシンで実行されているフィッシング ツールに送信します。フィッシング ツールが情報を受け取ると、Selenium を使用してブラウザを起動し、正規の Web サイトへの認証を行います。フィッシング Web サーバーと攻撃者のシステム間のすべての通信は、暗号化された SSH トンネルを介して実行されます。
被害者は、フィッシング サイトと ReelPhish の間のすべての通信に含まれるセッション トークンを介して追跡されます。このトークンにより、フィッシング ツールは、固有の課題を持つ複数のページを含む認証ワークフローの状態を維持できます。フィッシング ツールは状態を認識しているため、被害者から正規の Web 認証ポータルに情報を送信したり、その逆に情報を送信したりできます。
例
私たちは ReelPish とこの方法論を多数のMandiant Red Teamエンゲージメントでうまく使用してきました。私たちが遭遇した最も一般的なシナリオは、2 要素認証を使用した外部向けの VPN ポータルです。ソーシャル エンジニアリング攻撃を実行するために、実際の VPN ポータルの HTML、JavaScript、および CSS のコピーを作成します。このコードを使用して、元のサイトと同じように機能するように見えるフィッシング サイトを作成します。
リアルタイムのフィッシング ツールを容易にするために、攻撃者のマシンで実行されているツールと通信するサーバー側のコードをフィッシング サイトに埋め込みます。また、フィッシング サーバーへの SSH トンネルも設定します。フィッシング サイトの認証フォームが送信されると、送信されたすべての資格情報がトンネル経由で攻撃者のシステム上のツールに送信されます。次に、このツールは、攻撃者のシステムで新しい Web ブラウザー インスタンスを開始し、実際の VPN ポータルで資格情報を送信します。図 1 は、このプロセスの動作を示しています。
図 1: ReelPish フロー図
VPN ポータルでは、さまざまな 2 要素認証が見られます。場合によっては、認証フォーム自体の「セカンダリ パスワード」フィールドにトークンが渡されます。それ以外の場合、ユーザーは携帯電話でプッシュ リクエストに応答する必要があります。フィッシング サイトが実際のサイトと同じように動作する場合、ユーザーは資格情報を送信した後に受信プッシュ リクエストを受け入れる可能性があります。
状況によっては、複数の認証ページを処理でき、フィッシング Web サーバーと攻撃マシンで実行されているツールの間で情報をやり取りできる、より高度なフィッシング サイトを開発する必要がありました。私たちのスクリプトは、フィッシング サイトで被害者のセッションを追跡し、攻撃者のシステムで実行されている特定の Web ブラウザ インスタンスに関連付けることで、これらのシナリオを処理することができます。図 1 は、攻撃シナリオ内でツールがどのように機能するかの一般的な概要を示しています。
FireEye GitHub リポジトリでツールを公開しています。フィードバック、プル リクエスト、イシューも Git リポジトリに送信できます。
結論
2FA を放棄しないでください。これは完璧なソリューションではありませんが、セキュリティのレイヤーを追加します。 2FA は他のセキュリティ メカニズムと同様に失敗する可能性があるため、組織はそのような失敗の影響を軽減する準備をしておく必要があります。
攻撃者が 2FA 保護をバイパスすることに成功した場合、攻撃者の影響を最小限に抑えるために、2FA によって保護されるすべてのサービスを構成します。最大セッション時間を短縮すると、攻撃者が資産を侵害するために必要な時間を制限できます。ユーザー アカウントごとに最大 1 つの同時セッションを強制すると、攻撃者が被害者と同時にアクティブになるのを防ぐことができます。問題のサービスが VPN の場合は、厳密なネットワーク セグメンテーションを実装します。 VPN ユーザーは、それぞれの役割と責任に必要なリソースにのみアクセスできる必要があります。最後に、ソーシャル エンジニアリングの試みを認識し、回避し、報告するようにユーザーを教育します。
ReelPhish をリリースすることで、Mandiant は複数層のセキュリティの必要性を強調し、単一のセキュリティ メカニズムへの依存を思いとどまらせたいと考えています。このツールは、セキュリティの専門家が最初から最後まで徹底的な侵入テストを実行するのを支援することを目的としています。
Mandiant での Red Team の関与中、組織の内部ネットワークにアクセスすることは最初のステップにすぎません。ここで紹介するツールは、この最初のステップを成功させるのに役立ちます。ただし、エンゲージメントの全体的な成功は、ターゲットの内部セキュリティ対策によって大きく異なります。セキュリティ体制全体を評価し、改善するために常に取り組んでください。 Mandiant は、これら両方の活動においてあらゆる種類の組織を支援できるさまざまなサービスを提供しています。
参照: https://www.mandiant.com/resources/blog/reelphish-real-time-two-factor-phishing-tool
Comments