Mac OS X でdsniffを入れた時つまづいたので解決方法をメモ

brew install dsniff

これではbrewや、brewのgitを最新にしても出てこなくて、githubからdsniffのソースを取得して自前でコンパイルしてやる必要があった。kali linuxなどでは一発で入るんだろうがMacだと微妙にパスの違いなどで一発ではコンパイルが通らなかったので、Macでdsniffを試してみたい場合、こうしたらうまくいったという方法を書いておきます。

dsniffとは、ARPスプーフィングなどのLAN内のパケットを収集したり、他の接続ユーザーの通信を傍受したりするツールです。一見攻撃ツールのような言い回しで危険な香りがしますが、ネットワーク関係のツールに過ぎません。攻撃だとかハッキングという言葉を使うことによって頭が中学生な人たちに魅力的に見えるようにしてるだけです。

dsniffをgithubから取得してくる

git clone https://github.com/ggreer/dsniff

cd dsniff

chmod +x configure

./configure

でまずは通常の./configureをしてみるとエラーが出ます。

error: libpcap not found

が./configureのcheckで入ってない、と出てきました。

brew list | grep libpcap

で入ってないのか確認をしてみたら入ってます。最新に更新も試してみます。

git –version

で最新のgitになっているか確認、

brew update

brew upgrade

ここまでで最新に更新しても./configureでlibpcapはnoのままです。pathがおかしいんでは、とよくあるエラーでpathを探してみました。

emacs configure

エディタはなんでもいいんですが、configureの5099行目あたりに

Check whether –with-libpcap was given.

libpcapがインストールされているかのチェック項目があります。チェックするプログラムの部分は50行ほどなのでそう大変なものではないので自分でチェックしてみます。

libpcapの部分を見つけるのは、./configureで出たエラー libpcap not found この文字がある場所を検索で見つけます。

libpcapがインストールされているのにnot found と出てくるということは、pathの指定が怪しいので、

libpcapのpathが怪しい

pcapがある場所を指定してる部分で、prefix というpathがあってない可能性があり、指定されているprefix は /usr/local になっていて brewでインストールしたなら/usr/local/Cellar にインストールされるから指定を変えてやります。

prefixの大元を変更すると、他のcheckにも影響が出るのでlibpcapの部分だけ、画像の通りコメントアウトした3行を /usr/local/Cellar に変更しました。

if test -f /usr/local/Cellar/libpcap/1.0.0/include/pcap.h; then

PCAPINC=”-I/usr/local/Cellar/libpcap/1.9.0/include”

PCAPLIB=”-L/usr/local/Cellar/libpcap/1.9.0/lib -lpcap”

これでlibpcapのcheckはOKが出ました。

続いてlibnidsも入ってない、とエラーが出ましたがこれは単純に入ってないだけでした。

Barkeley DBも入ってない、とエラーが出ました。これもberkeley-dbをbrew installするだけでした。

OpenSSLでもpathがおかしいとエラーが出ました。原因はMacがOpenSSLではなくlibsslをデフォルトで使っているからOpenSSLはちゃんとpathを指定しないと見つけられないようになります。

openssl version

LibreSSLと出ればlibsslがデフォルトで使用されているので、OpenSSLに変更します。

brew install openssl

echo ‘export PATH=”/usr/local/opt/openssl/bin:$PATH”‘ >> ~/.bash_profile

これでOpenSSLに変更完了。

OpenSSLのcheck項目はconfigureの5272行目から50行ほどの部分です。これも同じく/usr/local/Cellar にpathを指定するとconfigureのcheckがOKになります。

OpenSSLのpathをconfigureに書く

今気がついたんですがlibresslを指定してますが、動作してるので問題ないということで。

configureが通るようになりました

ここまでで./configureが通るようになり、Makefileが作られました。

make したら出たエラー

続いてmakeでもエラーが出たんですね。errorだとダメでwarningは厳格に言えばここ直した方がいいんでは、という程度なのでerrorが2箇所出ました。

sshcrypto.cがエラー

./sshcrypto.cでdes_key_scheduleが呼び出せないよ、des_cblockも呼べないよ、というエラーです。

MakefileのOpenSSLのpathを指定してやる

Makefileです。ここでさっきlibresslを指定してたのが載っててそれで止まっていたようです。指定をopensslのpath、

/usr/local/opt/openssl/include

/usr/local/opt/openssl/lib -lssl -lcrypto

に変更してmakeすると通るようになります。

sshcrypto.cがerror

./sshcrypto.c がerrorだったのでこちらも一応チェックしました。

des_key_scheduleが呼び出せないと出てたので検索したらdes.hにdes_key_scheduleがある、ということだったので一応pathを追加、これは関係あったかはわかりませんが#includeするだけなので追記しても悪影響はなさそうなので追記。

最後にmakeが通ったのを確認したらmake installでコンパイル完了です。

同じディレクトリにarpspoof、dsniff、webspyなどのツールが生成されています。実行は./dsniff などで必要なら/usr/local/binにコピーして使ってもいいと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です