はじめに
おはようございます!事業開発部の清水です。
以前から楽しみにしていたCODEBLUE2019(https://codeblue.jp/2019)に参加しています。
本日は昨日実施された以下セッションについてレポートしたいと思います。
セッション内容
公開されているセッション内容は以下です。
クレデンシャルスタッフィング攻撃者の事情
"クレデンシャルスタッフィングについて、攻撃に利用されるツール、その設定、ツールを動かすために必要なデータ、それらを入手する方法などを紹介する。"
https://codeblue.jp/2019/talks/?content=talks_1K
レポート
防御する際によく"攻撃者視点"という言葉が使用されますが、
"攻撃者視点"を進めて攻撃者の立場で対策を考えてみようという内容でした。
クレデンシャルスタッフィングとは
まず、クレデンシャルスタッフィングについての説明がありました。
- いわゆる"リスト型攻撃"
- パスワードが使いまわされている実態を悪用
- 認証システムに対して自動化された攻撃
攻撃の対策として、ユーザ・サービス側の双方の対策も併せて紹介されました。
ユーザの対策
- パスワードを使いまわさない
- (対応していれば)二要素認証を利用する
サービス側の対策
- アカウントロック
- 特定IPアドレスから閾値を超えるログイン要求が発生した場合ブロックする
- 二要素認証の対応
- CAPCHA認証の対応
歴史
専用攻撃ツールの台頭により、増加してきた攻撃の歴史について言及がありました。
- 黎明期 2013年以前
- 漏洩認証情報は公開されていた
- ターゲットサイトごとに専用ツールが作成されていた
- 漏洩認証情報は公開されていた
- 興隆期 2013年頃
- 攻撃専用ツール(SentryMBA)の登場
- 汎用性があり、以下情報があれば様々なサイトの攻撃に利用可能
- コンボリスト
- プロキシリスト
- コンフィグ
- 汎用性があり、以下情報があれば様々なサイトの攻撃に利用可能
- 攻撃専用ツール(SentryMBA)の登場
- 成熟期/発展期 2018年1月
- 攻撃専用ツール(STORM)の登場
- MR ViPeRというアクターが開発
- 無料で利用可能(寄付募集)
- 現在も開発が継続
- JavaScriptチェックに対応
- 攻撃専用ツール(STORM)の登場
攻撃に必要な情報について
専用攻撃ツール使用時に必要な情報は3つあり、それぞれ入手方法も含めて説明がありました。
コンボリスト
コンボリストとは、 "IDとパスワードを組み合わせたリスト"のこと。
- 入手方法
- ハッキングフォーラム
- コンボリスト収集ツール
- ハッキング (SQLインジェクション)
- マーケットで購入
プロキシリスト
プロキシリストとは、"攻撃元IPを欺瞞するために利用されるリスト"のこと。
- 入手方法
- 無料のプロキシサイト
- マーケットで購入 (プロキシサイトより精度高いと言われている)
コンフィグファイル
コンフィグファイルとは"Webサイトごとに作成する設定ファイル"のこと。
作成は技術力/手間が必要となる。
- 入手方法
- 自作
- ハッキングフォーラムでの共有
- マーケットで購入
- 作成を請け負うアクターもいる
攻撃について
専用攻撃ツールを使用した攻撃手法について説明がありました。
攻撃パターン1
コンボリストの有効性を検証し、実際に存在するIDリストを抽出する。
有効性検証時は、「IDが重複しています」などのエラーメッセージを確認して検証を行う。
攻撃パターン2
コンフィグを使用し、ログイン後に確認できるデータを自動収集する。
コンフィグ作成時には、有効なアカウントでログイン後の動作確認を行い、その情報をもとにコンフィグに設定を落とし込んでいると考えられる。
STORMデモ
STORMという専用攻撃ツールを使用したデモもありました。
実際のデモでは、以下の操作が簡単にできる様子が見受けられました。
- GUIでコンボリスト、プロキシ、コンフィグを設定可能
- 不正ログイン試行によりシステム側でブロックされた場合でも、自動的にプロキシリストの次のプロキシを使って攻撃が可能
- 攻撃により、ログインできたIDとパスワードのセットがリスト化されて表示
攻撃者の事情
以下3つの構成要素のすべてが機能して攻撃ツールが動作するため、いずれかが機能しなければ攻撃は成立しません。
- コンボリスト
- プロキシ
- コンフィグ
攻撃者の立場に立った対策
そのため、攻撃者の立場に立って、以下の基本的な対策を実施しておくとともに、攻撃の構成要素ごとの対策を行うことが有用との説明がありました。
基本的な対策
- エラー率で攻撃を検知するようにしておく。
- 効率的にパスワードリセットができるようにしておく。
コンボリストを攻める
攻撃者と同じ方法でコンボリストを入手し、リストに載っているアカウントは強制的にパスワードをリセットする。
プロキシを攻める
攻撃者と同じ方法でリストを入手後、リストに載っているプロキシをブロックする。
コンフィグを攻める
有効なコンフィグファイルを作らせないため、エラーメッセージをいくつか用意しておく。
また、攻撃を検知した場合に自動的に、通常とは違うエラーメッセージを表示させる。
ログイン後の動作を特定できないようにするため、広告などログイン後の動作パターンを変更する。
また、攻撃を検知した場合に自動的に、通常のログイン後とは違うページを表示させる。
まとめ
攻撃者の立場に立つと、上記対策を実行するのが有効な対策と考えられる。
コンフィグ作成時を例にすると、上記対策後、攻撃者はさらにそれを突破する新しいコンフィグを作成しようとする可能性があるが、防御側は新しいページを用意して新たなコンフィグ作成に備えればよい。
攻撃者の事情、つまり"攻撃の成立条件を考えた対策"を考えることにより、
”インテリジェンス主導のDevSecOps”を実現することができる。
感想
パスワードリスト攻撃については、以前ブログで概要を紹介したのですが*1、実際の専用攻撃ツールをデモで見るのは初めてでした。
攻撃ツールに必要な3つの情報も比較的手に入りやすい状況にあり、デモを見る限りGUIで簡単に操作できるようになっていたため、その手軽さが攻撃を助長させていると思われます。
今回紹介された対策は日常的にハッキングサイトで情報を入手する必要があるものの、攻撃成功のための要素を潰していくことで、防御側がイニシアティブを持つようになるという、防御側が優位に立つための数少ない手段であると考えられます。
パスワードリスト攻撃に限らず、攻撃側の手の内を知ることは"守る"ための重要な要素であると再認識したセッションとなりました。