こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。
ジャンルを今迄よりも広げて、脅威インテリジェンス情報をお届けすることを考えています。
今回は、前回に引き続き、立ち上がったOpenCTIの設定の確認から、MISPやAlienVaultからのフィードを設定するところまでを取り上げます。
脅威インテリジェンス連載記事
環境(前回と同様)
- プラットフォーム:VM(TIME4VPSを使用)。
- OS: Ubuntu 20.04 (64-bit)
- Processor: 2 x 2.6 GHz
- Memory: 16384 MB (つまり16GB!)
- Storage: 80 GB
- Bandwidth: 1000 Mbps (Monthly limit: 16 TB)
- 1 Gbps port speed ( 12.00 EUR )
TIME4VPSは激安なので、上記のスペックで年間「192EUR = 25,000円程度」になります。使用感としては、スペックは問題ないですし安定しています。ただ、MISPの時に感じたのと同じく、日本からだとネットワークが遅いので、上述の1Gbps port (12.00 EUR)をつけたほうが絶対良いです。
WebUIでの確認
前回までのインストールが上手く行くと、OpenCTIのWebUIがPort:8080で立ち上がっているはずです。これにアクセスしてログイン・設定を行います。本来であればhttps化したいところですが(nginxやapacheなどでhttpsに飛ばせばいいので難しくはないはず)、今回はこのまま勧めたいと思います。
- ログイン画面は下記のようになっています。Portainerでのopenctiで
image: opencti/platform:4.5.5 environment: - NODE_OPTIONS=--max-old-space-size=8096 - APP__PORT=8080 - APP__ADMIN__EMAIL=hogehoge - APP__ADMIN__PASSWORD=fugafuga
となっている部分の”hogehoge”がログインID、”fugafuga”がパスワードとなります。
- ログインするとダッシュボードが開きます。左ペインの「Data」を選択し、「Connectors」を選択します。
- 接続されているコネクタの状態が確認できます。それぞれのコネクタのアイコンの色が緑の場合には、ちゃんと動作しています。READ OPERATIONS/WRITE OPERATIONSで、コネクタからデータがデータが送られている状況が確認できます。
コネクタの追加
1. Connector for MISPの追加
- まず、MISP側で設定を行います。最初にMISPに管理者権限でログインして、接続用のユーザを作成します。
- MISPのAuth Keysを作成します。タブのAdministrationから、「List Auth Keys」を選択します。
- Authentication Key Indexが開くので、「Add authentication key」を選択します。
- ユーザを選択します。先に作成したユーザを選択します。
- Authkeyが表示されるのでコピーしておきます。こちらをOpenCTIサーバの方に設定します。
- OpenCTIサーバの設定を変更します。PortainerにログインしてStackとして「OpenCTI」を選択します。Editorのタブを選択します。
- Editorのタブを選択すると、OpenCTIのdocker.ymlファイルが編集できます。このymlを修正します。
- MISPコネクタ用のymlファイルですが、OpenCTIのコネクタのGitHubから設定を持ってきます。こちらのconnectors/external-import/以下に外部から情報をOpenCTIにインポートするコネクタがありますので、この中のOpenCTI MISP Connectorを使用します。
connectors/external-import/misp/docker-compose.yml の設定を殆どそのまま持ってきます。3行目の「connector-misp:」以降をコピーします。
- 他のコネクタ類の設定に続けてMISPコネクタの設定を追記します。下記のような感じになります(volumes:以降は元々の設定です)。
version: '3' services: redis: image: redis:6.0.10 restart: always volumes: - redisdata:/data --省略-- connector-history: image: opencti/connector-history:4.5.5 environment: - OPENCTI_URL=http://hogehoge.secureoss.jp:8080 - OPENCTI_TOKEN=804ab986-cca2-4fb2-a6fe-0dc4a6d02409 - CONNECTOR_ID=1f304606-c83e-4ff1-817d-21ef75d254a0 # Valid UUIDv4 - CONNECTOR_TYPE=STREAM - CONNECTOR_NAME=History - CONNECTOR_SCOPE=history - CONNECTOR_CONFIDENCE_LEVEL=3 - CONNECTOR_LOG_LEVEL=info restart: always connector-export-file-stix: image: opencti/connector-export-file-stix:4.5.5 environment: - OPENCTI_URL=http://hogehoge.secureoss.jp:8080 --省略-- restart: always connector-misp: image: opencti/connector-misp:4.5.5 environment: - OPENCTI_URL=http://hogehoge.secureoss.jp:8080 - OPENCTI_TOKEN=【OpenCTIのToken】 - CONNECTOR_ID=20f73488-abbc-40e7-b47f-e6052f3447fa - CONNECTOR_TYPE=EXTERNAL_IMPORT - CONNECTOR_NAME=MISP - CONNECTOR_SCOPE=misp - CONNECTOR_CONFIDENCE_LEVEL=15 # From 0 (Unknown) to 100 (Fully trusted) - CONNECTOR_UPDATE_EXISTING_DATA=false - CONNECTOR_LOG_LEVEL=info - MISP_URL=https://hogehoge.secureoss.jp # Required - MISP_REFERENCE_URL= # Optional, will be used to create external reference to MISP event (default is "url") - MISP_KEY=XXXXXXXXXXXXXXXXXXXXXXXX【上述のMISPで共有専用で作成したユーザに設定したAuthKey】 - MISP_SSL_VERIFY=False # Required - MISP_DATETIME_ATTRIBUTE=timestamp # Required, filter to be used in query for new MISP events - MISP_CREATE_REPORTS=True # Required, create report for MISP event - MISP_CREATE_INDICATORS=True # Required, create indicators from attributes - MISP_CREATE_OBSERVABLES=True # Required, create observables from attributes - MISP_CREATE_OBJECT_OBSERVABLES=True # Required, create text observables for MISP objects - MISP_REPORT_CLASS=MISP Event # Optional, report_class if creating report for event - MISP_IMPORT_FROM_DATE=2000-01-01 # Optional, import all event from this date - MISP_IMPORT_TAGS=opencti:import,type:osint # Optional, list of tags used for import events - MISP_IMPORT_TAGS_NOT= # Optional, list of tags to not include - MISP_IMPORT_CREATOR_ORGS= # Optional, only import events created by this ORG (put the identifier here) - MISP_IMPORT_OWNER_ORGS= # Optional, only import events owned by this ORG (put the identifier here) - MISP_IMPORT_DISTRIBUTION_LEVELS=0,1,2,3 # Optional, only import events with the given distribution levels - MISP_IMPORT_THREAT_LEVELS=1,2,3,4 # Optional only import events with the given threat levels - MISP_IMPORT_ONLY_PUBLISHED=False - MISP_IMPORT_WITH_ATTACHMENTS=False # Optional, try to import a PDF file from the attachment attribute - MISP_IMPORT_TO_IDS_NO_SCORE=40 # Optional, use as a score for the indicator/observable if the attribute to_ids is no - MISP_INTERVAL=1 # Required, in minutes restart: always volumes: esdata: s3data: redisdata: amqpdata:
- ymlの修正が終わったら、「Update the stack」をクリックします。
- 左ペインで「Service」をクリックすると、Dockerで起動しているサービスの状態がわかります。安定するのにだいたい(環境に依存しますが)30分以上かかりますので、しばらく待ちましょう。OpenCTI_connector-mispがサービスがGreen(running)になり、replicatedが1 / 1の状態になったら、うまく動いているはずです。
- MISP Connectorが上手く動かないときには、まずcurlでMISPのAuthKeyを使ってアクセスできるかを確認します。この辺は、以前こちらの記事「OpenCTIとMISPの接続でハマった話(備忘録)」で紹介しましたが、最初にcurlでMISPにAPI接続できるか否かを確認したほうが良いと思います。
2. Connector for AlienVaultの追加
- Connector for MISPと同じ様に、PortainerのymlをEditします。まず、https://otx.alienvault.comのAPIキーを取得します。Alienvaultのデモサイト(otx.alienvault.com)のアカウントを登録し、ログインします。上のタブの「API Integration」をクリックします。
- DirectConnect API UsageとしてOTX Key:内にAPI接続のためのキーが表示されています。右側のアイコンをクリックするとコピーできますので、これをコピーしておきます。
- AlienVaultコネクタ用のymlファイルですが、MISPと同様にOpenCTIのコネクタのGitHubから設定を持ってきます。こちらのconnectors/external-import/以下に外部から情報をOpenCTIにインポートするコネクタがありますので、この中のOpenCTI AlienVault Connector を使用します。
connectors/external-import/alienvault/docker-compose.yml の設定を殆どそのまま持ってきます。3行目の「connector-misp:」以降をコピーします。
- 他のコネクタ類の設定に続けてAlienVaultコネクタの設定を追記します。下記のような感じになります(volumes:以降は元々の設定です)。
version: '3' --省略-- - MISP_INTERVAL=1 # Required, in minutes restart: always connector-alienvault: image: opencti/connector-alienvault:4.5.5 environment: - OPENCTI_URL=http://hogehoge.secureoss.jp:8080 - OPENCTI_TOKEN=【OpenCTIのToken】 - CONNECTOR_ID=e062610a-fbcf-4542-a4f5-8374a4060f12 - CONNECTOR_TYPE=EXTERNAL_IMPORT - CONNECTOR_NAME=AlienVault - CONNECTOR_SCOPE=alienvault - CONNECTOR_CONFIDENCE_LEVEL=15 # From 0 (Unknown) to 100 (Fully trusted) - CONNECTOR_UPDATE_EXISTING_DATA=false - CONNECTOR_LOG_LEVEL=info - ALIENVAULT_BASE_URL=https://otx.alienvault.com - ALIENVAULT_API_KEY=xxxxxxxxxxxxxxxxxxx【前述のようにhttps://otx.alienvault.comからコピーしてきたキー】 - ALIENVAULT_TLP=White - ALIENVAULT_CREATE_OBSERVABLES=true - ALIENVAULT_CREATE_INDICATORS=true - ALIENVAULT_PULSE_START_TIMESTAMP=2020-05-01T00:00:00 # BEWARE! Could be a lot of pulses! - ALIENVAULT_REPORT_TYPE=threat-report - ALIENVAULT_REPORT_STATUS=New - ALIENVAULT_GUESS_MALWARE=false # Use tags to guess malware. - ALIENVAULT_GUESS_CVE=false # Use tags to guess CVE. - ALIENVAULT_EXCLUDED_PULSE_INDICATOR_TYPES=FileHash-MD5,FileHash-SHA1 # Excluded Pulse indicator types. - ALIENVAULT_ENABLE_RELATIONSHIPS=true # Enable/Disable relationship creation between SDOs. - ALIENVAULT_ENABLE_ATTACK_PATTERNS_INDICATES=true # Enable/Disable "indicates" relationships between indicators and attack patterns - ALIENVAULT_INTERVAL_SEC=1800 restart: always volumes: esdata: s3data: redisdata: amqpdata:
- ymlの修正が終わったら、「Update the stack」をクリックします。
- 左ペインで「Service」をクリックすると、Dockerで起動しているサービスの状態がわかります。安定するのにだいたい(環境に依存しますが)30分以上かかりますので、しばらく待ちましょう。OpenCTI_connector-alienvaultがサービスがGreen(running)になり、replicatedが1 / 1の状態になったら、うまく動いているはずです。
フィードの確認
以上でMISP、AlienVaultの設定が終わりました。しばらくすると(システムに依りますが一晩ぐらい放置しておくと)、データが色々入ってきます。下図のように、AlienVaultのReport等も入ってきます(MISPのものはキャプチャできませんでしたが入ってきています)。
次回予告
次回は実際にOpenCTIでレポート等の検索を紹介します。