Slide 1

Slide 1 text

  攻撃者の視点で社内リソースはどう見えるのかを ASMで実現する 2025.01.28 hikae

Slide 2

Slide 2 text

  2 Hikaru Egashira PSIRT Red Team hikae

Slide 3

Slide 3 text

  01 freee PSIRTとは?

Slide 4

Slide 4 text

  電⼦稟議 経費精算 債権債務 管理 ⼈事労務 電⼦契約 固定資産 請求管理 会計 ⼯数管理 販売管理 会計‧⼈事労務‧販売管理を核とした 統合型経営プラットフォーム

Slide 5

Slide 5 text

  5 freeeの中のPSIRTの位置付け Product Security Incident Response Team CISO CSIRT corporate security PSIRT product security red team offensive security blue team defensive security 2016-08 virtual team 2018-04 専任 team 2020-04 専任 team

Slide 6

Slide 6 text

6 Shift Left Shield Right Plan Code Build Test Deploy Configure Monitor SDR Response Logging Detect ASM SAST SCA DAST E2E IaC CSPM Vulnerability Assessment 設計レビュー 静的解析 動的解析 動作検証 脆弱性スキャン 脆弱性診断 ログを取る 異常検知 攻撃対象把握 インシデント対応 構成管理 ポリシー検証 DevSecOps 開発と運用にsecurityを埋め込む

Slide 7

Slide 7 text

  7 Defense In Depth 攻撃経路を推測
 外部からの攻撃 WAF、IPS、AntiMalwareで検知 内部からの攻撃 EDR、NGFWで検知 侵入後の水平展開、奪取 Risk Based Authentication CloudTrail、GuardDutyで検知 ログ集約+アラート発砲+解析 前後関係の把握、被害範囲の特定 DevSecOps Scanner で検知

Slide 8

Slide 8 text

8 SaaSに対する一般的な攻撃フロー Weaponization  Delivery  Actions on Objectives Reconnaissance Exploitation  偵察 武器 調達 輸送 攻略 奪取 freeeって会社金持ってそうだな swaggerあるし見てみよ postmanでsampleが動いた API攻略してみよう GCPで攻撃サーバを 動かしてみる company_idを増減したりしてみる user_idってやつも… 情報抜くことに成功した 他社の情報集めて売っちゃお

Slide 9

Slide 9 text

  9 🔥外部ベンダーによるレッドチーム演習の実施 1. 探索フェーズ... 攻撃可能なリソース(Attack Surface)を列挙、目的達成に有効なリソースを選定 2. 侵入フェーズ... 実際に攻撃を施行し目標達成を目指す 社内RedTeamでも同様の取り組みをより深く、継続的に行えるようにすることを目標に設定

Slide 10

Slide 10 text

  🔥fASM Architecture / Design 侵入とその評価を行う内製システム fASM (freee Attack Surface Management) を構築/運用 Subdomain takeover等の脆弱性発見やクローズ予定のサービスのモニタリングを実現 collector (step function)

Slide 11

Slide 11 text

  11 🎯 OSINT / Asset Discovery

Slide 12

Slide 12 text

  12 🦹 Subdomain enumeration for Attacker passive active 網羅率高 網羅率低 DNS bluteforce ENT Virtual Host Fuzzing DNS cache sniffing DNS DB CT log Whois DB query DNSゾーン転送 SecurityTrails Shodan Google Dork SNS まずはASMがどのような技術を利用しているのか調査し我々に必要な機能は何かを理解したい

Slide 13

Slide 13 text

  13 ⚡Subdomain enumerationに効果的なOSS OWASP/Amass 組み合わせて網羅的にサブドメインを列挙する ● bluteforce ● DNS sweep ● NSECゾーンウォーキング ● ゾーン転送 ● CT log ● shodan等のAPI ProjectDiscovery/subfinder 同様に様々な手法を組み合わせてsubdomainを列挙する 公式(projectdiscovery)がgo sdkを公開 もっとも網羅率が高かった

Slide 14

