テック・スタディ

IoTとかセキュリティとかの備忘録

【Cowrie】CentOS7にハニーポットを構築してみた話(ハニーポット初心者)

これまで、Twitterやとあるブログでハニーポットのお話を読んだり聞いたりする機会はありました。 しかし実際に構築するとなると、色々なことを考えて躊躇することが多い人でした。 今回はハニーポットを構築しようと思ったきっかけや構築手順、今後の活用方法などをツラツラ書いていこうと思います。

きっかけは些細なこと

ハニーポット界隈で有名な@morihi_socさん。 おそらくハニーポットに興味がある人は知っているのではないでしょうか。 僕はTwitterで知る前に彼の著書を読んで興味を持った人の一人です。

サイバー攻撃の足跡を分析するハニーポット観察記録 Amazon

この書籍は、ハニーポットを構築して攻撃者の行動を分析してみようZE!!って感じの内容になってます(全然伝わらない ※あくまでも個人的な印象です。

ハニーポットについて詳しく書かれたものが少ない中、書籍好きの僕には効果抜群でした(笑) すぐにAmazonで注文。

読んで、読んで、実践して、読んでを繰り返して今に至ります。

※2017/08 関東で集中落雷が発生 UPS未導入が原因で自宅検証環境が死にました。

で、きっかけ何?って話ですが、cake injectionを心待ちにしている人間ハニーポット@junk_cokenさんが書いているブログです。

ハニーポット入門としてよく導入されるKippo。 しかしKippoは攻撃者に対策されたり、エラーが発生したりして思うようにマルウェアやログを取ることができません。 そういうときはKippoの改良版(?)的なCowrieを使っていきましょう。

SSHハニーポットはKippoではなくCowrieを使え - 人間ハニーポット作戦

ハニーポットを運用するならやっぱり最新?流行?のマルウェアとか攻撃のログは見ておきたいですよね!? けど、Kippoは攻撃者からすればすぐわかるよ。だから攻撃者はすぐに帰っちゃう。ということが書いてあります。

このあたりの知識ってなかなか素人では探せない情報なのかなと思いました。 サラッと書いてあるところが「Cool」でしたね。

Cowrie構築

お話は構築手順に移ります。 なお、当ブログで記載している手順等は全て自己責任のもと実施してください。 他のユーザの迷惑にならないよう、適切な知識・設定で運用を行ってください。 言葉が足りないでしょうが、「自己責任」でお願いします。

ユーザ作成

まずはCowrieを動かすためのユーザを作りましょう。

# useradd Cowrie
# passwd Cowrie

関連モジュールのインストール

作成したら、Pythonで必要なモジュールをインストールしていきます。 僕の環境ではすでにインストール済みでした。

# yum install python-setuptools
# yum install python-devel

easy_installコマンドを使ってpipやら色々インストールしていきます。

# easy_install pip
# easy_install PyCrypto pyasn1

twistedはバージョンの指定が必要らしいですね。

# pip install twisted==15.2.0

これで、関連モジュールのインストールは完了しました。

Gitからコードを落としてくる

ここから先ほど作成したユーザに切り替えて作業してきます。

# su Cowrie
$ git clone http://github.com/micheloosterhof/cowrie
$ cd cowrie/

設定ファイルのコピー

デフォルトの設定ファイルをコピーしておきます。

$ cp cowrie.cfg.dist cowrie.cfg

設定ファイル編集

listen_portなどを編集しておきます。

$ vi cowrie.cfg
listen_port = 22222

reported_ssh_port = 22

デフォルトで両方ともコメントアウトされているので、コメントアウトを解除しました。

ハニーポットへ擬似的にログインできるダミーアカウントの設定もしましょう。

$ vi data/userdb.txt
root:x:!root
root:x:!123456

こちらも既に設定が入っています。 今後追加したければ利用するとよいかも。

firewall-cmdの設定

ハニーポットをlistenさせるには、ポート開放が必要です。 また、22/tcpへの接続を22222/tcpへ転送する設定も必要になります。

# firewall-cmd --permanent --add-port 22/tcp
# firewall-cmd --permanent --zone=public --add-forward-port=port=22:proto=tcp:toport=22222
# systemctl restart firewalld.service
# firewall-cmd --list-all

virtualenvの設定など

公式どおりに設定していきます。

$ pwd
/home/Cowrie/cowrie
$ virtualenv cowrie-env
New python executable in ./cowrie/cowrie-env/bin/python
Installing setuptools, pip, wheel...done.
$ source cowrie-env/bin/activate
(cowrie-env) $ pip install -r requirements.txt
$ cd data
$ ssh-keygen -t dsa -b 1024 -f ssh_host_dsa_key
$ cd ..
$ export PYTHONPATH=/home/cowrie/cowrie

蜜壺、起動!!!

さて、プ●さんも早くしろと叫んでいるので、起動してみます。

$ bin/cowrie start
Activating virtualenv "cowrie-env"
Starting cowrie: [twistd   --umask 0077 --pidfile var/run/cowrie.pid -l log/cowrie.log cowrie ]...

起動したっぽい?

まとめ

構築するのは結構簡単? 起動確認とか、不審なアクセスとかまだ見てないからなんとも。。。

8/26 07:00 現在

いろいろファイルが設置されていたみたいですが、 virustotalかけても危険なものは出てこなかったです。 auth failure系のログ見てると、admin/adminみたいなものから辞書攻撃しているものも見えたので、 そのあたりのユーザも少しdata/userdb.txtに追記していく予定です。

今後はどう活用していくか

まず最近のssh周りに関する動向調査 ハニポへのアクセスを集計して、ログ分析できる可視化環境の構築とかやっていきたい ハニーポッターの方々と情報交換をしていけたらと思います。 定期的にログの収集を実施して、特徴的なものなどあれば当ブログでも取り上げることにします。

お知らせ

9/30にハニーポッター技術交流会で登壇させていただくことになりました!

hanipo-tech.connpass.com