みなさまこんにちは。Tachanです。
今回はOCIインスタンスにSplunkを構築し、脆弱性管理製品のログとNW監査システムのログを集め、
内部NWで検出されている脆弱性や、検出された脆弱性が外部から直接悪用することができるかを分析してみます。
各製品と今回の構成図
今回使用する製品について簡単にご紹介させていただきます。
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構築
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を使います。
その後、必要なデータを入力し保存します。
2.データ収集方法設定
取り込んだデータを保存するインデックスを作成し、データの入力方法を設定します。
InsightVMでは、「Rapid7 Nexpose」のデータタイプが用意されているため、そちらを使用します。
ここで、InsightVMに登録している資産、脆弱性の情報を取得させます。
3.収集データ確認
1で作成したRapid7のインデックスのサイズを確認し、InsightVMからデータが取得できていることを確認します。
手順3.RedSealからのデータ取得
InsightVMのデータを収集できたので、同様の設定でRedSealのデータを取得します。
RedSealはAdd-onがないため、ソースタイプを定義します。
ここでは「syslog」を複製し、任意の名前で作成します。
データ入力はTCPとUDPの1514番ポートを使用する設定を行い、
作成したAppとソースタイプの選択をします。
データ確認
RedSealで取り込んだNW構成のマップを更新し、データをSplunkに送信させます。
1で作成したRedSealのインデックスのサイズを確認し、RedSealからデータが取得できていることを確認します。
分析
内部ネットワークで検出されている脆弱性や、検出された脆弱性が外部から直接悪用することができるかを分析します。
まずは危機的な脆弱性があるか検索します。脆弱性情報でフィルターすると、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の特徴は、わずか数秒で大量のデータを取り込み・解析できるため、
企業内外の脅威やトラブルシューティングに欠かせない存在ですね。
最後までお読みいただきありがとうございました。
- カテゴリ:
- OCIで作ってみた