#include <sys/socket.h>

あとで書く Twitter:@sys_socket

ハニーポットCowrieを設置した話

はい.

本投稿の内容に間違いや問題などありましたら,Twitter経由などでやんわり優しめに教えて頂ければ幸いです.(Twitter:@sys_socket)

Cowrieとは

GitHub - micheloosterhof/cowrie: Cowrie SSH/Telnet Honeypot

Cowrie is a medium interaction SSH and Telnet honeypot designed to log brute force attacks and the shell interaction performed by the attacker. Cowrie is developed by Michel Oosterhof.

攻撃者のブルートフォース攻撃とシェルの対話を記録するように設計された対話型SSH/Telnetハニーポットです.

導入

ここを見てやっていきます. cowrie/INSTALL.md at master · micheloosterhof/cowrie · GitHub

今回はUbuntu 16.04.3 LTSで構築していきます.

必要なパッケージのインストール

$ sudo apt install git python-virtualenv libssl-dev libffi-dev build-essential libpython-dev python2.7-minimal authbind

インストールするパッケージで分かるのですが,Cowrieではpython-virtualenv上でPython2.7系を使用しています. Python3系はサポートされていません.

Cowrie用のユーザを作成/cowrieユーザにスイッチ

$ sudo adduser --disabled-password cowrie
$ sudo su - cowrie

Cowrieリポジトリをclone

$ git clone https://github.com/micheloosterhof/cowrie.git
$ cd cowrie

python-virtualenvでPython環境を作成し,必要なPythonパッケージをインストールする

$ virtualenv cowrie-env
$ source cowrie-env/bin/activate
(cowrie-env) $ pip install --upgrade pip
(cowrie-env) $ pip install --upgrade -r requirements.txt

Cowrieの設定ファイルはリポジトリディレクトリのcowrie.cfg.distとcowrie.cfgの2つ. どちらのファイルも起動時に読み込まれてcowrie.cfgの方が優先される. 設定ファイルを作成.

$ cp cowrie.cfg.dist cowrie.cfg

ここで色々と設定を変更出来ます.

Cowrieはデフォルトではtelnetが有効になっていないので,telnetハニーポットとして利用する際は有効にする.

# ============================================================================
# Telnet Specific Options
# ============================================================================
[telnet]

# Enable Telnet support, disabled by default
enabled = true # ここをfalseからtrueに

通常ユーザに戻り,22と23ポートへの通信をCowrieが待ち構えているポート2222と2223へリダイレクトする設定をする

$ sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
$ sudo iptables -t nat -A PREROUTING -p tcp --dport 23 -j REDIRECT --to-port 2223

iptabelsを管理するiptables-persistentをインストール

iptablesの設定を永続化する

$ sudo apt install iptables-persistent

iptablesの確認

$ cat /etc/iptables/rules.v4

user cowrieでCowrieを起動

$ sudo su - cowrie
$ ~/cowrie/bin/cowrie start

Cowrieの動作を確認

$ netstat -antp | grep -e 2222 -e 2223

Cowrieに登録されているダミーユーザ/パスワードの確認

$ cat cowrie/data/userdb.txt

別の端末からSSH接続をして動いているか確かめる.

userdb.txtに存在するダミーユーザでログインしてみる.

この接続ログも記録されるので後々ログを見る際に注意をする.

$ ssh root@{ipaddress}

ログの確認

palylogを使うことで攻撃者が侵入した後のコマンド内容を再生することが出来る.

$ ~/cowrie/bin/playlog ~/cowrie/log/tty/XXXXXXXX-XXXXXX-XXXXXXXXXXXX-XX.log

ログにあたりがついていて適当に見る分にはこれがいいが,良い感じにシュッと見たい.

個人的にはELK Stackを使いたかったが,ELK Stackを使うとなると結構ハードウェア的にスペックが必要になりそうで今回は断念.

Logging Cowrie logs to the ELK stack - Fernando Domínguez

そういうわけで今回は,ある程度LogViewerとして軽量でシンプルそうなCowrie Log Viewerを使用

GitHub - mindphluxnet/cowrie-logviewer: A simple log viewer for cowrie

Cowrieサーバにログインし,cowrieユーザにスイッチ,cowrie-logviewerをインストール

$ sudo su - cowrie
$ cd ~/../cowrie
$ git clone https://github.com/mindphluxnet/cowrie-logviewer.git
$ cd cowrie-logviewer
$ source ~/cowrie/cowrie-env/bin/activate
$ pip install -r requirements.txt
$ chmod +x cowrie-logviewer.py

MaxMind GeoLite 2 Country databaseの設定

$ mkdir maxmind
$ cd maxmind
$ wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
$ gunzip GeoLite2-Country.mmdb.gz
$ rm GeoLite2-Country.mmdb.gz

Cowrie Log Viewerの起動

$ python cowrie-logviewer.py

ポートフォワーディングを行いブラウザでそのアドレスを開くとCowrie Log Viewerのダッシュボードにアクセスできる.

こんな感じで見れる.

ダッシュボード

Attackers by country

ELK Stackにしたいな…いつかやります

運用の際の注意

ハニーポットを設置するサーバは,個人の自宅にある物理サーバかVPSという選択肢があるようです.

VPSを利用する際は,利用規約に注意が必要です.

サーバ上でハニーポットを運用するのが利用可能かどうかは以下の@blackle0pard_さんのブログがとても参考になります.

まとめ

SSH/TelnetハニーポットのCowrieの構築をしてきました.

わりと簡単に構築出来て良い感じでした.

今回設置するにあたり調べた時にT-Pot良い感じだなと思ったのですが,やっぱりある程度ハードウェア的なスペックが必要なよう.

ここ最近Honeypot Advent Calendar 2017morihi-socさんのブログwww.morihi-soc.netなど色々と読んでいたのですが,ハニーポット運用楽しそうだなという軽いモチベーションからはじめましたがよろしくやっていきたいなという感じです.

とりあえず今回設置したCowrieを観察しつつ色々と手を出していきたいなという気持ちです.

参考