Security & Forensic

반응형

USB 사용 이력 분석은 사실 간단한 작업이 아니다. 

다양한 아티팩트들을 대상으로 많은 분석 경험에 의해서 분석 방법과 절차, 결과 판단의

기준을 수립하는 것이 좋다.

 

포렌식 관점에서 아래 사항을 같이 연관분석하는 것이 가장 좋아 보인다.
1. USB 장치 사용 이력 조회 : 장치명, Connection Time, 볼륨명 및 Disconnection Time 

2. 파일 시스템 $Usnjurl, $logfile, $MFT 등을 이용하여 Connection Time과 Disconnection Time 사이 파일 I/O 분석

3. Web Cache, JumpList, 가장 최근 접근 문서, UserAssist, 링크파일, 프리패치 등을 같이 분석하여 USB 내 파일 I/O 분석

4. Last Activity View Tool을 이용하여 최근 활동 내역 분석

 

이벤트 로그 분석
아래 참조된 이벤트 파일(evtx 파일)들은 OS 유형에 따라 존재하지 않을 수도 있으며 

각각 다른 이름으로 존재할 수도 있으므로 인터넷 등을 조회해서 관련 이벤트 파일을 찾은 후

아래와 같은 방법과 절차대로 분석을 진행하도록 한다.


Microsoft-Windows-Storage-ClassPnP%4Operational.evtx 분석

C:\>wevtutil epl /lf "C:\WINDOWS\System32\winevt\logs\Microsoft-Windows-Storage-ClassPnP%4Operational.evtx" "c:\temp\storage-pnp-operation.evtx"

 

C:\>logparser.exe -stats:off -i:evt "select TimeGenerated, Strings from 'C:\temp\storage-pnp-operation.evtx'"

 

Microsoft-Windows-DriverFrameworks-UserMode/Operational 분석

USB 장탈착 이력, 윈도우 8+ 에서는 파일이 존재하지 않는다.

 

System Event Log 분석

f:\temp>wevtutil epl system system-export.evtx


F:\>LogParser.exe -stats:off -i:evt "select Timegenerated, strings from 'F:\temp\system-export.evtx' where strings like '%usb%'"

 

기타 Event Log 분석

* C:\Windows\System32\winevt\Logs\Microsoft-Windows-DriverFrameworks-UserMode%4Operational.evtx (Windows 7)
* C:\Windows\System32\winevt\Logs\Microsoft-Windows-Storage-ClassPnP/Operational.evtx  (Window 10)
* C:\Windows\System32\winevt\Logs\Microsoft-Windows-WPD-MTPClassDriver/Operational.evtx

 

운영제체 로그 파일

아래 파일을 통해 USB 연결사실과 최초 연결 시각을 확인 할 수 있다.

Windows 2000/XP : %SystemRoot%\Setupapi.log

Windows Vista/7/8 : %SystemRoot%\inf\Setupapi.dev.log

 

* C:\Windows\INF\setupapi.dev.log 
* C:\Windows\INF\ setupapi.dev.yyyymmdd_hhmmss.log 
* C:\Windows\INF\setupapi.upgrade.log 
* C:\Windows\setupapi.log 

 

레지스트리

* HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet001\Enum\USB

* HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet001\Enum\USBSTOR 
* HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 
* HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses 
* HKEY_USERS\SID\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 
* HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 
* HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices 
* HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\VolumeInfoCache 
* HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\SWD\WPDBUSENUM 

레지스트리는 OS 유형 및 버전에 따라 레지스트리 경로, 키 이름 등이 서로 다를 수 있다.

 

USBDevView Tool
GUI & CLI
From : https://www.nirsoft.net/utils/usb_devices_view.html

 

F:\>USBDeview.exe /sxml f:\temp\usbdevview.xml /sort ~"last plugin/unplugin date"

F:\>LogParser.exe -h -i:xml "F:\temp\usbdevview.xml" -headerrow:on

F:\>LogParser.exe -stats:off -i:xml "select device_name, drive_letter, last_plug_unplug_date, last_plug_unplug_date from F:\temp\usbdevview.xml"

 

