Workbee運用方法

以前に投稿したWorkerbeeの運用方法の一例紹介となります。
Workerbeeの運用に必要なHoneypotの構築については以前にアップロードした記事をご参照下さい。
Honeytrap + WOWHoneypot をDockerで構築
https://qiita.com/sec-chick/items/83cf1ff2708b874d78cc

# 目次
1. Workerbeeのインストール
2. Slackの設定およびAPIキー取得
3. VirusTotalのAPIキー取得
4. Workerbeeの設定
5. Workerbeeの利用方法
6. Workbeeの運用方法

# 1. Workerbeeのインストール
以下のコマンドをコンソールに入力し、必要なツールをダウンロードします。

```shell:
$ cd 任意のフォルダ
$ git clone https://github.com/sec-chick/Workerbee.git
```
以降、Workerbeeの設定に必要な設定およびAPIキー取得を行なっていきます。

# 2. Slackの設定およびAPIキー取得
## 2.1 Slackの設定
Slackのアカウントを作成済みである場合、2.2へスキップしてください。

1. 以下のURLへアクセスします。
https://slack.com/signin

2. ワークスペースを新規作成をクリックします。
<img width="655" alt="slack1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573683/f7e39c71-b911-5bbf-9094-48e132a555cb.png">

3. メールアドレスを入力します。
<img width="533" alt="slack2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573683/7fbeab60-61d9-672c-4ec7-f2e5a2839008.png">

4. 入力したメールアドレスに届いたメールからアクティベートを行います。

5. 社名またはチーム名を入力し、次へをクリックします。
<img width="480" alt="slack3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573683/015cfb2a-fe0b-406d-1c9b-07b001abe977.png">

6. 以降も入力していき、ワークスペースおよびチャンネルを作成します。

7. 作成後、Slack連携に必要なAPIキーが表示されるので、該当の


## 2.2 APIキー取得
1. 自分のワークスペースへアクセスします。
2. ワークスペースアクセス後、右側のメニューから「Apps」を選択し、「Bots」をインストールします。
<img width="640" alt="slack_bot.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573683/3d6fe785-7c89-e823-356f-14de104251dc.png">
3. slackに追加をクリックします。
<img width="777" alt="bots.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573683/bedd02c5-5305-4823-1d82-51ac8b10c7ab.png">
4. ユーザ名を入力し、「ボットインテグレーション」を追加するをクリックします。
<img width="931" alt="username.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573683/52502e1e-67b9-d978-131b-0f6279322c7e.png">
5. 表示されたAPI Keyを利用するので、コピーしておきます。
<img width="868" alt="apikey.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573683/c0994e17-0321-ae61-76a5-a5cf03061297.png">

## 2.3 Honeypot用のチャンネル作成
Honeypot用のチャンネルを作成していきます。
必要に応じて、以下のチャンネルを作成してください。
・WOWHoneypot用(HTTP)
・WOWHoneypot用(HTTPS)
・Honeytrap用
・マルウェア解析用(Honeytrap)

以下にチャンネルの作成方法を記載します。ここではPCブラウザでの作成を想定しています。
1. 左のチャンネルの右にある「＋」をクリックし、「チャンネルを作成する」をクリックします。
<img width="425" alt="slack5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573683/0eec093c-a9c2-d0ff-4cf4-b782005c8725.png">
2. チャンネル名を入力し、作成をクリックします。
<img width="488" alt="slack6.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573683/11f3f775-187f-9392-78d1-f790cbee28d0.png">


# 3. VirusTotalのAPIキー取得
こちらはマルウェア解析を必要としない人は4までスキップしてください。

1. VirusTotalへアクセスします。  
https://www.virustotal.com/
2. VirusTotalの右上にある「Sign in」をクリックします。
<img width="935" alt="VirusTotal_Top.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573683/fa9c9292-9192-33e1-bd59-332673336577.png">
3. 「New? Join the community」をクリックします。
<img width="995" alt="virustotal_signin.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573683/68a02be0-16cc-6e8b-171e-983d428ba16d.png">
4. 必要な項目を入力し、赤枠のチェックを入れた後、「Join us」をクリックします。 
<img width="983" alt="join.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573683/5bb9e6c0-76d4-bb26-c6f1-8da9e0a589d5.png">
5. 入力したメールアドレスにVirusTotalからメールが届いているので、リンクをクリックします。
6. リンククリック後、「Sign in」し、登録したログイン情報でログインを行います。
<img width="935" alt="VirusTotal_Top.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573683/fa9c9292-9192-33e1-bd59-332673336577.png">
7. 右上のアイコンマークをクリックし、「API Key」をクリックします。
<img width="804" alt="virustotal_api.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573683/4d860239-cb3b-6846-7d68-5e394e788285.png">
7. アクセス後、APIキーが表示されるので、コピーしておきます。

