はじめに
― なぜ今、Browser Automation が攻撃者の武器になるのか
Red Team やペネトレーションテストにおいて、
これまで主戦場だったのは Intercepting Proxy(Burp Suite、ZAP など)でした。
- リクエストを書き換える
- パラメータを改ざんする
- 暗号化ロジックをリバースする
しかし、近年の Web アプリケーションはこうした手法を前提で潰しに来ています。
- クライアントサイド暗号化
- 難読化された JavaScript
- 動的に生成されるトークン
- 複雑な UI フロー
- Bot / Automation 対策
ここで登場するのが ブラウザ自動化(Browser Automation) です。
従来手法の限界:
「アプリケーションと戦う」アプローチ
Intercepting Proxy を使う場合、我々は次のことを行います。
- JavaScript を解析する
- 暗号化処理を理解する
- 同じ処理を自前で再実装する
これは言い換えると、
「フロントエンドアプリケーションと正面衝突する」
という戦い方です。
もちろん可能ではありますが、
- 時間がかかる
- 修正に弱い
- 実装ミスが出やすい
という致命的な弱点があります。
ブラウザ自動化の発想転換
「壊す」から「使う」へ
ブラウザ自動化は、発想が真逆です。
アプリのロジックを解析しない。
そのまま実行させる。
- JavaScript → ブラウザが実行
- 暗号化 → ブラウザが実行
- DOM 操作 → ブラウザが実行
Red Teamer はただ:
- 入力する
- クリックする
- 表示された結果を取得する
これだけです。
なぜ Red Team にとって強力なのか
① クライアントサイド暗号化を「無視」できる
たとえば:
- パスワードが JavaScript で AES 暗号化される
- トークンが難読化された関数で生成される
Intercepting Proxy では:
- JS を解析
- ロジックを再実装
ブラウザ自動化では:
- フォームに入力
- ボタンを押す
- 暗号化後の値を取得
暗号を壊していない。
暗号を“使わせている”。
これは非常に重要な違いです。
② CAPTCHA やクライアント制御の回避
ブラウザ自動化は 「実際のユーザ操作」 を再現します。
- マウス操作
- キーボード入力
- DOM イベント
- 実ブラウザ環境
そのため:
- 単純な bot 判定
- クライアント側バリデーション
- 一部の CAPTCHA フロー
が無力化されるケースがあります。
特に 既存のブラウザコンテキストを再利用 できる場合:
「信頼済みブラウザ」として扱われる
ことすらあります。
③ マルチステップ攻撃が自然に書ける
現代の攻撃は一発では終わりません。
- ログイン
- 画面遷移
- 設定変更
- 特定 UI 操作
- トークン取得
これを HTTP レベルで再現するのは地獄です。
ブラウザ自動化なら:
click → wait → input → submit → extract
人間の操作をそのままコード化できます。
④ 動的・描画後データへの直接アクセス
重要なデータは「通信」ではなく「描画後」に現れることがあります。
- JavaScript 実行後に生成されるトークン
- DOM に一瞬だけ現れる値
- lazy load されたデータ
ブラウザ自動化は:
- DOM を直接読む
- JavaScript コンテキストを持つ
- 実行後の状態を取得できる
つまり、
画面に一度でも表示されたものは、全て奪える
という世界です。
ブラウザ自動化ツール比較(Red Team 視点)
| ツール | 特徴 | 注意点 |
|---|---|---|
| Playwright | 高速・モダン・ステルス性能高 | 学習コストやや高 |
| Selenium | 枯れている・情報量豊富 | やや遅い |
| Puppeteer | JS ネイティブ・Chrome 最適 | Chrome 中心 |
| Pyppeteer | Python から操作可能 | 近年 deprecated |
| Power Automate | 人間操作に近い | 精度・再現性低 |
おすすめ:Selenium と Playwright
なぜ Selenium と Playwright を使うのか
-
Selenium
- 学習しやすい
- 環境を選ばない
- 情報が多い
-
Playwright
- 最新 Web との相性が良い
- 高速
- Red Team 向きの API が多い
まとめ
Intercepting Proxy が
「通信を支配する武器」 だとすれば、
ブラウザ自動化は
「ユーザになりきる武器」 です。
現代の Web アプリケーションにおいて:
- ロジックはクライアントにある
- セキュリティ判断もブラウザにある
だからこそ、
Browser Automation は Red Team の必須スキル
になりました。