📮

ローカルプロクシってなに?

2022/12/07に公開

はじめに

この記事はあくあたん工房 Advent Calendar 2022の6日目の記事です。
本命のネタが間に合わなさそうなので、 そもそもローカルプロクシってなに?という話をしていこうと思います。
この記事で扱うローカルプロクシはCTFやHackTheBox等に使用されるものを指します。

ローカルプロクシは何をするの?

ローカルプロクシはその名の通り、ローカル(大抵は使用者のコンピューター上)で動かすプロクシなのですが、それにいくつかの機能を加えたものです。ツールによって違いがありますが、ほとんどのツールに経由する通信のログをとる、通信の内容を書き換える、通信の内容を記憶して繰り返す等の機能が備わっています。

しかし、これらの機能は一見ブラウザの開発者ツールなどで実現できるように思えますが、どのようなメリットがあるのでしょうか?

ローカルプロクシのメリット

通信ログから通信を再現したり、書き換えて送信したりできる

Burp SuiteにはRepeaterという名前でこの機能が実装されています。通信ログの一覧から任意の通信を右クリックしSend to Repeaterを選択すると、その通信の内容がRepeaterタブに送られ、編集できるようになります。同じ画面内のSendボタンを押すと、編集した内容で通信を送信されます。

Chromeの開発者ツールでもCopy as cURLでコピーしたコマンドを実行する等の方法で同じことを実現できますが、Repeaterの方が簡単です。

Firefoxの場合はもう少し簡単で、右クリックして編集して再送信をクリックすれば、その通信の内容を編集して再送信できます。ただし、HostやCookie、Refferer等はブロックされていて普通には編集できません。同じKeyで上書きすれば実は書き換えられるのですが、やはり手間です。

送信途中のリクエストを改ざんできる

Interceptというまんまな名前でこの機能が実装されています。やっていることは中間者攻撃と同じです。改竄したリクエストのレスポンスが通常の通信と同じようにクライアントまで帰っていくので、先述したRepeaterと違いクライアントの挙動を観察することができます。

これと同じようなことをChromeで実現する方法は見つけられませんでした。Firefoxだと拡張機能で実現できるらしい…… が、試せていません。

あらゆるクライアントからの通信を扱うことが出来る

もちろん対応しているプロトコルの範囲内ではありますが、ローカルプロクシはクライアントがどのブラウザでもcurlでも同じように扱うことが出来ます。設定次第で仮想マシン内部からの通信やスマホからの通信さえ扱えます。gobusterなどのブルートフォース攻撃ツール(Webサーバー上のファイルを探索したりするために、リクエストを発生させるツール)の通信を眺めるといった使い方もできます。(気をつけないとえらいリクエストの量になるけど……)

おわりに

ローカルプロクシの簡単な紹介をしてみました。筆者が主に使うInterceptとRepeaterしか紹介できませんでしたが、他にも色々な機能があります。ぜひ使ってみてください。
本命のローカルプロクシ比較記事はあくあたん工房 Advent Calendar 2022の17日目に公開予定です。乞うご期待!

Discussion