티스토리 뷰

저자 : Chintan Shah, McAfee, India (chintan_shah@mcafee.com)

 

Virusbulletin이 트위터에 paper를 공개했습니다. virusbulletin은 특히 악성코드 분석을 주로 수행하는 벤더에서 근무하는 연구원들이 작성한 것이라 실무적인 내용이 많다고 생각했습니다. 관심이 있어 개인 공부용 및 문서형 악성코드에 관심이 있으신 분들에게 좋은 내용일 것 같아 paper를 읽어보고 일부 원문 내용과 개인적인 의견을 작성해봤습니다. 본 포스트 내용은 논문 전체를 번역한 것이 아닌, 개인적으로 선별하여 강조한 내용입니다. 이해가 되지 않는 내용은 맨 마지막에 명시한 Reference에 명시한 원문을 읽는 것이 좋으며, 번역이 이상할 수 있습니다. Open Access 관련 paper라서 블로그에 작성했지만, 연구윤리에 어긋나는 문제가 된다면 알려주시어 삭제 조치를 할 수 있도록 도와주시길 바랍니다. 아래부터는 구어체를 사용하도록 하겠습니다. 

 

※ 주의 : 발번역

 

 
[본문 요약]
본 문서에서는 스피어피싱스러운? 문서를 탐지하기 위한 목적으로 만들어진 익스플로잇 탐지 도구를 소개한다. 탐지 엔진은 RTF, Office Open XML, MS-CFB의 정적 분석을 지원하는 다중 바이너리 스트림 분석 기술이 사용된다.
 
제안된 탐지 도구는 embedded storage stream, OLE object 등을 추출하고 이를 바이너리 스트림 분석 기술에 적용하기 위해 만들어졌다. 추가적으로 악성 코드를 확인하기 위해 특정 파일 섹션 검사와 내장된 스크립트 분석을 했으며, 도구를 테스트하기 위해 익스플로잇 및 변종의 많은 수의 세트를 수집하고 분석했다.
 
피싱과 같은 악의적인 문서 등을 자세히 조사하기 위해서는 깊은 파일 포맷 조사 및 분석이 필요하다. 또한, 서론에서 저자는 네트웤, 엔드포인트와 같은 보안 제품들이 변종 및 제로데이 공격에 의한 무기화된 문서의 탐지 능력에 한계가 있으며, 샌드박싱 제품 또한 다중 파일 포맷 분석을 지원하지만? 가시적으로 보이는 행동을 완벽하게 제공하지는 않는다고 말하고 있다. 또한, 분석 엔진을 개발하여 보안 제품의 익스플로잇 탐지 능력을 강화하는 것이 중요하고, 임베드된 바이너리의 특징을 기반으로 문서를 분류하고 파일의 정적 검사를 수행해야 한다고 추가적으로 언급했다.
 
COM(Component Object Model) 기반 기술인 OLE(Object Linking and Embedding)는 다양한 방법으로 지난 몇 년 동안 공격자들에 의해 남용 되었다. 최근 과거의 OLE 공격은 COM 개체를 로드하여 프로세스 메모리를 조정 및 제어하고, COM 개체의 파싱 취약점을 이용하거나, 악성 코드를 숨기거나 외부 리소스에 연결하여 추가 맬웨어를 다운로드하는 것으로 관찰되었다.
 
저자가 구현한 SAE(Static Analysis Engine)는 위에서 언급한 것 처럼 OLE, MS-CFB, RTF, OOXML 파일 포맷의 검사를 지원하며, MS 오피스 문서에 임베드 및 링크된 모든 것을 추출하기 위해 파싱하고, 의심스럽거나 악의적인 indicator들이 있는지 추가로 분석한다. 또한 임베드된 오브젝트 익스플로잇 탐지 도구를 소개한다. 탐지 엔진은 RTF, Office Open XML, MS-CFB의 정적 분석을 지원하는 다중 바이너리 스트림 분석 기술이 사용된다.
 
제안된 탐지 도구는 embedded storage stream, OLE object 등을 추출하고 이를 바이너리 스트림 분석 기술에 적용하기 위해 만들어졌다. 추가적으로 악성 코드를 확인하기 위해 특정 파일 섹션 검사와 내장된 스크립트 분석을 했으며, 도구를 테스트하기 위해 익스플로잇 및 변종의 많은 수의 세트를 수집하고 분석했다.
 
피싱과 같은 악의적인 문서 등을 자세히 조사하기 위해서는 깊은 파일 포맷 조사 및 분석이 필요하다. 또한, 서론에서 저자는 네트웤, 엔드포인트와 같은 보안 제품들이 변종 및 제로데이 공격에 의한 무기화된 문서의 탐지 능력에 한계가 있으며, 샌드박싱 제품 또한 다중 파일 포맷 분석을 지원하지만? 가시적으로 보이는 행동을 완벽하게 제공하지는 않는다고 말하고 있다. 또한, 분석 엔진을 개발하여 보안 제품의 익스플로잇 탐지 능력을 강화하는 것이 중요하고, 임베드된 바이너리의 특징을 기반으로 문서를 분류하고 파일의 정적 검사를 수행해야 한다고 추가적으로 언급했다.
 
