みどりのさるのエンジニア

ローカルプロキシツールの比較

2021年06月30日

セキュリティ診断で遊ぶために、4つのローカルプロキシツールを比較検討してみました。

やりたいこと

特定サービスのJSONのAPIレスポンスの一部を改ざんする

※ 攻撃対象のサービスは自身が開発しているサービスの開発環境に対して実施をしています。

比較するツール

ツールは全て無料の範囲で比較しています。お試し期間で有料版が使える場合は、お試し期間の有料版の機能でツールを使用した感想を書いています。

比較方法は上に挙げた「APIレスポンスの改ざん」を試した時の肌感で評価しているので、個人の趣向が非常に強く出ています。

Fiddler(Fiddler Everywhere)

元々 Fiddler は Windows のみ対応のツールだったが、2020年頃に Fiddler Everywhere が MacOS, Linux にも対応したツールとして新たにリリースされた。2ヶ月ほどお試し期間としてPRO版(有料)が利用可能だった。

PRO版の料金は月額課金で $12/月 (年契約だと 10$/月)

良い点

  • UIが見やすい
    • レスポンスのタイプが一目で確認しやすい
    • レスポンスの書き換えのルールなどが直感的に登録できる(PRO版)
  • リクエストの一覧をフィルタリングができる
    • キーワード と Headerの値 で絞り込みが可能
  • SSL証明書のインストールやプロキシの設定の手間がない
    • 気づいたら使えるようになってた

悪い点

  • 無料版だとルールで設定できるアクションに制限がある
    • レスポンスの書き換えも無料版だと出来ない(PRO版なら可能)
    • 有料版でルールのアクションが全て開放されいてる状態だと使いやすかった
  • サインインが必須
    • Google認証ができるのでアカウント発行の手間はなし

Burp Suite

有料版ならセキュリティ診断ツールとして色々な機能が使えそうだった。
SQLインジェクションの診断とかもできそう?だった。(試してないので正確なことは分からない)

良い点

  • 自動でレスポンスの書き換えができる
    • 部分文字列一致での置換ができる
  • レスポンスを書き換えた場合にオリジナルのレスポンスボディと変更後のレスポンスボディの両方が確認できる
  • 日本語の情報が多い
  • ステータスコードやレスポンスタイプなどによる柔軟なフィルタリングができる

悪い点

  • UIが見づらい
  • 慣れや好みの問題がもありそう
  • 自分がJavaのGUI実装がデザインが好きでないので、その影響が大きい
  • 無料版だとキーワードのフィルタリングができない
    • 有料版だと可能
  • 有料版が $399/年 とかなり高い
    • プライベートやちょっとした開発での利用用途としては辛い
  • 自分でPCのネットワーク設定でプロキシ設定をやる必要がある
  • SSL証明書のインストールが少し手間
    • safariで特定のURLを開いて証明書をダウンロード
    • 証明書をキーチェーンに追加
    • 証明書を常に信頼するように変更

Charles

無料版は30分に1度の頻度で強制終了する。

良かった点

  • UIが見やすい
    • リクエストがドメインでグルーピングされるので、ドメイン単位でリクエストを見つけやすい
  • レスポンスの書き替えルールが簡単に登録できる
  • 料金が安い
    • $50/license
    • ライセンス購入時のメジャーバージョンしかアップデートができない
    • 新しいメジャーバージョンのライセンス購入は定価の40%OFFで購入可能

悪かった点

  • フィルタリング機能が弱い
    • キーワードでしか絞り込みができない
  • 設定画面の文字入力で日本語入力中に文字化けが発生して入力中の文字が見えない
    • 確定して入力は完了するので、日本語の利用は可能

mimproxy

OSSのローカルプロキシツールで、他のツールと比較して CLI で使えるのが大きな特徴

Homeblew でインストールが可能

$ brew install mitmproxy

ブラウザで Web Interface を使う場合は、次のコマンドを実行して http://localhost:8081 にアクセスする。

$ mitmweb

HTTPSの通信をキャプチャする場合は ~/.mitmproxy/mitmproxy-ca-cert.cer をキーチェーンの証明書に登録して信頼する。

良かった点

  • 無料
  • Pythonでスクリプトを書けるので拡張がしやすい

悪かった点

  • メインはCUIツールのなので覚える事が多く学習コストが高い
    • WebインターフェースもあるがUIがシンプルな作りなので、操作性は高くない
    • 覚えてしまえばCUIで操作が完結するので合う人には凄い合いそうなイメージ
  • レスポンスの書き換えも少しだけ書き方にクセがある
    • /~s/xxxx/yyyy みたいな形式で modify_body に追加する
    • ~s は mitmproxy の filter expression でレスポンスのみを対象とするフィルター

結論

ツール 感想
Fiddler Everywhere UIは一番好き。年1万円の出費が許容できるなら検討する価値はありそう
Burp Suite 料金が高すぎるので本当に必要な場面が出てこない限りは使わない
Charles 一番バランスが良かった。
拡張性もありそうなので、お手軽にプロキシツールを使うなら、コレが一番良さそう。
我慢すれば無料のままでも使える
mitmproxy 使い方を覚えれば簡単なことは一通りできるので、完全無料でツールを探すならコレを使う。
拡張性が高いのは魅力的