EXISTにデータを取り込む設定をする

# はじめに

[前回](https://qiita.com/gasara099/items/c44ade08976a1222d847)、EXISTをインストールしました。
今回は脅威情報を取り込む設定をしていきます。
調査不足の部分が多いですが覚書として投稿いたします。

# insert2dbの初期設定

EXISTの設定は`./scripts/insert2db/conf/insert2db.conf`に行います。
ここでは、その設定手順を記載します。

## templateのコピー
templateが用意されているのでコピーします。

```
# cd /opt/exist
# cp ./scripts/insert2db/conf/insert2db.conf.template ./scripts/insert2db/conf/insert2db.conf
```

## EXISTのパスを設定

syspathにEXISTのパスを設定します。

```:/opt/exist/scripts/insert2db/conf/insert2db.conf
[exist]
syspath = /opt/exist
```

## データ収集設定



### reputation,exploit,vuln

insert2db.confの[exist]を記載していれば、とりあえずreputation,exploit,vulnは集めることができます。

MalshareとabuseのAPIキーをscript/conf/insert2db.confファイルに設定することで、それぞれのサイトからも情報収集できるようになるとのことです。（未実施）

以下のコマンドを叩くと、EXSITに情報が反映されるようになります。

```bash!
python3 scripts/insert2db/reputation/insert2db.py
python3 scripts/insert2db/exploit/insert2db.py
python3 scripts/insert2db/vuln/insert2db.py
```

実行した結果です。

Reputetion
![Screenshot 2020-09-13 23.38.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432669/fafe8959-952f-e059-9b2b-6b6ac1312812.png)

Exploit
![Screenshot 2020-09-13 23.38.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432669/7a16808e-4265-e3cd-0ce5-e047a2609a54.png)


Vuln以外は取得できました。
Vulnはjvnを参照しているようなのですが、ログでエラーを吐いているようでした。（原因は追求できておりません。）

```:/opt/exist/scripts/insert2db/vuln/logs/insert2db.log
2020-09-14 00:05:12,234 root <module> [INFO]: insert2db.py start
2020-09-14 00:05:12,306 root <module> [ERROR]: local variable 'res' referenced before assignment
2020-09-14 00:05:12,306 root <module> [ERROR]: name 'queries' is not defined
2020-09-14 00:05:12,307 root <module> [INFO]: insert2db.py done
```

回避策として後述するnewsで、jvnのrssを取得し更新したほうがよいかもしれません。



### threat

[misp](https://www.misp-project.org/)（脅威情報を共有する基盤）を構築する必要があるため割愛いたします。
連携方法は下記の参考サイトに詳しいです。

### twitter

こちらも割愛いたします。
同じく、連携方法は参考サイトに記載させていただいたサイトに詳しいです。
興味があるので実施した場合は別記事を書いてみたいと思います。

### news

[inoreader](https://www.inoreader.com/language/japanese)と連携して、feedを取得することができます。
取得したフィードはEXISTのトップページから閲覧することができます。
inoreaderと連携するにはAPIキーが必要です。

#### 登録からAPI取得まで

1. inoreaderに登録します。
2. 右上の設定メニューをクリックします。
3. 「設定」をクリックします。
3. 「アプリ開発」をクリックします。
4. 「新規アプリケーション」をクリックします。
5. 全体情報を埋めます。
    - 名前は任意です。
    - プラットフォームは「Web」にしました。
    - それ以外はいじらず保存しました。
6. App IDとApp Keyが発行されます。

App IDとApp Keyを発行したあとはconfファイルに設定を書き込みます。

```:/opt/exist/scripts/insert2db/conf/insert2db.conf
[inoreader]
AppID = 上記のApp ID
AppKey = 上記のApp Key
Email = 登録したemail
Passwd = 登録したときのパスワード
```

設定したあとpythonを実行すると、データを取得します。

```
python3 scripts/insert2db/news/insert2db.py
```

JPCERT/CCのRSSを取得してみたところ無事に取得できました。

![Screenshot 2020-09-13 23.24.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432669/666ae3f3-0572-0f76-de69-67c876d19253.png)

# cronの設定

定期的にデータを収集するようにcronに記載します。
APIの実行制限があると取得できなくなってしまうので、あまり短時間で回すとまずそうです。（それぞれどれぐらいまで行けるか未調査）
とりあえず1時間おきに動くようにしてみたいと思います。

```bash
# crontab -e
0 * * * * /usr/bin/python3 /opt/exist/scripts/insert2db/reputation/insert2db.py
0 * * * * /usr/bin/python3 /opt/exist/scripts/insert2db/exploit/insert2db.py
0 * * * * /usr/bin/python3 /opt/exist/scripts/insert2db/vuln/insert2db.py
0 * * * * /usr/bin/python3 /opt/exist/scripts/insert2db/news/insert2db.py
```


# 終わりに
EXISTにデータを取り込む設定を行い、各種サイトから情報が収集できる状態になりました。
今後の課題として、未調査部分の追加調査およびEXISTの拡張を行うためreputationで収集するサイトを増やしてみたいと思います。

# 参考サイト
- [サイバー脅威情報集約システム EXIST を活用する ～Twitter Hunter 周りの設定など～](https://soji256.hatenablog.jp/entry/2019/10/23/002347)