COM(Component Object Model) 기반 기술인 OLE(Object Linking and Embedding)는 다양한 방법으로 지난 몇 년 동안 공격자들에 의해 남용 되었다. 최근 과거의 OLE 공격은 COM 개체를 로드하여 프로세스 메모리를 조정 및 제어하고, COM 개체의 파싱 취약점을 이용하거나, 악성 코드를 숨기거나 외부 리소스에 연결하여 추가 맬웨어를 다운로드하는 것으로 관찰되었다.
 
저자가 구현한 SAE(Static Analysis Engine)는 위에서 언급한 것 처럼 OLE, MS-CFB, RTF, OOXML 파일 포맷의 검사를 지원하며, MS 오피스 문서에 임베드 및 링크된 모든 것을 추출하기 위해 파싱하고, 의심스럽거나 악의적인 indicator들이 있는지 추가로 분석한다. 또한 임베드된 오브젝트와 CBF(Compound Binary File format)의 스토리지 스트림을 추출하며, 에뮬레이팅을 통해 인젝션된 악성코드의 유/무를 탐색하고 해당 스트림을 정적으로 분석한다.
 
RTF 파서는 공격자가 사용하는 control word obfuscation mechanism을 처리할 수 있어야 한다. 그렇지 않으면 정확한 탐지를 놓칠 수 있다.
 
CVE-2015-2424 RTF 익스플로잇은 Control.TaskSymbol1.1 OLE object 내에서 memory corruption 취약점을 익스플로잇하면서 악성코드가 Forms.Image.1 OLE object 내에서 실행되는 multiple COM loading technique를 사용한다. 
 
과거에 발견된 유사한 사례로, WSDL definition 내부의 external link 삽입에 의한 WSDL(Web Service Description Language) parsing code injection 취약점(CVE-2017-8756)은 validation bug를 익스플로잇하는 WSDL SOAP parser에 의해 다운로드되고 파싱되어 원격 코드 실행으로 이어질 수 있다.
 
OLE 파일 외에도, RTF 문서는 다른 형식의 파일들을 가질 수 있다. 예를 들면, Flash 파일, Office Open XML format files, image files 등이 있음. 내장된 파일을 추출하고 다시 분석하는 것은 정적 분석 프로세스의 과정에서 정말 중요하며, 경우에 따라 제로데이 익스플로잇을 식별하는 데 결정적인 요소가 될 수 있다. 추출된 파일은 재 분석을 위해 각각의 모듈로 전달될 수 있다. 예를 들어, 최근 RTF 익스플로잇은 Flash zero-day exploit을 전달하는 것으로 밝혀졌으며, 그 결과 타겟을 멀웨어로 감염시킨다. 대부분의 경우 힙 스프레이를 수행하기 위해서 무기화된 RTF 문서는 OOXML 파일을 임베딩하는 것을 관찰했다. (Figure 14)는 추가 익스플로잇을 지원하기 위해 wild embedding malicious office open xml 파일에 사용된 CVE-2017-118826 RTF 익스플로잇에 대한 스냅샷이다.
 

 
Microsoft 버전 2007 이상에서는 이전 이진 파일 포맷을 대체하는 XML 스키마 형식으로 문서를 표시하는 새로운 방법을 도입했다.
 
일부 악용 사례에서 공격자는 힙 스프레이 프로세스를 최적화하고 가속화하기 위해 ActiveX 라이브러리를 가리키지 않는 가짜 CLSID를 사용하는 것으로 나타났다.

 
악의적인 속성에 대해 ActiveX.bin 파일의 스트림 분석을 수행함과 동시에 OOXML 문서의 OLE 객체가 의심스럽게 로드되는지 검사하는 것이 중요하다. 또한, 동일한 ActiveX 객체 로딩을 반복적으로 수행할 때는 의심으로 간주하고 해당 .bin 파일을 추가로 분석해야 한다.
 
CVE-2017-118826 익스플로잇은 존재하지 않는 CLSID를 여러번 로드하여 힙 스프레이 과정을 최소화 및 가속화 할 수 있다. class-id와 연관된 라이브러리가 없기 때문에, 힙 스프레이 시간이 크게 단축되어 전체 성능이 향상된다.
 