만약 한글이 깨져 보이면 아래와 같이 인코딩을 변환한다.

F:\> powershell
PS F:\> get-content F:\temp\usbdevview.xml | set-content -Encoding utf8 F:\temp\usbdevview2.xml

 

USB Forensic Tracker Tool

GUI

USB-Device-Tracking-Artifacts.pdf
0.34MB

 

USB 분석 예제

1. USB VID & PID 조회

C:\Temp>reg query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\CdRom&Ven_Generic&Prod_Autorun_Disk&Rev_8.00

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_&Prod_MXUB3SES-32G&Rev_1.00

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_ASMT&Prod_2105&Rev_0

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_Duzon&Prod_DuzonC&T&Rev_8.01

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_LGE&Prod_USB_Drive&Rev_0.00

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_SanDisk&Prod_Cruzer_Blade&Rev_1.27

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_SanDisk&Prod_Ultra&Rev_1.00

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_SanDisk&Prod_Ultra_USB_3.0&Rev_1.00

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_Seagate&Prod_FreeAgent_Go&Rev_0148

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_SMI&Prod_USB_DISK&Rev_1100

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_USB&Prod_Flash_Disk&Rev_1100

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_ZYRUS&Prod_NEXTIK_2.0&Rev_2.00

 

- Naming Rule (VIP&PID) : ......\Disk&Ven_{Vendor Name}&Prod_{Product Name}&Rev_{Version} <- Device Class ID

 

2. Serial Number 조회

포렌식에서 가장 자주 활용되는 정보로써 연결한 저장장치를 확인하는데 사용된다. 압수물과 Serial Number를 대조하여 해당 PC에 연결했던 USB가 맞는지 확인이 가능하다.  Device Class ID인 VID&PID 하위 폴더 이름이 Serial 정보이다. 
요즘은 저가형 제품에서 Serial Number가 없는 경우나 OS가 정상적으로 인식할 수 없는 이상한 값이나 형태흫 가진 경우가 있는데 이런 Serial Number가 없는 경우는 OS Pnp Manager에서 자동으로 UID값을 생성하여 부여한다.

 

먼저 레지스트리 하이브 파일 추출을 위해 레지스트리 하이브 파일 경로를 조회

C:\Temp>reg query HKLM\system\currentcontrolset\control\hivelist
Windows\System32\config\SYSTEM
Windows\System32\config\SOFTWARE
EFI\Microsoft\Boot\BCD
Windows\System32\config\DEFAULT
Windows\System32\config\SECURITY
......

 

레지스트리 하이브 파일 추출

C:\Tools\Forensic\RegRipper2.8>regex.exe -h reg-hive-backup

Collecting Registry Hive Files...
===== Complete! =====

C:\Tools\Forensic\RegRipper2.8>dir reg-hive-backup
2020-03-04  오전 09:57         4,980,736 Amcache.hve
2020-03-04  오전 09:57         6,815,744 chohb.NTUSER.DAT
2020-03-04  오전 09:57        10,747,904 chohb.USRCLASS.DAT
2020-03-04  오전 09:57        34,340,864 COMPONENTS
2020-03-04  오전 09:57           786,432 DEFAULT
2020-03-04  오전 09:57           262,144 Default User.NTUSER.DAT
2020-03-04  오전 09:57           262,144 Default.NTUSER.DAT
2020-03-04  오전 09:57           262,144 DefaultAppPool.NTUSER.DAT
2020-03-04  오전 09:57             8,192 DefaultAppPool.USRCLASS.DAT
2020-03-04  오전 09:57             2,907 RegEx.log
2020-03-04  오전 09:57            65,536 SAM
2020-03-04  오전 09:57            65,536 SECURITY
2020-03-04  오전 09:57    <dir>         SETUPAPI
2020-03-04  오전 09:57       109,314,048 SOFTWARE
2020-03-04  오전 09:57        27,000,832 SYSTEM 

 

Serial Number 조회

아래 S/N 중 &숫자는 포트번호로 동일 USB일 경우 1, 2, 3 ..... 이런식으로 증가하여 표시된다.

 

