개요
Windows에 내장된 netsh.exe를 활용하여 ICMP Echo Request를 발생시킨 프로세스를 찾는 과정을 정리했습니다.
1. 프로세스 추적을 위해 감사 GPO 적용
컴퓨터 구성\Windows 설정\보안 설정\로컬 정책\감사 정책\프로세스 추적 감사
2. 관리자 권한으로 netsh trace 시작
PS C:\Windows\system32> netsh trace start provider=Microsoft-Windows-NDIS-PacketCapture capture=yes Protocol=1 IPv4.DestinationAddress=(8.8.8.8,8.8.4.4) tracefile=D:\trace.etl correlation=disable report=no
추적 구성:
-------------------------------------------------------------------
상태: 실행 중
추적 파일: D:\trace.etl
추가: 해제
순환: 설정
최대 크기: 250 MB
보고서: 해제
report=no, perfMerge=no로 설정하면 tracefile (.etl 확장자) 만 얻을 수 있습니다.
3. PING 실행
PS C:\Windows\system32> ping 192.168.1.1
Ping 192.168.1.1 32바이트 데이터 사용:
요청 시간이 만료되었습니다.
요청 시간이 만료되었습니다.
요청 시간이 만료되었습니다.
요청 시간이 만료되었습니다.
192.168.1.1에 대한 Ping 통계:
패킷: 보냄 = 4, 받음 = 0, 손실 = 4 (100% 손실),
4. 추적 중단 및 ETL 파일을 CSV로 변환
PS C:\Windows\system32> netsh trace stop
추적을 연결하는 중... 완료
추적 병합 중... 완료
데이터 모음 생성 중... 완료
추적 파일과 추가 문제 해결 정보가 "D:\trace.cab"(으)로 컴파일되었습니다.
파일 위치 = D:\trace.etl
추적 세션을 중지했습니다.
PS C:\Windows\system32> netsh trace convert input=d:\trace.etl output=d:\trace.csv dump=csv
입력 파일: d:\trace.etl
덤프 파일: d:\trace.csv
덤프 포맷: CSV
보고서 파일: -
덤프 생성 중... 완료
5. CSV 파일 분석
Microsoft Network Monitor나 Microsoft Message Analyzer를 사용하면 편리하게 분석할 수 있습니다.
- "User Data"행에 페이로드가 저장되어 있습니다. 여기에서 16진수로 변환한 IP 주소(c0a80101)를 검색합니다.
- "Keyword"행에는 16진수로 된 Process ID가 저장되어 있습니다.
PS C:\Windows\system32> gc D:\trace.csv -head 1;gc D:\trace.csv|sls c0a80101
EventName, Type, EventID, Version, Channel, Level, Opcode, Task, Keyword, PID, TID, ProcessorNumber, InstanceID, ParentInstanceID, ActivityID, RelatedActivityID, Clock-Time, Kernel(ms), User(ms), UserData
Microsoft-Windows-NDIS-PacketCapture, 1001, 0, 16, 4, 0, 0, 0x00000000C0010000, 0x00003C5C, 0x000031F0, 2, , , {00000000-0000-0000-0000-000000000000}, , 132246758710336702, 0, 0, 13, 13, 92, 0x08010080705DCC6253943800252BD9B4705DCC6253940000AAAA0300000008004500003C933A000080010000C0A80003C0A8010108004746000106156162636465666768696A6B6C6D6E6F7071727374757677616263646566676869, 0, 0x0
Microsoft-Windows-NDIS-PacketCapture, 1001, 0, 16, 4, 0, 0, 0x00000000C0010000, 0x00003C5C, 0x000031F0, 3, , , {00000000-0000-0000-0000-000000000000}, , 132246758760092924, 0, 0, 13, 13, 92, 0x08010080705DCC6253943800252BD9B4705DCC6253940000AAAA0300000008004500003C933B000080010000C0A80003C0A8010108004745000106166162636465666768696A6B6C6D6E6F7071727374757677616263646566676869, 0, 0x0
Microsoft-Windows-NDIS-PacketCapture, 1001, 0, 16, 4, 0, 0, 0x00000000C0010000, 0x00003C5C, 0x000031F0, 2, , , {00000000-0000-0000-0000-000000000000}, , 132246758810106174, 0, 0, 13, 13, 92, 0x08010080705DCC6253943800252BD9B4705DCC6253940000AAAA0300000008004500003C933C000080010000C0A80003C0A8010108004744000106176162636465666768696A6B6C6D6E6F7071727374757677616263646566676869, 0, 0x0
Microsoft-Windows-NDIS-PacketCapture, 1001, 0, 16, 4, 0, 0, 0x00000000C0010000, 0x00003C5C, 0x000031F0, 4, , , {00000000-0000-0000-0000-000000000000}, , 132246758860136758, 0, 0, 13, 13, 92, 0x08010080705DCC6253943800252BD9B4705DCC6253940000AAAA0300000008004500003C933D000080010000C0A80003C0A8010108004743000106186162636465666768696A6B6C6D6E6F7071727374757677616263646566676869, 0, 0x0
- Clock-Time 값(epoch time) 변환
PS C:\Windows\system32> (get-date 132245251928834876).AddHours(9)
0420년 1월 27일 월요일 오전 12:13:12
6. 프로세스 감사 이벤트 확인
PS C:\Windows\system32> $start=get-date '2020년 1월 27일 월요일 오전 12:13:10'
PS C:\Windows\system32> $end=get-date '2020년 1월 27일 월요일 오전 12:13:15'
PS C:\Windows\system32> Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688; StartTime=$start; EndTime=$end} | fl
TimeCreated : 2020-01-27 오전 12:13:12
ProviderName : Microsoft-Windows-Security-Auditing
Id : 4688
Message : 새 프로세스가 만들어졌습니다.
생성자 주체:
보안 ID: S-1-5-21-2877268704-1856635767-4175727757-1001
계정 이름: iseop
계정 도메인: DESKTOP-BEM07KQ
로그온 ID: 0x9061BE5
대상 주체:
보안 ID: S-1-0-0
계정 이름: -
계정 도메인: -
로그온 ID: 0x0
프로세스 정보:
새 프로세스 ID: 0x37b0
새 프로세스 이름: C:\Windows\System32\PING.EXE
토큰 상승 유형: %%1937
필수 레이블: S-1-16-12288
생성자 프로세스 ID: 0x3ec4
생성자 프로세스 이름: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
프로세스 명령줄:
결론
프로세스 감사 기록이 유지되고 있는 시스템이라면 netsh trace를 통해 어떤 프로세스가 어떤 패킷을 주고받았는지 분석할 수 있다.