[OLE 객체에서 ROP chain and sledge 식별하기]
SAE는 가능한 모든 sledge에 대해 임베디드된 OLE structured sotrage stream을 분석하는데, 이는 instruction을 가리키는 로드된 모듈 내의 주소일 가능성이 높으며, 일반적으로 성공적인 익스플로잇 가능성을 높이기 위한 junk code일 것이다.

 
SAE는 분석 알고리즘을 적용하여 binary stream 내에서 유효한 address sequence를 추측한 다음, false positive(오탐)를 제거하기 위해 상세한 점검을 수행함으로써 sequence를 추가로 설정하려고 시도한다. (Figure 19)는 (Figure 18)에 표시된 binary stream에서 ROP chain 및 sledge를 정확하게 추출한 SAE의 결과를 나타낸다.

 
Compound Binary File의 ObjectPool 스토리지는 OLE 개체에 대한 저장소가 포함되어 있으며, 공격자는 이를 통해 익스플로잇에 악성코드를 삽입할 수 있다.  (Figure 21)은 CVE-2018-4878 취약점으로 MS-CFB 파일을 포함한 Flash 익스플로잇이다. 여기서 SAE는 모든 스트림 객체를 추출한다. 여기서도 ObjectPool 스토리지의 'Contents' 스트림에서 악성코드가 식별됐다.
 

 
CBF에서 Visual Basic 매크로 소스코드는 OLE 파일의 root storage에서 매크로라고 하는 저장소 개체 아래의 여러 스트림에 걸쳐있다. 매크로 스토리지 오브젝트에는  /VBA/_VBA_PROJECT, /VBA/dir/ 및 매크로 소스 코드와 여러 다른 스트림을 포함하는 VBA structured storage object가 있다. 이 코드는 rgw RLE(Run Length Encoding) 압축 알고리즘을 사용하여 binary structure에 압축 스트림으로 저장되므로 code stream을 정확하게 찾으려면 해당 구문을 분석해야 한다. OOXML 파일에서 macro source는 zip 아카이브 내의 OLE 파일 'vbaProject.bin'에 저장된다. 이것은 CFB 파일 storage와 동일한 structure를 갖는 OLE 파일이며, macro source code는 동일한 형식으로 저장된다. (Fugure 24~25)는 두 가지 파일 포맷의 macro code storage를 보여준다.
 

 
SAE는 앞에서 설명한 모든 정적 분석 방법을 구현하고 트리거된 휴리스틱의 심각도에 따라 input file의 분류를 마친다.
이 부분에는, input으로 전달된 파일의 유형에 따라 다양하게 파일 포맷을 분석하는 여러 하위 분석 모듈이 포함될 수 있다. 그 이후에는 통합 파서가 포맷을 파싱한 후 추가적으로 다양한 휴리스틱 검사를 수행할 수 있다. (Figure 26)은 구현된 시스템을 표현한 것으로, 분석 모듈 및 해당 기능은 그림 내에 표시되어 있다.

 
[실험]
RTF 파일 내부 overlay data 탐지 테스트를 위해 크기가 큰 overlay data를 가진 RTF 파일 2,483개 이상을 SAE로 분석했다. (Table 1)은 실험 결과로, VirusTotal 탐지에 따라 500 byte 이상의 overlay data를 가진 RTF document의 90% 이상이 악성인 것으로 밝혀졌다.
 

 
VB macro code 분류 모듈은 MS-CFB 및 MS-OOXML 파일 포맷에서 임베디드된 VB Macro 코드를 추출하고 악성 매크로의 분류를 위해 코드 분석을 적용할 수 있다. 아래 (Table 2)는 10,500개의 악성 매크로가 임베드된 문서에 대한 초기 테스트 결과를 보여준다.
 

 
SAE는 APT와 같은 표적 공격에 사용되는 다양한 익스플로잇에 대해 구현된 모든 탐지 기술로 테스트가 되었다. 테스트 결과는 (Table 3)에 명시된다. 10개의 CVE를 가지고 테스트를 수행했으며, 탐지율이 80~100% 까지 다양하다. 탐지가 되지 않은 건에 대해서는 다루지 않았으며, 개인적으로 궁금하기도 하다.

 
(Table 4)는 SAE가 익스플로잇 변종에 대해 테스트를 한 결과이다. 여기에는 (Table 3)에 있는 CVE와 함께 여러 변종의 악성 파일이 포함된다. 4185개의 변종 exploit 중 3754개를 탐지했고 431개를 탐지하지 못했다. 총 탐지율은 89.70%였다.

 
[결론]
본 문서에서 공개한 탐지 메커니즘은 표적 공격을 완화시키는 데 많은 가능성을 보여준다.
 
[개인적인 의견]
본 문서에서는 SAE를 이용해 MS-Office를 타겟으로 공격하는 익스플로잇을 잘 탐지하는 것을 다뤘지만, 개인적으로는 익스플로잇과 내부에 포함된 쉘코드를 어떤 알고리즘을 사용해 탐지했는지에 대해 궁금했다. 본문에는 OLE object 내부에 ROP chain과 sledge를 탐지하기 위한 알고리즘을 사용했다고는 했지만, 자세한 내용이 없어 아쉬웠다. 하지만, MS-Office를 악용한 취약점들을 다양하게 다루고 있어 많은 도움이 되었다.
 
 
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함