アタックサーフェスのマッピング - パート1
アタックサーフェスのマッピングは、大規模組織の多くのCISOにとって最大の悩みの種となっています。本稿では、強力かつ正確なアタックサーフェス検出と監視を実現するためにOstorlabが用いている手法とツールを解説します。
ランサムウェア攻撃のほぼ半数は、脆弱なインターネット公開サービスを悪用して組織への最初の足がかりを得ています。
ランサムウェアでない場合でも、攻撃者はインターネットに公開されたマシンを侵害し、暗号資産のマイニングやデータ窃取、 DDoS攻撃への参加、あるいは今後の攻撃の中継地点として利用します。

クラウドの導入とポストコロナ時代において、組織が現在直面している大きな問題は、複数のクラウドやSaaSプロバイダーに またがってインフラの複雑さが増していることです。
組織の攻撃対象範囲を把握することは困難な作業であり、大規模組織全体のCISOにとって最優先事項となっています。 中には、未知のクラウドやSaaSのデプロイを特定するために、クレジットカードの購入履歴を追跡するといった手法に 頼る者さえいます。
本稿では、Ostorlabの新しいアタックサーフェス検出機能の技術的な実装を解説します。この機能によって、把握されている 組織インフラが平均して400%以上増加するという成果が得られています。
これには、廃止されずにあるいは移行されずに残っていた、忘れ去られた、あるいは見落とされた買収先のインフラが含まれます。 また、内部再編や人員の入れ替わりの際に見失われた、未把握の開発・本番環境のマシンも含まれます。
これらの環境は、脆弱な認証情報、ドメインの乗っ取り、リモートコード実行の脆弱性、あるいは不適切なCookieセッション スコープによるサービスのセッションハイジャックといった、クリティカルな脆弱性を抱えていました。
アタックサーフェスとは
まず、組織のアタックサーフェスを構成するものは何でしょうか。これには、IPアドレス、ドメイン名、ソースコードリポジトリ、 SaaSサービスのアカウント、モバイルアプリケーション、APIエンドポイントなど、組織が所有するあらゆるものが含まれ、 その種類は多岐にわたります。
これらのいずれもが、漏えいした認証情報からRCEの脆弱性、脆弱な認証情報、ドメイン乗っ取りの脆弱性に至るまで、 攻撃者が組織を侵害するために利用でき、実際に利用されてきました。
アタックサーフェスの手法は、一般的に行われているようにドメイン列挙に限定され、問題のごく一部にしか目を向けていません。
では、どうやってアタックサーフェスをマッピングするのか
攻撃者は誰も見ていないところを探すのが大好きです。バグバウンティの公開コンテンツを見れば、買収先のリスト化、 Waybackマシン、逆引き、アナリティクスIDの検索など、こうした死角を見つけるために使われる手法の豊富さに驚かされるでしょう。 その種類は尽きません。
おかしなことに、しばしば見つかる環境はバグバウンティのスコープ外にあり、攻撃者が被害を与える余地を十分に残しています。
網羅的なカバレッジを実現するため、Ostorlabはあらゆる手を尽くして、インターネットのメッシュとその隠れたつながりから なる10億規模のグラフを生成しています。
これらの一部は、Subfinder、Amass、Nmap、Wappaylzer、Whatweb、Dnsxといったオープンソースツールとして利用でき、 さらに当社は、これらのツールを相関させて真に比類のないカバレッジを提供するのに役立つ新しいツールもいくつか オープンソース化しています。
これらのツールを組み合わせて使うことで、次が可能になります。
- ブルートフォースによるサブドメイン列挙
- 公開リソースを用いたサブドメイン列挙。透過的な証明書データベース、マルウェアのドメイントラッカー、公開の
- クローラーのリスト、インターネットアーカイブなど
- ドメインのWhoisマッピングと逆引き
- DNSルックアップと逆引き
- 買収先のリスト化
- IPのWhoisとBGP ASNルックアップ
- アナリティクスIDの収集と相関
- 技術スタックの収集と相関
- IPのジオロケーションと距離の相関
- モバイルアプリのリスト化とリンク抽出
これらの手法により、常に成長を続けるグラフノードが数十億規模で生成され、より多くのつながりやドメイン、そしてその隠れた リンクが検出され、中には数百万もの所有が確定したアセットをもたらすものもあります。
これらの手法を組み合わせて、Nuclei、Openvas、tsunamiといったオープンソースのセキュリティスキャンツールと一緒に 使いたい場合は、OstorlabによるDNS列挙とIP解決を行い、その結果をお好みのネットワークツールやスキャンツールへ自動的に 流し込むために、次のエージェントグループ定義を利用できます。
kind: AgentGroup
description: Grouping of 6 agents.
agents:
- key: agent/ostorlab/nmap
- key: agent/ostorlab/tsunami
args: [ ]
- key: agent/ostorlab/openvas
args: [ ]
- key: agent/ostorlab/nuclei
oxo scan run --install -g agent_group.yaml ip 8.8.8.8 8.8.4.4
また、これらのツールの実行インスタンス数を増やすことで、より高速なカバレッジを得るよう調整することもできます。
kind: AgentGroup
description: Grouping of 6 agents.
agents:
- key: agent/ostorlab/nmap
replicas: 10
これらのエージェントのほとんどは、デフォルトのNmapポートを設定したり、DNSのブルートフォースに使うワードリストを 変更したりするなど、挙動を調整するための引数を受け付けます。
kind: AgentGroup
description: Grouping of 6 agents.
agents:
- key: agent/ostorlab/nmap
replicas: 10
args:
- name: ports
type: string
description: List of ports to scan.
value: '22,443,80'
次のパートでは、既知のアセットの検出精度を高めるために用いたアルゴリズムの反復改善、この規模でこれらのアルゴリズムを 効率的に適用するための効率的なデータストレージ、そして最後に、特に非常に大規模な組織において、このデータを人間に 理解しやすい形式で可視化するという課題について解説します。