読者です 読者をやめる 読者になる 読者になる

内角540°

セキュリティ。SIEMとかIPSとか統計とかクラウドとか。数学以外で。

クラウドアプリケーションを守るSIEM相関ルール

SIEM相関ルール作成の知見に読んでみる。

参考:
www.skyformation.com


1.Brute Force Attack

概要

同一のIPからログイン失敗を繰り返し・長時間に渡り行う

コメント

"長時間に渡る攻撃"
を観測できないSIEMのほうが多いと思う。
タイムレンジ60分では、機械的試行を補足できないのでは。

2.Distributed Brute Force Attack

概要

複数のIPから短時間で大量のログイン失敗

コメント

平時の認証失敗件数を学習できるSIEMなら良さげ。
しきい値を思いつきで決めるのは止めたい。

3.Concurrent Access From Different GEO

概要

異なる国から、同一アカウントでアクセス

コメント

これは使えそうなルール。

4.App Dormant User Becomes Active

概要

休暇など、発生し得ないユーザによるログインイベント

コメント

AD連携を行えるならよい

5.Departed User Access

概要

存在しないユーザ名によるアクセス

コメント

AD連携を行えるならよい

6.New Admin Created And Deleted

概要

短時間で、Adminユーザの作成と削除イベント

コメント

ActiveDirectoryの監視は、SIEMの役割の大きな一つですね。

7.Sign In From Blacklisted IP

概要

ブラックリストIPから、ログインなどのイベント

コメント

ソースに寄るけど、ブラックリストIPは信用ならない。信憑性ではブラックリストドメインのほうがいい気がする。
サービスによるけど、ホワイトリストができるならいいけど。

8.Departing User Admin Actions

概要

組織を去るユーザによる、Admin操作

コメント

"これから去るユーザ"の管理ってしているところあるのかしら。

9.Man In The Cloud

概要

(オンラインストレージなど)ファイル共有システムを利用して、
攻撃者のコンピュータと情報共有される

コメント

どうやって捕捉するんだろう?
プロキシで、オンラインストレージへの通信を捕捉するほうが早そうだけど。

10.Massive Resources Deletion

概要

短期間で、大量のファイルやアカウント情報の削除

コメント

「ActiveDirectoryのログ」、「ミドルウェアのログ」、「アプリケーションのログ」
それぞれでルールが作成できますね。

おわりに

特権管理関係が多い。
SIEMで適切な検知をさせるためには、人手によるメンテナンスが必須という事になりそう。

稼働を減らすのは難しいなー(。・_・。)

セキュリティレポートのリンク集

最近読んだセキュリティレポート

セキュリティレポート