Slide 14 text

  14 PoC版の開発 (2023年開発合宿) 検出漏れが多い(指定のTLD使ってないものやDNS DBに存在しないもの) 発見されたsubdomainがどこで管理しているのかを調べるのに一苦労 Attack Surface Management? はじめました - freee Developers Blog https://developers.freee.co.jp/entry/freee-asm

Slide 15

Slide 15 text

  15 PoC版の開発 (2023年開発合宿) 検出漏れが多い(指定のTLD使ってないものやDNS DBに存在しないもの) 発見されたsubdomainがどこで管理しているのかを調べるのに一苦労 Attack Surface Management? はじめました - freee Developers Blog https://developers.freee.co.jp/entry/freee-asm 調査も視野に入れた もっと効率的な管理をしたい

Slide 16

Slide 16 text

  16 🦹 Subdomain enumeration with all tools passive active Blackbox Whitebox DNS bluteforce ENT Virtual Host Fuzzing DNS DB CT log Whois DB query SecurityTrails Shodan cloud api zone enumeration 自前DNSDB

Slide 17

Slide 17 text

  17 🕵 fASMのサブドメイン列挙アプローチ

Slide 18

Slide 18 text

  18 🕵 fASMのサブドメイン列挙アプローチ ❌

Slide 19

Slide 19 text

  19 🕵 fASMのサブドメイン列挙アプローチ 🦹 同名で登録 Subdomain Takeover 最新のGitHubではverify domain設定が追加されこの単純なアプローチは防がれてます(が他のサービスだと、、、)

Slide 20

Slide 20 text

  20 最近国内で発生したインシデント例 “中央省庁の一部サイト 不正利用のおそれ” 指摘受け修正 https://www3.nhk.or.jp/news/html/20250109/k10014688801000.html 手放したドメインを「パパ活サイト」に転用されたマカフィー、「別の法人により管理されていた」「非常に遺 憾」 https://www.itmedia.co.jp/news/articles/2501/10/news166.html 運用終了したページがSQLインジェクション攻撃を受けた事案についてまとめてみた https://piyolog.hatenadiary.jp/entry/2024/05/28/140527 ● IaCで管理してても削除し忘れで案外残っている ● CNAME先はIaCで管理されてないことが多い ● キャンペーンサイトは特に注意

Slide 21

Slide 21 text

  21 ❓ どう検知する?

Slide 22

Slide 22 text

  22 🔔 Notify / Triage by LLM Ver1. 脆弱性として検知されたらアラート → 誤検知も含めて毎日アラートが出てきて本当に大事なアラートが埋もれる Ver2. 検出結果に差分が出た時にアラート → 脆弱性として発見されたものしか通知しないと、重要な変更を見逃してしまう恐れがある Ver3. LLMでスキャンと差分の情報をコンテキストにトリアージさせる(NOW) → 必要な情報に絞ってサマライズしてくれるので、Slackアラートでトリアージが完結 → 重要な指標に基づきプロンプトチューニング(開発環境は外部アクセスが防がれているべき等) Scanner DynamoDB DynamoDB Stream Triage Slack Block Table 差分 title port aws account…

Slide 23

Slide 23 text

  23 🔔 Notify / Triage by LLM これは、、、?

Slide 24

Slide 24 text

  24 🕵 社内からリソースが消えたことを検知した

Slide 25

Slide 25 text

  25 ⚡Scanning

Slide 26

Slide 26 text

  26 ⚡利用したOSS ProjectDiscovery/httpx PassiveなTechnology detectionを搭載した軽量な HTTP probing/偵察ツール ● Title ● Status Code ● Technology ● DNS Record ● Screenshot ProjectDiscovery/nuclei YAMLで拡張可能なscanner passiveオプションでルート(/)のみにアクセスする ペイロードのみ実行させるなどの安全策がある 公式(projectdiscovery)がgo sdkを公開

Slide 27

Slide 27 text

  27 ⚡httpx PassiveなTechnology detectionを搭載した軽量なHTTP probing/偵察ツール 公式(projectdiscovery)がgo sdkを公開

Slide 28

Slide 28 text

  28 ⚡nucleiを用いたsubdomain takeover検知 https://github.com/projectdiscovery/nuclei-templates/blob/main/http/takeovers/github-takeover.yaml

