[악성코드, 이렇게 대응한다 #2] PDF(Portable Document Format)취약점 본문

[심심풀이]/읽고 넘어가자.

[악성코드, 이렇게 대응한다 #2] PDF(Portable Document Format)취약점

객과 함께. 2010. 5. 10. 00:58
[악성코드, 이렇게 대응한다 #2] PDF(Portable Document Format) 취약점 (Exploit/PDF)
안철수연구소 | 2010-04-23

3-2. PDF(Portable Document Format) 취약점 (Exploit/PDF)

 

최근에는 문서 공유시 사용되는 문서파일 형식이 PDF (Portable Document Format) 파일로 일반화되어 가고 있다. 오피스 문서파일 형식인 워드(.doc), 엑셀(.xls) 파일을 그대로 공유하는 것 보다 PDF 파일로의 변환을 통해 원본 문서의 수정을 방지할 수 있다. 그러나, 문서를 읽고 공유하기 위해 사용하는 편리한 문서파일 형식으로 여겨졌던 PDF (Portable Document Format) 파일은 이제 또 하나의 강력한 악성코드가 되었다.


PDF를 통한 위협은 2007년 초기 스팸을 통한 공격으로부터 시작되어, 2008년 하반기부터 본격적으로 그 위협이 급증하였고, 2009년에는 비로소 MS워드파일을 능가하는 파일기반 공격의 대표가 되었다. 2007년부터 현재까지 대략 30개 이상의 PDF 취약점이 보고되었고, 실제 공격에 이용된 다음과 같은 주요 취약점들이 있다.

 

* 시기는 기준에 따라 다소 차이가 있을 수 있음.
<표> 대표적인 PDF 취약점들


기존의 악성코드와 마찬가지로 악성 PDF 파일 또한 다양한 경로를 통해 시스템으로 유입되고 있다.

 

■ 전자메일에 삽입된 링크를 클릭하거나 첨부파일을 오픈하는 경우
■ 메신저를 통해 공유된 파일을 오픈하거나 공유된 링크를 클릭하는 경우
■ 해킹된 웹사이트를 방문하여 공격코드가 호스팅된 사이트로 리다이렉션 되는 경우


악성 PDF 취약점을 원인별로 구분하면 크게 자바스크립트 엔진 상의 취약점과 기타 오브젝트들의 처리과정에서 발생하는 취약점으로 나눌 수 있다. 또한, 공격방식의 관점에서 보면, 사용자가 알지 못하는 사이에 다운로드되어 실행되는 Drive-by Download 방식과 사용자가 직접 클릭하도록 유도하는 사회공학적인 방법으로도 나눌 수 있다.


이러한 PDF 취약점들의 특징을 2009년에 이슈가 되었던 대표적 사례를 통해 살펴보자.


■ SwineFlue(신종플루의 초기명칭) QNA 문서 사건
■ 검블러(Gumblar), 나인볼(Nine-ball) 등의 대량 웹사이트 침해사건 


“SwineFlue QNA” PDF 파일은 급증하는 신종플루에 대한 궁금증을 악용하여, 겉으로는 Swine Flue에 관한 일반적인 컨텐츠를 담고 있는 것으로 보이나, 내부적으로 Adobe JBIG2 Stream Buffer Overflow(CVE-2009-0658) 취약점을 통해 또 다른 악성코드를 감염시킨 사례이다.

 

<그림> PDF 취약점을 통해 악성코드 감염


해당 공격 파일은 PDF 내부의 JBIG2 스트림을 처리하는 과정에서 발생하는 취약점을 이용하지만, 내부적으로 공격자의 쉘코드 실행을 돕기위해 힙스프레이기법(Heap-Spray)으로 제작된 자바스크립트도 내장하고 있다.
또한, 파일 취약점의 경우, 데이터를 숨길 수 있는 충분한 공간을 가지고 있기 때문에 다운로드 쉘코드와 달리 실행될 악성코드를 파일내부에 담고 있다가 드랍(Drop)하여 실행하는 사례가 많다.


일반적인 웹 공격은 다양한 취약점을 호스팅하고 있는 서버를 구축한 후, 정상적인 웹 사이트를 해킹하여 구축된 취약점 서버로 연결하는 방식을 사용한다. 2009년 상반기에 이슈가 되었던 “검블러(Gumblar)”, “나인볼(Nine-ball)” 등의 대량 웹사이트 침해사건은 웹공격 시나리오 중 대표적인 취약점으로 바로 PDF 자바스크립트 취약점 파일을 사용하였다.

 

<그림> 검블라 웹공격 시나리오


공격이 성공하여, 사용자 시스템으로 다운로드되는 PDF 파일에는 다음과 같이 악의적인 자바스크립트를 포함하고 있다.

 


악성코드와 마찬가지로 악성 PDF 파일 또한 초기의 형태에서 많은 변화를 보인다. 초기에는 눈으로 확인하는 것만으로도 내부에 삽입된 악성 자바스크립트를 판별해 낼 수 있는 수준이었으나, 점점 다양한 방법을 사용하여 분석을 방해하고 탐지를 우회하고 있다.


■ PDF가 지원하는 인코딩 방법으로 문자열 난독화 (FlateDecode, )
■ PDF가 지원하는 특수문자 구별 코드 (#)를 사용한 문자열 난독화
■ 악성 자바스크립트 난독화 기법

 


<그림> PDF 자바스크립트 취약점 우회방법의 진화

 

<그림> 악성 PDF 파일의 다양한 형태

 

또한, 내부에 악의적인 플래시파일을 삽입하거나 실행파일을 첨부하는 등의 형태도 발견된다. 앞으로도 PDF 기능이 점점 확장되면서, 악성 PDF 파일을 통한 위협은 점점 다양한 형태로 변화되고, PDF를 비롯한 각종 기반 소프트웨어들이 지속적으로 악성코드 못지 않은 위협적 존재가 될 가능성이 높다.@

 

※  본 원고의 저작권은 한국인터넷진흥원(KISA)과 안철수연구소 시큐리티대응센터(ASEC)에 있습니다.

| 시큐리티 분석가 김지훈

작성자 안철수연구소의 시큐리티대응센터에서 취약점, 악성코드 및 네트워크 위협 분석을 담당하고 있다. 안철수연구소의 “안랩 칼럼니스트”뿐만 아니라, 다수의 보안 강연 및 컬럼니스트로 활동하고 있다. 일반인들이 쉽게 이해할 수 있도록 보안지식을 전파하는 "전문 보안교육전문가"가 되는 것이 그의 소박한 꿈이라고 한다.