【脅威インテリジェンス】第三回 OpenCTIのインストール(2)

こんにちは。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に飛ばせばいいので難しくはないはず)、今回はこのまま勧めたいと思います。

  1. ログイン画面は下記のようになっています。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”がパスワードとなります。

  2. ログインするとダッシュボードが開きます。左ペインの「Data」を選択し、「Connectors」を選択します。

  3. 接続されているコネクタの状態が確認できます。それぞれのコネクタのアイコンの色が緑の場合には、ちゃんと動作しています。READ OPERATIONS/WRITE OPERATIONSで、コネクタからデータがデータが送られている状況が確認できます。


コネクタの追加

1. Connector for MISPの追加

  1. まず、MISP側で設定を行います。最初にMISPに管理者権限でログインして、接続用のユーザを作成します。

  2. MISPのAuth Keysを作成します。タブのAdministrationから、「List Auth Keys」を選択します。

  3. Authentication Key Indexが開くので、「Add authentication key」を選択します。

  4. ユーザを選択します。先に作成したユーザを選択します。

  5. Authkeyが表示されるのでコピーしておきます。こちらをOpenCTIサーバの方に設定します。

  6. OpenCTIサーバの設定を変更します。PortainerにログインしてStackとして「OpenCTI」を選択します。Editorのタブを選択します。

  7. Editorのタブを選択すると、OpenCTIのdocker.ymlファイルが編集できます。このymlを修正します。

  8. MISPコネクタ用のymlファイルですが、OpenCTIのコネクタのGitHubから設定を持ってきます。こちらのconnectors/external-import/以下に外部から情報をOpenCTIにインポートするコネクタがありますので、この中のOpenCTI MISP Connectorを使用します。

    connectors/external-import/misp/docker-compose.yml の設定を殆どそのまま持ってきます。3行目の「connector-misp:」以降をコピーします。

  9. 他のコネクタ類の設定に続けて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:
    

  10. ymlの修正が終わったら、「Update the stack」をクリックします。

  11. 左ペインで「Service」をクリックすると、Dockerで起動しているサービスの状態がわかります。安定するのにだいたい(環境に依存しますが)30分以上かかりますので、しばらく待ちましょう。OpenCTI_connector-mispがサービスがGreen(running)になり、replicatedが1 / 1の状態になったら、うまく動いているはずです。

  12. MISP Connectorが上手く動かないときには、まずcurlでMISPのAuthKeyを使ってアクセスできるかを確認します。この辺は、以前こちらの記事「OpenCTIとMISPの接続でハマった話(備忘録)」で紹介しましたが、最初にcurlでMISPにAPI接続できるか否かを確認したほうが良いと思います。

2. Connector for AlienVaultの追加

  1. Connector for MISPと同じ様に、PortainerのymlをEditします。まず、https://otx.alienvault.comのAPIキーを取得します。Alienvaultのデモサイト(otx.alienvault.com)のアカウントを登録し、ログインします。上のタブの「API Integration」をクリックします。

  2. DirectConnect API UsageとしてOTX Key:内にAPI接続のためのキーが表示されています。右側のアイコンをクリックするとコピーできますので、これをコピーしておきます。

  3. AlienVaultコネクタ用のymlファイルですが、MISPと同様にOpenCTIのコネクタのGitHubから設定を持ってきます。こちらのconnectors/external-import/以下に外部から情報をOpenCTIにインポートするコネクタがありますので、この中のOpenCTI AlienVault Connector を使用します。

    connectors/external-import/alienvault/docker-compose.yml の設定を殆どそのまま持ってきます。3行目の「connector-misp:」以降をコピーします。

  4. 他のコネクタ類の設定に続けて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:
    

  5. ymlの修正が終わったら、「Update the stack」をクリックします。

  6. 左ペインで「Service」をクリックすると、Dockerで起動しているサービスの状態がわかります。安定するのにだいたい(環境に依存しますが)30分以上かかりますので、しばらく待ちましょう。OpenCTI_connector-alienvaultがサービスがGreen(running)になり、replicatedが1 / 1の状態になったら、うまく動いているはずです。

フィードの確認

以上でMISP、AlienVaultの設定が終わりました。しばらくすると(システムに依りますが一晩ぐらい放置しておくと)、データが色々入ってきます。下図のように、AlienVaultのReport等も入ってきます(MISPのものはキャプチャできませんでしたが入ってきています)。

次回予告

次回は実際にOpenCTIでレポート等の検索を紹介します。

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