# 4. Workerbeeの設定
Workerbeeの設定ファイルである config.py を埋めていきます。

```config.py
# -*- coding: utf-8 -*-
# Path
workerbee_path = '' # ①
uri_path_list_csv= workerbee_path + '/uri_path.csv' # ②

# malware
malware_result_file= workerbee_path + '/malware_result_file.csv'
malware_path=workerbee_path + '/malware'

# API KEY
SLACK_API_TOKEN=''　# ③
vt_apikey = '' # ④

# Error File
error_file=workerbee_path + '/error.csv'


# slack channel ⑤
slack_channel_new_malware='#'
slack_channel_honeytrap ='#'
slack_channel_wowhoneypot='#'
slack_channel_wowhoneypotssl='#'

#mode setting ⑥
slack_flag='OFF' # slack送信フラグ ON/OFF
```
ここでは、主に入力する必要がある箇所を①〜⑤について記載します。
また、必要に応じて、各フォルダの格納場所やファイルの読み込みなどは変更してください。

## ① workerbee_path
この変数にはWorkerbeeをダウンロードしたフォルダを指定します。

```
# cd Workerbeeをインストールしたフォルダ
# pwd
```
pwdで表示されたパスを workerbee_path の中に入力してください。
例：

```
workerbee_path = '/home/ubuntu'
```
## ② uri_path_list_csv
標準では「/uri_path/uri_path.csv」になっていますが、自分で一から作成する場合は「/uri_path.csv」に変更してください。

## ③ SLACK_API_TOKEN
2.2 で作成したAPIキーを入力します。

```
SLACK_API_TOKEN = 'SlackのAPIキー'
```
## ④ vt_apikey
3 で作成したAPIキーを入力します。

```
vt_apikey = 'VirusTotalのAPIキー'
```

## ⑤ slack channel
2.3 で作成したチャンネルを入力していきます。
### slack_channel_new_malware
マルウェア解析結果を通知するチャンネル名を入力します。
### slack_channel_honeytrap
Honeytrapの解析結果を通知するチャンネル名を入力します。
### slack_channel_wowhoneypot
WOWHoneypot(HTTP)を通知するチャンネル名を入力します。
### slack_channel_wowhoneypotssl
WOWHoneypot(HTTPS)を通知するチャンネル名を入力します。
例：

```
slack_channel_new_malware='#Malware'
slack_channel_honeytrap ='#Honeytrap'
slack_channel_wowhoneypot='#wowhoneypot'
slack_channel_wowhoneypotssl='#wowhoneypotssl'
```

## ⑥ slack_flag
ここではslackへの連携を行うかどうかの設定を行います。
設定変更を行う場合は'ON'へ変更してください。

例：

```
slack_flag='ON' # slack送信フラグ ON/OFF
```

# 5. Workerbeeの利用方法
## 5.1 基本的なコマンド
### WOWHoneypotの分析方法
WOWHoneypotの分析を行う場合、「wowhoneypot_csv_write.py 」および「wowhoneypot_slack.py 」を利用します。
「wowhoneypot_csv_write.py」では、解析しやすくするためのcsvファイルを作成します。
その後、作成したcsvファイルを利用して「wowhoneypot_csv_write.py 」を実行することでSlackへ通知が発生します。

#### ツールの説明
wowhoneypot_csv_write.py:
第１引数にWOWHoneyupotの「access_log」を指定し、第２引数で出力するファイル先を指定します。

wowhoneypot_csv_write.py：
第１引数にwowhoneypot_csv_write.pyで出力したcsvファイルを指定し、第２引数で解析対象(wowhoneypot もしくは wowhoneypotssl)を指定します。
第２引数の指定はHTTPの場合は「wowhoneypot」を指定し、HTTPSの場合は「wowhoneypotssl」を指定します。

#### 使用例
コマンド例：
WOWHoneypot(HTTP)を分析

```
# python3 /home/ubuntu/Workerbee/wowhoneypot_csv_write.py /home/ubuntu/docker/log/wowhoneypot/access_log  /home/ubuntu/docker/log/wowhoneypot/wowhoneypot_payload.csv
# python3 /home/ubuntu/Workerbee/wowhoneypot_slack.py /home/ubuntu/docker/log/wowhoneypot/wowhoneypot_payload.csv wowhoneypot
```

コマンド例：
WOWHoneypot(HTTPS)を分析

