2013年7月26日金曜日

CentOSでwireplay



やろうとしていた内容がファジングと呼ばれるテスト手法だったことを初めて知りました。
まあ、はやりの呼び方なので何でも良い話ですが。。。。

今回は「wireplay」の準備です。


対象OS: CentOS5.9

wireplayとは

tcpreplyayはパケットを再送するのに対し、
wireplayはTCP などのように一連の流れがあるトラフィックを再現するツールらしい。


入手先

SVNをインストールしている端末でリポジトリブラウザのURL指定をして
下記参照できればチェックアウト。
(WindwosならTortoiseSVNなどもある)

 http://wireplay.googlecode.com/svn/trunk/


ダメなら、ブラウザで1つ1つファイルを取得してください。
(階層も保持したまま)


入手するファイルの一覧はこちら



インストール

1.依存関係があるソフトのインストール

ruby
ruby-dev
libruby
libpcap
libpcap-dev

 ※libnetも必要らしいですが、コンパイル時に使わない設定とします。

インストール確認
# rpm -qa | grep ruby
ruby-libs-1.8.5-27.el5
ruby-devel-1.8.5-27.el5
ruby-ri-1.8.5-27.el5
ruby-1.8.5-27.el5
ruby-rdoc-1.8.5-27.el5
ruby-irb-1.8.5-27.el5

# rpm -qa | grep libpcap
libpcap-0.9.4-15.el5
libpcap-devel-0.9.4-15.el5


2.wireplayのインストール

ダウンロードしたファイルを、「/root/tmp/wireplay」に配置しているものとする。

# cd /root/tmp/wireplay/libnids-1.23
# ./configure --enable-shared --disable-libglib --disable-libnet


/root/tmp/wireplay/libnids-1.23/src/killtcp.cの修正(viなどで変更)

121 行目
 変更前:#elif
 変更後:#else

libnids-1.23のmake
# make


/root/tmp/wireplay/Makefileの修正(実機を確認の上、変更)
3行目
 変更前:RUBYINC := /usr/lib/ruby/1.8/i486-linux
 変更後:RUBYINC := /usr/lib/ruby/1.8/i386- linux *1

5行目
 変更前:LDFLAGS := -ggdb -L$(ROOT)/libnids-1.23/src/ -lnids -lpcap -lnet -lruby1.8
 変更後:LDFLAGS := -ggdb -L$(ROOT)/libnids-1.23/src/ -lnids -lpcap -lnet -lruby


 *1 対象パスにlsコマンドを実行してみて、実際にファイルが存在するか確認
 *2 Ubuntuなどはそのままでもいけるらしい。(導入したRPMパッケージ が悪かった?)

wireplayのmake
# make
# make install


インストールパスが「/opt/wireplay/bin」なので、パスを通すか、パスが通っているところにリンクを張る。

リンクを張る場合の例:
# ln -s /opt/wireplay/bin/wireplay /usr/bin




使用例

自ホストにHTTP(80)のセッションを再現

# wireplay -r client -K -t 127.0.0.1 -p 80 -F dump.pcap





インストール時に困ったエラーたち

1.libnids-1.23のconfigureでエラー

オプション無し
# ./configure
~省略~
checking for GLIB... configure: error: Package requirements (glib-2.0 >= 2.2.0) were not met.
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively you may set the GLIB_CFLAGS and GLIB_LIBS environment variables
to avoid the need to call pkg-config.  See the pkg-config man page for
more details.

libglibのエラーが出るので使用しないようにオプション指定
# ./configure --enable-shared --disable-libglib
~省略~
skipping glib2 support
checking for libnet... Working libnet not found; get it from www.packetfactory.net/projects/libnet and reinstall
configure: error: libnet

libnetがインストールされていてもエラーが消えないので「--disable-libnet」を付加することにした。



2.wireplayのmake時にrubyがインストールされているのにエラー

# make
gcc -o wireplay src/wireplay.o src/log.o src/msg.o src/whook.o src/whook_rb.o -ggdb -L/root/tmp/wireplay/libnids-1.23/src/ -lnids -lpcap -lnet -lruby1.8
/usr/bin/ld: cannot find -lruby1.8
collect2: ld はステータス 1 で終了しました
make: *** [wireplay] エラー 1

rubyがインストールされていてもエラーが解消されない場合、Makefileのライブラリ名が違うのかもしれない。
その場合、Makefileの「LDFLAGS」で指定している文字列を修正。

 変更前: -lruby1.8
 変更後: -lruby




0 件のコメント:

コメントを投稿