프린트 스풀러 포렌식 분석 (Print Spooler Forensics)
프린트 스풀러에 대한 분석도 이미 오래된 이야기이다. 하지만 나중에 참조할 목적으로 정리를 한번 해보자. 분석을 하다보면 내가 쓴 글이지만 까먹어서 블로그를 다시 참조한다. 블로그를 운영하는 이유 중의 하나도 힘들게 얻은 지식이지만 지나고 나면 까먹어 버리기 때문에 이를 정리하기 위한 목적이 크다. 보통 자기가 직접 작성한 글은 쉽게 이해가 될 것이다. 나 또한 내가 작성한 글은 그냥 훑어봐도 까먹었던 내용이 금방 다시 생각나곤 한다.
우선 프린트 스풀러에 대해 알아보기 전에 스풀러(spooler)가 무엇인지에 대해 살펴보자. 스풀러라는 단어는 프린터에서만 사용하는 것은 아니다. 보통 중앙처리장치(CPU)와 주변 장치가 통신할 때, 성능을 높이기 위해 중간에 버퍼를 둔다. 이렇게 고속 처리를 위해 버퍼에 임시적으로 저장되는 데이터를 스풀(spool)이라 하고, 이러한 역할을 하는 소프트웨어를 스풀러(spooler)라 한다.
프린터에서 스풀러란 프린터 자체적으로 버퍼를 가지고 있지만 버퍼의 용량이 작고 프린터 작업 속도가 느리기 때문에 인쇄 데이터를 호스트 컴퓨터의 디스크 버퍼에 스풀시키는 소프트웨어를 말한다. 특정 문서나 페이지를 인쇄하기 위해 인쇄버튼을 누르면, 우선 문서나 사진이 프린트 설정에 맞게 변환되어 프린터로 전송된다. 하지만 프린터가 현재 다른 작업을 처리하느라 바쁜 상황인지(공용 프린터라면 더욱 더) 알 수 없기 때문에 우선 프린트 작업을 지시한 호스트 컴퓨터에 임시적으로 스풀 데이터를 생성한다. 생성된 스풀데이터는 차례로 프린터로 전송된다.
정상적으로 호스트 컴퓨터에 스풀된 데이터를 프린터로 모두 밀어내면 프린트 작업이 완료된 것이다. 하지만, 프린터 버퍼가 꽉 차있거나 프린터 오류로 일정 시간동안 스풀된 데이터를 모두 밀어내지 못하면 인쇄 오류가 발생한다. 이때는 보통 프린터 상태를 점검하고 재부팅을 하거나 하여 정상적으로 동작하는지 확인한 후, 인쇄 취소를 누르고 다시 인쇄를 할 것이다.
1. 스풀 방식(RAW vs EMF)
프린터 설정을 확인해보면 스풀 방식를 설정할 수 있다. 스풀 방식는 RAW와 EMF 방식이 있는데 보통 기본적으로 RAW 방식으로 스풀되어 프린터로 전달된다. RAW 방식은 말그대로 프린터하는 데이터를 저수준(RAW) 데이터로 그냥 전달하는 것이다. 이것은 장치에 의존적일 수 있기 때문에 같은 파일이라고 하더라도 프린트마다 RAW 데이터는 다를 수 있다.
이에 반해, EMF(확장 메타 파일, Enhanced Metafile Format) 방식은 프린트하는 데이터를 EMF 형식으로 변환하여 전달하는 것이다. EMF 형식은 마이크로소프트 윈도우에서 기본적으로 지원하는 형식이기 때문에 장치에 독립적이다. EMF 형식은 원래 그래픽 데이터를 장치에 독립적으로 교환하기 위해 만들어진 것으로 윈도우의 GDI 함수에 의해 생성된다.
앞서 언급한 것과 같이 기본적인 스풀 모드는 RAW 방식이다. 프린터는 어차피 호스트와 프린터만 통신한다고 하면 궂이 EMF 방식이 필요 없을 것이다. 파일 종류에 따라 다르지만 파일 크기면에서도 EMF 방식이 RAW보다 좋은 것만은 아니다. 다음은 스풀 방식을 EMF 방식으로 변경하는 옵션이다. 이는 프린터마다 다르다.

