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)

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)」を見てください。

Splunkの管理ポートの番号を変えたら Virus Totalの vt4splunkコマンドが使えなくなった件

こういった状況になることは普通はないと思いますが、Splunk 管理ポート(デフォルトはTCP:8089)を変えてしまい、Virus Total の Addon からVirus Totalのサイトへのソケット接続に失敗するようになってしまったので、教訓として記載しておきます。

発生事象

Splunk の検索フィールドから以下のSPL文を実行させようとしました。

| makeresults
| eval testip="8.8.8.8"
| vt4splunk ip=testip

すると、以下のエラーが発生しました。

ConnectionRefusedError at /Applications/Splunk/lib/python3.7/socket.py, line 716 : [Errno 61] Connection refused

解決方法

以下の設定ファイルの編集し、管理ポートを8089に戻します。

/Applications/Splunk/etc/system/local/web.conf

設定ファイルの中身は以下のようになっていて、「mgmtHostPort」のところで管理ポートが指定されています。

[settings]
enableSplunkWebSSL = 0
mgmtHostPort = 127.0.0.1:8089

この後、Splunkを再起動すると問題なく「vt4splunk」のコマンドが使えるようになりました。

コンタクトの空ケース回収協力で!夏色の涼しげな「ワークきらりのさざれ石ストラップ」をいただきました。

K2-ornataのkuroです。

コンタクトの空ケースが溜まったので、アイシティさんの回収ボックスへ入れてきました。面倒くさがりの私がなぜいそいそと空ケースを集めて持っていくかといいますと、、空ケースと引き換えにいただけるものがあるからです。

それがこちら!

ワークきらりのさざれ石ストラップ

今回私が選んだのは、天然石のさざれを丁寧につなげて作られたストラップです。
夏らしくて涼しげな色合わせにひとめぼれしてしまいました。
窓際につるしてみたら、きらきらと風に揺られて、、癒されます。

石の名前は書いていませんが、おそらく上からアクアマリン、アパタイト、グリーンクリソコラ、アマゾナイト、クリスタル、かと思います。

作り手さんは、社会福祉法人のワークきらりさん。関西にある施設のようです。
どんな方が作られているのか、とっても気になりました。
これからも素敵な作品を、、!!楽しみにしています。

Splunk Addon BuilderでSplunk からShodanのREST API にアクセスするAddonを作ってみた

Splunkbase に Shodan へのアクセスする為にaddon がなかったので、インターネットの情報を見ながら Splunk Addon Builder を使って作ってみました。

REST APIへのアクセスし定期的にデータを取ってくるだけであれば30分くらいで作成できたので共有しておきます。

1.新しいAddonの作成

Splunk Addon Builderの画面から「New Add-on」を選択します。

Splunk Addon Builder

すると以下の画面が表示されるので、「Configure Data Collection」を選択します。

Splunk Addon Builder

次にAddonの名前を決めます。

Splunk Addon Builder

そしてデータのインプット方法を聞かれるので左端の「REST API」を選択します。

Splunk Addon Builder

次に、sourcetypeなどを設定していきます。

Splunk Addon Builder

そして、REST APIでどんな情報をサーバに投げてデータをGETするかを設定します。

ここではサンプルとして2つ記載しておきます。

(1)指定したIPアドレスの情報を取得するサンプル

https://api.shodan.io/shodan/host/8.8.8.8?key=(API Kye)
Splunk Addon Builder

(2)ポート22が空いている日本のドメイントップ100を取得する場合

https://api.shodan.io/shodan/host/count?key=(API Key)&query=port:22 country:JP&facets=domain:100
Splunk Addon Builder

「テスト」ボタンでデータが正しく取得できることを確認したが、「保存」ボタンを押します。

この後、Splunkの再起動を手動で行う必要がありますので注意してください。

ちなみに私の環境(Mac)では以下のコマンドでSplunkの再起動を行いました。

/Applications/Splunk/bin/splunk restart

2.新しいインプットの作成

「Create New Input」ボタンを押し、入力の名前やデータ取得間隔をあらためて設定します。(なぜあらためて入力させているのかは不明。。。)

