Splunk のVirusTotal Addon(vt4splunk)で現在のPCの通信状況を確認してみた

Pocket

先日SplunkにインストールしたVirusTotal Addon(vt4splunk)の使い勝手を再確認してみました。

すると思いがけず、VirusTotalのスコアが6/88の通信が発生していたので詳細を確認してみました。

1.vt4splunkコマンドで通信先を評価

とりあえず SplunkのStreamで収集しているhttp ログとVirusTotalの評価を突き合わせてみました。

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

すると、VirusTotalのスコアが1/88の通信先への通信が発生している様子。

まあ、googleも2/88だったりするし(たしか)、そんなこともありますよね。

2.ダッシュボードを確認

そう思いながら vt4splunk のダッシュボードを見たところ、「Flaged IP Address」が11件発生しておりその中の一つは6/88のスコア。。。

そこで、リスト右端の「open」からVirusTotalの詳細な情報を確認。malicious や malware というワードが書かれているので、ちょっと不安に。。。

画面を下にスクロールして通信のログを確認。どうやらubuntsuのサイトにいっているらしい。VMでMISPを動かしていてそのOSがubuntsuなので、そいつがいっているのかも。

ちなみに11件という値をたたき出しているSPL文はこのようになっていました。うーん、むずい。。。

| inputlookup vt_ip_cache | search vt_detections > 0 | where "1" = "1" OR _first_seen_in_events >= relative_time(now(), "1")
      | join type=left vt_id [| inputlookup vt_ignore_cache | search vt_type=ip] | where isnull(vt_type) |  stats count

そこでChatGPTにこのSPL文を解説していただきました。

以下、ChatGPTの解説です。

このSPL(Splunk Processing Language)クエリは、Splunkデータベース内の`vt_ip_cache`と`vt_ignore_cache`という2つのテーブルからデータを取得し、さまざまな操作を行っています。以下に各行の意味を説明します。

1. `inputlookup vt_ip_cache`: `vt_ip_cache`テーブルからデータを取得します。
2. `search vt_detections > 0`: `vt_detections`フィールドが0より大きい行を検索します。
3. `where "1" = "1" OR _first_seen_in_events >= relative_time(now(), "1")`: 条件式が常に真となるため、すべての行をフィルタリングします。また、`_first_seen_in_events`フィールドの値が現在の時刻から1つの時間単位以上前である場合にも行をフィルタリングします。
4. `join type=left vt_id [| inputlookup vt_ignore_cache | search vt_type=ip]`: `vt_ignore_cache`テーブルから`vt_type`フィールドが"ip"の行を取得し、`vt_id`フィールドを使用して`vt_ip_cache`テーブルと結合します。結合は左外部結合(Left Join)です。
5. `where isnull(vt_type)`: 結合した後、`vt_type`フィールドが存在しない(NULL)行のみをフィルタリングします。
6. `stats count`: 結果の行数をカウントします。

このクエリの目的は、`vt_ip_cache`テーブルから検出数が0より大きい行を取得し、一定の条件に基づいてデータをフィルタリングします。さらに、`vt_ignore_cache`テーブルとの結合を行い、`vt_type`フィールドが存在しない(NULL)行の数をカウントします。

Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA