OCIインスタンスでSplunkを使い、脆弱性の悪用可否を分析してみた

 2021.11.10  株式会社テリロジー 技術統括部

みなさまこんにちは。Tachanです。
今回はOCIインスタンスにSplunkを構築し、脆弱性管理製品のログとNW監査システムのログを集め、
内部NWで検出されている脆弱性や、検出された脆弱性が外部から直接悪用することができるかを分析してみます。

各製品と今回の構成図

今回使用する製品について簡単にご紹介させていただきます。

Splunk

splunkとは?

  • Splunk社が提供しているログ管理ソフトウェア
  • ログを収集し分析が容易
  • ユーザーは、データ収集方法やダッシュボード(グラフ/表の集まり)を自由に作成・共有することが可能
  • Splunkには、豊富なデータ収集方法・柔軟なログのパース/インデクシング・独自のクエリによる検索・グラフ作成などに強みを持つ
  • オンプレ版とクラウド版があるが、今回はオンプレ版を使用

InsightVM

InsightVMの概要

  • Rapid7社が提供している脆弱性管理ツール
  • サーバーやNW機器の脆弱性スキャンを実施し、発見された脆弱性の対策を提示
  • CVSSとは別にRapid7が持つ独自のスコアリングシステムにより、脆弱性を優先順位付けが可能
  • オンプレ環境だけでなく、クラウド環境に対してもスキャンが可能

その他の機能や詳細はこちら
https://terilogy-tech.hatenablog.com/entry/2018/10/22/180134
https://terilogy-tech.hatenablog.com/entry/2020/09/29/144607

デモ動画
https://youtube.com/playlist?list=PLQCeHX_UzGJwJPOCRuuXxuUrPBvJEl_Fw

RedSeal

RedSeal:セキュリティー分析プラットフォーム

  • RedSeal社が提供しているセキュリティ監査プラットフォーム
  • configを取り込むことで、NW構成図やアクセスパスの可視化ができる
    これにより、自社NWの把握や外部セグメントからの脅威を確認することができる
  • InsightVMなどの脆弱性スキャナーと連携させることができ、自社NWにある脆弱性を可視化できる

その他の機能や詳細はこちら
https://terilogy-tech.hatenablog.com/entry/2018/07/07/234256

デモ動画
https://youtube.com/playlist?list=PLQCeHX_UzGJyGUJvXV0AA-zQi_QcfGbsM

構成図

2つの製品ログをOCI側で収集し、各ホストで検出されている脆弱性や

外部から直接攻撃できる脆弱性があるかを見ていきます。

構成図

手順1.Splunk構築

1.インスタンス構築

インスタンス作成方法はこちら

今回はUbuntu18.04、1OCPU、メモリ16GBで作成しました。

インスタンス構築

また、通信制御はnsgの設定で以下のポート宛への通信を許可しています。

  • TCP/22番:SSHで使用
  • TCP、UDP/1514番:RedSealのデータ取得時に使用
  • TCP/3780番:InsightVMのデータ取得時に使用
  • TCP/8000番:SplunkのGUIにアクセスする際に使用

※Ubuntuはnsgやセキュリティ・リストのほかに、インスタンス内のiptablesでも通信制御が行われています。
22番以外のポートはiptablesで別途許可する必要があります。
詳しくは、「ubunutuインスタンスではiptablesに気をつけたい」をご覧ください。

2.SSHでSplunkを構築

CLIからSplunkをインストールします。

$ wget -O splunk-8.2.1-ddff1c41e5cf-Linux-x86_64.tgz 'https://www.splunk.com/bin/splunk/DownloadActivityServlet? architecture=x86_64&platform=linux&version=8.2.1&product=splunk&filename=splunk-8.2.1-ddff1c41e5cf- Linux- x86_64.tgz&wget=true'

パッケージを解凍し、所有者を変更してサービス起動をします。

$ sudo tar zxvf splunk-8.2.1-ddff1c41e5cf-Linux-x86_64.tgz -C /opt $ sudo chown -R terilogy:terilogy /opt/splunk $ /opt/splunk/bin/splunk start

