SIGMAルールのリポジトリ(GITHUB)からZIPをダウンロードし、どんなルールが含まれているか MITER ATT&CKにマッピングしてみた

Github 上などに標準化された SIEM ルールである SIGMAルールがたくさんおかれているのですが、これらのルールが ATT&CKのどの TTPs に該当するものなのか確認したいと考えていました。

調べてみたところ、SIGMAルールを PCにダウンロードし、sigmatools に含まれる sigma2attack というコマンドを実行すれば ATT&CK Navicgator のヒートマップが作れるということがわかってきたので、実際にやってみました。

1.ZIP(SIGMAルール)のダウンロード

以下のような Github サイトの SIGMAリポジトリにアクセスします。

Github - SigmaHQ/sigma 
https://github.com/SigmaHQ/sigma

すると、rules ディレクトリ配下にたくさんの SIGMA ルールが置かれていることが確認できます。

Github – SigmaHQ/sigma

このページを下にスクロールしていくと、「Rule Packages」という項目があるので、その中のリンク「release page」をクリックします。

Github – SigmaHQ/sigma

すると、さきほどの SIGMAルールがまとめて Zip化されて置いてあるページにとばされるので、その中から、sigma_all_rules.zip などをダウンロードします。

Github – SigmaHQ/sigma – Release

ZIPファイルをダウンロード後、ローカルのPC上で SIGMAルールを展開します。

Github – SigmaHQ/sigma – Release

2.ヒートマップ(json)ファイルの作成

1.で展開した SIGMAルールから MITER ATT&CK Navigator に取り込むヒートマップを作成するには、最初に書いたとおり sigmatools が必要ですので、以下の要領でダウンロード&インストールします。

 % pip3 install sigmatools

インストールが終わったら以下のような形式で sigmatattack コマンドを実行すれば、heatmap.json というファイルが、コマンドを実行したディレクトリに作成されます。

% sigma2attack --rules-directory ./rules

ちなみに、先ほど展開した SIGMAルール はコマンドを実行する直下の /rules フォルダに展開されている為、上記では –rules-directory でそのフォルダを指定しています。

3.ATT&CKへのヒートマップの取り込み

2.で作成した heatmap.json というファイルを MITER ATT&CK Navigator から取り込みます。

MITER ATT&CK Navigator
https://mitre-attack.github.io/attack-navigator/

下図の赤枠で示したボタンを押し、先ほどローカルPCで作成した heatmap.json を指定し取り込みます。

MITER ATT&CK Navigator

なお、取り込む際に以下のように取り込むヒートマップの ATT&CK対応バージョンが古い(v10)とでますので、最新の v15に変換するか聞かれました。(Yesと答えました。)

MITER ATT&CK Navigator – warning

すると、以下の通りMITER ATT&CK Navigator上にヒートマップが取り込まれ、該当する部分が色付きで表示されました。

MITER ATT&CK Navigator

SIGMAルールから Splunkルールに変換する

SIGMAルールとは、Splunk など製品固有の言語(SPLなど)で書かれた検知ルールではなく、より汎用的?に記載された検知ルールのようです。

したがって、SIGMAルールがあれば、そこから Splunk や Sentinelなどいろいろなベンダーの SIEM で利用できる検知ルールが作成できます。

ちなみに SIGMAルールは以下のGITHUBのサイトなどに置かれています。

GITHUB
https://github.com/SigmaHQ/sigma/tree/master
https://github.com/NVISOsecurity/sigma-public

なお、SIGMAルールから各SIEM固有の検知ルールを生成する方法としては、 Webサイトのサービスを利用する方法とコマンドラインの2通りがありそうです。

WebでのSIGMAルール → 各SIEM向けルール変換

Webサイトとしては、以下のUNCODER.IOが有名のようです。

UNCODER.IO
https://uncoder.io/

以下が実際の画面ですが、変換先を見ると Splunk, Sentinel, QRader, XSIAMと有名どころのSIEMへの変換が可能なようです。

UNCODER.IOサイト

そして実際に Splunkの SPLに変換してみたのがこちらです。変換後はシンプル&見慣れた表現なので少しわかりやすいですね。

UNCODER.IOサイト

