Cowrie SSH Honeypot

提供: セキュリティ
移動: 案内検索
スポンサーリンク

Cowrie SSH Honeypot とは、kippo をベースにして開発された、SSH のハニーポット です。Cowrieは、英語では貝のタカラガイやコヤスガイのことです。Elasticsearch + Logstash + Kibana(ELK)を用いて、簡単にログを可視化することもできます。

読み方

Cowrie SSH Honeypot
けりん えすえすえいち はにーぽっと

概要

kippoは、SSHサーバのフリをするハニーポットです。kippossh したことがある人が気づいているかもしれませんが、 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

関連項目




スポンサーリンク