レポート名 頻度 リンク
McAfee
脅威レポート
四半期 McAfee セキュリティ研究レポート
IIJ
Internet Infrastructure Review(IIR
四半期 セキュリティ・技術レポート IIJ
Symantec
脅威レポート
年次 セキュリティ脅威レポート
※要登録
Cisco
セキュリティレポート
半期 Ciscoセキュリティレポート
※要登録
NTT-Com
セキュリティレポート
不定期 NTT Communicationsセキュリティレポート
※一部登録必須
FFRI
Monthly Research
月次 http://www.ffri.jp/research/monthly_research.htm
FFRI
リサーチペーパー
不定期 http://www.ffri.jp/research/research_papers.htm
Trend Micro
セキュリティレポート
Trend Microセキュリティ情報
LAC
JSOC INSIGHT
四半期 https://www.lac.co.jp/lacwatch/report/
IBM
Tokyo SOC Report
不定期 https://www.ibm.com/blogs/tokyo-soc/
NRIセキュア
調査レポート
不定期 自社調査レポート
※要登録

セキュリティブログ

レポート名 リンク
Fortinet
セキュリティブログ
セキュリティブログ - フォーティネット
F-Secure
エフセキュアブログ
エフセキュアブログ
TrendMicro
セキュリティブログ
トレンドマイクロ セキュリティブログ
KASPERSKY
カスペルスキー公式ブログ
カスペルスキー公式ブログ
IIJ
IIJ-SECT Security Diary
IIJ-SECT Security Diary

野球選手データの取得@python+splunk

目標

選手の成績推移が見たい。

流れ

  1. PythonでSportsnaviの情報をCSVにする。
  2. Splunkで読み取り、成績推移グラフを作る

選手情報のCSV

コード

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib
import re
import datetime
time = str(datetime.datetime.today())
day = str(datetime.date.today())

######URLアクセス######
def httpGetter(url):
	#送信先URL
	#url += "?{0}".format( urllib.urlencode( param ) )
	#API実行
	result = None
	try :
		result = urllib.urlopen( url ).read()
	except ValueError :
		print "アクセス失敗"
	return result

######CSV出力######
def fileExport(data,filename):
	f = open(filename, 'w')
	for i in data:
		f.write(i+"\n")
	f.close()

######文字整形######
def html_cleaner(data):
	r = re.compile("<tr.*?</tr>")
	data = r.findall(data.replace("\n", ""))

	player = []
	for i in data:
		i = re.sub(r'<.*?>', "", i.replace("</td>",","))
		player.append(i.decode('utf-8'))
	return player

def player_parser(case,player_data):
	if case == "batter":player = ["date,team,PlayerNo,name,daritu,shiaisuu,dasekisuu,dasuu,anda,niruida,sanruida,homerun,ruidasuu,daten,tokuten,sanshin,fourball,deadball,gida,giseifurai,tourui,syuturuiritu,tyoudaritu,tokutenken,syouriten,heisatu,sissaku"]
	if case == "pitcher":player = ["date,team,PlayerNo,name,bougyoritu,shiaisuu,kantou,mushittenshouri,mushikyuu,win,lose,hold,holdpoint,save,shouritu,toukyuukaisuu,hianda,hihonruida,datusanshin,fourball,deadball,boutou,bo-ku,shiten,jisekiten"]
	for i in player_data:
		i = re.sub(r",(\.)(\d+)",r",0.\2",i)
		i = re.sub(r"-",r"0",i)
		i = re.sub(r"&nbsp;1/3",r".333",i)
		i = re.sub(r"&nbsp;2/3",r".666",i)
		if (re.match(r".+?,.+?,.*?,.*?,.*?,.*?,.*?,.*?,.*?,.*?,.*?,.*?,.*?,.*?,.*?,.*" , i)):
			player.append(time+","+str(team_no)+","+i.encode('utf-8'))
	return player

teams = ["001_読売ジャイアンツ","002_東京ヤクルトスワローズ","003_横浜DeNAベイスターズ","004_中日ドラゴンズ","005_阪神タイガース","006_広島東洋カープ",\
         "007_埼玉西武ライオンズ","008_北海道日本ハムファイターズ","009_千葉ロッテマリーンズ","376_東北楽天ゴールデンイーグルス","011_オリックス・バファローズ","012_福岡ソフトバンクホークス"]
for team_no in teams:
	batter_data  = html_cleaner ( httpGetter (url = "https://baseball.yahoo.co.jp/npb/teams/"+str(int(team_no[0:3]))+"/memberlist?type=b"))
	pitcher_data = html_cleaner ( httpGetter (url = "https://baseball.yahoo.co.jp/npb/teams/"+str(int(team_no[0:3]))+"/memberlist?type=p"))

	#野手データ取得
	exp = player_parser("batter",batter_data)
	fileExport(exp,"data_batter/"+str(team_no[0:3])+"_"+day+"_batter.csv")
	for i in exp:print i
	#投手データ取得
	exp = player_parser("pitcher",pitcher_data)
	fileExport(exp,"data_pitcher/"+str(team_no[0:3])+"_"+day+"_pitcher.csv")
	for i in exp:print i

アウトプット

2017-03-21 17:14:19.120000,003:横浜DeNAベイスターズ,25,筒香 嘉智,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
2017-03-21 17:14:19.120000,012:福岡ソフトバンクホークス,18,松坂 大輔,4.76,3,0,0,0,0,0,0,0,0,0,11.333,4,1,7,10,2,2,0,8,6,

f:id:gokaxtukei:20170321172206p:plain
f:id:gokaxtukei:20170321172341p:plain

Splunkでデータ読み取り

特に指定なし。
ソースタイプ→CSVで指定すれば、インデックス行を読み取ってくれる。
結果ディレクトリを入力する。

index="pitcher" OR index="batter"
|search player_num = 9
|search team = "003*"
|timechart max(daritu)

f:id:gokaxtukei:20170321223339p:plain

複数日のデータが集まるまで、我慢…!
f:id:gokaxtukei:20170321181201p:plain