```
# python3 /home/ubuntu/Workerbee/wowhoneypot_csv_write.py /home/ubuntu/docker/log/wowhoneypotssl/access_log  /home/ubuntu/docker/log/wowhoneypot/wowhoneypot_payload.csv
# python3 /home/ubuntu/Workerbee/wowhoneypot_slack.py /home/ubuntu/docker/log/wowhoneypotssl/wowhoneypot_payload.csv wowhoneypotssl
```

### Honeytrapの分析方法
Honeytrapの分析を行う場合、「honeytrap_csv_write.py」および「honeytrap_slack.py」を利用します。
「honeytrap_csv_write.py」では、解析しやすくするためのcsvファイルを作成します。
その後、作成したcsvファイルを利用して「honeytrap_slack.py」を実行することでSlackへ通知が発生します。

#### ツールの説明
honeytrap_csv_write.py:
第１引数にHoneytrapの「attackers.json」を指定し、第２引数で出力するファイル先を指定します。

honeytrap_slack.py：
第１引数にhoneytrap_csv_write.pyで出力したcsvファイルを指定します。

#### 使用例
コマンド例：

```
# python3 honeytrap_csv_write.py /home/ubuntu/docker/log/honeytrap/log/attackers.json /home/ubuntu/docker/log/honeytrap/log/honeytrap_payload.csv
# python3 honeytrap_slack.py /home/ubuntu/docker/log/honeytrap/log/honeytrap_payload.csv
```

### Honeytrapのマルウェア分析を行う場合
Honeytrapの分析を行う場合、「honeytrap_malware_check.py」および「honeytrap_virustotal.py」を利用します。
「honeytrap_malware_check.py」では、マルウェアの可能性があるファイルを保存するファイルをなっています。また、ファイル保存とともに、マルウェアに関する情報をcsvファイルに出力されます。出力先は「config.py」で指定したファイル先となります。
「honeytrap_virustotal.py」では「honeytrap_malware_check.py」で収集したマルウェアについてVirusTotalの結果を追記します。

#### ツールの説明
honeytrap_virustotal.py:
第１引数にHoneytrapの「attackers.json」を指定し、第２引数で出力するファイル先を指定します。

honeytrap_virustotal.py：
引数の指定は特に必要ありません。

コマンド例：

```
# python3 honeytrap_malware_check.py  /home/ubuntu/docker/log/honeytrap/log/attackers.json
# python3 honeytrap_virustotal.py
```
# 6 Workerbeeの運用方法
ここではWorkerbeeの運用例について紹介します。今回、紹介する運用方法は以下の通りです。
① 日次分析
Honeytrap,WOWHoneypot(HTTP,HTTPS)の日次分析を行い、自動的にSlackへ連携する
② マルウェアの自動分析
1時間に1回、Honeytrapのログに対してマルウェアの検知がないか確認し、新規マルウェアがあった場合、Slackへ連携する

これらを実現するために Logtotateによるログのローテーションおよびcronによる定期的な実行を行います。

## 5.2 Logrotateの設定
/etc/logrotate.d にログローテーション用の設定ファイルを作成します。
なお、ファイル名については必要に応じて変更してください。

```
$ sudo vim /etc/logrotate.d/wowhoneypot
$ sudo vim /etc/logrotate.d/wowhoneypotssl
$ sudo vim /etc/logrotate.d/honeytrap
```
ファイルの中身は以下の①〜③をそれぞれ入力します。

①

```/etc/logrotate.d/wowhoneypot
/home/ubuntu/docker/log/wowhoneypot/access_log { # 対象のログファイル
    ifempty
    dateext
    dateformat _%Y%m%d 
    missingok          # ログファイルがなくてもエラーを出さない
    delaycompress      # ログの圧縮作業を次回のローテーション時まで遅らせる
    daily              # 毎日ローテートする
    rotate 10
}
```

②

```/etc/logrotate.d/wowhoneypotssl
/home/ubuntu/docker/log/wowhoneypotssl/access_log { # 対象のログファイル
    ifempty
    dateext
    dateformat _%Y%m%d 
    missingok          # ログファイルがなくてもエラーを出さない
    delaycompress      # ログの圧縮作業を次回のローテーション時まで遅らせる
    daily              # 毎日ローテートする
    rotate 10
}
```

③

```/etc/logrotate.d/honeytrap 
/home/ubuntu/docker/log/honeytrap/log/attackers.json { # 対象のログファイル
    ifempty
    dateext
    dateformat _%Y%m%d 
    missingok          # ログファイルがなくてもエラーを出さない
    delaycompress      # ログの圧縮作業を次回のローテーション時まで遅らせる
    daily              # 毎日ローテートする
    rotate 10
}
```

