OpenCTIを構築した後、MISPと連携させる(OpenCTIをコマンドラインから導入した場合)

先日、MacのParalleles Desktop上にそれぞれ別サーバとして構築したMISPとOpenCTIを連携させてみたのでここにその方法を記載しておきます。

なお、以下に書いたとおり、OpenCTIを構築する場合、コマンドラインから構築する方法と、portainer.io経由で構築する方法があるようです。

私の場合はコマンドラインから構築しました。(portainer.io経由でもやってみましたが、今のところ私の環境では成功していません。)

コマンドラインから構築する場合は、こちらの方のサイトが参考になると思います。

Re:ゼロから始めるOpenCTI 導入編(Zenn)
https://zenn.dev/daiya/articles/658a4f4811e2fa

portainer.io 経由で構築したいという方は、こちらのサイトが参考になると思います。

OPENCTI INSTALLATION (blog agood cloud)
https://blog.agood.cloud/posts/2020/04/22/opencti-installation/

1.misp接続用のdocker-compose.ymlをコピー

OpenCTIが正常に構築できていることを確認した後、以下のGithubのサイトにmisp接続用のdocker-compose.ymlが置いてありますので、取りに行きます。

https://github.com/OpenCTI-Platform/connectors/blob/master/external-import/misp/docker-compose.yml

そのymlの3行目から最後(47行目)までをコピーします。

1  version: '3'
2  services:
3    connector-misp:
4      image: opencti/connector-misp:5.8.7
5      environment:
  ・・・
46       - MISP_INTERVAL=5 # Required, in minutes
47    restart: always

2.OpenCTI用のdocker-compose.ymlに貼り付ける

1.でコピーしたデータを OpenCTI用のdocker-compose.ymlの中に貼り付けます。

なお、docker-compose.ymlの場所は、openctiをどのディレクトリ配下に構築したかに依存しますが、私の場合、/usr/local/openctiというディレクトリを作って構築したので、その下のdockerディレクトリ の中にありました。

docker-compose.ymlをviなどで開いた後、以下のように「connector-import-document」のセクションの直後に先ほどコピーした「connector-misp」のセクションを挿入します。

・・・
 connector-import-document:
    image: opencti/connector-import-document:5.8.3
    environment:
      - OPENCTI_URL=http://opencti:8080
      - OPENCTI_TOKEN=${OPENCTI_ADMIN_TOKEN}
      - CONNECTOR_ID=${CONNECTOR_IMPORT_DOCUMENT_ID} # Valid UUIDv4
・・・
    restart: always
    depends_on:
      - opencti
  connector-misp:
    image: opencti/connector-misp:5.8.3
    environment:
      - OPENCTI_URL=http://opencti:8080
      - OPENCTI_TOKEN=${OPENCTI_ADMIN_TOKEN}
      - CONNECTOR_ID=(UUIDv4を取得し設定)⭐️
      - CONNECTOR_TYPE=EXTERNAL_IMPORT
・・・
      - CONNECTOR_LOG_LEVEL=info
      - MISP_URL=https://(MISPサーバのIPアドレスを設定)⭐️
      - MISP_REFERENCE_URL= # Optional, will be used to create external reference to MISP event (default is "url")
      - MISP_KEY=(MISPのAPIキーを設定)⭐️
      - MISP_SSL_VERIFY=false # Required
・・・
      - MISP_INTERVAL=1 # Required, in minutes
    restart: always
    depends_on:
      - opencti
volumes:
  esdata:
  s3data:
  redisdata:
  amqpdata:

「connector-misp」のセクションを挿入したら、環境に合わせて修正をしますが、通常は⭐️をつけた3つの部分だけ変更した方がよいです。

なお、最初の⭐️の部分のUUIDv4ってなに?って感じの人(私もそんな1人です)もいると思いますが、以下のサイトから生成した世界に一つ?のIDをコピーしてくるだけで大丈夫です。

Online UUID Generator
https://www.uuidgenerator.net/version4

それ以外を編集するとたぶんハマると思います。

たとえば「OPENCTI_URL」「OPENCTI_TOKEN」あたりを変えたくなるかもしれませんが、それを変えてしまった為に私はすこしハマりました。

