1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Splunk Advent Calendar 2020Advent Calendar 2020

Day 24

BOTSv2データを使ってFraud監視ダッシュボードを作ってみる

Last updated at Posted at 2020-12-23

はじめに

  • 前に、書いた以下記事を見ていただいた方へ。実際に本番環境で試す前にそもそもstreamデータってどれほど見えるものなのか触れてみたいなという方向けにSAMPLEデータとその使い方の紹介です
  • 会員系Webサイトに対する不正ログインの監視や不正決済などの兆候を捉えるためにSplunk Stream Appによるhttpトラフィックの分析が便利です
    • 認証イベントが記録されたアプリケーションのログがすぐに用意できない(アプリ改修が必要)などの状況においてStreamを使ってネットワークレイヤーでキャプチャして監視ができるため
    • もちろん、Webサイトは通常httpsで提供しているので、SSLアクセラレータなどで復号済みのhttpトラフィックをモニターする必要はあります
  • そこで、Splunk StreamでキャプチャしたhttpトラフィックがSplunkに入ることでどのように調査、分析ができるのかを体験するのにBOTSv2のdataを使ってみてみたいと思います
  • BOTSデータのいいところ
    • すでにindex済みのデータのため、Splunkに取り込んでもライセンスを消費しないで利用できる
  • BOTSv2データはFrothly社という架空の飲料メーカーに起きたインシデントを調査していくという背景が用意されています
    • 不正ログインはFrothly社のECサイト(store.froth.ly)において発生した体になっています。

作り方

BOTSv2データを準備する

  • 前提:Splunkをインストール済みの環境がある状態
  • SplunkインスタンスにCLIログインして、以下サイトからBOTSv2のattack onlyデータを直接wgetでダウンロードします
# appフォルダ配下に移動します
cd /opt/splunk/etc/apps

# dataのダウンロード
wget https://s3.amazonaws.com/botsdataset/botsv2/botsv2_data_set_attack_only.tgz

# appフォルダ配下に展開します
tar zxvf botsv2_data_set_attack_only.tgz 

# 以下フォルダが生成されることを確認
botsv2_data_set

# ゴミは削除しておきます
rm botsv2_data_set_attack_only.tgz 

# Splunk再起動
/opt/splunk/bin/splunk restart

SPLを試す

  • データが検索できることを確認
    • stream:httpの分析を行う際は、2017/8/1-2017/8/31にかけての時間範囲で選択して検索してください
SPL
index=botsv2 sourcetype=stream:http

スクリーンショット 2020-12-23 10.04.31.png

8月の間に複数の異なる地域からアクセスのあったアカウントを特定する

  • いわゆるリスト型攻撃を想定したときの初歩的な監視例です。
  • Webサイトの利用状況からして、利用者が国をまたいでサービスにログインしてくることが割合として低い場合、以下のようなサーチで傾向をみることができます
SPL
index=botsv2 sourcetype="stream:http"
| rex field=form_data "login\[username\]=(?<web_user>[^&|^$]+)" 
|search web_user=*@*
|iplocation src
|eval ipcon = src + "_" + Country
|stats count  values(ipcon) by web_user
|sort - count

# 解説
# まず2行目でいきなりrexコマンドをつかって、正規表現をもとにECサイトへのログインユーザ情報を抽出しています
# 3行目でログインユーザがメールアドレス形式のものにフィルタ
# 4行目でsrcのIPアドレスにGeo情報をエンリッチします
# 5行目でsrcと国名をくっつけたipconフィールドを新たに生成します
# 6行目でweb_user別に集計をおこないます
# 7行目で降順にソートをかけます
  • サーチ結果

スクリーンショット 2020-12-23 10.28.18.png

  • Tom2014のアカウントは3つの異なる国から計5回もログイン試行があったことがわかります。

傾向監視用のダッシュボードSAMPLEを適用して見てみる

スクリーンショット 2020-12-23 10.37.36.png

最後に

  • 上で例示したSPLとダッシュボードを実環境のstream:httpデータで適用した場合、色々とチューニングは必要だと思います
  • そのための叩き台として参考いただけると幸いです
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?