かわろぐ

技術、ボルダリング、セキュリティ、その他もろもろ

MENU

WOWHoneypot のログをローテートする

環境

  • WOWHoneypot 1.1
  • Ubuntu 18.04 LTS

ログを一ヶ月分だけ保持させたい

WOWHoneypotをサービス化してみるではとりあえず常時起動しているように設定しました。このままではログファイルがどんどん肥大化していき、いずれはディスクフルでサーバが止まってしまいます。そこで、今回はログのローテートの設定を入れてみたいと思います。

WOWHoneypot はデフォルトでは log/access_loglog/wowhoneypot.log にそれぞれアクセスログとハニーポットのログと分けて保存されます。ただし、ローテートなどの設定はデフォルトでは出来ないため、動かし続けるとログがディスクを埋め尽くしてしまいます。 ログの集積は別途考えるとして、まずは一ヶ月分のみローカルに日次でファイルを分けた形でログを保持し、それより古いものは削除するという設定をしてみたいと思います。

ログローテートの設定

/etc/logrotate.config に設定を記載しても良いのですが、/etc/logrotate.d/ 配下がインクルードされているので、 wowhoneypot 用のファイルをつくってそこにローテートの設定を記載するようにしましょう。

sudo vi /etc/logrotate.d/wowhoneypot

wowhoneypot は日々増えていくログファイルは2種類あるので、全く同じ設定ですが、2つに分けて書きます。 ログ量の増え方が全然違うのですぐローテートするタイミングを変えたくなるだろうなと思ってです。

/home/wow/wowhoneypot/log/access_log{
        ifenpty
        dateformat .%Y%m%d
        missingok
        daily
        rotate 30
        endscript
}

/home/wow/wowhoneypot/log/wowhoneypot.log{
        ifenpty
        dateformat .%Y%m%d
        missingok
        daily
        rotate 30
        endscript
}

これでひとまず、ディスクフルでhoneypot が止まってしまうということはなくなりました。次回はいよいよログの集積環境を作っていきたいと思います。

参考文献

https://qiita.com/Esfahan/items/a8058f1eb593170855a1

WOWHoneypot をサービス化してみる

前回の記事では単にプログラムを自身のユーザ権限で実行しただけなので、SSHを切断したりするとハニーポット自体も終了してしまいます。なのでちゃんとデーモン化して常時起動しておくようにしてみたいと思います。

WOWHoneypot用のユーザを作る

万が一 WOWHonyepot に脆弱性があってユーザ権限を取られてしまった場合に、影響が最小限になるよう専用ユーザとし、sudo 権限などは与えないでおきます。

$ sudo adduser wow

安直にハニーポット名の先頭三文字を取ったけど、他のハニーポッターな方はもっと凝った名前をつけているのでしょうか…?

サービス化する

wowhoneypot.py を直接起動してしまうと、SSHを切断したりするとハニーポット自体も終了してしまうので、ちゃんとサービス化します。 バージョンアップ等に容易に対応できるように起動用のシェルスクリプトファイルを作ることにします。

以下の内容を、 /home/wow 直下に wowhoneypot.sh として保存します。WOWHoneypot 本体は /home/wow/wowhoneypot 以下にクローンされているとします。

#!/bin/bash
cd /home/wow/wowhoneypot
/usr/bin/python3 /home/wow/wowhoneypot/wowhoneypot.py

systemctl から扱えるように /etc/systemd/system 以下に wowhoneypot.service というファイルで以下の内容を保存します。

[Unit]
Description=WoWHoneypot daemon
Documentation=https://github.com/morihisa/WOWHoneypot

[Service]
ExecStart = /home/wow/wowhoneypot.sh
ExecRestart = /bin/kill -WINCH ${MAINPID} ; /home/wow/wowhoneypot.sh
ExecStop = /bin/kill -WINCH ${MAINPID}
Restart = no
Type = simple
User = wow
Group = wow

[Install]
WantedBy = multi-user.target

サービスとして起動、停止するには以下のコマンドを使います。

$ sudo systemctl enable wowhoneypot.service // 自動起動設定を有効に
$ sudo systemctl start wowhoneypot.service     // サービスを開始する
$ sudo systemctl stop wowhoneypot.service     // サービスを停止する

上記の eneble と start の両方を実行すると、以下のように wowhoneypot のプロセスが起動しているはずです。 もし起動していなかったら、 /var/log/syslog をみて原因を特定しましょう。大抵の場合、実行ファイルのパスが間違っているのではないかと思います。

f:id:kawa_xxx:20180506133236p:plain

おわりに

前回の記事とあわせて、これで wowhonyepot をきちんと植えることが出来ました。 次回は syslog でログを外部サーバに集積、簡易分析するのと、WOWHoneypot 1.1 で実装されたハンティング機能をいじって見ようと思います。

ハニーポット cowrie をカスタマイズしてみる

環境

  • cowrie
  • Ubuntu 16.04.3

cowrie をカスタマイズする

全てがデフォルトのハニーポットだと、攻撃者に気づかれる可能性もあると思うので何らか変化を加えておきたいですよね。ということで、ログイン後のファイルシステムをそれっぽく見せるべく、カスタマイズ方法を調べてみました。

