OpenCTIとMISPの接続でハマった話(備忘録)

こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。

脅威インテリジェンス情報をお届けすることを考えていますが、OpenCTIを導入時(これはまた別で纏める予定)にMISP(これもまた別で纏めます)との連携に時間を食ってしまったので、備忘録を兼ねてかんたんに纏めます。


環境

  • OpenCTI: Portainer経由でのDockerによる起動(4.2.4): hogehogeで8080ポートで動作
  • MISP: 2.4.146 (外部での別サーバ)
  • OpenCTI MISP Connector: GitHubから持ってきた最新(4.5.5)

問題の状況

OpenCTIの単独でのインストールは完了。コネクタのGitHubを参照しながら、CVE、MITREは導入完了し、きちんと起動すること(MITREからの情報を取ってこれること)までを確認済み。

別立てのMISPからOpenCTI MISP Connector経由で情報を取得しようとしたところ、下記のエラーが出てくる(設定でログメッセージをINFO->DEBUGにしてある)。


INFO:root:Listing Threat-Actors with filters null.,
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): hogehoge:8080,
Traceback (most recent call last):,
File "/opt/opencti-connector-misp/misp.py", line 1514, in <module>,
mispConnector = Misp(),
File "/opt/opencti-connector-misp/misp.py", line 87, in __init__,
self.helper = OpenCTIConnectorHelper(config),
File "/usr/local/lib/python3.9/site-packages/pycti/connector/opencti_connector_helper.py", line 409, in __init__,
self.api = OpenCTIApiClient(,
File "/usr/local/lib/python3.9/site-packages/pycti/api/opencti_api_client.py", line 141, in __init__,
raise ValueError(,
ValueError: OpenCTI API is not reachable. Waiting for OpenCTI API to start or check your configuration...,

コネクタの設定

コネクタの設定は色々試みたがうまく行かず、下記が最終的に「OK」だった設定。TOKENとURL、KEY以外は変えていない。


version: '3'
services:
connector-misp:
image: opencti/connector-misp:4.5.5
environment:
- OPENCTI_URL=http://hogehoge:8080
- OPENCTI_TOKEN=XXXXXXXXXX   <--- https://www.uuidgenerator.net/version4で作成したものをOPENCTI(hogehoge)上に割り当てている。WORKERなどでも指定
- CONNECTOR_ID=20XXXX-XXX-XXX-XXX                <---- 同上で作成したものを割り当てた
- 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=debug                      <--- infoからdebugに変更
- MISP_URL=https://misp-hogehoge # Required     <--- MISPサーバ
- MISP_REFERENCE_URL= # Optional, will be used to create external reference to MISP event (default is "url")
- MISP_KEY=pxxxxxxxxxxxxxxxxxxxxxxxxxxxxt       <--- MISPとつなぐ際のAUTH Key
- 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

ちなみにMISPのAUTH Keyの作成方法は下記。下記のメニューから

「Add Authetication key」で作成。同期専用のユーザを作成した。

途中のあがき

途中で色々あがいてみたが、まずホスト側から上述のMISPのAUTH Keyで情報を取ってこれるかを確認。これは

MISPのドキュメントに有るように


curl --header "Authorization: YOUR API KEY" --header "Accept: application/json" --header "Content-Type: application/json" https://<misp url>/

を用いて確認。きちんとデータが取得できる(かなりの量がながれてきた)ことから、AUTH Keyの設定は間違っていないことを確認。

そもそも、エラーログを見るとコネクタがhogehoge:8080に接続できていない模様。果たしてなぜ・・・

原因と対処方法

ネットで色々探したが、該当するような状況は見つけられず。ただ「Pythonのバージョンが違ってんじゃ・・」みたいな情報があったので「バージョン・・」と思い立ち、OpenCTIのバージョン(4.2.4)とConnectorのバージョン(4.5.5)が一致していないことに気づく。そのため、OpenCTIのdocker.ymlのバージョン番号を書き直して4.5.5で統一したところ、無事にMISPコネクタが起動した。

今回の反省点としては、MITREやCVEのコネクタ(これらも4.5.5)が動いたので大丈夫、と思ってしまったところかな。むしろMITREやCVEのコネクタが問題なく動いてたほうが驚きという。

最後に

皆様はこのようなケースにハマることはないと思いますが、万が一同じ状況に陥った方が居ましたら、こういうケースもあるよ、という事で情報を(備忘録がてら)共有します。まずはバージョン番号を合わせましょう、と(汗


セキュリティ系連載案内

CM

こちらで小学生の勉強支援サイトをオープンしました。算数のプリント(都度、自動生成)が無料でダウンロードできます。コンテンツは未だ少ないですが、徐々に増やしていきます。

セミナー情報1

2021/09/13 18:30から、OSSセキュリティ技術の会 第九回勉強会を行います。

7/30にリリースされたKeycloak 15で、FAPI(Financial-Grade API)、CIBA(Client Initiated Backchannel Authentication)に対応しました(Certificateはまだですが…)。またDevice Flowにも対応しています。これを記念し、KeycloakのFAPI,CIBAの主要開発者もお招きして、「KeycloakのFAPI CIBA 対応記念の巻」と題して勉強会を行います。

Connpassのこちらがプログラム内容と申し込みの詳細になります。奮ってご参加下さい。

セミナー情報2

コンピュータセキュリティシンポジウム(CSS)2021併設のワークショップ、 OSSセキュリティ技術ワークショップ(OWS) 2021の企画講演セッション及び、 一般論文セッションの発表募集をさせていただきます。

今年もオンラインでの開催となり、OWSトラックの一般論文セッションの論文募集(申込締め切り: 2021年08月02日(月))と企画セッションを行いますので,ご投稿とご参加よろしくお願いいたします。

https://www.iwsec.org/ows/2021/


タイトルとURLをコピーしました