内角540°

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

cookie

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
import tkinter
import urllib.request ,urllib.parse
import re

root = tkinter.Tk()
v = tkinter.IntVar()
v.set(1)

def create_widgets(self):

	self.useProxyCheck = tkinter.Checkbutton(text=u'Proxyを使用(未実装)')
	self.useProxyCheck.grid(column=0, row=1)
	self.proxyAddress = tkinter.Entry(self)
	self.proxyAddress.grid(column=1, row=1)
	self.msgTargetURL = tkinter.Label(text=u'宛先URL').grid(column=0, row=2)
	self.TargetURL = tkinter.Entry(self)
	self.TargetURL.insert(tkinter.END,"https://**.jp/")
	self.TargetURL.grid(column=1, row=2)

	self.radio1 = tkinter.Radiobutton(text = u"機能1:GetHeader", variable = v, value = 1)
	self.radio1.grid(column=0, row=3)
	self.radio2 = tkinter.Radiobutton(text = u"機能2:GetCookie(未実装)", variable = v, value = 2)
	self.radio2.grid(column=1, row=3)
	self.cookieName = tkinter.Entry(self)
	self.cookieName.insert(tkinter.END,"Cookie名")
	self.cookieName.grid(column=2, row=3)

	self.msgTargetURL = tkinter.Label(text=u'grep:').grid(column=0, row=4)
	self.grepBox = tkinter.Entry(self, width=60)
	self.grepBox.grid(column=1, columnspan=3,row=4)

	self.resultBox = tkinter.Text()
	self.resultBox.grid(columnspan=4)

	self.buttonRun = tkinter.Button(text=u'Run', width=60)
	self.buttonRun.bind("<Button-1>",ShowURLHeader) 
	self.buttonRun.grid(columnspan=4)

	self.buttonClear = tkinter.Button(text=u'Clear', width=60)
	self.buttonClear.bind("<Button-1>",resultClear) 
	self.buttonClear.grid(columnspan=4)

def resultClear(event):
	root.resultBox.delete(1.0,tkinter.END)

def GetURLHeader(url):
	print(url)
	return urllib.request.urlopen(url)

def ShowURLHeader(event):
	if root.TargetURL.get() and not root.grepBox.get():
		response = GetURLHeader(root.TargetURL.get()).info()
		root.resultBox.insert(tkinter.END,response)
		root.resultBox.place()
		print(type(GetURLHeader(root.TargetURL.get())))

	elif root.TargetURL.get() and root.grepBox.get():
		pattern = re.compile(root.grepBox.get(), re.IGNORECASE)
		for line in GetURLHeader(root.TargetURL.get()).getheaders():
			line = ": ".join(line)
			if re.search(pattern,line):
				print(re.search(pattern,":".join(line)))
				root.resultBox.insert(tkinter.END,line + '\n')
				root.resultBox.place()

create_widgets(root)





root.mainloop()

Windows プリフェッチの分析

Prefetchとは

Windowsで、アプリケーションの起動時間を短縮するためのデータキャッシュ。
アプリケーションが起動してから10秒間の情報を記録している。

ファイルの実行痕跡だけでなく、
・実行ファイルの場所
・過去に何回実行されたか
などなど…記載されるため、マルウェアの挙動解析として活用できる。

配置場所

プリフェッチファイルは下記のパスに拡張子[.pf]として作成される。

%Systemroot%\prefetch

f:id:gokaxtukei:20180203184037p:plain

最大128個のプリフェッチファイルが作成される
https://blogs.msdn.microsoft.com/ryanmy/2005/05/25/misinformation-and-the-the-prefetch-flag/

記述フォーマット

内部は専用のフォーマットで記載されており、容易に読み取れない。
f:id:gokaxtukei:20180203184116p:plain
http://forensicswiki.org/wiki/Windows_Prefetch_File_Format

分析時にはツールを使用し、情報を確認する。

プリフェッチの設定

regeditでロギング対象を設定できる。

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters

EnablePrefetcherに以下を設定する。

value* ロギング対象*
0 停止
1 アプリケーション起動
2 システム起動
3 すべての起動

f:id:gokaxtukei:20180203184150p:plain

※3に設定しても、最大128ファイルまでしか作成されない

命名規則

プリフェッチファイルの名前は実行ファイル名と、ハッシュ値で決定する。

[アプリケーション名]-[ファイルパスをベースにしたハッシュ値].pf

e.g.
WIRESHARK.EXE-76B1D076.pf

異なるパスから実行された同一名の実行ファイルは、別々のプリフェッチファイル名となる。
そのため、ファイル名だけ正規を模した不審なファイルは、これで判別がつけられる。

Prefetch hash
http://forensicswiki.org/wiki/Prefetch

解析

プリフェッチファイルにはフォレンジックに欠かせない情報がいろいろはいっている。

  • 「どこのパスから実行されたか(Process Path)
  • 「初めての実行はいつか(Created Time)」
  • 「最新の実行はいつか(Last Run Time)」
  • 「何回実行されたか(Run Counter)」
  • 「何のファイルをロードしたか」

マルウェアであり、大量に実行されている場合はタスクスケジュールなどに登録されているかもしれない。
→(追加でjobファイル等も参照する)
プロキシで大量通信イベントが発生しているタイミングでの実行ログであれば、目的実行のマルウェアとも推測できるかも。

ファイルが消されていても推測可能で、解析の足がかりになる。

強力なツール化を活用することで、情報整理しながら解析を行うのがよい。

CLI(Windows-Prefetch-Parser)

使ったこと無いが…CLIツールも複数あり。
https://github.com/PoorBillionaire/Windows-Prefetch-Parser

f:id:gokaxtukei:20180203184246p:plain

おわりに

プリフェッチはWindowsフォレンジックにおいて、解析の足がかりになる。
闇雲に不審ファイルを探すのは楽しいが、時間がかかり、イケてないので
強力なツールと残された痕跡で効率よく追跡する。

forensicswiki.org はなんでも載ってる、偉大。

SIEMの活用と成熟過程(SIEM Use Cases and Process Maturity)

McAfeeに掲載されたGrant Babbさんの"SIEMの活用"に関する記事。
とても良い記事でした(・o・)

SIEM Use Cases and Process Maturity
https://community.mcafee.com/community/business/siem/blog/2012/12/24/siem-use-cases-and-process-maturity--the-plays-to-run

続きを読む