【ハニーポット】Web に対する攻撃の観測環境（ WOWHoneypot の導入）

SSH & Telnet に関する ハニーポットは、[こちらの記事](https://qiita.com/piropiro38/items/145b189b5d99b4e42547)で導入を解説済みですが、今回はWebに対する攻撃の観察として、**WOWHoneypot** と呼ばれる「サーバ型・低対話型の入門用 Web ハニーポット」を、Ubuntu 上にインストールし、動作確認を行う手順を解説します。

# WOWHoneypot とは
[**WOWHoneypot**](https://github.com/morihisa/WOWHoneypot)  は不正アクセスや攻撃を観測するための簡易ハニーポットとして、Web を通じた攻撃をログに残すことが可能です。低対話型のため扱いやすく、ハニーポット運用の入門としても適しているとも言えます。但し、2025年現在からすると、最終更新が2020年6月と5年近くが経過し少し古めで、メンテナンス上の問題があるとも言いえるかもしれません。ご利用は、常々自己責任でという事になるかと思います。


WOWHoneypotは、主に以下の特徴を持つ Web ハニーポットです:

- **サーバ側で動作する低対話型ハニーポット**  
  攻撃者のアクセスを受け取り、実際に本物のアプリケーションが動作しているかのように最低限のレスポンスを返します。  
- **HTTPリクエストの観測**  
  攻撃者からのリクエスト内容やパラメータ、ヘッダ情報などを記録できます。  
- **軽量かつ単純な構成**  
  Python スクリプトを起動するだけで動作するため、導入が容易で、初めてハニーポットを運用する方にも向いています。  

# インストール前の準備

本記事では **Ubuntu 24.04 LTS** を例にしています。多少のバージョンが異なる場合も、大きな変更はないかと思いますが、環境に応じて適宜ご確認ください。

Ubuntu 自体のOSのパッケージを最新化しておきます。
```
$ sudo apt update
$ sudo apt dist-upgrade
```

依存関係で必要なくなったパッケージは削除します。
```
$ sudo apt autoremove
```
Python や Git などをインストールしておきます。netstatコマンドも使えるように、net-toolsをインストールしておきます。

```
$ sudo apt install -y git python3 python3-pip python3-venv
$ sudo apt install -y net-tools
```

# WOWHoneypot のダウンロード

WOWHoneypot のソースコードは GitHub で公開されています。好きなディレクトリへ移動し、`git clone` で取得します。ここでは `/opt` を例にします。

```bash
$ cd /opt
$ sudo git clone https://github.com/morihisa/WOWHoneypot.git
# 所有者を現在のユーザーに変更（必要に応じて）
$ sudo chown -R $USER:$USER WOWHoneypot
$ cd WOWHoneypot
```
Python で作られたアプリケーションである WOWHoneypot は、依存関係を分離するために仮想環境で動作させる事が望ましいです。以下の手順で env_wowhoney という仮想環境を作成し、有効化します。
```
$ pwd
/opt/WOWHoneypot

$ python3 -m venv env_wowhoney
$ source env_wowhoney/bin/activate
(env_wowhoney) $
```

# WOWHoneypot の起動 & 動作確認

起動は、Pythonスクリプトを実行するだけです。
```
(env_wowhoney) $ python3 ./wowhoneypot.py
```

WOWHoneypot が起動している状態で、別の端末や同一ホストのブラウザから、下記のようにアクセスしてみます。

```
http://<ホストIP>:8080/
```

WOWHoneypot が正常に動作していれば、ブラウザ上で何らかのレスポンスやページが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507379/0935be1c-ccfa-4867-8882-e786a0b5af67.png)


# ログの確認

WOWHoneypot は、攻撃リクエストやアクセス内容をログファイルに記録します。リポジトリのドキュメントなどを確認し、下記の場所に出力されます。

- `log/access.log`：アクセスログが記録
- `log/wowhoneypot.log`：WOWHoneypot の動作ログが記録  

実際にログをチェックする際は tail コマンドなどで確認してみます。ブラウザからのアクセスに併せて、何等かログが出ていれば一旦はOKです。

```bash
(env_wowhoney) $ tail -f log/access.log
・・中略・・
[2025-03-11 15:30:18+0900] <接続元のIP> <接続先のIP>:8080 "GET /favicon.ico HTTP/1.1" 200 False R0VUIC9mYXZpY29uLmljbyBIVFRQLzEuMQpIb3N0OiAxOTIuMTY4L～
```

# まとめ

本記事では、**WOWHoneypot** を Ubuntu 上に導入し、基本的な起動から動作確認までを解説しました。

- **依存ライブラリのインストール**：関係するライブラリ（主にPython環境）
- **GitHub からクローン & 起動**：`WOWHoneypot.py` を実行し、 Web サーバとして起動 
- **ブラウザやツールでアクセス**：ブラウザからのアクセスとログの動作を確認

WOWHoneypot は低対話型でシンプルな Web ハニーポットのため、初めてハニーポットを扱う方にも導入しやすいのが魅力です。軽量な構成でありながら攻撃の観測に活用できるので、本格的なハニーポット運用やセキュリティ研究への第一歩として試してみてください。

# 補足
- Pythonスクリプト本体のバグ
最終メンテナンスから5年近くたっているせいか、Python3.12の環境で素直にPythonコードを実行すると、`random.seed(datetime.now())`のコードが TypeError を引き起こしていたので、以下の通り修正しました。修正前後の diff の結果を残しておきます。
```
$ diff wowhoneypot.py_ORG wowhoneypot.py
418c418
<     random.seed(datetime.now())
---
>     random.seed(datetime.now().timestamp())
```

- Accessログのデコード
ログはBase64でエンコードされているので、解析のためにはデコードが必要です。Splunkで解析する場合は、[DECRYPT2](https://splunkbase.splunk.com/app/5565)というAppsが便利です。

# 参考
- [WOWHoneypot](https://github.com/morihisa/WOWHoneypot)