Splunk Addon Builder

3.サーチの実行

すると指定した間隔でデータを取得してくれるので、トップのメニューバーから「サーチ」を選択し、以下のようなサーチ文を入力します。

sourcetype="shodan-ssh"
| table facets.domain{}.value, facets.domain{}.count

すると定期的に取得したデータを元に以下のような検索結果を表示してくれます。

Splunk 新規サーチ画面

参考サイト:

・SplunkのAdd-on Builderで自前のアドオンを作成してみる(REST API編)-クラスメソッド株式会社-(https://dev.classmethod.jp/articles/splunk-add-on-builder-rest-api/)
・Shodan API Reference – Shodan- (https://developer.shodan.io/api)

Virus TotalのSplunk用Addonであるvt4splunkを使ってみた(IPアドレス編)

Virus TotalのSplunk用Addonであるvt4splunkを使ってみたのでここに記録しておきます。

vt4splunkにIPアドレスを直接渡す

vt4splunkをSplunkにインストール後、Search画面から以下のコマンドを打つと、testipで指定したIPアドレスに対する Virus Totalでの評価結果を検索結果の一部として表示することができるようになります。

| makeresults
| eval testip="8.8.8.8"
| vt4splunk ip=testip
Splunk サーチ実行結果1

念のため、Virus Totalでも 8.8.8.8 の評価結果を確認したところ、上記と同じく2/88という結果が得られました。

Virus Total

vt4splunkに検索結果を渡す

なお、上の方法を応用し、以下のようにあるsourcetype で httpの通信が 400(Bad Request)であったログを検索し、その検索結果の中の”dest_ip”をIPアドレスとしてvt4splunkに渡すことも可能でした。

sourcetype="stream:http" status=400
| vt4splunk ip=dest_ip
| table _time,dest_ip, vt_detections,vt_total_engines,vt_reputation,vt_info

なお、この実行結果は以下の通りです。

Splunk サーチ実行結果2

<参考文献>

hiro_ さんのツイート(https://twitter.com/papa_anniekey/status/1593064221235097600)

種から育てたサンダルウッド(白檀・ビャクダン )今年も元気に新芽が出てきました

k2-ornataのkuroです。

ベランダで育てているサンダルウッド、今年も無事に春を迎え元気に動き出しました!

たくさんの新芽が出てきています。かわいいです。。
写真は摘心前です。このあと、心を鬼にしてプチっと新芽をちぎりました。。

次から次へと新芽が出てきています

6年前の夏、ベランダの鉢にサンダルウッドの種を8粒撒きました。
その2か月後、8粒のうち2つ芽が出て、そのうちの1つがなんとか生き残り、写真のとおり高さ110センチメートルまで育ちました。幹の太さは根元で17ミリほどです。

サンダルウッドはインド原産のビャクダン科の熱帯性常緑樹で、その生態は少し、、というかかなり変わっています。
半寄生植物といって、他の植物(寄主)の根に自分の根の吸盤を吸い付けて寄生し、成長過程によって寄主を変えていきます。
寄生される寄主については情報が少なくて正確ではありませんが、私が調べた限りでは、イネ科、マメ科、アオイ科、タケ類、ヤシ類、モクマオウ、アカシア類、あとはインドセンダン(センダン科)やタイワンネム(マメ科)などのようです。

発芽してから一年ほどは単独で成長しますので、私も一年間単独で育てたあと、いろいろな植物を寄主にしては・・・失敗を繰り返し、やっと今のアカシア・ブルーブッシュに落ち着きました。今年4年目ですが、とても相性が良いようで仲良く育ってくれています。
ですが、少し前に何かの記事でアカシア・ブルーブッシュは元気であっても数年で突然枯れることがあるらしいことを知りました。ショックです。
いま次の寄主をリサーチ中ですが、アロマでも有名なキク科ヨモギ属のダバナという植物が原産地のインドではサンダルウッドのそばに生えているそうで、、とっても気になっています。

↓↓関連記事です。よろしければご覧ください。↓↓

https://k2-ornata.com/sandalwood_flower/
https://k2-ornata.com/seed_sandal_wood/

初めてのスマートウォッチ!SHANG WINGを使ってみました

K2-ornataのkuroです。

今までスマートウォッチというものにまったく興味がありませんでした。
むしろなんかダサいとさえ思っていました。失礼。
ところが少し前、駅で見かけたすてきな女性がスマートウォッチらしきものを腕にしているのを見て、なんだか素敵。。と思ってしまい、ついに手に入れました。

SHANG WINGのスマートウォッチ。中国メーカーのようです。

SHANG WINGのスマートウォッチ

ピンク色で可愛いです。
本体は軽く、ベルトは薄くてとても柔らかい素材でできており、腕にしたときに違和感や圧迫感がありません。この手の時計はだいたい着け心地がよくないことが多いので期待していなかったのですが、予想外でした。とても快適な着け心地です。
また、私は金属アレルギー持ちなので金属部分が肌にあたるとすぐにかゆくなってしまうのですが、こちらはベルトの金具の一部がほんの少しだけ肌に当たるくらいで他はまったく金属があたらないのもうれしいポイントです。ちなみに、替えベルトが1本付属していました。汚しても安心です。

【主な機能】
<スマートウォッチ単体>
・時計機能(アラーム、タイマー、ストップウォッチ)
・健康管理機能(心拍数、SpO2、睡眠など)
・スポーツウォッチ機能(エクササイズの種類が選べます)

<スマホと連携>
・天気予報
・音楽のコントロール機能(ON/OFF、音量、早送り/戻る)
・メール、電話、LINEなど(受信のみ)

<便利機能>
・スマホを探す機能
・活動促進の通知(じっとしていないで動きましょう、という通知)
・水分補給のリマインダー  

・・・などなど

あとちょっと注意ですが、スピーカーとマイクはついていません。
通知はバイブレーションで知らせてくれます。
ですので、もしスマホを持たずにスマートウォッチだけで音楽を聴いたり通話したい方には不向きだと思います。

私は主に散歩するときに使用しています。
音楽を聴いている時、曲名を見たくてたまにスマホを取り出して見ることがあるのですが、これが腕時計で確認できるのが小さなことですが意外に便利でした。スマホを取り出すとき落とさないよういつも注意していたので、その心配もなくなりました。
あと、こんなに小さな画面ですがLINEの受信表示もちゃんとできるところがなんだか可愛らしくて気に入っています。


ですが、、ひとつだけ気に入らないことがあります。
それは、文字表示が日本語のみで変更設定ができないことです。
漢字の字体なんかもいまひとつで気分が上がりません!
それに「ヘルプ」が「助けて」になっていたり、、それはそれで楽しいのですが。
今後、他の言語や表示も選択できるようにしてくれることを期待しています。

MISP と Splunk をREST APIで連携させて、特定のイベントのMD5をSplunk上に表示させてみた

MISP で集めたIoCをうまくSplunkで活用できないかと思い、まずはSplunk上で MISP からとってきた特定イベントの IoC(MD5)を表示させてみました。

なお、これから説明する手順の前準備として、SplunkとMISPを連携させる為に、MISPのApp(MISP42)をSplunkにインストールしています。

1.MISPのインスタンスを作成

MISPのAppのメニューバーから「設定」を選択後、「追加」ボタンを押します。

Splunk – MISP42 App

すると以下の設定画面が表示されますので、MISPの「URL」「API Key」を設定します。

なお「Check MISP Certificate」のチェックは今回テスト利用の為、外しておきました。

Splunk – MISP42 App

2.MISPのイベントIDを検索

MISPのAppのメニューバーの「MISP CUSTOME COMMAND」のプルダウンから「MISP custome command mispgetioc」を選択すると以下の画面が表示されます。

今回は赤枠の「misp instance」「eventid」「タイプ」を設定し「実行」ボタンを押してます。

Splunk – MISP42 App

すると画面の下の方に検索結果が表示され、MISP と同じ情報が表示されていることが確認できました。

Splunk – MISP42 App

これとSplunkのログを突き合わせることができれば、悪性のIoCをキーにアラートが出せそうです。

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