2. 스풀 파일(.SHD and .SPL)
앞서 살펴본 것처럼 인쇄 작업을 하게 되면 자동으로 인쇄 데이터를 디스크에 임시 저장한 후, 프린터로 밀어낸다. 이때 스풀되는 데이터는 파일 형태로 저장되게 된다. 우선 스풀 파일이 저장되는 경로는 다음과 같다. 이 경로는 2000/XP/Vista/7에서 모두 동일하다.
- 스풀 파일 저장 경로 : %SYSTEMROOT%\WINDOWS\system32\spool\PRINTERS
스풀 파일 저장 경로는 레지스트리 값에 의해 결정되기 때문에 레지스트리 값을 변경하면 원하는 폴더를 스풀 파일 저장 폴더로 지정할 수 있다. 레지스트리를 변경 값은 재부팅한 후 적용된다.
- 기본 스풀 폴더 레지스트리 설정 : HKLM\SYSTEM\ControlSet00X\Control\Print\Printers\DefaultSpoolDirectory
스풀 경로에 저장되는 스풀 파일은 각 프린트 작업마다 2개씩 생성된다. 하나는 .SHD 확장자를 가지는 파일이고, 다른 하나는 .SPL 확장자를 가지는 파일이다. SHD 파일은 프린트 작업 정보를 담고 있는 파일로 소유자, 문서명, 프린터명, 컴퓨터명, 크기 등의 정보가 저장된다. SPL 파일은 RAW 방식일 경우 프린트한 저수준 데이터가 저장되고, EMF 방식일 경우 파일명, 포트정보(네트워크 프린트일 경우 IP 주소) 등의 부가정보와 함께 EMF 로 변환된 데이터가 저장된다. SPL에 대한 자세한 정보와 관련된 도구는 다음 경로에서 확인할 수 있다.
다음은 PA Spool View를 이용해 SHD와 SPL 파일 정보를 확인한 것이다.
RAW 방식의 스풀 파일의 경우 내용을 확인하기는 어렵지만, EMF 방식을 사용한 스풀 파일은 SPL_HEADER 정보만 제거하면 EMF 형식의 파일이다. 따라서, 헤더를 제외하고 확장자를 .emf로 변경하면 윈도우 환경에서 바로 확인이 가능하다.
3. 삭제된 스풀 파일
스풀 파일은 기본적으로 스풀링 작업이 완료되면(인쇄가 완료되면), 자동으로 삭제된다. 기본 폴더도 시스템 드라이브(보통 C:)이기 때문에 복구하기가 쉽지 않다. 시스템 드라이브의 경우, 수시로 생성되는 응용프로그램 임시 파일과 저널 파일로 인해 파일을 삭제하면 바로 덮어써 버리기 때문이다. 하지만, 운이 좋아 덮어써지지 않거나 여러 개 파일을 한꺼번에 인쇄한 경우에는 복구 가능성이 매우 높다. 그리고 EMF 형식을 사용하는 경우, PDF와 같은 문서 파일 인쇄 시, 하나의 SPL 파일 내에 각 장이 EMF 형식으로 변환되어 포함된다.
파일이 삭제된 이후 덮어써지는 데이터는 대부분 저용량 데이터(응용프로그램 임시 파일이나 저널 파일 등)이다. 그러므로 뒷 부분의 EMF 형식은 그대로 유지된다. 결국, 프린트 한 파일이 매우 중요한 경우 EMF 파일 카빙을 통해 필요한 정보를 추출할 수 있을 것이다.
4. 프린트 스풀러에 대한 분석
앞서 프린트 스풀러에 대해 간단히 살펴보았다. 스풀 방식이 EMF로 설정되어 있다면 사용자가 프린트한 정보를 파일 복구나 카빙을 이용해 찾아낼 가능성이 매우 높다. 하지만, 문제는 대부분의 기본 프린터 설정이 RAW라는 점이고 사내 정책이 아닐 경우 직접 변경하는 사람은 드물다는 점이다. 스풀 폴더도 변경할 수 있기는 하지만 기본적으로 시스템 드라이브를 사용하기 때문에 방금 삭제한 파일도 복구해내기가 매우 어렵다.
스풀링 자체도 프린터 설정에서 변경할 수 있다. 하지만, 스풀링을 하지 않고 프린트 한다는 것은 프린터의 오류나 전송 간의 오류 발생 시, 사용자가 다시 프린트 작업을 지시해야 하기 때문에 특별한 경우가 아니고서는 스풀링 작업을 제외시키지 않을 것이다. 따라서, 프린트(인쇄)한 정보가 분석에 매우 중요할 경우 반드시 스풀 폴더를 확인하고 파일 카빙을 이용해 복구된 EMF 파일을 살펴볼 필요가 있다.
그렇다면, 스풀 방식이 RAW로 설정되어 있는 컴퓨터는 어떻게 할 것인가? 현재가 RAW 라고 하여 침해 시점에도 RAW 였을까? 물론 어거지라고 생각할 수 있지만 분석가 입장에서는 모든 가능성을 고려해야 한다. 그리고 RAW 데이터라고 하더라도 보통 RAW 데이터 앞부분에는 구조화된 메타정보(XML 같은)가 들어가기도 한다. 따라서, 해당 프린터와 동일한 모델에서 RAW 데이터를 생성한 후, 그 특징을 이용해 카빙할 수 있을 것이다. 카빙한 데이터는 프린터 제조사에서 배포한 뷰어를 이용하면 될 것이다.
Categories
- 0×01 News (15)
- 0×02 Fundamentals (11)
- 0×03 Data Forensics (9)
- 0×04 Storage Forensics (13)
- 0×05 File System Forensics (31)
- 0×06 Windows Forensics (17)
- 0×07 *nix Forensics (1)
- 0×09 Web Forensics (5)
- 0x0A Virtual Forensics (5)
- 0x0B Forensic Challenges (15)
- 0x0C Forensic Education (8)
- 0x0D EnCase (12)
- 0x0E Forensic Tools (8)
- 0x0F Slides (24)
addressing artifacts BIOS boot code boot process challenge Cluster Codegate cookie Data Carving Data recovery DC3 DCO defcon ENCASE EnCE encoding EnScript exFAT FAT File System firmware Forensic Challenge FTK GUID hardware imaging Live Forensics mbr network ntfs padocon process RAID Recycle Bin SCSI signature Slack slide steganography timeline timestamp virtual forensics WDFS writeup
WP Cumulus Flash tag cloud by Roy Tanck requires Flash Player 9 or better.
What I'm Doing...
- 1월말부터 작성하던 VSC(볼륨 섀도우 복사본)에 대한 정리를 마쳤네요. 한번 시간내서 6개의 포스팅을 정리해보는 것도 좋을듯.... http://t.co/8J6PgJTi 8 hrs ago
- 마그네틱 vs RFID 카드 분석 Deconstructing a Credit Card's Data - http://t.co/5nzy7gJ2 1 day ago
- 인사이트 세미나 발표 자료 업데이트 - http://t.co/J9BSRsII 자세한 내용은 http://t.co/GMZiXAJh을 참고하세요. 3 days ago
- More updates...



