teppay’s log

*について書きます

T-PotのCowrieの設定を変更する

はじめに

  • T-Potは御存知の通り、Dockerの上に複数のハニーポットとELKがのった素晴らしいものなんです。
  • しかし、僕がDocker初心者だからかもしれませんが、それらのハニーポットの設定を個別に変更する(たとえばT-Pot上のCowrieの設定を変更する)のに一手間かかりました。
  • 今回はCowrieについてですが、この方法でおそらく全部イケルと思います。

動機

今回はタイトルの通り、「T-Potの中のCowrieの設定を変更する」わけなんですが、なぜこれをしたかったかという話をまずします。

Cowrieの認証の方式

CowrieはSSHの低対話型ハニーポットなので、だれかからのSSH接続試行に応答します。脆弱なSSHをエミュレートしているわけですので、user/passwordによる認証をするわけですが、その方法に2つの選択肢があります。"AuthRandom""UserDB"です。

AuthRandom

この方式ではその名の通り、ランダムに認証を成功させます。
つまり、正しいuser/passwordの組を用意せず、ランダムでn回目の試行で認証を成功させるという方式です。

UserDB

それに対して、"UserDB"では、こちらもその名の通り、予め用意したユーザのデータベースと照らし合わせ、それと合致したuser/passwordの組を使ってアクセスしてきた場合に認証を成功させることになります。
データベースとは書きましたが、userdb.txtというテキストファイルです。

T-PotのCowrie

T-PotのCowrieでは"AuthRandom"になっています。
最初は、たくさんアクセスが来て、どんなことを中でしてるのかplaylogで見てみようとワクワクしていたんですが、いかんせんMIRAI的なやつらからのアクセスが多すぎる
やつらのせいで、それ以外を探すやる気がそがれる。
なので、"UserDB"に設定を変更して、ログイン試行してきた少なめのuser/passwordの組に絞った形でどのような行動をしているかを見ていきたいというわけです。
それと並行して、アクセスのなかから興味深いものを(つまりMIRAI的なやつら以外のものを)見つけて教えてくれるようなスクリプトを書くことも検討しています。

やったこと

1. cowrie.cfguserdb.txt をコンテナ内からホストに持ってくる

T-Potを運用していれば知っていると思いますが、別々のコンテナで動作しているそれぞれのハニーポットが収集したログは、ホストの/data/配下にすべてまとまっています。これは僕もくわしくは説明できませんが、Docker Volumeという「コンテナ内のディレクトリをホストにマウントする」仕組みを使っています。簡単にいえば、コンテナとホストの共有フォルダをつくれる様なものです。(フォルダだけではありませんが、)
なのでコンテナ上のログが蓄積されるディレクトリに必要なファイルをコピーしてしまえば、ホストに持ってくることが出来ます。

# docker exec -it docker sh
$ cp /home/cowrie/cowrie/cowrie.cfg /home/cowrie/cowrie/log/
$ cp /home/cowrie/cowrie/data/userdb.txt /home/cowrie/cowrie/log/
$ exit

2. T-Potのサービスをstopする

T-Potの設定をいじるので、T-Pot自体を止めます。

# systemctl stop tpot

3. cowrie.cfguserdb.txtを移動する。

ログが蓄積されるディレクトリにそのまま置いておくのもかっこ悪いので、設定ファイルを置く場所を作って移動させます。

# mkdir /data/cowrie/conf
# mv /data/cowrie/log/cowrie.cfg /data/cowrie/conf/
# mv /data/cowrie/log/userdb.txt /data/cowrie/conf/

4. tpot.ymlを変更する。

これは、Docker Volumeによって、ホストのcowrie.cfguserdb.txtにコンテナ内のcowrie.cfguserdb.txtをリンクさせる設定です。 これによって、いちいちコンテナ内のシェルを叩かずに設定を変更できるようになります。

# vi /opt/tpot/etc/tpot.yml

[...]
# Cowrie service
  cowrie:
    container_name: cowrie
    restart: always
    networks:
     - cowrie_local
    cap_add:
     - NET_BIND_SERVICE
    ports:
     - "22:2222"
     - "23:2223"
    image: "dtagdevsec/cowrie:1710"
    volumes:
     - /data/cowrie/downloads:/home/cowrie/cowrie/dl
     - /data/cowrie/keys:/home/cowrie/cowrie/etc
     - /data/cowrie/log:/home/cowrie/cowrie/log
     - /data/cowrie/log/tty:/home/cowrie/cowrie/log/tty
     - /data/cowrie/conf/cowrie.cfg:/home/cowrie/cowrie/cowrie.cfg # add this line !!!!!!
     - /data/cowrie/conf/userdb.txt:/home/cowrie/cowrie/data/userdb.txt # add this line !!!!!!
[...]

5. cowrie.cfgを変更する

ついにCowrieの設定です。
この行を

#auth_class = UserDB

以下のように

auth_class = UserDB

そしてこの部分を

auth_class = AuthRandom
auth_class_parameters = 2, 5, 10

以下のように変更します。

# auth_class = AuthRandom
# auth_class_parameters = 2, 5, 10

6.userdb.txtに好きなuser/passwdの組を追加、削除する。

僕はとりあえず、raspberryPiのOSのraspbianの初期ユーザと、渾身のクソパスワードを設定したadminを追加してみました。
ちなみに真ん中の数字はuidです。

# echo 'pi:1:raspberry' >> userdb.txt
# echo 'admin:0:p@sSw0Rd' >> userdb.txt

こんな感じ。

teppay.hatenablog.com

7. T-Potのサービスをstart!

# systemctl start tpot

まとめ

  • T-Pot上のCowrieの設定を変更できた
  • これで多分ほかのハニーポットの設定も変更できるはず!
  • Dockerについても勉強が必要だと思った。