前回csvを作成しましたので、それを取り込んで各要素でどんな出現があるかを確認していきます。データに含まれている要素は、以下になります。
'UserName', 'EventID', 'LogHost', 'LogonID', 'DomainName', 'ParentProcessName', 'ParentProcessID', 'ProcessName', 'Time', 'ProcessID', 'LogonTypeDescription', 'AuthenticationPackage', 'LogonType', 'Source', 'Status', 'ServiceName', 'Destination', 'SubjectUserName', 'SubjectLogonID', 'SubjectDomainName', 'FailureReason'
この中で、取得までに時間がかかる項目は、'LogonID'、'ProcessID'、'Time'で実際やってみると24時間以上かかります。(UserName(19314s) -> 5.3時間、ProcessName(4836s) -> 1.3時間, ParentProcessID(24928s) -> 6.9時間とかかりますが、24時間以内ですので、なんとかなりそうです。)
今回はこの'LogonID'、'ProcessID'、'Time'項目以外の項目を、各要素に出現する項目の出現回数を取得して、どのような内容になっているかを確認していきます。今回は単純計算なので並列計算は使いません。
ソースコード(HostEvents_Element_Count.py)
import pandas as pd | |
import matplotlib.pyplot as plt | |
import numpy as np | |
import time | |
import sys | |
import json | |
if __name__ == '__main__': | |
target_list = ['UserName', 'EventID', 'LogHost', 'DomainName', 'ParentProcessName', 'ParentProcessID', 'ProcessName', 'LogonTypeDescription', 'AuthenticationPackage', 'LogonType', 'Source', 'Destination', 'SubjectUserName', 'SubjectLogonID', 'SubjectDomainName', 'Status', 'ServiceName', 'FailureReason'] #'18項目、LogonID', 'ProcessID', 'Time'は別途計算 | |
#(1)csvファイルの取り込み | |
file = './wls_day-07_all.csv' | |
df = pd.read_csv(file) | |
#(2)各プロセスで各要素の計算 | |
for target in target_list: | |
element_list = df[target].unique().tolist() #ユニークリスト作成 | |
element_count = [] | |
for i in element_list: #出現回数をカウント | |
element_count.append(df[target].tolist().count(i)) | |
df_element_count = pd.DataFrame( #データフレーム化 | |
data=element_count, | |
columns=['Count'], | |
index=element_list | |
) | |
df_element_count.to_csv('./wls_day-07_'+str(target)+'.csv', index=True) | |
#python3 HostEvents_Element_Count.py |
これを実行すると、以下のようなデータが得られます。(wls_day-07_EventID.csv)
これを算出することで、どんなイベントがどのような頻度ででているかがわかります。まずは基本分析として、各要素のイベント出現回数を調査しました。
0 件のコメント:
コメントを投稿