2.Cowrieのインストール
cowrieは2222番ポートで待ち受けます。ポートの変更は1.Wowhoneypotの手順の中で合わせて実施しています。
実行したコマンド
sudo apt-get install git python-virtualenv libssl-dev libffi-dev build-essential libpython-dev python2.7-minimal authbind
git clone https://github.com/micheloosterhof/cowrie.git
cd cowrie/
sudo apt-get install virtualenv
virtualenv cowrie-env
source cowrie-env/bin/activate
pip install --upgrade pip
pip install --upgrade -r requirements.txt
cd cowrie/etc
cp cowrie.cfg.dist cowrie.cfg
ここまで実施するとcowrieが起動できるようになります。
bin/cowrie startを実行することで、22番ポートで攻撃を待ち受けるようになります。
参考:Cowrieについて
Cowrie=どうも「カウリー」と読むようです。Cowrieの関連ファイルを以下に記載します。
Cowrie関連ファイル
cowrie.cfg | Cowrieの設定ファイル |
share/cowrie/fs.pickle | 偽ファイルシステム |
data/userdb.txt | アクセスを許可/拒否するアカウント情報 |
honeyfs/ | 偽のファイルシステムのファイル内容 |
honeyfs/etc/issue.net | ログインバナー |
honeyfs/etc/motd | ログイン後のバナー |
var/log/cowrie/cowrie.json | JSON形式のトランザクション |
var/log/cowrie/cowrie.log | ログファイル |
var/lib/cowrie/tty/ | セッションログ。bin bin/playlogユーティリティで再生できます。 |
var/lib/cowrie/downloads/ | 攻撃者からハニーポットに転送されたファイルがここに格納されます |
share/cowrie/txtcmds/ | 偽のコマンドファイル |
bin/createfs | 偽のファイルシステムを作るために使われる |
bin/playlog | セッションログを再生するユーティリティ |
※しばらく稼働させているとvar/lib/cowrie/downloads/には複数ファイルが格納されていました。
VirusTotalで確認したところ、トロイの木馬と判定されるファイルが含まれていることも確認できました。
3.ログの管理
Wowhoneypot及びCowrieは以下に攻撃ログが記録されます。
- Wowhoneypot:インストールディレクトリ/wowhoneypot/log/access_log
- Cowrie: インストールディレクトリ/cowrie/var/log/cowrie/cowrie.log
同じファイルにログが蓄積されていくので日ごとにログを分け、分けたファイルをDropbox上に移動するようにします。
3-1.Dropboxへディレクトリを同期する
ハニーポット上のログファイルをファイルをDropboxに同期することで、Zapierを使った他のWebサービスとの連携ができるようになります。
Dropbox以下のディレクトリを以下の用途で分類しました。
ディレクトリ階層と用途
Dropbox
┗―――Twitter・・・Zapier経由でTwitterに投稿するファイルを格納
┗―――analysis・・・Wowhoneypotのログを成形したファイルを格納
┗―――http・・・Wowhoneypotの生ログを格納
┗―――ssh・・・Cowrieの生ログを格納
Dropbox連携手順
- 事前にDropboxのアカウントを用意して、ログインをしておきます。
- UbuntuにDropboxデーモンをインストールします。
wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
→~/.dropbox-dist というディレクトリが作られます。
- DropboxデーモンとDropboxアカウントを紐づけます。
.dropbox-dist/dropboxdを実行すると以下のメッセージが表示されます。ブラウザで Dropbox にログイン中であることを確認し、「https://www.dropbox.com/cli_link?host_id=xxxxxxx」にブラウザでアクセスします。ログインが成功するとアカウントの紐づけは完了します。ここで一旦Dropboxを停止します。
このクライアントはどのアカウントにもリンクされていません...
このコンピュータをリンクするには、https://www.dropbox.com/cli_link?host_id=xxxxxxx にアクセスしてください。
3-2.Dropbox管理コマンドダウンロード
dropbox.pyをダウンロードすることで、以下のコマンドでDropboxの起動・停止ができます。起動時は生成されるDropboxディレクトリにファイルを移動すると、Dropbox上に同期されます。
- ./dropbox.py start
- ./dropbox.py stop
実行したコマンド
wget -O dropbox.py "http://www.dropbox.com/download?dl=packages/dropbox.py"
chmod 777 dropbox.py
3-3.日時のログのバックアップ(cron)
以下のシェルを日時で実行することで、Wowhoneypot及びCowrieのログをDropbox上にバックアップします。
ログを移動するシェル
task.sh
!/bin/sh
mv /home/ubuntu/wowhoneypot/log/access_log /home/ubuntu/Dropbox/http/$(date +%Y%m%d)_access.log
mv /home/ubuntu/cowrie/var/log/cowrie/cowrie.log /home/ubuntu/Dropbox/ssh/$(date +%Y%m%d)_ssh.log
/home/ubuntu/cowrie/bin/cowrie stop
/home/ubuntu/cowrie/bin/cowrie start
ログを成形するシェル
logwork.sh
!/bin/sh
cat /home/ubuntu/Dropbox/http/$(date +%Y%m%d)_access.log | tr ' ' '\t' > /home/ubuntu/Dropbox/sep.log
cut -f 10 /home/ubuntu/Dropbox/sep.log | base64 -d > /home/ubuntu/Dropbox/analysis/$(date +%Y%m%d)_attack.log
cat /home/ubuntu/Dropbox/ssh/$(date +%Y%m%d)_ssh.log | grep 'login attempt' | cut -d ' ' -f 8 | sort | uniq -c | sort -nr | head -n 10 > /home/ubuntu/Dropbox/Twitter/$(date +%Y%m%d)_ssh_attack_Top10.log
実行したコマンド
chmod +x task.sh
chmod +x logwork.sh
上記のシェルをcronにより日時で実行することで日ごとのログをDropboxに同期します。
実行したコマンド
crontab -e
3-4.DropboxとGoogle Driveを連携(ハニーポットのログ容量削減)
3-3.までの構成では、ハニーポットとDropbox上に同じログファイルが保持され続けストレージ容量をひっ迫します。3-4.では自動化ツールのサービスである「Zapier」を使って、Dropbox上に同期されたログをGoogle Driveに同期(退避)し、その後Crontabでハニーポット上のDropboxディレクトリを削除することで、ログ容量の問題に対応します。
また、日常の攻撃状況を簡単に確認するために、成形したログの中身をTwitterに投稿します。
Zapierについては、以下のページで概要をまとめています。
Zapierで以下のようなZapを作成することで、ログファイルを自動で退避します。
今回はTwitterへの投稿及び、ログの退避の2つのZapを作成しました。
Zapは実行までにタイムラグ(フリープランでは15分毎)が発生する場合があるので、ハニーポット上でDropboxディレクトリの中身を削除するコマンド(rm -f /Dropboxディレクトリのパス/*)は、午前1時頃などに時間をずらして実行します。
続きの記事では、その他ハニーポットに追加した機能等を順次記載していきます。