Portable Executable Scanner(pescanner)
소개[편집]
Portable Executable Scanner는 휴대용 실행 파일인 PE파일을 검색하여 다양한 메타데이터와 함께 출력해주는 도구이다. 본 도구는 Windows의 CLI로 64비트와 32비트를 둘 다 지원한다. 한글은 지원되지 않기 때문에, 분석하려는 파일의 경로명을 주의하여야 한다.
상용 소프트웨어이며, ‘https://tzworks.net/’ 에서 도구 라이선스 구매 정보를 확인할 수 있다. 또한, Windows, Linux, Mac OS X에서의 실행을 지원한다.
사용법[편집]
실행파일의 이름은 비트에 따라 pescan64.exe(64비트) 또는 pescan.exe(32비트)로 구분된다. 도구 실행 시, 분석하려는 PE 파일을 필수로 입력해야 한다. Windows의 dir과 파이프(|)를 이용하여 자동으로 PE 파일을 검색할 수도 있다. [표 1]는 본 도구의 옵션에 대한 설명이다. [표 2]는 사용법에 대한 몇 가지 예시이며, 이를 응용하여 사용할 수 있다.
옵션 | 설명 |
---|---|
-csv | 데이터 필드를 쉼표로 구분한다. |
-hostname <name> | host 레코드에 지정 이름 입력한다. (영어) |
-pipe | 여러 파일을 한 번에 입력할 때, 데이터를 파이프로 구분한다. |
-out <results file> | results file로 결과 출력(라이선스 정보 제외) |
-peid <peid file> | PEiD와 비슷한 기능으로, PE 파일의 엔트리 포인트를 스캔하여 패킹 툴을 출력한다. |
[-section | -full] | 서브 옵션인 –section은 식별된 엔트리 포인트만 스캔하고, -full은 PE 파일의 모든 부분을 스캔하기 때문에 속도가 느려진다. 디폴트는 –section이다. |
-msg_table | PE 파일 내 모든 메시지 테이블의 압축을 해제하여 출력한다.
(-csv 옵션과 함께 사용 불가) |
-wevt_temp | PE 파일 내 모든 이벤트 로그 템플릿을 압축을 해제하여 출력한다.
(-csv 옵션과 함께 사용 불가) |
-dump_entrypt <# bytes> | PE 엔트리 포인터에서 # bytes만큼 16진수 데이터를 덤프한다. |
-md5 | PE 파일의 MD5 해시를 출력한다. |
-sha1 | PE 파일의 SHA1 해시를 출력한다. |
-anomalies | 패킹되거나 이례적인 PE 구조 찾으며, rating 점수가 높을수록 더 조사해봐야 하는 PE 파일이다. |
-rating <min rating> | -anomalies 옵션의 최소 점수를 설정하여, 설정한 점수 이상의 PE파일만 출력한다.
-rating 옵션만으로도 단독 사용 가능하다. |
-dateformat yyyy/mm/dd | 날짜 출력 형식을 변환한다.
(디폴트는 mm/dd/yyyy이며, yy/mm/dd, mm/dd/yy 등 원하는 형식으로 변환 가능) |
-timeformat hh:mm:ss | 초 시간 출력 형식을 변환한다.
(디폴트는 hh:mm:ss.xxx이며, 마이크로초(xxxxxx), 나노초(xxxxxxxxx) 또는 초까지만 출력할 수 있도록 변환 가능) |
-no_whitespace | 필드 값과 구분자 사이의 공백을 제거한다. |
-quiet | 명령 창에 파싱 과정을 보여주지 않고 생략한다. |
-csv_separator "|" | csv의 쉼표 구분자를 다른 문자로 변경한다. |
-base10 | 크기 또는 주소를 출력할 때 10진수로 출력한다.
(디폴트는 16진수) |
기본 사용법 | > pescan.exe input.exe [도구명] [Input] |
디렉터리 자동 스캔 | > dir “C:\Windows\*.exe” /s /b | pescan.exe –pipe [dir] [디렉터리 경로] [옵션][파이프][도구명] [옵션] |
파싱 결과 출력 | > pescan.exe input.exe –out result.txt > pescan.exe input.exe > result.txt |
PEiD 옵션 | > dir “C:\Windows\*.exe” /s /b | pescan.exe –pipe –csv –peid userdb.txt –full > result.csv |
anomalies, rating 옵션 | > dir “C:\*.exe” /s /b | pescan.exe –pipe –anomalies –rating 10 > result.txt > dir “C:\*.exe” /s /b | pescan.exe –pipe –rating 10 > result.txt |
dump_entrypt 옵션 | > pescan.exe input.exe –dump_entrypt 30 –out result.txt |
[그림 1]은 pescan을 실행하여 .csv 파일로 출력한 결과이다.
![]() |
‘-peid’ 옵션의 <peid file>은 PEiD라는 도구에서 사용되는 파일이며, PE 파일의 시그니처를 정리한 파일이다. 각 PE 파일의 시그니처를 통해 어느 도구를 통해 패킹되었는지를 알 수 있다. 일반적으로 이 파일은 ‘userdb.txt’라는 이름으로 일반 사용자들도 직접 작성을 할 수 있으며, 웹 서치를 통해 구할 수 있다. [그림 2]는 PEiD 시그니처 파일의 포맷의 예시이다. 이 포맷에 맞춰 사용자가 직접 지속적인 업데이트를 할 수 있다. 아래에 나열된 주소는 PEiD 시그니처 파일을 구할 수 있는 몇 가지 참조 URL이다.
(1) http://research.pandasecurity.com/blogs/images/userdb.txt
(2) https://reverse-engineering-scripts.googlecode.com/files/UserDB.TXT
![]() |
도구 기능[편집]
본 도구의 주요 기능은 실행 파일을 찾아 분석해주는 것이다. cmd 명령어를 통해 설정한 경로의 PE 파일을 모두 찾아서 동시에 입력하는 것이 가능하다. 다음은 본 도구의 기능을 나열한 것이다. 분석 결과는 .csv 파일로도 출력 가능하며, 각 파일의 해시를 출력할 수도 있다. 패킹되거나 일반적이지 않은 PE 구조를 가진 파일을 알려주는 기능도 존재한다.
제한사항[편집]
본 도구는 Windows, Linux, Mac OS X를 모두 지원하지만, Mac OS X의 경우 32비트는 지원하지 않는다.
수사 활용 방안[편집]
본 도구는 라이브/덤프 상태에서 모두 사용할 수 있기 때문에, PE 파일을 분석해야하는 어느 상황에서도 활용할 수 있다.