Help us understand the problem. What is going on with this article?

Splunk Stream を使ってパケット解析したい

ログだけ見ても、原因はわからない (時も多い)

こんにちは、みなさん。
はじめてQiitaに記事を書かせていただきます。
読みづらいことろ、あるかと思いますが、今後改善してまいります。

さて、システム管理やセキュリティ対応をしていて、ログと格闘している方々は多数いらっしゃるかと思います。
しかし、怪しい!と思う時間帯は特定できたとしても、ログにそのエビデンスがない!という場合も、実はあります。
そんなときは・・・「やっぱ、パケットキャプチャしかないかな・・・」と、思いながら、Wiresharkの使いづらいインタフェースとパケットを取る面倒くささから、うんざり・・・。そんな思いをしたことがあるのは、私だけではないはず。

今回は、Splunkの無料のApp「Stream App」を使って、一つ感動をお届けしたいと思います。

Splunkでパケットキャプチャ - ステップ1

まずは、Splunkのインストール。MacでもWindowsでも、とにかくSplunkをインストールします。

Splunkでパケットキャプチャ - ステップ2

次に、「Splunk Stream」をダウンロードします。
https://splunkbase.splunk.com/app/1809/

image.png
* これを書いているときは、「splunk-stream_713.tgz」が最新バージョン。

Splunkでパケットキャプチャ - ステップ3

次に、Splunk上で、先程ダウンロードした、「Splunk Stream」をインストールします。

Appのインストール方法は・・・みなさん、ご存知だと思います。
画面左上の「App」の右にある、歯車ボタンからアップロード画面に移動できます。

image.png

「ファイルからアップロード」ボタンを押して、先程ダウンロードした、Splunk Streamのモジュールをアップロードします。
image.png

アップロードが完了すると、再起動の画面に遷移します。
image.png

実は、もうこの瞬間からパケットキャプチャは始まってしまっています。
確認したい方は、「後で再起動する」を押して、サーチ画面にいき、サーチをしてみてください。
image.png
* すでに199イベント取り込まれている・・・。取り込み先は、この場合、Splunkのインストール直後なので、mainインデックスに入ります。

そもそもどうやってパケットをキャプチャしているのか。説明しましょう。
ps auwx | grep -i streamf
image.png

というように、なにやら、「etc/apps/Splunk_TA_stream/darwin_x86_64/bin/streamfwd」という、それぞれのOS用の実行ファイルが起動し、これがいまインストールされているマシンのネットワークインターフェイス(NIC)を掴んで、パケットをすべて取り込める状態になっています。Windows版やLinux版はSplunk_TA_streamの下の別のフォルダの中の実行ファイルが使われます。

では、Splunkを再起動します。
image.png

Splunkでパケットキャプチャ - ステップ4

