センスを磨くブログ

やったことを書いていく

ログをdiscordに吐くbot作った

やったこと

WOWHoneypotのログを定期的に知らせてくれるbotを作成した
以前、slackにログを吐くbotの記事を見たことがある気がしたのだが、自分はdiscordを多く使うのでこっちを選んだ

環境

  • Ubuntu18.04
  • Python3

詳細

Pythonは最近学習を初めたばかりなのでコードが汚いのは勘弁...
使用する場合は自己責任でお願いします

github.com

使い方

pip install discord.py
python core.py

core.pyにtokenと cogs/log.py にWOWHoneypotのログファイルのパスを記入してください

コマンドの説明

!log [Y-m-d | all]
 ログを出力する
 Y-m-dの形式で日付指定、allで全て出力
 引数を指定しないと実行時の日付のログを出力

!tmstart
 毎時00分になった時に1時間前のログを表示する機能を有効にする

!tmstop
 !tmstartで有効にした機能を無効にする

!bhelp
 !helpより詳細な説明を表示する

感想

最近Pythonの学習を本格的に初めた
"Python初心者"を脱出し、今よりもPythonの理解度が上がったら一度コードを書き直してみようと思った

あとgitむずかしい

ハニーポットを植えた+α

n0s3nse.hatenablog.jp

前回の記事ではハニーポットを構築し、ハンティングルールをとりあえず設定した
一つだけでは足りない気もしたのでアクセスが多そうなコンテンツをいくつか追加してみた

phpinfo.phpを追加

mrrules.xmlに条件を追記

<mrr>
<meta>
<mrrid>10001</mmrid>
<enable>True</enable>
<note>phpinfo</note>
</meta>
<trigger>
<uri>phpinfo</uri>
</trigger>
<response>
<status>200</status>
<header>
<name>Server</name>
<value>Apache</value>
</header>
<header>
<name>X-Powerd-By</name>
<value>PHP/[任意のバージョン]</value>
</header>
<header>
<name>Content-Type</name>
<value>text/html; charset=UTF-8</value>
</header>
<body filename="phpinfo.html"></body>
<!-- ↑wowhoneypotではphpを使用できないので、別ファイルに保存したphpinfoの結果を返すようにする -->
</response>
</mrr>

phpinfo.htmlを作成する

$curl http://localhost/phpinfo.php > phpinfo.html

外部に露見したらまずそうなところを改変したり、mrrules.xmlで指定したバージョンと合わせておいたほうがいいかも?

WP-loginを追加

同じくmrrules.xml

<mrr>
<meta>
<mrrid>10002</mmrid>
<enable>True</enable>
<note>wp-login</note>
</meta>
<trigger>
<uri>wp-login</uri>
</trigger>
<response>
<status>200</status>
<header>
<name>Server</name>
<value>Apache</value>
</header>
<header>
<name>X-Powerd-By</name>
<value>PHP/[任意のバージョン phpinfoのと合わせる]</value>
</header>
<header>
<name>Cache-Control</name>
<value>no-cache, must-revalidate, max-age=0</value>
</header>
<header>
<name>Set-Cookie</name>
<value>wordpress_test_cookie=WP+Cookie+check; pass=/wordpress</value>
</header>
<header>
<name>X-Frame-Optiom</name>
<value>SAMEORIGIN</value>
</header>
<header>
<name>Content-Type</name>
<value>text/html; charset=UTF-8</value>
</header>
<body filename="wp-login.html"></body>
</response>
</mrr>

WP-login.htmlを作成

$curl http://localhost/wp-login.php > wp-login.html

WOWHoneypotを植えた

やったこと

かなり前にWOWHoneypotをCentOSに植えた

環境

  • CentOS7.6
  • Python3

インストール

特に何も躓くことなく完了

$cd /opt
$git clone https://github.com/morihisa/WOWHoneypot.git WOWHoneypot
$cd WOWHoneypot
$sudo firewall-cmd --add-port=80/tcp --zone=public --permanent
$sudo firewall-cmd --add-forward-port:port=80:proto=tcp:toport=8080 --zone=public --permanent
$sudo firewall-cmd --reload

アクセスルールの追加

アクセスしてきたときのURLによってコンテンツを変えられる機能がある

$vim art/mrrules.xml

これを編集することでルールを設定できる
とりあえず攻撃が多いであろうphpMyAdminのルールを設定した
デフォルトでルールが用意されているが、簡易的なものなのでこれを無効化

96行目

<enable>True</enable>
↓
<enable>False</enable>

新しくルールを追加
以下のブログを参考にさせていただいた graneed.hatenablog.com

ハンティング機能の設定

有効にすると、送られてきたリクエストに特定の文字列が含まれている場合に 通常のログとは別に保存してくれる

vim config.txt

29行目

hunt_enable=False
↓
hunt_enable=True

これで機能を有効化できた

vim art/huntrules.txt

このファイルにルールを記載する
正規表現が使用可能
自分は以下を追加した

  • echo
  • download
  • java
  • exec
  • cmd
  • syscmd

本体を起動する

$python wowhoneypot.py

無事起動することを確認
ログはlogフォルダ内に保存される

感想(?)

とても構築が簡単
製作者様が日本人ということもあり、readmeを読んだだけでもすぐ構築できる
ハニポ初心者が始めるならば、cowrieよりもこちらのほうが良さげだと思った