この記事では、ファイルシステムに変更を加える方法と、ログイン可能なユーザを変更する方法をまとめます。

ファイルシステムをカスタマイズする

createfs コマンドを使ってみる

Github の README.md には honeyfs の説明に file contents for the fake filesystem - feel free to copy a real system here とあるので、この honeyfs 内にファイルを作ればそのまま見れるようになるのかと思い以下の図のように honeyfs/etc/hoge.txt を作成しましたが、そんな単純なことではありませんでした。

f:id:kawa_xxx:20180324150042p:plain

cowrie にある、ファイルシステムを作る bin/createfs コマンドを使ってみようということで、  honeyfs/etc/hoge.txt をつくって bin/createfs > data/fs.pickle して、 cowrie に ssh で繋いでみましたが、hoge.txt の存在がないどころか、バナー表示がなくなったり ls コマンドがなくなったりして何も出来ない残念なhoneypot になってしまいました。。

このコマンドは一体どう使ったらいいのだろうか…

fsctl コマンドを使ってみる

bin/fsctl data/fs.pickle で etc/ に touch で hoge.txt をつくったら上でつくった honeyfs/etc/hoge.txt の内容が見れました。 仮に膨大なファイルを追加した場合に全部 fsctl でやらなくては行けないのかな。めんどくさすぎる…

f:id:kawa_xxx:20180324150038p:plain

ログイン可能なユーザをカスタマイズする

cowrie にログインできるユーザ名とパスワードの組み合わせは、 data/userdb.txt に書かれた組み合わせで決定します。以下がデフォルトの内容です。

f:id:kawa_xxx:20180324150035p:plain

デフォルトの状態では、 root アカウントは root, 123456 以外のパスワードであればログインでき、 richard アカウントはどんなパスワードでもログインできるような設定になっています。

cowrie を動作させてログイン失敗のログに出てきたアカウント名とパスワードをここに追記してあげれば、より多様な攻撃を見ることができるようになるかもしれませんね。

参考文献

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

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

ハニーポット cowrie に囚われてみた

環境

  • cowrie
  • Ubuntu 16.04.3

ハニーポットに囚われるって?

ハニーポットを構築、運用、観察したことはあるけど、自分がハニーポットに入ったことはこれまでありませんでした。ハニーポットにとらわれるとはどんな感じなのか体験するためにやってみました。

cowrie に囚われて /etc/passwd を見てみた

ローカルの環境に VirtualBox で Ubuntu を入れて、その上に cowrie を構築しました。今回は実験用なので、ポート番号等はデフォルトのものから特に変更しませんでした。

まずは、 root で適当なパスワードでログインします。発行したコマンドはログが見やすいように、w コマンドと cat /etc/passwd を発行して exit でログアウトするというシンプルなもののみにしました。

f:id:kawa_xxx:20180321145308p:plain

結構いろんなユーザがあることになってますね。これは cowrie/honeyfs/etc/passwd にテキストで全く同じ内容が書いてあり、その内容が表示されるだけです。

自分の行動を自分で観察してみた

まずは cowrie.log の該当部分をみてみる。 CMD: w , Command found: w などと発行しているコマンドとそのコマンドがあったかどうかが記されているのが見て取れます。tty ログも記録したよというログが残っていますね。

f:id:kawa_xxx:20180321145323p:plain

それではお次は playlog コマンドで自身の行動をハニーポットが記録したものをみてみましょう。

f:id:kawa_xxx:20180321145329p:plain

うむ。やったことがそのまま出てますね。

終わりに

自分の行動を自分で分析してみることで、ハニーポットがどんな感じにログを出すのかの理解が進みやすくなると思うのでおすすめですね。

参考文献

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

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

GCP に cowrie ハニーポットを構築してみた

ニホンモモンガさんの書籍を参考に久しぶりにハニーポットを久しぶりに構築してみました。インスタンス等は書籍にある通り Google Cloud Platform を使ってUbuntu 16.04 LTS でセットアップしました。

よく使う cowrie の起動と停止のコマンド

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

cowrie のログを見る

cowrie の bin/playlog で侵入者の動きを再現する

ログインに成功し、何らかのコマンドが発行された場合に生成されるんですかね。

bin/playlog コマンドに tty ディレクトリ以下にあるファイルを指定すると、どのような流れでコマンドが発行されたかを確認することが出来ます。

$ bin/playlog log/tty/xxxxx.log

cowrie-logviewer を使う

cowrie-logviewer は検索等は出来ないけど、どこの国からアクセスされたかなどを閲覧しやすくしてくれるツールです。

ログファイルが少ないときは問題ないですが、1週間程度動かし続けてログが溜まった状態でこの Viewer を使おうとすると書籍のインスタンスタイプでは CPU が100%に張り付くので要注意です。溜まったログを見る場合は、ちゃんとローカルに落としてきてからやりましょー。

$ python cowrie-logviewer.py
$ ssh <ip> -p <sshのポート> -N -L8080:127.0.0.1:5000

おわりに

まだ植えてから数時間しか経っていないにもかかわらず、もうすでに5つも tty 配下にログが出来てます。

ほんとすごいな。見方を変えれば、弱い設定でSSHなどをインターネットへ公開すればすぐに入られてしまうということです。公開サーバを運用している人は注意が必要ですね。

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

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