「Cowrie SSH Honeypot」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「Cowrie SSH Honeypot とは、kippo をベースにして開発された、SSH のハニーポッド です。Cowrieは、英語では貝のタカラガイや...」)
 
(Elasticsearch + Logstash + Kibana(ELK)での可視化(jsonログ))
 
(同じ利用者による、間の2版が非表示)
行1: 行1:
[[Cowrie SSH Honeypot]] とは、[[kippo]] をベースにして開発された、SSH の[[ハニーポッド]] です。Cowrieは、英語では貝のタカラガイやコヤスガイのことです。
+
[[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サーバのフリをするハニーポットです。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

関連項目