Skip to content

使ってみる

funa-tk edited this page Oct 1, 2019 · 1 revision

起動してみよう

をクリックします。

すると、ダイアログが表示されます。

前回のパケットデータを全てクリアし初期状態で起動する場合は いいえ を、前回のパケットデータを残し続きから起動する場合は はい を選択します。(前回のパケットデータを残した場合でも、右クリックメニューから全てクリアできます)

すると PacketProxy が起動します。

HTTP通信をみてみよう

Options タブを開き、Listen Ports に下記の設定を追加します。

この設定はローカルホストの8080ポートでプロキシサーバを起動するという意味になります。

ローカルホストの8080ポートに対してプロキシ通信するようにブラウザを設定し、ブラウザから http://example.com/ にアクセスします。

すると、PacketProxyでHTTP通信がみられます。

HTTPS通信をみてみよう

前準備として、下記の手順でPacketProxyのCA証明書をOSが管理する証明書リストに追加します。

  1. PacketProxyのCA証明書をexportします。PacketProxyの options タブの最下部にあります。
  2. exportしたCA証明書を、OSが管理するCA証明書リストにインストールします。

CA証明書をインストールできたら「HTTP通信をしてみよう」と同じように Options タブの Listen Ports の設定をします。

プロキシ設定をしたブラウザから https://example.com/ にアクセスします。

すると、PacketProxyでHTTPS通信がみられます。

TCPのバイナリ通信をみてみよう

Telnetの通信をPacketProxyを使ってみてみます。

簡易的なTelnetサーバとして、localhostの8888ポートでサーバを立ち上げます。

$ nc -k -l 8888

PacketProxyの Options タブの Servers 設定で、このサーバを登録します。

Encodeモジュール として指定した Sample はサンプル用の何も処理をしないエンコードモジュールです。

PacketProxyの Options タブの Listen Ports 設定でポートを登録します。

Type として FORWARDER を使うことで、7777ポートに到着したパケットを、何も加工せずに、そのまま転送先サーバ(localhostの8888ポート)に転送することができるようになります。

最終的な Options 設定は下記のようになります。

準備が整ったので、telnetでlocalhostの7777にアクセスして hello と打ってみます。

$ telnet -4 localhost 7777
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
hello

PacketProxyでTCPのバイナリ通信が見られるようになりました。

フィルタしてみよう

ヒストリ画面に表示されたパケットをカラムや全文検索でフィルタできます。

利便性のため、リクエストとレスポンスが対になるように管理しており、どちらか片方がマッチすると、対となる方もマッチするようになっています。

フィルタの動作を確認するために、example.com、google.com、github.comにアクセスしてみます。

大量のパケットが表示されるので、このままだと見にくいです。そのため、下記の通り、googleのみでフィルタしてみます。

リクエストカラムにgoogleというキーワードを含むパケットのみが表示されました。

その他にも、下記のようなフィルタができます。

  • request == google || request == github
    • googleまたはgithubが含まれる
  • request == google && type == image
    • googleかつタイプがimage
  • request == google && full_text == secret
    • googleかつデータにsecretが含まれる

カラム名として使えるのは下記になります。

id, request, response, length, client_ip, client_port, server_ip, server_port,
time, resend, modified, type, encode, group

全文検索として使えるのは下記になります。

full_text

再送してみよう

単純な再送

ヒストリ画面から再送したいパケットを選択し、画面下の send をクリックすると再送できます。もしくは、右クリックメニューから send を選択することでも再送できます。

Resenderを利用した再送

まず、ヒストリ画面から再送したいパケットを選択し、画面下の send to resender ボタンをクリックして Resender タブにパケットをコピーします。

すると Resender タブに下図のようにパケットがコピーされます。

適宜パケットを編集し、画面下の send ボタンで再送します。

Diffをとってみよう

Diffを使うことで、2つのパケットの差分を表示できます。

まず、1つ目のパケットをヒストリ画面から選択し、画面下の mark as orig でマークした後、2つ目のパケットをヒストリ画面から選択し、画面下の diff! をすると、Diff画面が開きます。

Character based にチェックを入れることで、文字単位でのDiffもできます。

DNS書き換えによるフォワードをしてみよう

DNS書きかえとは

スマートフォンのアプリの通信をPacketProxyでみるとき、アプリがプロキシ設定を参照してプロキシ経由での通信をしてくれる場合は、PacketProxyが動作しているPCをプロキシとして設定すれば良いので簡単です。

しかし、プロキシ設定を無視して直接サーバと通信するアプリの場合は、通信をみられません。

その場合には、PacketProxyのDNS書き換え機能を利用することで、通信をみられるようになります。

DNS書きかえしてみる

https://example.com への通信を、プロキシを利用せずにDNS書きかえ機能を利用してみてみます。

  1. Options タブの Serverexample.comサーバ の設定をする

    • 忘れずに DNS偽装の対象とする にチェックを入れます
  2. Options タブの Listen Ports でListenポートの設定をする

    • TypeSSL_TRANSPARENT_PROXY を指定することで、443ポートに到着したSSLパケットのSNIフィールドからサーバを取得し転送できるようになります。
  3. DNSサーバを起動する

    • プライベートDNSサーバを起動する にチェックを入れます
  4. 最終的な設定は次の通りとなります

  5. スマートフォンのネットワーク設定で、DNSサーバとしてPacketProxyが動作しているPCを指定する

    • 誤ってプロキシ通信になってしまうことを防ぐため、プロキシは「なし」に設定しておいてください。
  6. スマートフォンのブラウザで https://example.com/ にアクセスする

    • DNS書き換えによって example.com の通信をみることができます。