「Cowrie SSH Honeypot」の版間の差分
(ページの作成:「Cowrie SSH Honeypot とは、kippo をベースにして開発された、SSH のハニーポッド です。Cowrieは、英語では貝のタカラガイや...」) |
(→Elasticsearch + Logstash + Kibana(ELK)での可視化(jsonログ)) |
||
(同じ利用者による、間の2版が非表示) | |||
行1: | 行1: | ||
− | [[Cowrie SSH Honeypot]] とは、[[kippo]] をベースにして開発された、SSH の[[ | + | [[Cowrie SSH Honeypot]] とは、[[kippo]] をベースにして開発された、SSH の[[ハニーポット]] です。Cowrieは、英語では貝のタカラガイやコヤスガイのことです。Elasticsearch + Logstash + Kibana(ELK)を用いて、簡単にログを可視化することもできます。 |
'''読み方''' | '''読み方''' | ||
行6: | 行6: | ||
== 概要 == | == 概要 == | ||
− | + | [[kippo]]は、SSHサーバのフリをするハニーポットです。[[kippo]] に [[ssh]] したことがある人が気づいているかもしれませんが、 echo -n test で -n test と表示されたりして、[[kippo]] の処理は微妙だったりします。 | |
== 機能 == | == 機能 == | ||
+ | * フェイクファイルシステムは、ファイルの追加や削除ができます。 | ||
+ | * 攻撃者が '''/etc/passwd''' のようなファイルを '''cat''' できるように、フェイクのファイルコンテンツを含みます。最小限のファイルが含まれます。 | ||
* セッションログは、 UML Compatible format で保存され、オリジナルタイミングでのリプレイが簡単にできます。 | * セッションログは、 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]] ユーザで実行すべきではありません。[[ハニーポット]]は、やられサーバです。不特定多数の攻撃者やボットにいじられる環境であるため、必要以上の権限を与えるようなことはあってはなりません。 | ||
== インストール == | == インストール == | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ sudo adduser --disabled-password cowrie | ||
+ | $ sudo su - cowrie | ||
+ | $ git clone http://github.com/micheloosterhof/cowrie | ||
+ | $ cp cowrie.cfg.dist cowrie.cfg | ||
+ | $ ./start.sh | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Cowrie は、デフォルトで 2222 番ポートを使用します。 | ||
+ | |||
+ | [[iptables]]を利用して22番から2222番ポートにポートフォワードしてください。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222 | ||
+ | </syntaxhighlight> | ||
+ | ポート番号は、設定ファイルで変更可能です。しかし、22番ポートでの実行は推奨されていません。 | ||
+ | 22番ポートを listen するには、[[root]]権限が必要になります。つまり、[[root]]ユーザで動かすべきではないため、推奨されないということでしょう(権限を降格すればいいんだろうけど)。 | ||
+ | |||
+ | 必要に応じて、鍵を作成してください。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | cd cowrie/data | ||
+ | ssh-keygen -t dsa -b 1024 -f ssh_host_dsa_key | ||
+ | </syntaxhighlight> | ||
+ | == MySQLにログを出力する場合 == | ||
+ | [[MySQL]] にデータベースを作成します。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | $ mysql -u root -p | ||
+ | CREATE USER 'cowrie'@'localhost' IDENTIFIED BY 'PASSWORD'; | ||
+ | GRANT ALL PRIVILEGES ON *.* TO cowrie@localhost IDENTIFIED BY 'PASSWORD'; | ||
+ | create database cowrie; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | '''cowrie.cfg''' に下記設定を追加します。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | [database_mysql] | ||
+ | host = localhost | ||
+ | database = cowrie | ||
+ | username = cowrie | ||
+ | password = PASSWORD | ||
+ | port = 3306 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | テーブルを作成します。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | cd doc/sql/ | ||
+ | cat mysql.sql | mysql -u cowrie -p -D cowrie | ||
+ | </syntaxhighlight> | ||
+ | == ログのリプレイ == | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | utils/playlog.py log/tty/foo.log | ||
+ | </syntaxhighlight> | ||
+ | == Elasticsearch + Logstash + Kibana(ELK)での可視化(jsonログ) == | ||
+ | '''cowrie''' の JSON フォーマットのログを Kibana で可視化する例です。 | ||
+ | ここでは、[[FreeBSD]] での例になります。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | sudo pkg install logstash elasticsearch2 kibana43 npm012 | ||
+ | sudo service elasticsearch onestart | ||
+ | sudo service kibana43 onestart | ||
+ | </syntaxhighlight> | ||
+ | ElasticSearch の index を作成します。 | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
+ | $ curl -XPUT 'http://localhost:9200/cowrie/' | ||
+ | {"acknowledged":true}% | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | logstash で JSON ファイルを ElasticSearch に登録します。 | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
+ | /usr/local/logstash/bin/logstash -f test2.conf -v | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== 関連項目 == | == 関連項目 == | ||
− | * [[ | + | * [[ハニーポット]] |
* [[Secure Shell]] | * [[Secure Shell]] | ||
<!-- vim: filetype=mediawiki | <!-- vim: filetype=mediawiki | ||
--> | --> |
2015年12月21日 (月) 01:24時点における最新版
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