로그온 이벤트를 분석해보자. winlogbeat 설정에 로그온 성공 및 실패 이벤트 4624, 4625 추가.
winlogbeat가 알아서 필드별 정규화를 해주지만, 몇몇 정보는 가독성을 높이기 위한 가공이 필요하다.
다음은 LogonType 필드의 숫자값을 문자열로 바꾸고, ProcessName 필드값을 경로와 파일명으로 분리하는 Logstash 설정.
#4624, 4625 이벤트 type 지정if [event_id] in [4624, 4625] { mutate { replace => { "type" => "logon_event" } }
#LogonType별 값 변경 if [event_data][LogonType] == "0" { mutate { replace => { "[event_data][LogonType]" => "system_start" } } }
if [event_data][LogonType] == "2" { mutate { replace => { "[event_data][LogonType]" => "interactive" } } }
if [event_data][LogonType] == "3" { mutate { replace => { "[event_data][LogonType]" => "network" } } }
if [event_data][LogonType] == "4" { mutate { replace => { "[event_data][LogonType]" => "batch" } } }
if [event_data][LogonType] == "5" { mutate { replace => { "[event_data][LogonType]" => "service" } } }
if [event_data][LogonType] == "7" { mutate { replace => { "[event_data][LogonType]" => "unlock" } } }
if [event_data][LogonType] == "8" { mutate { replace => { "[event_data][LogonType]" => "network_cleartext" } } }
if [event_data][LogonType] == "9" { mutate { replace => { "[event_data][LogonType]" => "new_credentials" } } }
if [event_data][LogonType] == "10" { mutate { replace => { "[event_data][LogonType]" => "rdp" } } }
if [event_data][LogonType] == "11" { mutate { replace => { "[event_data][LogonType]" => "cache_interactive" } } }}
#ProcessName 값을 경로와 파일명으로 분리if [event_id] == 4624 { grok { match => { "[event_data][ProcessName]" => "(?<proc_path>.+\\).+" } } grok { match => { "[event_data][ProcessName]" => ".+\\(?<proc_name>.+)" } }}
수집된 로그의 통계 현황를 보여주는 대시보드는 다음과 같다.
다음은 로그온 성공(4624) 및 실패(4625) 이벤트 발생 현황.
다단계 파이 차트를 이용해서 로그온 성공 이벤트 발생 현황을 조회한 결과는 다음과 같다. 192.168.56.101에서 network 유형으로 익명 로그온 발생. 마우스를 가져가면 계층별 발생 현황을 알 수 있다.
로그온 실패 이벤트 발생 현황. 192.168.56.101에서 network 유형으로 admin 계정을 이용한 로그온 시도 발생.
엘라스틱, 참 예쁘고 편리하게 잘 만들었다. SIEM에서 제공했으면 좋겠다 싶은 기능들이 다 있음. 이런 게 공짜라니!
관련 글
댓글 없음:
댓글 쓰기