読者です 読者をやめる 読者になる 読者になる

Shi0shishi0

とても眠い。

ハニーポットCowrieをCentOS7に入れてみた。

自分のサーバに対してどの程度の不正接続があるのか調べてみたくなり、SSH用のハニーポットを仕掛けてみることにしました。
今回は、CentOS7に「Cowrie」というハニーポットを入れたので、その際の環境構築手順をまとめました。

CowrieはSSH専用のハニーポットで、サーバに対して行われるブルートフォース攻撃等のログを記録するものです。
Kippoというハニーポットをベースにし、それを改良して作られています。(Kippoの方にあった不具合が修正されていたりしたので、こちらを使うほうが良さそう)

Cowrieの公式サイト(Github)は以下になります。ここにCowrieを動かすために必要なモジュール等が書かれていますので、それらをCentOS7に入れていきます。

Cowrie GitHub - micheloosterhof/cowrie: Cowrie SSH Honeypot (based on kippo)
(参考までに Kippo GitHub - desaster/kippo: Kippo - SSH Honeypot )


まずはじめに、Cowrieはrootユーザで操作することを認められていません。
ですので、Cowrie操作用のユーザを作ります。

Cowrie用ユーザ作成

useradd Cowrie
passwd Cowrie


ユーザが作成できたら、Cowrieを動かすために必要なモジュール等を色々インストールします。
上記Githubの「Requirements」の欄に必要なモジュール等が記載されています。
(ここはrootユーザ等の操作で問題ないはず)

pythonのeasy_installをインストール(Pythonは入っている前提で…)

yum install python-setuptools
yum install python-devel

pipをインストール

easy_install pip

PyCryptoとPyasn1をインストール

easy_install PyCrypto pyasn1

twistedをインストール(バージョンを15.2.0に指定)
kippoのインストール時にtwistedが15.3だとエラーを吐きましたが、Cowrieも同様でstart.shが起動しませんでした

pip install twisted==15.2.0


下準備はこれで完了です。次にCowrieをGithubからダウンロードしてきます。

cowrieユーザにスイッチ

su cowrie

Cowrieをダウンロード

git clone http://github.com/micheloosterhof/cowrie
cd cowrie/

設定ファイルのコピーを作成

cp cowrie.cfg.dist cowrie.cfg

Cowrieで待ち受けるポート番号を設定(今回は22222番に変更)

vi cowrie.cfg
# Port to listen for incoming SSH connections.
# (default: 2222)
listen_port = 22222# Source Port to report in logs (useful if you use iptables to forward ports to Cowrie)
reported_ssh_port = 22

Cowrie用のダミーユーザ情報(ユーザ名とパスワード)を追加

vi data/userdb.txt
root:x:!root  #root/!rootを作成する場合


CowrieへのSSH接続を待ち受けるポート番号を設定したので、22番ポートへの接続をそのポートへ飛ばしてあげる設定をします。
ポートの開放、フォワードもfirewalldで設定するのが良いと思います。(firewalldの設定は適宜rootユーザかsudoコマンドで)

22番ポート開放

firewall-cmd --permanent --add-port 22/tcp

22番ポートへのアクセスを22222番ポートへフォワード

firewall-cmd --permanent --zone=public --add-forward-port=port=22:proto=tcp:toport=22222

firewalld再起動

systemctl restart firewalld.service

firewalldの設定確認

firewall-cmd --list-all


ここまでの設定でCowrieを起動することができます。

cowrieを起動

su cowrie
sh /home/cowrie/cowrie/start.sh


これでCowrieの設定と起動が完了しました。この状態で22番ポートへアクセスがあると、そのログがCowrieに記録されることになります。
正接続のログは /home/cowrie/cowrie/log 配下に保存されます。(cowrie.logとcowrie.json)

また、SSH接続に成功した攻撃者がcowrieに入ってどのような動きをしたのか(コマンドを叩いたのか)が /home/cowrie/cowrie/log/tty 配下にlogファイルとして記録されます。
このファイルは /home/cowrie/cowrie/utils/playlog.py を使うことで再生できます。

logの再生例

python /home/cowrie/cowrie/utils/playlog.py 201602XX-AAAAAA-BBBBBB.log

あとは注意すべき点として、Cowrieにはマルウェアの収集機能も備わっています。
侵入に成功した攻撃者がwgetコマンド等を使ってCowrie内にマルウェアを置くことがあります。
Cowrie内に置かれたファイルは即座に /home/cowrie/cowrie/dl へ移動される仕組みになっており、攻撃者はこのファイルに触ることができません。
ですが危険なものには変わりないので、このディレクトリに入ったものを触る際は気をつけるべきかと思います。


CowrieはSSH正接続の監視に特化したハニーポットなので多くの種類の攻撃が見られるわけではありませんが、攻撃者が侵入に成功した時どのような動きをするのかが細かく見れたりする点は面白いと思います。
せっかくなのでしばらく稼働させて攻撃者の行動まとめや不正接続元のまとめとか作ってみたいなと思っています。



参考にさせて頂いたサイト

sshハニーポットをkippoで作ってみる - ろば電子が詰まっている

CentOS 6.5 に kippo をインストールしてみる - akishin999の日記

[技術|SEC] kippoで、echoを用いたハニーポット判定を防ぐ | 話譚でいいと思うよ