ngrepでPOSTデータを監視する

ngrepはネットワークを流れるパケットをキャプチャし、grepコマンドの様に特定の条件で出力を絞り込むことができるコマンド。
libpcapというネットワークトラフィックをキャプチャするライブラリを使用している。
同じくlibpcapを使用しているtcpdumpでも同様のことができるが、出力結果が見にくい。ngrepの方がより人間にやさしい出力結果になる(と思う。)

インストール

# 必要なライブラリをインストール
yum install libpcap libpcap-devel

# githubからソースをダウンロード
cd /usr/local/src/
git clone https://github.com/jpr5/ngrep.git

# ビルド
cd ngrep/
./configure
make & make install

ネットワークインターフェース、ポート番号指定してキャプチャする。

ngrep -d eth0 -W byline port 80

試しにBASE64エンコードツールのPOSTデータを確認してみる。 http://uchy.me/tools/convert_base64.html

リクエストヘッダ、レスポンスヘッダの間に「before=admin%3Apasspass&after=&actionType=encode」と確認できる。 アクセス元IPアドレスはマスクしてます。

# 出力結果

############
T XXX.XXX.XX.XX:63057 -> 150.95.132.55:80 [AP] #136
POST /tools/convert_base64.html HTTP/1.1.
Host: uchy.me.
Connection: keep-alive.
Content-Length: 48.
Cache-Control: max-age=0.
Origin: http://uchy.me.
Upgrade-Insecure-Requests: 1.
Content-Type: application/x-www-form-urlencoded.
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36.
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8.
Referer: http://uchy.me/tools/convert_base64.html.
Accept-Encoding: gzip, deflate.
Accept-Language: ja,en-US;q=0.9,en;q=0.8.
Cookie: JSESSIONID=806498129CC3235D8DCBEC0DE55DD7E4; _ga=GA1.2.1796938929.1524374720; _gid=GA1.2.1163621694.1525313613.
.
before=admin%3Apasspass&after=&actionType=encode
##
T 150.95.132.55:80 -> XXX.XXX.XX.XX:63057 [AP] #138
HTTP/1.1 200 200.
Date: Thu, 03 May 2018 02:15:14 GMT.
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips mod_fcgid/2.3.9.
Content-Type: text/html;charset=UTF-8.
Vary: Accept-Encoding.
Content-Encoding: gzip.
Content-Length: 1682.
Keep-Alive: timeout=5, max=100.
Connection: Keep-Alive.
.

スポンサーリンク