많은 사람들이 윈도우 운영체제를 사용하면서 USB를 필수 적으로 사용하고 있다. 그렇기 때문에 USB 관련된 아티팩트를 공부 할 필요가 있다.

USB 드라이브를 디지털 포렌식 적 관점에서 보았을때 연결된 장치가 무엇인지, 연결 및 제거 시간 확인, 장치 에서 복사한 파일, 연결된 드라이브에서 열거나 실행한 파일 및 소프트 웨어와 같은 정보를 찾아 볼 수 있습니다.

USB 드라이브는 악의 적인 행위자의 데이터 도용 및 악성코드 배포에 많이 사용하기 때문에 아티팩트를 알아 두고 공부를 해야한다.

미리 아티팩트를 공부해 두면 추후에 관련 조사를 진행할때 빠른 진행과 정확한 분석이 가능합니다.

1. USB 최초 연결 로그 파일

USB를 최초 연결 했을때 생성되는 로그가 존재 합니다. 파일 경로는 아래와 같습니다.

Path : C:\\Windows\\INF\\Setupapi.dev.log

최초 연결 되었을 때만 로그가 남는 파일이기 때문에 특정 USB가 해당 PC에 연결이 되었는지 아닌지를 판단 할 수 있습니다.

해당 파일을 통해서 연결된 USB의 기본적인 정보를 찾을 수 있습니다.

https://blog.kakaocdn.net/dn/dRiWFY/btqDBzjV3iR/AUR1b5JbTPWo2iAMfOjBJk/img.png

로그의 내용은 [Device Install (Hardware Initated) - USB\{VID}&{PID}\{Serial Number}]의 형태로 로그가 저장 되어 있습니다.

2. USB 연결 관련 레지스트리

일단은 먼저 장치를 연결하면 일어나는 행위를 한번 알아 보겠습니다.

1. USB 장치를 시스템에 연결을 하게 되면 버스 드라이버(BUS Driver)는 PnP 관리자(PnP Manager)에게 장치의 고유한 식별 번호(device descriptor)를 전달합니다.
2. 커널 모드 PnP 관리자는 전달 받은 식별 번호를 기반으로 Device Class ID를 구성하고, 레지스트리에서 ID에 맞는 적절한 드라이버가 시스템에 이미 설치 되어있는지, 아닌지 확인을 한다.
3. 드라이버가 없는 경우, 장치 펌웨어에게 드라이버 요청 -> 전달 받은 드라이브를 USER-MODE PnP 관리자 에게 전달.
4. USER-MODE PnP 관리자가 전달 받은 드라이버를 설치 + 레지스트리 와 로그파일에 기록.

앞에서 로그파일(Setupapi.dev.log) 은 알아 봤기 때문에 이제 레지스트리를 확인해 보겠습니다.

2-1. Vendor, Product Name, Version

장치 클래스 ID로 펌웨어로 부터 얻은 정보를 저장하는 레지스트리입니다.

아래의 경로에 Vendor, Product Name, Version을 확인 할 수 있습니다.

Path : HKLM\\SYSTEM\\ControlSet00#\\Enum\\USBSTOR\\Disk&Ven_{Vendor Name}&Prod_{Product Name}&Rev_{Version}

서브키에 있는 것이 아닌 레지스트리 키 이름에 들어있습니다. 한번 확인해 보면 아래와 같습니다.