雑多なこと

■ sinetd/snetcat/stelnetdでホスト名指定ができない

sinetd/snetcat/stelnetdではホスト名は使えません.IPアドレスしか使えません. (たとえば「localhost」でなく,「127.0.0.1」のように指定する必要があります)

本当は gethostbyname() を通すことでホスト名指定も可能にできるのですが, CentOS環境で gethostbyname() を使うとスタティックリンクできず 他環境で使いたいときに共有ライブラリの相性問題など発生して弊害あるので, gethostbyname() は使わずにIPアドレスを直接指定する,ということにしました. (検証で使うぶんには,共有ライブラリの相性問題起きることよりも ホスト名使えないほうが実害少ないと判断)

Makefile中の以下のオプションを有効にすることで gethostbyname() を有効化して ビルドすることができます.ホスト名を使いたい場合には,これでビルドしなおして ください.

USE_GETHOSTBYNAME

■ GDBでデバッグする

カレンダープログラムは-gオプションつきでコンパイルしてあるため, GDBでC言語ベースでのデバッグができます.

C言語ベースでのデバッグをしたい場合には,C言語ソースコードが必要です (C言語ソースコードが無くても,アセンブリベースでデバッグすることは可能です). また対応するC言語ソースコードの場所は,実行ファイル中にフルパスで格納されて いるため,C言語ソースコードの置き場所は,コンパイルしたときと同じディレクトリ 位置にする必要があります.

bof-sample-1.1 以降は,以下に展開してください.(/home/user 直下) このように展開しておくと,GDBで実行ファイルcalendarをデバッグする際に, C言語ソースコードであるcalendar.cが適切に参照されるようになります.

% cd /home/user
% unzip bof-sample-1.1.zip

■ システム標準のcat/netcatを利用する

検証用に簡易cat(scat),簡易netcat(snetcat)が付属されていますが, これらはシステム標準の cat や netcat でも検証可能だったりします.

exploit/Makefile の CAT / NETCAT の定義を変更することで, システム標準の cat / netcat を利用することもできます.

ただし検証用の簡易 cat は,ファイルの間に短いウェイトを入れてあり, ファイルの転送(バックドア用の簡易telnetdの転送)などは,このウェイトが無いと うまくいかないようです.(catコマンドの実行前に転送が始まってしまうため?)

うまくいかない場合は,添付の簡易cat/簡易netcatを利用してください.

なお簡易netcatに関しては,Windowsから検証する際に,通常のnetcatを使おうとすると セキュリティ的に危険なソフトウェアとしてセキュリティソフトが検知してしまう 場合があるため,代替として添付しているという意味もあります.

■ クロス環境で検証する

例えばネットワーク経由で,脆弱性サーバはCentOS上で起動して, ExploitはFreeBSD側から行いたい場合などは,注意が必要です. 上記の場合は,以下のようにしてください.

■ Windows用ツールのビルド

toolsディレクトリにある簡易cat/簡易netcatは,Windowsでも利用できます. またWindows用にビルドした状態で配布しています. これらを利用することで,Windowsから検証することも可能です. (ただし検証のみです.サーバを動作させることはできません)

Windows用ツールは,MinGWでビルドしています. tools/Makefileの以下のオプションを有効にすることで,Windows用にビルドされます.

USE_MINGW