C:\Tools\Forensic\RegRipper2.8>rip.exe -r reg-hive-backup\SYSTEM -p usbstor
Launching usbstor v.20141111
usbstor v.20141111
(System) Get USBStor key info

USBStor
ControlSet001\Enum\USBStor

CdRom&Ven_Generic&Prod_Autorun_Disk&Rev_8.00 [Thu Jan  1 00:00:00 1970]
  S/N: 33EF4ONR86CV&0 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : Generic Autorun Disk USB Device
  S/N: 4ZCPATZI8AEE&0 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : Generic Autorun Disk USB Device
  S/N: 6L6TK3IF7J8O&0 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : Generic Autorun Disk USB Device
  S/N: AOD3GO4TO5MG&0 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : Generic Autorun Disk USB Device
  S/N: DWBINC6BT76D&0 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : Generic Autorun Disk USB Device
  S/N: IDK37G60DRJI&0 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : Generic Autorun Disk USB Device
  S/N: V5X9IKN8Z25O&0 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : Generic Autorun Disk USB Device

    (위의 경우처럼 하나의 Priduct에 S/N이 여러 개인 경우는 동일한 회사 동일한 제품/모델의
     서로 다른 USB를 여러 개 사용한 경우임)


Disk&Ven_&Prod_MXUB3SES-32G&Rev_1.00 [Thu Jan  1 00:00:00 1970]
  S/N: 000000000000003587&0 [Thu Jan  1 00:00:00 1970] <- 일련번호 및 포트번호 
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]  <- 마지막 사용 시간(이상하네 ?)
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    FriendlyName    : MXUB3SES-32G USB Device <- 제품명
......

 

C:\Tools\Forensic\RegRipper2.8>rip.exe -r c:\test\reg-hive-backup\SYSTEM -p usb [ or usbdevices ]

VID_8087&PID_0A2B [Thu Jan  1 00:00:00 1970]
  S/N: 5&283f8949&0&5 [Thu Jan  1 00:00:00 1970]
  Device Parameters LastWrite: [Thu Jan  1 00:00:00 1970]
  Properties LastWrite       : [Thu Jan  1 00:00:00 1970]
    ParentIdPrefix: 6&2f6ddbc3&0

......

 

3. Drive Letter 조회

C:\Tools\Forensic\RegRipper2.8>rip.exe -r c:\test\reg-hive-backup\SYSTEM -p mountdev
mountdev v.20130530
(System) Return contents of System hive MountedDevices key

Device: \??\USBSTOR#CdRom&Ven_Generic&Prod_Autorun_Disk&Rev_8.00#IDK37G60DRJI&0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
  \??\Volume{8aad119b-96dc-11e9-8673-3c6aa784a53e}

Device: DMIO:ID:N짯혘체횚횉HD혙ju혞o횑!,
  \DosDevices\C:

Device: _??_USBSTOR#Disk&Ven_Duzon&Prod_DuzonC&T&Rev_8.01#DWBINC6BT76D&1#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
  \DosDevices\E:
  \??\Volume{18be7fe9-06f6-11ea-8767-3c6aa784a53e}

Device: \??\USBSTOR#CdRom&Ven_Generic&Prod_Autorun_Disk&Rev_8.00#DWBINC6BT76D&0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
  \DosDevices\D:
  \??\Volume{18be7fe8-06f6-11ea-8767-3c6aa784a53e}
......

 

C:\>reg query "HKLM\SOFTWARE\Microsoft\Windows Portable Devices\Devices" /s

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\Devices\SWD#WPDBUSENUM#{02797B4E-C3A4-11E9-86AB-3C6AA784A53E}#0000000000100000
    FriendlyName    REG_SZ    D:\

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\Devices\SWD#WPDBUSENUM#{A6B307E3-C4DD-11E9-86AE-3C6AA784A53E}#000000000C805000
    FriendlyName    REG_SZ    D:\

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\Devices\USB#VID_05AC&PID_12A8&MI_00#6&27C02643&0&0000
    FriendlyName    REG_SZ    Apple iPhone
