peepdf를 사용한 악성 PDF 분석은(는) 무엇을 하나요?
사용 시점
- 피싱 이메일에서 의심스러운 PDF 첨부 파일을 분류할 때
- PDF 기반 익스플로잇 문서의 악성코드를 분석할 때
- PDF에서 임베디드 자바스크립트, 셸코드 또는 실행 파일을 추출해야 할 때
- 무기화된 문서 아티팩트의 법의학적 조사가 필요할 때
- PDF 기반 위협에 대한 탐지 시그니처를 구축할 때
전제 조건
- Python 3.8+ 및 peepdf-3 설치 (pip install peepdf-3)
- Didier Stevens 도구 모음의 pdfid.py 및 pdf-parser.py
- 격리된 분석 환경 (VM 또는 샌드박스)
- 선택 사항: peepdf 내 자바스크립트 에뮬레이션을 위한 PyV8
- 선택 사항: 셸코드 분석을 위한 Pylibemu
워크플로우
- pdfid로 사전 검사: 의심스러운 키워드(/JS, /JavaScript, /OpenAction, /Launch, /EmbeddedFile)를 PDF에서 스캔합니다.
- 대화형 분석: peepdf 대화형 모드에서 PDF를 열어 객체 구조를 탐색합니다.
- 의심스러운 객체 식별: 자바스크립트, 스트림 또는 인코딩된 데이터가 포함된 객체를 찾습니다.
- 콘텐츠 추출: 의심스러운 스트림을 덤프하고 필터(FlateDecode, ASCIIHexDecode)를 디코딩합니다.
- 자바스크립트 난독화 해제: 추출된 JS를 분석하여 셸코드, 힙 스프레이 또는 익스플로잇 코드를 찾습니다.
- VirusTotal 확인: peepdf vtcheck를 사용하여 파일 해시를 AV 탐지 결과와 교차 참조합니다.
- IOC 생성: URL, 도메인, 해시 및 셸코드 시그니처를 추출합니다.
주요 개념
| 개념 | 설명 |
|---|
| /OpenAction | PDF가 열릴 때 자동으로 실행되는 액션 |
| /JavaScript /JS | PDF 객체에 임베디드된 자바스크립트 코드 |
| /Launch | 외부 애플리케이션을 실행하는 액션 |
| /EmbeddedFile | PDF 구조 내에 포함된 파일 |
| FlateDecode | 콘텐츠를 숨기는 데 사용되는 zlib 압축 필터 |
| Object Streams | 압축된 스트림에 저장된 PDF 객체 |
도구 및 시스템
| 도구 | 목적 |
|---|
| peepdf / peepdf-3 | JS 에뮬레이션을 지원하는 대화형 PDF 분석 도구 |
| pdfid.py | 의심스러운 키워드에 대한 빠른 사전 검사 |
| pdf-parser.py | 심층적인 객체 수준 PDF 파싱 |
| VirusTotal | 해시 조회 및 AV 탐지 교차 참조 |
| CyberChef | 추출된 페이로드 디코딩 및 변환 |
출력 형식
분석 보고서: PDF-MAL-[날짜]-[일련번호]
파일: [파일명.pdf]
SHA-256: [해시]
의심스러운 키워드: [/JS, /OpenAction 등]
자바스크립트가 있는 객체: [객체 ID]
추출된 URL: [목록]
셸코드 탐지: [예/아니오]
포함된 파일: [개수 및 유형]
VirusTotal 탐지: [X/Y 엔진]
위험 수준: [심각/높음/중간/낮음]