3.OpenCTIを再ビルドする

上記のymlファイルを編集した後、 OpenCTIを再起動すれば変更が反映されるとおもっていました。

しかし実はそうではなく、再ビルドのコマンドを実行する必要があるようです。そのコマンドがこちらです。

$ docker-compose up -d --build

これを知らなかったが為に、いくらymlファイルを修正してもうまくいかず、かなりハマってしまいました。

以下のZenn様のページが参考になりました、ありがとうございました。

Re:ゼロから始めるOpenCTI External Input Connector編(Zenn)
https://zenn.dev/daiya/articles/ce1c3ad92c53aa

4.OpenCTIのダッシュボードを確認してみる

うまく設定できていれば OpenCTIダッシュボードの「Data」-「Connector」に以下のとおりMISPが表示されその横のマークがグリーンになっているはずです。

OpenCTIダッシュボード

もしうまくいかない場合は、、、

以下を試してみるといいかもしれません。

A. portainer.ioをインストールしてみる

OpenCTIをインストールしたマシンに、portainer.ioを入れてみましょう。これによりDockerの状態がGUIで見れるようになり、問題点がわかりやすくなります。

portainer.io

B. 以下のコマンドを打って環境を整え直してみる

正直あまり根拠はありません(MISPとの接続にhttps接続が必要だったので関係あるかなと思っているくらいです)が、以下のコマンドをOpenCTIのサーバ上で打ってみるといいかもしれません。

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

それぞれのコマンドの詳しい説明は冒頭に紹介した「OPENCTI INSTALLATION (blog agood cloud)」を見てください。

MISP にてIoCを集めてみたがダッシュボードのどこに記載されているかわかりにくかった件

諸事情により先日、MISP をインストールして画面を触ってみたのですが、ぱっと見、どこにIoCが格納されているのかわかりづらかったので、ここに記載しておきます。

1.イベントIDをクリック

MISPのトップページ(Home)にてEventリストが表示されていると思いますので、その項目の中からIoCを確認したいEventの「ID」をクリックします。

MISPダッシュボード1

このEventが個々の脅威と考えてようさそうです。

2.イベント画面を下にスクロール

Eventの「ID」をクリックするとそのEventの詳細情報が表示されますので、画面を下にスクロールさせます。

MISPダッシュボード2

3.IoCを確認

すると、マルウェアのハッシュや Virus Totalのレポートへのリンクと思われる情報を見つけることができます。

MISPダッシュボード3

AbuseIPDBにアクセスするPythonプログラムを試してみた

ある理由から AbuseIPDB にIPアドレスを投げてその評価結果を受け取るPythonプログラムを作成しようと思いググったところ、以下のYoutube動画を見つけました。

AbuseIPDB API Python Script(Mostafa Yahia)

そこで真似して作成してみることにしました。

なお、上記動画で紹介しているPythonプログラムは以下のGitHubで公開されています。

https://github.com/Mostafayahia-hunter/AbuseIPDB-API-Python

だだし、最近、AbuseIPDBからのレスポンスが変わったのか、一部の箇所でエラーがでたので、csv_columnsの定義の部分を以下の通り書き換えました。(’isTor’を追加しました。)

csv_columns = ['ipAddress','isPublic','ipVersion','isWhitelisted','abuseConfidenceScore','countryCode','usageType','isp','domain','hostnames','isTor','totalReports','numDistinctUsers','lastReportedAt']

また、Pythonプログラム実行時に要求される IPリストとして入力するcsvファイルとしては、以下のような内容を用意しました。

IP,
88.29.56.3,
1.158.10.11,
161.35.146.242,
177.84.141.183

そしてコマンドプロンプト上で実行した結果がこちらです。

Python実行画面

実行するとAbuseIP_results.csvというファイルが出来上がっており、それを開いてみた結果は以下の通りです。

Python実行結果

プログラムをいろいろいじってみて CSVライブラリの使い方あたりがとても勉強になりました。

2段階認証設定をしているGoogleアカウントにプログラムからアクセスするには、アプリパスワードを使いましょう