Slide 29

Slide 29 text

  29 Architecture

Slide 30

Slide 30 text

  30 CTEMフレームワーク 1. スコープ設定(Scoping)... freeeが管理する全てのリソース (責任境界の内側) 自社に影響を及ぼす資産や外部サービス(SNS等)のうち、どの範囲にCTEMを適用させるかを組 織のビジネス方針などに従って設定 2. 発見(Discovery) … クラウドリソース(AWS/Google Cloud) のenumeration 設定したスコープから、その範囲内のIT資産とそれらのリスク概要を検出 リスク概要には、攻撃に つながる脆弱性から設定ミス、未把握の資産などが幅広く含まれる 3. 優先順位設定(Prioritization) … httpx/nuclei scanner, 差分検知 / LLMリスク評価 発見されたリスクに対して、緊急度や組織への影響などのリスクレベルに基づいて優先順位を設 定 4. 検証(Validation) … DAST, RedTeamによる検証 実際に攻撃者目線での評価・分析(ペネトレーションテスト等)を行うことで、それぞれの脅威がどの ように悪用されるか、現状の対策が十分であるかについて検証 5. 動員(Mobilization) … 場合によって異なる 検証結果から、組織内の連携体制の整備やエスカレーションを標準化させるなどの対応 https://www.nri-secure.co.jp/glossary/ctem https://xmcyber.com/glossary/continuous-threat-ex posure-management-ctem/

Slide 31

Slide 31 text

  🔥fASM Architecture / Design collector (step function)

Slide 32

Slide 32 text

  CSPMのためのService Inventoryとしての活用 ログの保存要件、C1WSなど外部サービスが適切に設定されているかといったCSPMにfASM のDiscovery機能を利用

Slide 33

Slide 33 text

  33 工夫: イベント駆動で幅広いシステムで利用できる仕組みに CollectorではAWSの生データしか基本扱わない、 Queueの先でお互いが必要とする情報をenrichする方式を採用、 RedTeam, BlueTeamそれぞれが必要とする情報収集を依存するcollector部分の改変なしに実現できる Hashicorp内製ASM「TrashPanda」 https://www.youtube.com/watch?v=78jl_1oeBVg

Slide 34

Slide 34 text

  34 攻撃者の視点から見ると ● 攻撃対象は、OSINTで簡単に見つけられる ● 攻撃対象の前提知識なしで実施できるSubdomain takeoverは狙いやすい ● 公開したくない開発環境は、WAF(ネットワーク層)でBlockする ○ Basic認証(アプリ層)に頼らない ● どんな小さなリソースの変化でも、重要な情報となる ○ 継続的なASMのスキャンによって、違いにすぐに気づける ● クラウドの情報を収集する仕組みを作っておくと、楽に列挙できる ○ VPC IP Address Managerは便利 ● nucleiのYAMLに慣れると、毎日作成されるCVEルールの一括点検を楽に行える

Slide 35

Slide 35 text

  35 補足資料1: Zone Enumeration with Cloud APIでわかる情報 ドメイン名 Resource AWS Account Id AWS Account Name A Record a-assets.freee. co.jp Cloudfront 123456789 team-a 172.17.xxx .xxx

Slide 36

Slide 36 text

  36 補足資料2: Scannerでわかるようになる情報 ドメイン名 Resource AWS Account Id AWS Account Name A Record Title StatusCode Technology a-assets.freee. co.jp Cloudfront 123456789 team-a 172.17.xxx .xxx freeeXXX 200 Amazon CloudFront, Amazon S3, Amazon Web Services

Slide 37

Slide 37 text

  37 補足資料3: CSPM/Service Inventoryでわかるようになる情報 ドメイン名 Resource AWS Account Id AWS Account Name A Record Title StatusCode Technology cloudfront _logging_ enabled wafcharm_ enabled a-assets.freee. co.jp Cloudfront 123456789 team-a 172.17.xxx .xxx freeeXXX 200 Amazon CloudFront, Amazon S3, Amazon Web Services true true

Slide 38

Slide 38 text

No content