......

C:\>reg query "HKLM\System\CurrentControlSet\Enum\WpdBusEnumRoot\UMB" /s
오류: 오류: 시스템이 지정된 레지스트리 키 또는 값을 찾을 수 없습니다. <- 키가 없음

 

4. USB 연결 시간

최초 연결 시간은 아래 파일 장치 드라이버 설치 파일로 확인

SetupAPI Logfile – Section Start
Windows 2000/XP : %SystemRoot%\Setupapi.log
Windows Vista/7/8(RP) : %SystemRoot%\inf\Setupapi.dev.log

 

레지스트리에서의 관련 값은 보안 등의 이유로 PnP 관리자가 수시로 값을 변경할 수 있어서 실제 최초 연결시간이라 단정지울 수 없고 USB 최초 연결 시간 자체가 침해사고 대응이나 포렌식 관점에서 큰 의미가 없다고 생각된다.

 

부팅 후 최초 연결 시간이나 마지막 연결 시간등도 최초 또는 가장 마지막 즉 가장 최근의 값만 저장하고 있으므로 동일 USB를 여러 본 꽂아서 작업을 했을 때를 생각하면 이 또한 침해사고 대응이나 포렌식 관점에서 큰 의미가 없다고 생각된다.

 

이벤트 뷰어나 신뢰할 만한 기타 도구들을 이용하여 USB 장치 사용 시간을 확인해 보는게 효율적일 수도 있다. 도구를 활용할 때는 2 - 3 개의 도구를 활용하여 Cross Check 하는 것이 분석 신뢰도를 높일 수 있을 것이다.

 

5. 이벤트 로그를 통한 USB 관련 이벤트 조회

< EventID >

Connection : 2003 / 2004 / 2006 / 2010 / 2101 / 2105 / 2106 
Disconnection : 2100 / 2102

 

C:\DFIR\EventLog>wevtutil epl system system_backup.evtx

F:\>LogParser.exe -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 1, '|') as Username, EXTRACT_TOKEN(Strings, 2, '|') AS Workstation FROM 'system_backup.evtx' WHERE EventID = '2008'"

 

또는

문자열 검색

F:\tool\forensic\usbdeviceforensics>F:\script\batch\LogParser.exe -stats:OFF -i:EVT "SELECT TimeGenerated AS Date, EXTRACT_TOKEN(Strings, 1, '|') as Username, EXTRACT_TOKEN(Strings, 2, '|') AS Workstation FROM 'F:\temp\system_backup.evtx' WHERE strings like '%usb%'"

6. 파일 I/O 조회

USB에 어떠한 정보를 복사했는지 확인 필요

이러한 경우 링크파일을 분석하여 외장형 드라이브에서 연결된 폴더 및 파일 정보를 확인하여 추측

이때, 해당 드라이브에 사용된 저장매체가 무엇인지 구체적으로 확인이 필요할 때가 있는데 이럴때는 레지스트리의 EMDMgmt 정보와 조합하여 확인 가능

링크파일에는 Volume Serial Number가 포함되어 있어 EMDMgmt에 있는 USB의 Volume Serial Number와 맵핑하여 연결점을 찾을 수 있다.

매핑할때 주의점은 EMDMgmt의 볼륨 시리얼은 10진수 표현값이며, 링크파일의 볼륨 정보는 16진수있다. 따라서 16진수를 10진수로 변환하여 비교해야 한다. 

 

링크파일, 점프리스트, 프리패치 등 아티펙트별로 별도 분석 도구나 명령을 이용하거나 아래 rip처럼 통합 분석 도구를 활용하거나 본인의 성향, 인지도, 분석 목적, 분석 결과 신뢰도 등에 따라 적절히 선택하여 사용

 

C:\Tools\Forensic\RegRipper2.8>rip.exe -r c:\test\reg-hive-backup\chohb.NTUSER.DAT -p recentdocs

C:\Tools\Forensic\RegRipper2.8>rip.exe -r c:\test\reg-hive-backup\chohb.NTUSER.DAT -p userassist

 

반응형