Cowrie on Docker

micheloosterhof/cowrie: Cowrie SSH/Telnet Honeypot

SSH/Telnet のハニーポット。Wikipediaに載っている種類でいうと低対話型ハニーポットになると思う。
(あってるかわからないけど カウリー と読んでる)
今回は、どんなログが取れるのかを見てみたかっただけなので “動かしてみた” 程度の内容だが、/etc/passwd などをエミュレートしたり、攻撃者が仕掛けたマルウェアを特定のディレクトリに隔離しておく機能があるようなので面白そう。

(本当は T-Pot を試してみたかったけど、要件を満たすインスタンスを用意するのが金銭的にアレだったので、とりあえず (T-Pot の構成要素のひとつである) Cowrie だけ)

以下、ubuntu16.04 の Docker コンテナで Cowrie を動かすまでの手順。

Docker をインストール

Docker Community Edition をインストール
Get Docker CE for Ubuntu | Docker Documentation

Docker Compose をインストール
Install Docker Compose | Docker Documentation

cowrie 作者が用意してくれている Docker イメージを使う

micheloosterhof/docker-cowrie: Docker Cowrie Honeypot image

$ git clone https://github.com/micheloosterhof/docker-cowrie.git && cd docker-cowrie
micheloosterhof/cowrie のイメージは無いのでビルドする

docker-compose.yml

     # Bug Michel to create a Docker Hub account and build an image from the repo.
-    # build: .
-    image: micheloosterhof/cowrie:dev
+    build: .
+    #image: micheloosterhof/cowrie:dev
cowrie のログを見れるように Data Volume でホストマシンと共有する
$ mkdir log

docker-compose.yml

volumes:
      # Map a local cowrie config dir into the container.
      # - "./etc:/cowrie/cowrie-git/etc"
      # Make cowrie logs persistent through container recreates.
      - "./var:/cowrie/cowrie-git/var"
+     - "./log:/cowrie/cowrie-git/log"
起動して放置してると…
$ docker-compose up -d

攻撃キタ!!

$ tail -f log/cowrie.json
...
...

{"eventid": "cowrie.login.failed", "username": "jenkins", "timestamp": "2017-07-10T13:40:53.763171Z", "message": "login attempt [jenkins/1234] failed", "syste
m": "SSHService 'ssh-userauth' on HoneyPotSSHTransport,19,52.88.114.5", "isError": 0, "src_ip": "52.88.114.5", "session": "fa045b057360", "password": "1234",
"sensor": "e4bba5c4b1e1"}