さて、ここで設定を確認しましょう。
streamfwdについては、さきほど説明しました。NICを掴んでパケットを集めてくれるモジュールですね。
このモジュール、取得したデータをどこに投げているんでしょう?
それは、[設定]-[データ入力]-[Wire data」にあります。
image.png

中身は・・・
image.png

そうです、「ステータス」を見ると、いま有効状態になっています。また、データの保存先の「インデックス」はdefaultになっているので、mainになります。「ソースタイプ」は・・・「streamfwd」というものになってます。どういう内容なのか気になりますが、まずは気にしないでいきましょう。

mainに入れたくない人は、ここでmain以外のインデックスを指定することができます。
ただ、事前にインデックスを作っておかないと、選択できないのでご注意を。
image.png
image.png

ちなみに、この設定を「無効」にすると、先程grepコマンドで確認したstreamfwdプロセスが停止して消えてくれます。
image.png

こちら、streamfwdプロセスが消えている様子。
image.png

まずは、一旦パケットキャプチャを止めておきましょう。(^^ ライセンスがもったいない・・

Splunkでパケットキャプチャ - 余談 (PCAPファイルを取り込むぜ!)

忘れないうちに、pcapファイルの取り込み方をここでご説明しておきます。
[設定]-[データ入力]のところに、こんなメニュー、ありましたよね?
image.png

そうです、ここからpcapファイルのアップロードや、pcapファイルを置いたフォルダを監視することができるんです。
当然このpcapファイルの取り込みは、先程のstreamfwdプロセス経由で取り込まれますので、[設定]-[データ入力]-[Wire data」の設定は有効状態になっていないとけません。うまく取り込めないときは、streamfwdプロセスが存在しているか、確認します。

streamfwd プロセスは、実はstreamfwd.conf というファイルによって動きを制御できます。
本格的にSplunk Streamを使う方は、必ずチェックください。
https://docs.splunk.com/Documentation/StreamApp/7.1.3/DeployStreamApp/streamfwd.conf

Splunkでパケットキャプチャ - ステップ5

さて、Splunk Streamの画面をすこしウォークスルーしましょう。
Appとして、Splunk Streamを選ぶと、次のような画面が出た方は、上記のとおり「Wire data」の設定をDisableにした方です。
Disableしなかった方は、チェックが入っていると思います。
image.png

「Collect data from this machine using Wire Data input (Splunk_TA_stream)」は、自分のところでstreamfwdプロセスが動いているという前提で動作するモード。「Collect data from other machines.」は、別のマシンでstreamfwdプロセスを動かして、そこからネットワーク経由でキャプチャしたデータをSplunkに取り込むという動作で動かすモード。
いずれも、streamfwd.confの仕様と密接に関係します。

ここでは、難しいことはさておき! 「Collect data from this machine using Wire Data input (Splunk_TA_stream)」 をチェックして、「Let's get started」ボタンを押下!

streamfwdプロセスが立ち上がり、画面にいろんなものが可視化され始めます。
image.png

image.png

いいですねぇ〜。しばらく、いろんなサイトにアクセスしたりして、パケットをSplunkに取り込んでみて下さい。
Facebookにアクセスして、「App Analytics」ページにアクセスすると・・・
image.png

Lineなんかも検知!!!勤務中にLINEは禁止!!って? Facebook の中のビデオも認識?!
image.png

オーマイガー! どのWebアプリにアクセスしているか、まで判定しちゃうじゃないですか。
ちょっとこちら見て下さい。
https://docs.splunk.com/Documentation/StreamApp/7.1.3/DeployStreamApp/ProtocolDetection#How_to_detect_protocols
こんなにも判定できるものがあります。
ゲートウェイのトラフィック、ルーターからミラーリングしたパケットを取り込んで、トラフィック解析して、お客様に有償レポートするのもよし、いろいろな使い方を考えてみて下さい。

Splunkでパケットキャプチャ - ステップ6

さて、ここからデータの取り方をお伝えします。賢く、適切に取得して、パケットキャプチャだからこそできることをぜひStream Appで実現いただければと思います。

インストール直後、いきなりデータの取り込みが始まりました。
これ、どこでその設定がはいっているか、まずそれをご説明します。

「Splunk Stream」Appにアクセスして、[設定]メニューを開いてみます。
そこに「Configure」というメニューがあるので、そこをクリックします。
image.png

そうすると、次のような画面に遷移します。ここに「Metadata Stream」「Packet Stream」「Ephemeral Streams」という項目がありますが、設定がすでに入っているのは、「Metadata Stream」。
今回は、「Metadata Stream」だけの説明をします。
image.png

ちょうどいま、「Metadata Stream」のリストを表示しています。
Nameのところには、プロトコル名がでてます。プロトコルのリストについてはこちら。
https://docs.splunk.com/Documentation/StreamApp/7.1.3/DeployStreamApp/ProtocolDetection#Protocols_supported_for_field_extraction

各プロトコルのどの項目が取れるのかは、こちら。(こちらはAuthentication系のプロトコル)
https://docs.splunk.com/Documentation/StreamApp/7.1.3/DeployStreamApp/Authentication

ここで、画面の「Mode」についてご説明します。
image.png

この「Mode」が「Estimate」の場合は、実際にSplunkにデータを取り込まずに、まずはデータボリューム量を画面右上で確認します、というモードになります。「Estimate」であれば、ライセンスもそうですが、ディスク量も心配ありません。

これが「Enabled」になると、有効状態になります。つまり、パケットの取り込みが行われます。

画面スクロールすると、いくつかがすでに「Enabled」になっています。データが取り込まれていたのは、この設定が原因です。
image.png

いろいろなアプリケーションの動きを見るのも楽しいのですが、せっかくなのでずっと稼働して、意味あるものとして、DNSのクエリをしばらく取り続けてみましょう。これなら、(きっと)少量のライセンスでDNSの問い合わせ状況をモニタリングできます(と思います)。

とても名残惜しいのですが、Splunk_DNSxxxx以外で、「Enabled」のものを選択して、すべてDisabledにしてみましょう。
image.png

まとめてDisabledにしちゃうこともできます。
image.png

フィッシングなどによって、社内や学校内に侵入したマルウェア、あるいは悪意のあるサイトにアクセスしてしまった人がいないか、探すニーズがきっとあると思います。
簡単にモニタリングができますので、ルーターのミラーポートでパケットのコピーを受けるマシンを立ち上げて、DNSの問い合わせ状況の監視から初めてみてはいかがでしょうか?
image.png

「Stream App」。実はもっと「ファンタスティック」ですので、また次回。

image.png

image.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away