콤푸타/디지털포렌식

[Windows] 외부 저장장치 연결 흔적 분석(USB, 외장하드 등)

어둠의다크 2024. 11. 1. 17:42

사용자에 의한 행동은 의도하든 의도하지 않든 시스템에 다양한 흔적을 남긴다.

어떤 기능들은 사용자의 의도를 보조하도록 만들어졌지만, 오히려 그것으로 사용자의 행위를 역추적할 수 있게도 만든다.

이번 글에서는 USB로 대표되는 외부 저장장치 연결 기록에대해 알아보고자 한다.

이러한 외부 저장장치 연결 기록은 다양한 아티팩트에서 확인 가능하다. 크게 추려보자면

  1. SetupAPI.dev.log
  2. 레지스트리
    UserAssist
    USBSTOR
    MountedDevices
  3. WMI

 

1. SetupAPI.dev.log

 SetupAPI.dev.log 파일은 윈도우에서 PnP(Plug and Play) 장치의 설치 및 구성을 기록하는 로그 파일이다. 새로운 장치가 시스템에 연결될 때 발생하는 이벤트에 대한 정보가 기록되고, 주로 드라이버 설치, 장치 검색, 장치 상태 변경 등의 세부 사항을 기록한다.

파일 경로 : C:\Windows\INF\setupapi.dev.log

setupapi.dev.log

해당 경로를 찾아가보면 여러 로그 파일들을 볼 수 있다.

이 중 파일 이름에 dev가 들어간 녀석들이 device(저장 장치)와 관련된 데이터를 기록하는 것으로 추정된다. setupapi.offline이나 setupapi.setup.log는 아마도 드라이버 설치 관련 기록들이 아닐까?

setupapi.dev.log 파일에 일자와 시각 정보로 추정되는 데이터가 기록된 것을 볼 수 있는데, 시각 정보가 정확하게 일치하지 않는 것으로 봐서는 아마도 특정 용량이상 커지면 OS가 자동으로 백업 파일을 생성하고, 그 백업 파일을 생성한 시간이 기록되는 게 아닐까? 싶기도하고 정확하게는 잘 모르겠다.

아무튼 안의 내용들은 평문으로 작성되어 있고, 그냥 텍스트 편집기로 열어 확인해 볼 수 있다.

setupapi.dev.log

 

2. 레지스트리

필자는 Registry Explorer를 사용한다.

- HKLM/SYSTEM/CurrentControlSet/Enum/USBSTOR

상당히 다양한 정보들을 확인할 수 있다.
처음 연결 시각, 마지막 연결 시각, 마지막 제거 시각, 제조사(벤더), Title, 디바이스 이름, Disk ID, Serial Number, 버전 등이다.

HKLM/SYSTEM/CurrentControlSet/Enum/USBSTOR

여기의 모든 정보들이 포렌식적으로 아주 중요한 의미를 가지고 있다. 특히 마지막 연결&제거 시각과 Serial Number가 그 중요성이 크다고 생각할 수 있는데, Serial Number는 USB 출고 시에 부여되는 고유 식별 번호이기 때문이다.

- HKLM/SYSTEM/MountedDevices

HKLM/SYSTEM/MountedDevices

저장 장치에 부여된 드라이브 문자와 저장 장치 이름, 장치 ID 등이 기록된다. 어떤 드라이브 문자로 마운트 시켰는지 알 수 있다.

- HKLM/SOFTWARE/Microsoft/Windows Portable Devices

HKLM/SOFTWARE/Microsoft/Windows Portable Devices

장치 이름과 Serial Number를 확인할 수 있다.

- Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

유저 어시스트는 별도 포스팅을 해야할 정도로 중요한 아티팩트다. 간단하게 설명하고 넘어가자면, Explorer나 시작 메뉴를 통해서 어떤 프로그램을 실행하면 UserAssist에 기록이 남으며 전체 경로와 마지막 실행 시각, 다양한 count들이 기록된다.

UserAssist 하위에는 다양한 GUID를 가진 Key들이 있지만, 일반적으로 다음 두 키가 유용하다.

{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}: 사용자 프로그램 실행 기록.
{F4E57C4B-2036-4C1C-8AEB-E9C7E4891B79}: 사용자가 탐색한 폴더 및 특정 파일 액세스 기록(lnk).

다음과 같은 행위들로 인해 파일의 경로가 UserAssist에 기록될 가능성이 매우 높다.

  • 시작 메뉴: 시작 메뉴에서 클릭하여 실행한 애플리케이션이나 폴더.
  • 파일 탐색기: 파일 탐색기를 통해 직접 실행한 프로그램이나 열어본 폴더.
  • 작업 표시줄: 작업 표시줄에 고정된 아이콘을 통해 실행한 프로그램.
  • 바탕 화면: 바탕 화면에서 아이콘을 더블 클릭하여 실행한 애플리케이션이나 파일.
  • Win+R 실행 창: 실행 창을 통해 실행한 GUI 기반 프로그램.
  • Windows 검색: Windows 검색 창에서 검색한 후 클릭하여 실행한 프로그램.

쉽게 생각하면 GUI 활동을 통해 실행시킨 파일은 웬만해서는 기록에 남는다고 생각하면 좋겠다.

예외

  • CLI: cmd, PowerShell, Windows Terminal과 같은 CLI에서 실행한 프로그램은 UserAssist에 기록되지 않는다.
  • 백그라운드 프로세스: 자동 업데이트, 시스템 서비스 등 사용자가 직접 실행하지 않고 백그라운드에서 실행되는 프로세스는 기록되지 않는다.
  • 스크립트: 명령줄에서 실행한 스크립트나 스케줄러를 통해 자동 실행된 스크립트도 UserAssist에 기록되지 않는다.

3. WMI(Windows Manage Instrumentation)

Get-WmiObject Win32_USBHub 명령 실행

4. 이벤트 로그

윈도우 이벤트로그는 'C:\Windows\System32\winevt\Logs' 경로에 존재한다.

이벤트로그는 운영체제 버전마다 달라지는게 많아서 다시 찾아보고 연구해보아야 한다 :(

5. 기타

위에 나열된 정보들 외에도 링크, 점프리스트, 프리패치 등에 기록된 경로를 통해서도 USB에 관한 내용들을 어느정도 추정할 수 있을것이다.