コマンドでのSIGMAルール → 各SIEM向けルール変換

コマンドとしては sigmatools というものがあるようで、以下のコマンドで簡単にインストールできます。

% pip3 install sigmatools

そして、UNCODER.IOで変換したものと同じSIGMAルールを sigmac コマンドでも変換してみた結果がこちらです。

% vi tmp/proxy_susp_flash_download_loc.yml
% sigmac -t splunk -c splunk-windows tmp/proxy_susp_flash_download_loc.yml
(((c-uri="*/flash_install.php*" OR c-uri="*/install_flash_player.exe") NOT ((cs-host="*.adobe.com"))))

-t の引数で変換先の SIEM として Splunk を指定しています。

Webで変換したものと大体一緒ですが、なぜか先頭に “source=”が付いていませんね。引数が足りないのかな?

<参考サイト>
・Sigmaルールのすすめ(Qiita)(https://qiita.com/sec-chick/items/4416bff231d7a55da75a)
・SIEMクエリ変換ツール「Sigma」を使ってみた(DeveloppersIO)(https://dev.classmethod.jp/articles/sigma-siem-transition-tool/)
・SIEMシステム用シグネチャフォーマット「Sigma」とSigmaルールの変換ツール「Uncoder.io」のご紹介(NEC)(https://jpn.nec.com/cybersecurity/blog/221014/index.html)

MITRE ATT&CKの補助ツール DeTT&CTをインストール&起動してみた

Splunk にていろいろなログソースをつかった検知ルールをつくりたいと考えていたところ、DeTT&CTというツールを見つけたのでインストールしてみた。

まだはっきりと理解していませんが、各ログソースから MITRE ATT&CK のどの TTPs に該当する検知ができるかマッピングする際に利用できるツールではないかと考えています。

1.インストール

インストールは意外と簡単で、Macのコンソールからおもむろに以下のコマンド(太字部分)を打ち込んでいくだけで大丈夫です。

% git clone https://github.com/rabobank-cdc/DeTTECT.git
% cd DeTTECT
DeTTECT % cat requirements.txt
DeTTECT % pip install -r requirements.txt

2.起動

インストールが終わったら DeTT&CTを起動します。
起動は、DeTTECTディレクトリ配下にある detteck.py をつかって以下のコマンドを実行するだけです。

DeTTECT % python dettect.py editor
Editor started at port 8080
Opening webbrowser: http://localhost:8080/

実行すると自動的にブラウザが起動し、以下の画面が表示されます。

ScreenshotDeTT&CT起動直後

<参考サイト>

・How to Download DeTT&CT Editor For MITRE ATT&ACK Techniques(https://systemweakness.com/how-to-download-dett-ct-editor-for-mitre-att-ack-techniques-dd41b21ebcfe)
・MITRE Practical Use Cases(Youtube、https://www.youtube.com/watch?v=1zgpTR6D3M8&list=LL&index=2&t=168s)
・MITRE DeTTECT – Data Source Visibility and Mapping(Youtube、https://www.youtube.com/watch?v=EXnutTLKS5o)

スマホの機種変更をしたので Microsoft Authenticator の移行をしてみた

最近スマホの機種変更をしましたが、そのせいでMicrosoft社等のログインの際に2段階認証でつかっていた Authenticator が新しいスマホで使えなくなっていたので、再セットアップしてみました。

1.マイサインインにアクセス

まず、以下のサイトに記載されているマイクロソフト社のマイサインインのページにアクセスします。

スマホを替える時は、Microsoft Authenticator の移行を忘れないでください!(Microsoft)
https://jpazureid.github.io/blog/azure-active-directory/move-authenticator-to-new-phone/

すると以下のようなページが表示されます。

Microsoft My Sign-Ins

2.新しいサインイン方法の追加

上記ページから「+Add sign-in method」をクリックします。
すると「Add a method」というポップアップがでるので、そのプルダウンの中から「Authenticator app」を選択します。(※ここ重要!)

Microsoft My Sign-Ins
※ここがポイントで、間違って Phone をセットアップすると、SMS でのワンタイムパスワード通知設定しかできません。

3.Authentiatior で QRコード読み取り

上の画面で「Authenticator app」を選択し「Add」ボタンを押すと以下のポップアップがでてきますので、ここは「Next」ボタンを押します。

※もしまだ新しいスマホにAuthenticatorをインストールしてなければ、このタイミングでインストールしておきます。

Microsoft My Sign-Ins

次に以下のポップアップが表示されますので、ここも「Next」ボタンを押します。

Microsoft My Sign-Ins

すると、以下の通り QRコードが表示されますので、新しいスマホにインストールされている Authenticator で読み取ります。

Microsoft My Sign-Ins

QRコードを読み取った後、「Next」ボタンを押すと以下の画面が表示されますので、スマホから画面の下部に表示された2桁の番号を選択(or 入力)します。

Microsoft My Sign-Ins

スマホで2桁の番号を入力(or 選択)後、しばらくすると以下の通り成功の画面がでますので「Next」ボタンを押します。

Microsoft My Sign-Ins

4.新しいAuthenticator の追加確認

上記が完了すると、Authenticator に新しいアカウントが追加され、マイサインインのページにも赤枠の通り、新しいAuthenticatorが追加されているはずです。

Microsoft My Sign-Ins

新しいスマホ上のAuthenticatorをつかって Microsoft社などのサイトにログインできることが確認できたら、古いスマホのAuthenticatorはマイサインインから消しておきましょう。

Virus Totalのsearch APIを使ってURLのカテゴリ情報を検索してみた

Virus TotalのWebサイトで URL を調査すると、こんな感じで「Details」タブにそのURLのカテゴリ情報が表示されます。

Virus Totalサイト

この情報を、Virus Totalから提供されている API を使って取得できないかと思い調べていたところ、以下のAPIで取得できることがわかりました。

api/v3/search?query=

curl --request GET \
  --url 'https://www.virustotal.com/api/v3/search?query=<検索したいURL>' \
  --header 'x-apikey: <自分のAPIキー>'

試しに1つこのAPIを使ってURLを調べてみたところ、実行結果は以下の通りとなりました。

結果の最初の方にCluster25からのレポートが記載されており、MIRAI のボットネットで利用されていることがわかります。

Virus Total – search API 実行結果1

また結果の最後の方を見ると、Sophosなど各社がこのURLのカテゴリをどう判定しているかを確認することが可能です。

Virus Total – search API実行結果2

このAPIを使えば、セキュリティ調査の効率化につながりそうです。

MISP の効果的な利用方法2:インシデント調査で集めたIoCが、外部から収集したIoCと一致していないか確認する

MISP には複数のイベントでIoCが一致していないかチェックする機能があります。

それをうまく利用すれば、インシデント調査で収集したIoCが外部から収集したIoCと一致していないか、また、外部から新たに収集したIoCが、過去のインシデント調査した際のIoCと一致していないかを確認することが可能です。

1.インシデント対応で抽出したIoCの登録

以下の通り、インシデント対応で抽出したIoCを「Add Event」から登録します。

なお、インシデント対応で抽出したIoCを登録する際はイベント名を「SOC-Insident 001」などとするとわかりやすいと思います。

MISP – Add Event

上記画面で「Submit」後に、下図の赤枠で囲った部分にあるアイコン(populate using the Freetext Import tool)をクリックします。

MISP – using Freetext Import tool

すると以下のようなFreetext Import Tool のポップアップが表示されるので、インシデント対応の中で収集したIoCをペーストし、「Submit」します。

Freetext Import tool

このツールはとても優秀で、IoC 以外の情報もまとめて放り込んでも、綺麗にIoCだけ抽出し、以下の通りピックアップしてくれます。

MISP – Freetext Import Results

Freetext での取り込み結果を確認し、問題なければ「Submit attributes」ボタンを押します。

2.IoC提供元のFeedとの関連を確認

インシデント調査で収集したIoCの登録が完了すると、すでに登録されているイベントのIoCと重複していないか、赤枠の通り表示してくれます。

MISP – IoC list

また重複している場合は、「+Correlation Graph」を選択することで、重複しているイベントとの相関図を以下のとおり表示してくれます。

MISP – correlation graph

3.新しいFeedを取り込んだときの既存インシデントとの重複確認にも

なお、標的型攻撃などの場合には、インシデント調査で抽出したIoCが各Feed提供元のIoCリストにはまだ登録されていない、といったこともままあると思います。

したがって、新しくFeed提供元からIoCを取得した際に、そのIoCがすでにインシデント対応で抽出していたIoCと一致していないか確認する、といった使い方も可能です。

MISP – IoC list

ちなみに、他のイベントとIoCが重なった数はイベントリストの「Corr」カラムに記載されていますので、探しやすいと思います。

MISP – Events

MISP の効果的な利用方法1:IoC のFeedの取り込み元を増やす

MISP をインストールした初期状態だと、以下の2つのIoC Feed取得元しか登録されていません。

MISP – Sync Actions – Feeds

そこで、このFeed元を増やす方法を確認しましたので、ここに記録しておきます。

1.Feed元が書かれたJSONファイルを取得

以下のGitHubサイトにFeed元がたくさんかかれたJSONファイルがあるので、その内容をコピーします。

GitHub - MISP/app/files/feed-metadata/defaults.json
https://github.com/MISP/MISP/blob/2.4/app/files/feed-metadata/defaults.json

2.JSONでFeed元の情報を取り込む

1.でコピーしたFeed元の情報を取り込む為、上のFeeds画面の左ペインから「Import Feeds from JSON」を選択します。

そして先ほどコピーしたJSONを以下のとおりペーストし「ADD」ボタンを押します。

MISP – Import Feeds from JSON

すると以下の通りFeed元が67件読み込まれました。

MISP – Sync Actions – Feeds

3.Feed元からのデータの取り込み

あとは、Feed元リストの左にあるチェックからFeedを取り込みたい提供元を選択後、上部にある「Fetch and store all feed data」をクリックすれば取り込まれます。

なお、取り込みの状況は「Administration」-「Jobs」から以下の通り確認可能です。

MISP – Sync Actions – Feeds

4.Feed元から定期的に取り込むには

「Administration」-「Scheduled Tasks」で次の取り込み時間を指定することもできるようですが、毎回設定したいといけないように見えます。

そこで、cronjob と MISPのAPIを使った定期的なFeed元からの取り込み方法が以下のサイトに記載されていますので、興味のある方は参照してみると良いと思います。

Part 10. MISP Threat Intel(SOCFortress)
https://socfortress.medium.com/part-10-misp-threat-intel-68131b18f719

OpenCTIのコンソールを使ってみたら、アナリスト向けの情報がまとめられた画面だった

先日OpenCTIとMISPを連携させてみました。

その後、IoCデータが溜まってきているようなので、OpenCTIの使い勝手を少し確認してみましたので、その様子を記録しておきます。

1.トップ画面

内部でElasticを使っているせいなのか、全般的にとてもいかした画面で、SOCの大画面に投影しても映えそうです。

情報としては、集まってきているIoCの種類や数、そしてIoCに関連する攻撃グループの情報が表示されています。

OpenCTIコンソール – トップ画面

2.攻撃グループの情報

こちらは上の画面の攻撃グループのグラフから、Turlaを選択した時の画面です。

この攻撃グループの概要やIoC提供者の情報が表示されています。

OpenCTIコンソール – 攻撃グループ情報

3.攻撃グループが保有するC2情報など

上の画像からトップメニューの「knowledge」を選択すると、この攻撃グループが保有するC2サイトなどの武器情報が表示されます。

表示がタイムラインになっていて、下にスクロールするほど新しい情報になるようです。

OpenCTIコンソール – 保有武器情報

4.IoCリスト

上の画像からトップメニューの「Indicators」を選択すると、その攻撃グループに関連するIoCもリストで確認できます。

OpenCTIコンソール – IoCリスト

5.攻撃グループの一覧

また、攻撃グループの一覧をパネル形式で確認することも可能です。

OpenCTIコンソール – 攻撃グループ一覧

Splunk のMISP Addon(MISP42)を使ってMISPの大量データの中から指定したIoCを検索してみた

前回、MISPのAddon(MISP42)をSplunkにインストールし、イベントIDでMISPの検索を行ってみました。

https://k2-ornata.com/misp-splunk_rest-api_ioc_display/

しかしながら実際のインシデント調査では、調査の中で抽出したIoCがMISPに登録されていないか確認することが多いのではないかと思います。

そこで今回は、md5 や 通信先のIPアドレスをキーにMISPのデータを検索する方法を確認してみました。

1.MD5を検索

MISP custom command のプルダウンメニューから「mispsearch」を選択すると、IoCのタイプを指定してMISP内のデータを検索することができます。

Splunk – misp42

下の画面は、md5を指定してMISPを検索しているものになり、各パラメタについては

misp_instance:misp_instance01
field:md5
includeEventTags:True
Paste your sample query here:| makeresults | eval md5="61e3571b8d9b2e9ccfadc3dde10fb6e1"

と設定しています。

Splunk – MISP42 Addon

またこの検索結果の下部から以下の画面の通り「サーチで開く」を選択すると、SPLでのサーチ文を確認することができます。

Splunk – MISP42 Addon

なお、この時のサーチ文は以下の通りとなっていました。

| makeresults | eval md5="61e3571b8d9b2e9ccfadc3dde10fb6e1" | search md5=61e3571b8d9b2e9ccfadc3dde10fb6e1 | mispsearch misp_instance=misp_instance01 field=md5   includeEventTags="true"

念のため、検索で表示された misp_event_id : 1057 をMISPのコンソールでも確認したところ、下の画面の通り、id:1057に同じ md5が含まれていました。

MISPコンソール

2.送信先IPアドレスで検索

同じ要領で、送信先IPアドレスでも検索が行えます。

以下は送信先「37.120.170[.]231」に対するSPLでの検索例です。(このアドレスにアクセスしないように!)

| makeresults | eval ip-dst="37.120.170.231" | mispsearch misp_instance=misp_instance01 field=ip-dst  includeEventTags="true" includeEventUuid="false" to_ids="false"

3.コメントで検索

以下はMISPの「Comment」にEmotetと書かれているイベントを検索している例です。

| makeresults | eval misp_comment="Emotet" | mispsearch misp_instance=misp_instance01 field=misp_comment   includeEventTags="true" includeEventUuid="false" to_ids="false"

まとめ

Splunkにログを集約している企業などでは、同じSplunkコンソールからMISPのIoCを検索できるようになるので便利かもしれませんね。

OpenCTIとVirusTotal、Shodanを連携させてみた

前回、OpenCTIを構築し、MISPと連携するところまで実施しました。

https://k2-ornata.com/opencti_misp_connection/

そこで今回はさらに、VirusTotalとShodanを連携させてみて、OpenCTIから確認できる情報がどうかわるか確認してみました。

1.VirusTotalコネクタのインストール

MISPの時と同様に GitHubの以下のサイトから VirusTotalのdocker-compose.yml をコピーし、OpenCTIのdocker-compose.ymlに埋め込みます。

OpenCTI-Platform /connectors
https://github.com/OpenCTI-Platform/connectors/tree/master/internal-enrichment/virustotal

そして以下のコマンドを実行します。

 docker-compose up -d --build

すると以下の通り既存のコネクタを含めたアップデートとインストールが行われます。

docker-composeの更新

このあとOpenCTIのコンソールを見ると、VirusTotalが追加されていることが確認できました。

OpenCTIコンソール

shodanのコネクタについても同様の手順で行います。

2.インディケータのエンリッチメント

VirusTotalとShodanをインストールしたら、IoCを表示する画面の右端になる「エンリッチメント」のボタンを押してみました。

OpenCTIコンソール

すると右側からウィンドウがせり出してきて、VirusTotal とShodanの連携情報が表示されるようになっていました。(IoCによって出たり出なかったりするようですが。)

OpenCTIコンソール

しかしながら、それ以外の変化が見つけられなかったので、あとでもう少し調べてみようと思っています。

また今後は、cve や Miter ATT&CK とも連携させて、どんな情報が得られるようになるのか確認したいと思っています。

<参考情報>

以下のYoutubeでOpenCTIの操作方法が説明されていますので、OpenCTIでざっくりどんなことができるか知りたい人は参考になると思います。

Introduction to the OpenCTI platform(Filigran)