endpoint에서 발생하는 이벤트를 보여줌 ( endpoint client 정보와 사용자 )
endpoint 로그 관리의 어려움
1) Process creation
- 새로운 프로세스가 만들어지면 생성 되는 로그
- 프로세스가 실행됐을 때 사용된 명령어의 전체줄을 이벤트로 기록
- 프로그램 vs 프로세스
프로그램 : 하드디스크에 저장되어 있다 (정적)
프로세스 : 프로그램 + CPU + RAM => 실행중인 프로그램
2) A process changed a file creation time
- 프로세스가 파일 생성 시간을 수정 시 기록
- 공격자가 백도어 파일을 설치 하면서 운영 체제 파일을 위장한 것 탐지 가능
3) Network Connection
- 호스트에서 TCP/UDP 연결 기록을 이벤트로 생성
- 어느 프로세스가 네트워크 접속을 시도했는지 파악할 수 있으며 호스트명, IP 주소, 포트번호 등 정보 제공
4) Process terminated
- 프로세스가 종료되면 이벤트를 생성
1) 비정상 폴더 (ex. recycle)에서 exe 파일 실행
- index=sysmon sourcetype="WinEventlog: Microsoft-Windows-Sysmon/Operational" EventCode=1
➡️ 프로세스 실행이 된 파일들의 로그검색
✔️ EventCode=1 : 프로세스 생성을 의미 (exe 파일이 정상적으로 실행 되었음을 의미)
- (CurrentDirectory!="Program Files" AND CurrentDirectory!="system32")
(Image!="system32" AND Image!="Program Files" AND Image!="SysWOW64*")
➡️ programfile, system32인 디렉토리 명에 있는 로그들은 검색 대상에서 제외 ( 정상 범위이기 때문 )
✔️ CurrentDirecory : 실행 파일이 들어 있는 디렉토리, Imagefiled : 폴더와 실행파일 명 저장
- [ search index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
EventCode=1
| rare CurrentDirectory limit=10 showperc=f showcount=f ]
✔️
• search : 하위 검색을 나타냄, 2차 검색으로 들어감 (하위검색을 사용하는 이유? 검색범위줄이기)
• 시스템 폴더 외에서 실행되고 있는 파일들을 검색
• 악성코드는 소수만이 감염되므로 rare를 이용 (rare 빈도가 낮은 것들을 최상위에 배치(top반대))
• showperc(점유율)과 showcount(점유개수)는 보지 않음(false)
- index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
EventCode=1
(CurrentDirectory!="Program Files" AND CurrentDirectory!="system32")
(Image!="system32" AND Image!="Program Files" AND Image!="SysWOW64*")
[ search index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
EventCode=1 | rare CurrentDirectory limit=10 showperc=f showcount=f]
| table Image
실행 결과
2) 파일 실행 후 원본 파일 삭제
- index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
EventCode=1 ParentImage="c:\windows\explorer.exe"
➡️ 하드디스크에서 실행된 파일 중 win 탐색기를 통해 파일이 실행된 로그 출력
- [ search index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
| where NOT isnull(Image) AND NOT isnull(ParentImage) | search CommandLine=" del "
➡️
| search CommandLine="* del *"
: 명령줄(CommandLine)에 "del"이라는 문자열을 포함하는 이벤트를 검색
rename ParentImage AS Image
: 원래 파일 이름 그대로 출력
✔️ Source program (악성코드)는 실행 중에 자신을 삭제하는 것이 아니라 다른 프로그램을 모두 실행 시킨후 , 다른 프로그램을 호출해서 원본 파일을 삭제한다 또한 악성코드는 cmd.exe를 호출해서 지우는 방식을 많이 볼 수 있다
실행결과
3) 실행 후 네트워크 접속 다수 발생
index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational"
EventCode=1 (Image!="C:\windows" AND Image!="Program Files*")
"C:\\windows*"
: 해당 프로세스 위치에서 실행된 것(정상) 로그 제외
[ search index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational“
EventCode=3 (DestinationIp!="10.0.0.0/8" AND DestinationIp!="172.16.0.0/12" AND
DestinationIp!="192.168.0.0/16")
EventCode=3
: 네트워크 접속 경로 중에서
DestinationIp!
: 목적지가 해당 IP면 제외 ( 사내망은 사설 IP 사용 -> 목적지가 공인 IP인 로그들만 검색 )
| stats count(DestinationIp) AS total_count dc(DestinationIp) AS uniq_count by Image
stats count(DestinationIp) AS total_count dc(DestinationIp) AS uniq_count by Image
| where total_count > 50 OR uniq_count > 20
| table Image]
실행결과
4) 네트워크 shell 실행
net.exe
index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1
| where match(Image, "netsh.exe$")
| where NOT isnull(ParentImage)
| table ParentImage, Image, COmmandLine
실행결과