Power Automateから2段階認証を行なっているGmailのメールサーバ経由でメールを送信する場合、Gmail で使っている通常のパスワードではなく、Googleからアプリパスワードを取得する必要があります。

ここでは、そのアプリパスワードの取得方法を記載しています。

1.Googleアカウント画面を表示する

Googleのサイト(https://www.google.com/)にアクセスすると、右上に自分のアイコンがありますので、それをクリックします。

クリックすると「Googleアカウントを管理する」というボタンが表示されるので、それをさらにクリックします。

googleサイト

すると、「Google アカウント」という画面が表示されますので、その画面の左メニューから「Security」をクリックします。

google account

セキュリティ画面に移ると、2段階認証の設定項目がありますので、それをクリックします。

google security

2段階認証の画面に移ったら、ページを一番下までスクロールさせると「アプリ パスワード」の設定項目がありますので、それを再度クリックします。

Google – 2Step Verification

アプリ パスワードの画面の下側でパスワードを利用する「アプリ」と「デバイス」を選択し、「生成」ボタンを押します。

Google – Application password

するとアプリ パスワードが生成されますので、これをGmailにアクセスさせるアプリに設定します。

Google – Application Password

横浜国立大学の am I infected? で自宅のルータのセキュリティを調べてみた

色々な企業でVPNの脆弱性から社内ネットワークに侵入されている事例を見るにつれ、自分の家のルータは大丈夫かと心配しておりました。

そんな中、横浜国立大学さんの方からルータのセキュリティをチェックしてくれるサービスがあると聞き、さっそく試してみました。

1.感染チェック開始

DDoSを引き起こしてしまうようなマルウェアに感染していないかチェックするには、以下のサイトから3つの項目を入力して「感染診断をはじめる」のボタンを押すだけです。

am I infected?
https://amii.ynu.codes/

【入力項目】
・自分のメールアドレス(ここに検査結果がメールされる)
・現在の環境をプルダウンメニューから選択(自宅のルータかどうかなど)
・このサイトを知ったきっかけをプルダウンメニューから選択する

am I infected?(横浜国立大学)

2.チェック完了のメールが届く

感染チェックが完了すると、先ほど入力した自分のメールアドレスに届きます。

am I infected?からの検査結果メール

たしかWebには5分くらいかかりますと書いてあったと思いますが、実際には2〜3分くらいでメールが届きました。

3.チェック結果をWebで確認する

2.で届いたメールに書かれているリンクをクリックすると診断結果を確認できます。

我が家のルータは幸いにも安全な状態でした。ファームアップの連絡が届いたらすぐに適用しているので、それが幸いしているかもしれませんね。

診断結果(横浜国立大学)

みなさんも1度といわず、定期的にチェックしてみるといいと思いますよ。

攻撃検知にMITER ATT&CKを活用する方法を検討する(その2)

前回、ATT&CK活用の1回目を書いてみました。

http://k2-ornata.com/miter-attck_leverage/

そして前回の続きで、今回は第4位(出現数:88)に入っている以下のテクニックについて調べてみた。

T1105 Ingress Tool Transfer
(侵入ツールの送り込み)

すると、ATT&CKのDETECTIONには以下の記載がある。

T1105 Ingress Tool TransferのDetection(MITER ATT&CK)

この中から「DS0029 Network Traffic」のそれぞれについて検索してみると、以下の通り書かれている。

Network Connection Creation
Monitor for newly constructed network connections that are sent or received by untrusted hosts or creating files on-system may be suspicious. Use of utilities, such as FTP, that does not normally occur may also be suspicious.

Network Connection Creation(MITER ATT&CK)

Network Traffic Content
Monitor network traffic content for files and other potentially malicious content, especially data coming in from abnormal/unknown domain and IPs.

Network Traffic Content(MITER ATT&CK)

Network Traffic Flow
Monitor network data for uncommon data flows (e.g., a client sending significantly more data than it receives from a server). Processes utilizing the network that do not normally have network communication or have never been seen before are suspicious.

Network Traffic Flow(MITER ATT&CK)

これらの検知について、SIEMに検知ルールが実装されているか調べてみた。

検索条件としては「ATT&CK Technique:T1105」と「Data Sources:Network Communication」としてみた。

すると以下のとおり2つヒットした。

Splunk 画面

Spike in SMB Traffic

Splunk画面

こちらはルールも見えますね。

Splunk画面

サンプルデータも入ってました。

Splunk画面

Suspicious Network Connectionの方。

こっちはUBA機能がないとだめっぽい。

Splunk画面

攻撃検知にMITER ATT&CKを活用する方法を検討する(その1)

ATT&CKを使って、特定のグループのテクニックを調べ、それを検知できるようにすることも考えられる。

しかしながら、その企業がどの攻撃グループに狙われるか、事前に想定するには難しいし、常に同じグループから狙われるとも限らない。

そこで、ATT&CKの中から、特に多く使われているテクニックから焦点をあてて監視実装をしていくのが適切と考える。

たとえば、最近のテクニックのトレンドはNECさんが定期的に以下のようにまとめていたりする。

NECセキュリティブログ
MITRE ATT&CK 頻出手口 トップ10 Vol.3(2022年5月版)
https://jpn.nec.com/cybersecurity/blog/220527/index.html

これをまず、ATT&CKにマッピングしてみる。

ATT&CKに頻出手口トップ10をマッピング

これをみると一番多く利用されているテクニックは以下になっており、出現数は152回のようだ。

T1059 Command and Scripting Interpreter
(コマンドとスクリプトインタプリタ)

これをATT&CKで調べてみよう。

すると以下のように大きく4つの検知方法が示されている。

T1059 Command and Scripting Interpreter に対するDetection(ATT&CK)

この中からさらに「Command Execution」を見てみる。

Command Execution

すると「T1548 Abuse Elevation Control Mechanism」や「T1087 Account Discovery」など、攻撃のフェーズは異なるが、いろいろなコマンド実行があることがわかる。

さらに、「T1548 Abuse Elevation Control Mechanism」の中から「T1548.002 Bypass User Account Control」を見てみよう。

Bypass User Account Control(その1)
Bypass User Account Control(その2)

すると、ページの中にところどころ、「eventvwr.exe」や「sdclt.exe」などのコマンドがかかれている。

このコマンドを調べてみると、以下のサイトなどで調べてみると、どうやらこれらのコマンドには、権限昇格時にユーザーに確認することなく権限昇格を行うことが可能な設定がなされているようです。

UAC回避機能を複数搭載したランサムウェア「HkCrypt」
https://www.mbsd.jp/blog/20171012.html

この検知を実装しているSIEMがあったので参考に載せておく。

Splunk

MITER ATT&CK Navigatorで複数の攻撃集団の攻撃テクニックを重ねて色塗りしてみた

前回、特定の攻撃集団の攻撃テクニックを確認する基本的なATT&CK Navigatorの使い方を確認してみました。

http://k2-ornata.com/miter-attck-navigator_attack-group_technique/

そこで今回は複数の攻撃集団の攻撃テクニックを重ねて表示する(色塗りする)方法を記載しておきます。

なお、この方法は、先に色塗りした攻撃グループの攻撃テクニックが、後で色塗りした攻撃グループのテクニックで塗り潰されてしまうので、注意してください。

1.BlackTech の攻撃テクニックを色塗りする

まず1つ目の攻撃集団 BlackTech のテクニックを検索します。

ATT&CK Navigator(MITER)

検索窓から攻撃集団の名前を入れると「Threat Group」に検索にヒットした集団の名前が表示されるので、その中の「select」ボタンを押します。

ATT&CK Navigator(MITER)

その後で、下図のように好きな色をカラーパレットから選べば、その色で攻撃集団のテクニックが色塗りされます。(下図の場合は赤色)

ATT&CK Navigator(MITER)

色塗りをした後は「deselect」で選択を解除しておきます。

ATT&CK Navigator(MITER)

2.Lazarus Groupの攻撃テクニックを色塗りする

1.と同じ要領でLazarus Groupの攻撃テクニックを色塗りします。

ATT&CK Navigator(MITER)

3.Kimsukyの攻撃テクニックを色塗りする

Kimsukyについても同様に行います。

ATT&CK Navigator(MITER)

このように攻撃集団のテクニック毎に色を分けて塗りつぶすことができました。

ただし、今回の方法では、先に述べたように先に色塗りした攻撃集団のテクニックが後に色塗りした攻撃集団のテクニックで上書きされてしまいます。

もっとよい方法が無いか、もう少し調べてみたいと思います。

MITER ATT&CK Navigatorで特定の攻撃集団の攻撃テクニックを洗い出す

諸事情によりMITER ATT&CKを利用して、特定の攻撃集団が得意な攻撃テクニックを抽出する方法が知りたくなったので、実際にATT&CK Navigatorを使って操作してみました。

1. MITREのサイトにアクセスする

下記のMITERのサイトにアクセスします。

https://attack.mitre.org/matrices/enterprise/

すると、以下のようなサイトが表示されるので、右上にある「View on the ATT&CK® Navigator」のリンクをクリックします。

ATT&CK MATRICES

以下の画面が表示されたら、「Create New Layer」から企業向けと思われる「Enterprise」を選択してみます。

ATT&CK Navigator

すると、ATT&CK Navigatorが表示されます。

2. Navigatorにて攻撃グループを指定

ATT&CK Navigatorが表示されたら、上のツールバーの虫めがねマークをクリックし、検索窓から攻撃グループを指定します。

ATT&CK Navigator

ここでは、台湾や日本を狙った中国の攻撃集団と言われている「BlackTech」を指定しています。

すると、「Threat Groups」の中に「BlackTech」が表示されるので、そこにマウスのカーソルを当てると、その攻撃集団が利用すると思われるテクニックはハイライトされます。

3.対象環境を絞り込む

さらに、漏斗のアイコンをクリックすると、OSの種類やオンプレ/クラウドなどの環境を絞ったテクニックのみ表示させることも可能です。

ATT&CK Navigator

4.攻撃集団のテクニックのマッピング状況

なお、最近トレンドマイクロが発表していた「主な標的型攻撃集団」を確認してみたところ、以下のようになっていました。

攻撃集団ATT&CK Navigatorでの検索可否
BlackTech(ブラックテック)中国が拠点
Earth Tengshe(アーステンシェ)(≒APT10?なら中国が支援していると言われている)×(APT10(menuPass)なら○)
LODEINFO(ロードインフォ)(≒APT10?なら中国が支援していると言われている)×(APT10(menuPass)なら○)
Lazarus Group(ラザルス)北朝鮮が拠点
Kimsuky(キムスキー)北朝鮮が拠点
攻撃集団とATT&CK Navigatorへの登録状況

私の調べ方が悪い可能性や別の名前で登録されている可能性がありますが、すべての攻撃集団が登録されているわけではなさそうです。

新しい攻撃集団が出た場合は、その全容を調べるのに少し時間がかかるのかもしれませんね。

<参考サイト>
・日本を狙う標的型攻撃に立ち向かうために、知っておくべき5つのこと(トレンドマイクロ)
https://www.trendmicro.com/ja_jp/jp-security/22/e/securitytrend-20220510.html#3
・MITRE ATT&CK徹底活用(@IT)
https://atmarkit.itmedia.co.jp/ait/articles/2209/08/news004.html

つるぎ町立半田病院のコンピュータウィルス感染調査報告書は学ぶことが多い

先月6月16日に、徳島県つるぎ町立半田病院のコンピュータウィルス感染について調査報告書がまとめられております。

それをあるきっかけで読んでみたところ、大変学ぶところが多かった為、特に印象に残った部分を記録しておきます。

病院側の素早い対応

報告書を読んでみて、まず病院側のランサム 事案発生後の対応が素早いと感じました。

これは報告書の中にも書かれているとおり、ランサム を想定したものではありませんが、大規模災害発生時に備えて、BCP をちゃんと作成されていたためだと思います。

構築ベンダー側のセキュリティ意識の低さ

一方で、病院のシステムを構築したベンダー側(A社、C社)は、システム構築時にいろいろと不手際があったことはいなめないかなという印象です。

特に構築時の対応としてまずいかなとおもったのは以下の3点です。

1.VPN装置(FortiGate E60)がインターネットのどこからでもアクセスできるようになっていた。
2.Active Directoryにてログオンにいくら失敗してもロックアウトされないようになっていた。
3.各サーバ/PCにてWindows Updateが止められており、またウィルス対策ソフトが導入されていなかった。

FortiGateの脆弱性を放置し続けたのは両者の責任ではないか?

ただ、運用時においてFortiGate E60の脆弱性をそのまま放置し続けていた点については、システム管理者が1人しかいなかったとはいえ、病院側の対応もまずかったのではないかと思います。

FortiGateの脆弱性は何度もニュースで流れていましたからね。

インシデント対応時のベンダー対応についてはいろいろ考えさせられる

1.VPN装置(FortiGate)を慌ててアップデートしてログを消失

慌てていたとは言え、この点はかなりまずかったですね。

この作業をしていた時点で侵入経路がわかっていなかったとはいえ、あわててファームウェアをアップデートしたということは、ここからの侵入の可能性があったわけです。
そうであれば、まずはログの確保が優先だったのではないでしょうか?

ファームウェアのアップデートでログが消えるということを知らなかったのかもしれませんが。

まず、抜線隔離し、ログ確保ということですね。

2.端末調査のためにサーバやPCを自社に送付させ、その輸送中に機器が壊れる

ここは送ってほしい気持ちはわかります。調査の設備的に、会社に送付してもらったほうが十分は調査ができるので。また現地のプレッシャーの中で調査するのは躊躇われるのも理解はできます。

ではどうすればよかったか。正直、精密機器専門の業者に輸送をお願いするくらいしか、私には思いつきませんでした。

3.ファストフォレンジックだがなかなか解析が終わらない、復旧したはずのサーバが復旧しきれていない

うーん、ここの技術的にはかなり難しいとおもうので一概に責められない気はしています。

ただ復旧したかどうかの確認は、もう少し手厚くやるべきだったのかもしれません。ネットワークにもどしてまた再発すると最悪なので。

4.ベンダーが何らかの方法で暗号化されたファイルを復号。本事案について攻撃者からの脅迫はなし・・・ここの関係は?

ここはベンダー側の説明があまりなかったということなので、今のところ判然としていないようですが、このレポートだけみると、なんらかの裏取引があったようにも見えてしまいます。

技術編のレポートも参考になる話がいっぱい

本編のレポート意外に技術編のレポートもありますが、このレポートも学びがたくさんありました。たとえば、以下の点です。

・ランサム の暗号化には楕円暗号も使われている
・ランサム の暗号化速度は1G〜10G/1分くらい
・暗号化を高速にするために先頭だけ暗号化していることが多い
・パスワードは16文字以上で利用する文字の指定をしないのがおすすめ
・RDPはログインログがデフォルトで残るが、それはやめたほうがいい
・RDPサーバは多要素認証できないので、その手前に多要素認証できる機器を置く

などなど。

正直、1度ざっと読んだだけでは気がつかないこともありそうなので、もう1回は読んでみたいと思っています。

2022.07.17 追記

もう一度技術編で気になっていた、封じ込め、復旧のところを読んでみました。

<封じ込め>
ここでは侵入者の締め出し観点で以下の対応を行うということだと思います。

1.VPN装置のLAN抜線(PCじゃないのでシャットダウンしてもよい?)やインターネット接続のホワイトリスト化(できれば全遮断。。。できるか?)
2.侵害された可能性のあるパスワードの変更
3.ADで不審なアカウント操作の確認などを行い、あやしいアカウントは削除
4.ログの分析と一元管理

<復旧>
1〜3あたりは普通やりそうですが、4、5まで出来たら完璧ですねー。

1.フォレンジックの実施
2.ウィルススキャン(封じ込め段階で実施するとまずいらしい。。メモリ上の痕跡や消えたり、ログが大量になってしまうから?)それでもだめなら初期化
3.データの復元
4.漏洩した可能性のあるデータの監視(ここは専門のベンダーに任せるしかないのかな。)
5.対応手順の更新(ここまでできるとすばらしいですねー。)

<参考サイト>

・コンピュータウイルス感染事案有識者会議調査報告書について(つるぎ町立半田病院)
https://www.handa-hospital.jp/topics/2022/0616/