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/


OSSに関するお困りごとは サイオス OSSよろず相談室まで

サイオスOSSよろず相談室 では、OSSを利用する中で発生する問題に対し、長年培ってきた技術力・サポート力をもって企業のOSS活用を強力に支援します。Red Hat Enterprise Linux のほか、CentOS をご利用されている環境でのサポートも提供いたします。

前へ

Linux Kernelの脆弱性(Important: CVE-2021-3715)

次へ

Linux Kernelの脆弱性(Moderate: CVE-2021-3744)