SplunkのID/PW設定が完了すると、ブラウザからSplunkのログイン画面を確認することができます。
Splunk GUI URL:http://インスタンス名:8000

以上でSplunkを構築することができました。

手順2.InsightVMからのデータ取得

InsightVMのデータを取得します。

1.InsightVM用のApp作成

ダッシュボードやレポート、ワークフローに関する機能を操作できるAppを作成します。
InsightVMはAdd-onが用意されているので、下記URLからRapid7 Technology Add-On for Splunkを使います。
その後、必要なデータを入力し保存します。

InsightVM用のApp作成

2.データ収集方法設定

取り込んだデータを保存するインデックスを作成し、データの入力方法を設定します。
InsightVMでは、「Rapid7 Nexpose」のデータタイプが用意されているため、そちらを使用します。
ここで、InsightVMに登録している資産、脆弱性の情報を取得させます。

データ収集方法設定

3.収集データ確認

1で作成したRapid7のインデックスのサイズを確認し、InsightVMからデータが取得できていることを確認します。

収集データ確認

手順3.RedSealからのデータ取得

InsightVMのデータを収集できたので、同様の設定でRedSealのデータを取得します。
RedSealはAdd-onがないため、ソースタイプを定義します。

ここでは「syslog」を複製し、任意の名前で作成します。

RedSealからのデータ取得 画像01

データ入力はTCPとUDPの1514番ポートを使用する設定を行い、
作成したAppとソースタイプの選択をします。

RedSealからのデータ取得 画像02

RedSealからのデータ取得 画像03

RedSealからのデータ取得 画像04

RedSealからのデータ取得 画像05

データ確認

RedSealで取り込んだNW構成のマップを更新し、データをSplunkに送信させます。
1で作成したRedSealのインデックスのサイズを確認し、RedSealからデータが取得できていることを確認します。

RedSealからのデータ取得 画像06

分析

内部ネットワークで検出されている脆弱性や、検出された脆弱性が外部から直接悪用することができるかを分析します。
まずは危機的な脆弱性があるか検索します。脆弱性情報でフィルターすると、CVSS8.0以上の脆弱性がたくさん検出されていることがわかります。

RedSealからのデータ取得 画像07

また、先ほどの結果から、この脆弱性を持つIPアドレスはInsightVMのどのサイト(グループ)に登録されているのかを特定します。

RedSealからのデータ取得 画像08

次にRedSealで上記のホストのattack depthを検索します。
attack depthとはRedSealの指標で、信頼できない外部NWからの攻撃到達性を示しています。

attack depth = -1 信頼できないNWから到達不可能
attack depth = 1  信頼できないNWから直接攻撃されるホスト
attack depth = 2  直接攻撃されるホストを踏み台として攻撃される可能性のあるホスト
attack depth = 3  attack depth=2のホストを踏み台にして攻撃できるホスト

上記ホストでフィルターすると、 attack depth=1であることがわかりました。
つまり、信頼できないNWからこのホストに対して直接攻撃することができます。

また、"leapfroggable=true"とあることから他のホストの踏み台として利用される可能性もあります。
そのため、このホストが外部に公開しているサービス、かつリスクの高い脆弱性から対策を行うことが望ましいでしょう。

RedSealからのデータ取得 画像09

さいごに

以上でSplunkにログを収集させ、外部から直接悪用できる脆弱性の有無を確認することができました。
SIEMの特徴は、わずか数秒で大量のデータを取り込み・解析できるため、
企業内外の脅威やトラブルシューティングに欠かせない存在ですね。

最後までお読みいただきありがとうございました。

 


RECENT POST「OCIで作ってみた」の最新記事


OCIで作ってみた

OCVSにブロック・ボリュームをアタッチして、vSphereのデータストアに追加してみた

OCIで作ってみた

Fn Projectを使用したAPI開発

OCIで作ってみた

OCVSをデプロイしてみた 前半

OCIで作ってみた

OCVSをデプロイしてみた 後半

OCIインスタンスでSplunkを使い、脆弱性の悪用可否を分析してみた