· 

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

みなさまこんにちは。Tachanです。

今回はOCIインスタンスにSplunkを構築し、脆弱性管理製品のログとNW監査システムのログを集め、

内部NWで検出されている脆弱性や、検出された脆弱性が外部から直接悪用することができるかを分析してみます。

目次

・各製品と今回の構成図

・手順1.Splunk構築

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

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

各製品と今回の構成図

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

 

Splunk

・Splunk社が提供しているログ管理ソフトウェア

・ログを収集し分析が容易

・ユーザーは、データ収集方法やダッシュボード(グラフ/表の集まり)を自由に作成・共有することが可能

・Splunkには、豊富なデータ収集方法・柔軟なログのパース/インデクシング・独自のクエリによる検索・グラフ作成などに強みを持つ

・オンプレ版とクラウド版があるが、今回はオンプレ版を使用

 

 

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社が提供しているセキュリティ監査プラットフォーム

・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構築

①インスタンス構築

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

 

今回は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に気をつけたい」をご覧ください。

 

②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を使います。

その後、必要なデータを入力し保存します。

 2.データ収集方法設定

取り込んだデータを保存するインデックスを作成し、データの入力方法を設定します。

InsightVMでは、「Rapid7 Nexpose」のデータタイプが用意されているため、そちらを使用します。

ここで、InsightVMに登録している資産、脆弱性の情報を取得させます。

 3. 収集データ確認

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

 

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

InsightVMのデータを収集できたので、同様の設定でRedSealのデータを取得します。

RedSealはAdd-onがないため、ソースタイプを定義します。

 

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

 

データ入力はTCPとUDPの1514番ポートを使用する設定を行い、

作成したAppとソースタイプの選択をします。 

 3.データ確認

  RedSealで取り込んだNW構成のマップを更新し、データをSplunkに送信させます。

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

4.分析

内部ネットワークで検出されている脆弱性や、検出された脆弱性が外部から直接悪用することができるかを分析します。

まずは危機的な脆弱性があるか検索します。脆弱性情報でフィルターすると、CVSS8.0以上の脆弱性がたくさん検出されていることがわかります。

 

 

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

 

次に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"とあることから他のホストの踏み台として利用される可能性もあります。

そのため、このホストが外部に公開しているサービス、かつリスクの高い脆弱性から対策を行うことが望ましいでしょう。

さいごに

以上でSplunkにログを収集させ、外部から直接悪用できる脆弱性の有無を確認することができました。

SIEMの特徴は、わずか数秒で大量のデータを取り込み・解析できるため、

企業内外の脅威やトラブルシューティングに欠かせない存在ですね。 

 

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