## 5.3 Cronの設定
自動化するために自分が実施しているCronの設定を紹介します。
ここではUbuntuでのCronの設定方法について記載します。他のOSを利用している人は適宜読み替えて頂ければと思います。

ディレクトリおよびファイル名は以下のように設定しています。
ディレクトリ ：
/home/[自分で設定したユーザ名]/Workerbee : Honeypot分析ツールであるWorkerbeeの格納
/home/[自分で設定したユーザ名]/cron : cronで実行するスクリプトファイル

ファイル：
/home/[自分で設定したユーザ名]/cron/daily_report.sh : 日次分析用スクリプトファイル

以下の設定では[自分で設定したユーザ名]をubuntuとして説明していきます。

まずは、cronで必要となるスクリプトファイルを作成します。
以下のコマンドを入力し、以下のスクリプトファイルを入力してください。
※作成するフォルダの場所は適宜変更してください。

```
# mkdir ~/cron
# cd ~/cron
```

①日次分析用のcron設定
1.日次分析用のcronファイルを作成します。

```
# cd ~/cron
# vim daily_report.sh
```

```daily_report.sh
#!/bin/bash
docker-compose -f /home/ubuntu/docker/docker-compose.yml restart
python3 /home/ubuntu/Workerbee/wowhoneypot_csv_write.py /home/ubuntu/docker/log/wowhoneypot/access_log_`date +%Y%m%d`  /home/ubuntu/docker/log/wowhoneypot/wowhoneypot_payload_`date +%Y%m%d`.csv
python3 /home/ubuntu/Workerbee/wowhoneypot_slack.py /home/ubuntu/docker/log/wowhoneypot/wowhoneypot_payload_`date +%Y%m%d`.csv wowhoneypot
python3 /home/ubuntu/Workerbee/wowhoneypot_csv_write.py /home/ubuntu/docker/log/wowhoneypotssl/access_log_`date +%Y%m%d`  /home/ubuntu/docker/log/wowhoneypotssl/wowhoneypotssl_payload_`date +%Y%m%d`.csv
python3 /home/ubuntu/Workerbee/wowhoneypot_slack.py /home/ubuntu/docker/log/wowhoneypotssl/wowhoneypotssl_payload_`date +%Y%m%d`.csv wowhoneypotssl
python3 /home/ubuntu/Workerbee/honeytrap_csv_write.py /home/ubuntu/docker/log/honeytrap/log/attackers.json_`date +%Y%m%d` /home/ubuntu/docker/log/honeytrap/log/honeytrap_payload_`date +%Y%m%d`.csv
python3 /home/ubuntu/Workerbee/honeytrap_slack.py  /home/ubuntu/docker/log/honeytrap/log/honeytrap_payload_`date +%Y%m%d`.csv
python3 /home/ubuntu/Workerbee/honeytrap_malware_check.py  /home/ubuntu/docker/log/honeytrap/log/attackers.json
python3 /home/ubuntu/Workerbee/honeytrap_virustotal.py
```

2.cronに設定を行います。ここでは前日分の分析を0:15 に実行する用に設定しています。/etc/cron.d の配下にdaily_honeypotという名前で作成します。

```
sudo vim /etc/cron.d/daily_honeypot
```

ファイルの中身は以下となります。

```/etc/cron.d/daily_honeypotdaily_honeypot
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
15 00 * * * root sh /home/ubuntu/cron/daily_report.sh > /home/ubuntu/python/both.log 2>&1
```

② マルウェア分析用のCron
1.マルウェア分析用ののcronファイルを作成します。

```
# cd ~/cron
# vim malware_analysis.sh 
```

ファイルの中身は以下となります。

```malware_analysis.sh 
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
docker-compose -f /home/ubuntu/docker/docker-compose.yml restart
/usr/bin/python3 /home/ubuntu/Workerbee/honeytrap_malware_check.py  /home/ubuntu/docker/log/honeytrap/log/attackers.json
```

2.cronに設定を行います。ここでは前日分の分析を0:15 に実行する用に設定しています。/etc/cron.d の配下にhourly_malware_analysisという名前で作成します。

```
sudo vim /etc/cron.d/hourly_malware_analysis
```
ファイルの中身は以下となります。

```/etc/cron.d/hourly_malware_analysis
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
00 1-23 * * * root sh /home/ubuntu/cron/malware_analysis.sh > /home/ubuntu/cron/both_now.log 2>&1
```

以上でCronの設定が完了となります。

何かご不明な点がありましたら、コメントやDMを頂けると幸いです。