Cowrie SSH Honeypot
Cowrie SSH Honeypot とは、kippo をベースにして開発された、SSH のハニーポット です。Cowrieは、英語では貝のタカラガイやコヤスガイのことです。Elasticsearch + Logstash + Kibana(ELK)を用いて、簡単にログを可視化することもできます。
読み方
- Cowrie SSH Honeypot
- けりん えすえすえいち はにーぽっと
目次
概要
kippoは、SSHサーバのフリをするハニーポットです。kippo に ssh したことがある人が気づいているかもしれませんが、 echo -n test で -n test と表示されたりして、kippo の処理は微妙だったりします。
機能
- フェイクファイルシステムは、ファイルの追加や削除ができます。
- 攻撃者が /etc/passwd のようなファイルを cat できるように、フェイクのファイルコンテンツを含みます。最小限のファイルが含まれます。
- セッションログは、 UML Compatible format で保存され、オリジナルタイミングでのリプレイが簡単にできます。
- Cowrie は、後の調査のために wget や curl でダウンロードされたファイル、もしくは sftp や scp によりアップロードされたファイルを保持します。
kippo の標準を超えた、追加の機能は以下のとおりです。
- sftp や scp によるファイルアップロードをサポートしました
- ssh exec コマンドをサポートしました
- ダイレクト TCP 接続の試行のロギング(ssh proxying)
- ログ管理ソリューションで簡単に処理できるように JSON フォーマットのロギングをサポートしました。
- 多くの追加のコマンドをサポートしています。
興味深いファイル達
- dl/
- wget などでダウンロードされたファイルがこのディレクトリに保存されます。
- log/cowrie.log
- log/debug output
- log/cowrie.json
- transaction output in JSON format
- log/tty/
- セッションログ
- utils/playlog.py
- セッションログのリプレイ用ユーティリティ
- utils/createfs.py
- fs.pickle を作成するために使用します。
- data/fs.pickle
- フェイクファイルシステム
- honeyfs/
- file contents for the fake filesystem - feel free to copy a real system here
root ユーザでは動かさない
当たり前のことですが、 root ユーザで実行すべきではありません。ハニーポットは、やられサーバです。不特定多数の攻撃者やボットにいじられる環境であるため、必要以上の権限を与えるようなことはあってはなりません。
インストール
$ sudo adduser --disabled-password cowrie $ sudo su - cowrie $ git clone http://github.com/micheloosterhof/cowrie $ cp cowrie.cfg.dist cowrie.cfg $ ./start.sh
Cowrie は、デフォルトで 2222 番ポートを使用します。
iptablesを利用して22番から2222番ポートにポートフォワードしてください。
sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
ポート番号は、設定ファイルで変更可能です。しかし、22番ポートでの実行は推奨されていません。 22番ポートを listen するには、root権限が必要になります。つまり、rootユーザで動かすべきではないため、推奨されないということでしょう(権限を降格すればいいんだろうけど)。
必要に応じて、鍵を作成してください。
cd cowrie/data ssh-keygen -t dsa -b 1024 -f ssh_host_dsa_key
MySQLにログを出力する場合
MySQL にデータベースを作成します。
$ mysql -u root -p CREATE USER 'cowrie'@'localhost' IDENTIFIED BY 'PASSWORD'; GRANT ALL PRIVILEGES ON *.* TO cowrie@localhost IDENTIFIED BY 'PASSWORD'; create database cowrie;
cowrie.cfg に下記設定を追加します。
[database_mysql] host = localhost database = cowrie username = cowrie password = PASSWORD port = 3306
テーブルを作成します。
cd doc/sql/ cat mysql.sql | mysql -u cowrie -p -D cowrie
ログのリプレイ
utils/playlog.py log/tty/foo.log
Elasticsearch + Logstash + Kibana(ELK)での可視化(jsonログ)
cowrie の JSON フォーマットのログを Kibana で可視化する例です。 ここでは、FreeBSD での例になります。
sudo pkg install logstash elasticsearch2 kibana43 npm012 sudo service elasticsearch onestart sudo service kibana43 onestart
ElasticSearch の index を作成します。
$ curl -XPUT 'http://localhost:9200/cowrie/' {"acknowledged":true}%
logstash で JSON ファイルを ElasticSearch に登録します。
/usr/local/logstash/bin/logstash -f test2.conf -v
関連項目
ツイート