LogParser
목 차 LogParser 설명 Log Parser 활용 LogParser 사용법 예제 정리
LogParser LogParser는 MicroSoft에서 제공하는 툴로서 로그 분석 시 많은 양의 로그에서 원하는 정보만 추출하거나 통계를 낼 때 사용되는 툴이다. 기본적으로 SQL문 기반으로 사용된다. 저장 위치 (windows server 2003) C:\windows\system32\config\ (appevent.evt|secevent.evt|sysevent.evt)
활 용 많은 양의 이벤트 로그를 LogParser를 사용하여 찾고자 하는 로그의 Event ID나 프로세스 이름 등 적은 정보만을 이용하여 추출해 올 수 있다. 점검 시 추출해 내고자 하는 정보가 같을 경우 query 문을 파일로 정리하여, 매번 query 문을 입력하는 번거로움 없이 빠르게 정보를 가져올 수 있다. 통계 데이터 추출을 통해 이상 징후를 알아 볼 수 있다. 예를 들면, 로그인 접근시도의 통계를 내어 접근시도의 증가율 등을 확인하여 공격 시도가 있었는지 확인 할 수 있다.
사용법 다음 명령을 통해 logparser의 사용법 확인 가능 >Logparser.exe –h
사용법 >Logparser.exe –h –i:evt 입력형식에 따른 사용법을 확인할 경우 옵션 –i 를 이용 Ex) 입력 형식이 Event log일 경우 >Logparser.exe –h –i:evt
사용법 >LogParser.exe –i:evt –o:출력형식 “SELECT 필드명 [INTO 출력파일명] FROM Security|Application|System WHERE 조건 [ORDER BY 필드명 ASC|DESC]” Event Log Fields : EventLog (S) RecordNumber (I) TimeGenerated (T) TimeWritten (T) EventID (I) EventType (I) EventTypeName (S) EventCategory (I) EventCategoryName (S) SourceName (S) Strings (S) ComputerName (S) SID (S) Message (S) Data (S) (S : string I : integer T : timestamp)
사용법 출력형식 (CSV, CHART, NEUROVIEW, NAT, W3C 등) tab으로 구분되는 tsv나 comma로 구분되는 csv 등 원하는 출력형식을 –o 옵션으로 지정해 주면 각 출력형식에 맞게 결과를 확인 할 수 있다. Ex) 출력형식이 NAT(native format) 일 경우 >Logparser.exe –i:evt –o:nat “SQL Query“ NAT
사용법 TSV Logparser.exe –i:evt –o:tsv “SQL Query“ DATAGRID Logparser.exe –i:evt –o:datagrid “SQL Query“
사용법 NEUROVIEW Logparser.exe –i:evt –o:neuroview “SQL Query“ CSV Logparser.exe –i:evt –o:csv “SQL Query“
예제#1 iexplore.exe 프로세스가 실행된 이벤트로그를 추출 EXTRACT_TOKEN( argument <STRING>, index <INTEGER> [ , separator <STRING> ] ) EXTRACT_TOKEN(Strings,1,’|’) - Strings 필드를 ‘|’ 문자열로 분리했을 경우 1번(0번부터 시작) 문자열 필드 - EventLog : 보안, 응용 프로그램, 시스템 로그 - TimeWritten : 로그가 기록된 시간 - ComputerName : 컴퓨터 이름 - Message : 로그 내용 Event Id 592 : 프로세스 생성 SELECT EventLog, TimeWritten, ComputerName, Message INTO iexplorelog.txt FROM Security WHERE (EventID=592) AND (EXTRACT_TOKEN(Strings, 1, '|') LIKE %iexplore.exe%')
예제#1 iexplore.exe 프로세스가 실행된 이벤트로그를 추출 >LogParser.exe -i:evt file:sql1.txt 입력 형식은 이벤트로그이고 sql1.txt(앞 슬라이드의 SQL문장)에 기록된 SQL 문장을 적용한다.
예제#2 특정 사용자(예, securityteam)의 터미널 서비스 로그온 이벤트로그 추출 필드 - EventTypeName : 성공감사, 실패감사 - (EventCategory)EventCategoryName: (1)시스템이벤트 (2)로그온/로그오프 (3)객체 액세스 (4)권한사용 (5)세부추적 Event Id 528 : 로그온 성공 Event Id 529 : 로그온 실패 터미널 서비스로 로그인 한 경우 로그온 유형이 10번이므로 Strings 필드에서 10 이라는 문자열을 찾는 조건을 넣어주어 로그를 추출해 낸다. SELECT EventLog, TimeWritten, EventTypeName, EventCategoryName, ComputerName, Message INTO terminallog.txt FROM Security WHERE ((EventID=528) AND (EXTRACT_TOKEN(Strings, 3, '|') LIKE '10')) OR ((EventID=529) AND (EXTRACT_TOKEN(Strings, 2, '|‘) LIKE '10')) AND (EXTRACT_TOKEN(Strings, 0, '|') LIKE 'securityteam')
예제#2 특정 사용자(예, securityteam)의 터미널 서비스 로그온 이벤트로그 추출 >LogParser.exe -i:evt file:sql2.txt 입력 형식은 이벤트로그이고 sql2.txt(앞 슬라이드의 SQL문장)에 기록된 SQL 문장을 적용
예제#3 특정 사용자가 실행한 예약 작업에 대한 이벤트로그 추출 Event Id 602 : 예약 작업 생성 EXTRACT_TOKEN(Strings,7,'|') LIKE ‘securityteam’) 으로 조건을 주어 특정사용자(securityteam)의 예약 작업에 대해서 검색한다. SELECT EventLog, TimeWritten, ComputerName, Message FROM Security WHERE (EventID=602) AND (EXTRACT_TOKEN(Strings,7,'|') LIKE ‘securityteam’)
예제#3 특정 사용자가 실행한 예약 작업에 대한 이벤트로그 추출 > LogParser.exe -i:evt -o:datagrid file:sql3.txt 입력 형식은 이벤트로그이고 sql3.txt(앞 슬라이드의 SQL문장)에 기록된 SQL 문장을 적용. 출력형식은 DATAGRID 형식으로 출력
정리 과제#1 <iexplore.exe 프로세스가 실행된 이벤트로그를 추출> 악성 프로세스로 의심되는 프로세스가 있을 경우 이 프로세스가 언제, 어떤 사용자에 의해서 실행되었는지, 다른 프로세스를 생성하였는지 등의 프로세스 실행 로그의 점검이 필요하다. 의심되는 프로세스를 실행시킨 사용자의 정보를 로그를 통해 알 수 있으므로 이 사용자가 다른 어떤 프로세스를 실행시켰는지 조사해보고 실행된 프로세스들이 악성 프로세스인지 확인해본다.
정리 과제#2 <특정 사용자(예, securityteam)의 터미널 서비스 로그온 이벤트로그 추출> 서버로 알 수 없는 사용자가 접속을 시도하였을 때, 로그온에 성공하거나 실패했을 경우 로그인 성공/실패 기록이 남는다. 로그온 이벤트를 확인하여 로그온에 성공한 경우나 실패한 경우 모두 언제 어떤 사용자가 로그인을 시도했는지 로그를 분석한다. 로그를 분석하여 같은 IP로 여러 번의 로그온 실패 로그가 남아있다면 알 수 없는 사용자가 서버로 접근을 계속해서 시도하였다는 것을 알 수 있고 관리자의 입장에서는 터미널로 로그인하는 서비스를 중단하거나 불필요한 사용자 계정을 막고 암호를 강화하는 등의 대처를 할 수 있을 것이다. 접속한 사용자의 정보를 이용하여 접속 후에 어떠한 작업을 하였는지 조사하여 해당 사용자가 악의적인 목적으로 서버에 로그인 했는지 조사해 볼 수 있다.
정리 과제#3 <특정 사용자가 실행한 예약 작업에 대한 이벤트로그 추출> 알 수 없는 사용자에 의해 예약작업이 만들어졌을 경우에는 그 사용자가 또 다른 작업을 예약했는지 확인하고 각 예약 작업들이 언제 어떤 프로세스를 실행시켰는지 확인한다. 예약 작업 성공적으로 실행이 되었다면 실행시킨 프로세스에 대해서 프로세스 실행 로그를 분석한다.
끝