kcs 로고

Notice

악의적인 PDF 파일 판별 방법
2010-06-30 조회수 : 1879

최근 악의적인 PDF 파일의 수가 크게 증가하고 다양한 유포 경로와 사회적 공학기법에 기반한 신뢰관계를 이용한 유포방법 때문에 악성코드가 사용자의 시스템에 침투할 기회가 기존보다 훨씬 많아졌다.

이러한 상황에서 우선적으로 외부에서 유입되는 PDF 파일의 무결성에 대해서 의심을 해봐야 한다.


그러면 시스템에서 PDF 파일을 실행하기 전에 어떤 방법으로 파일 안에 악의적인 코드가 숨어 있는지 확인해 볼 수 있는지 알아보자.

가장 쉽고 일반적인 방법은 바이로봇 등 안티-바이러스 제품으로 PDF 파일을 진단한 후 사용하는 방법이 있다.

그러나 최근 일부 악성 PDF 파일의 경우 특정 타깃을 목표로 국지적으로 유포되므로 이런 경우에는 안티-바이러스 회사에 의심 파일을 접수해서 확인하는 방법이 있다.

그럼 어떤 PDF 파일을 의심 파일로 추정해서 샘플로 보낼 것인지에 대해서 알아보자.

악성코드 제작자는 악의적인 의도가 포함된 PDF 파일을 유포시키기 위해 여러 가지 방법을 사용한다.

- 이메일을 통해서 첨부파일을 열어보도록 하거나 본문의 링크 클릭 유도를 통해서 유포한다.
- 악의적으로 제작된 웹사이트 방문을 유도하거나 해킹된 웹사이트 방문으로 인한 악성코드 실행 및 악성 호스트로의 리다이렉션(redirection) 하는 방법 등을 통해서 유포한다.
- 메신저를 통해서 파일 또는 링크 클릭을 유도해서 유포한다.
- PDF 파일 구조 우선 PDF 파일 구조에 대해서 간단히 알아보자. PDF 파일의 내부는 다음과 같이 돼 있다. 파일 끝부분의 trailer의 /Root 에 의해서 정의된 객체(object 2)에서부터 PDF 내용이 시작한다.

PDF 파일의 구성요소 일반적으로 PDF 파일은 다음과 같은 요소들을 포함하고 있다. PDF 파일은 많은 객체(object)들의 상호참조로 구성돼 있다.

Obj, Endobj
Stream, Endstream
Startxref, Xref
Trailer

PDF 파일의 악성코드 식별 방법 이제 PDF 파일 내에 원치 않는 악성코드가 포함됐는지 확인해 볼 수 있는 방법들을 알아보자.

일반적으로 악의적으로 제작되는 PDF파일은 trailer가 없는 경우가 많다. 대부분의 악의적인 PDF 파일은 1페이지를 가지고 있으며 JavaScript를 포함하고 있다. 다음의 경우에는 Didier Stevens의 PDFiD, Pdf-Parser 와 XORSearch 툴을 사용했지만 다양한 PDFiD 와 Pdf-Parser 툴이 존재하므로 다른 툴을 사용해도 좋다. 해당 툴의 경우 파이선(Python)으로 만들어졌기 때문에 사용하기 위해서는 시스템에 파이선을 설치해야 한다. PDFiD는 단순 스트링 스캐너(String Scanner)이며 Pdf-Parser는 보다 다양한 기능을 제공하는 PDF 구조 파서(Parser)다.


[기사전문보기]