파이어아이, 핀스파이 확산에 이용된 마이크로소프트 오피스 제로데이 취약점 발견

지능형 사이버 공격 방어 기술의 선도업체인 파이어아이(지사장 전수홍, www.fireeye.kr)가 SOAP WSDL 파서 코드 주입 취약점인 CVE-2017-8759를 활용한 악성 마이크로소프트 오피스 RTF(Rich Text Format) 문서를 발견했다.

이번에 발견된 취약점을 통해 공격자는 SOAP WSDL 콘텐츠 분석시 임의 코드를 삽입했다. 파이어아이는 파워쉘 명령을 포함한 비주얼 베이직 스크립트(Visual Basic Script; VBS)를 다운로드 및 실행하기 위해 임의 코드를 주입한 마이크로소프트 워드 문서를 분석했다. 파이어아이는 취약점에 대한 상세 정보를 마이크로소프트에 공유하고 취약점 해결을 위한 보안 가이드 패치 발표를 위해 협력하고 있다.

이번 악성 문서 탐지에는 파이어아이 이메일, 엔드포인트 및 네트워크 제품이 사용됐다.

러시아어 사용자가 주요 공격 대상
악성 문서 “Проект.doc”는 러시아어 사용자를 공격 대상으로 삼았을 가능성이 있는 것으로 확인됐다. 제로데이 취약점 공격 성공시 다수의 요소가 다운로드 되고 핀스파이(FINSPY) 페이로드가 설치됐다.  

핀피셔(FinFisher) 또는 윙버드(Wingbird)로도 알려진 핀스파이 멀웨어는 합법적 해킹의 용도로 구매 가능하다. 파이어아이는 악성 문서가 사이버 스파이 활동 목적으로 러시아어를 사용하는 조직을 대상으로 악용됐을 것이라고 추정하고 있다. 또한, 파이어아이의 동적 위협 인텔리전스((Dynamic Threat Intelligence; DTI) 시스템은 다른 대상자들을 공격한 일련의 행위가 이미 2017년 7월에 발생했을 가능성이 있다는 것을 추가적으로 발견했다.

CVE-2017-8759 WSDL 파서 코드 주입
코드 주입 취약점은 프린트클라이언트프록시(PrintClientProxy) 방법의 WSDL 파서 모듈에 존재한다. 이 IsValidUrl은 제공되는 데이터가 CRLF 시퀀스를 포함하는 경우 정상적으로 유효성 검사를 실시하지 않는다. 이를 통해 공격자들은 임의 코드를 주입하고 실행하게 된다. 취약한 코드의 일부는 그림 1에서 확인할 수 있다.


그림 1: 취약한 WSDL 파서

SOAP 응답에서 다수의 주소 정의(address definitions)가 제공되는 경우, 코드는 첫 주소 뒤에 나머지 주소를 코멘트 아웃하는 “//base.ConfigureProxy(this.GetType()”를 삽입한다. 다만, CRLF 시퀀스가 추가적인 주소에 있는 경우 CRLF를 따른 코드는 코멘트 아웃 되지 않는다. 그림 2는 CRLF의 충분하지 않은 유효성 검사로 System.Diagnostics.Process.Start 방법 호출이 삽입된 경우를 보여준다. 생성된 코드는 .NET framework의 csc.exe로 컴파일 되고, DLL로 실행 가능한 오피스로 로딩된다,


그림 2: SOAP 정의 VS 생성 코드

실제 공격
파이어아이가 발견한 이번 공격은 최근 보고한 CVE-2017-0199 문서와 유사한 RTF 형식의 문서를 사용했다. 악성코드에는 공격을 위한 임베디드 SOAP 모니커가 포함되어있었다. (그림 3 참조).


그림 3: SOAP 모니커

페이로드는 공격자가 제어하는 서버에서 악성 SOAP WSDL정의를 검색한다. NET framework의 System.Runtime.Remoting.ni.dll에 구현된 WSDL 파서는 콘텐츠를 분석하고 현재 작업이 진행중인 디렉토리에서 .cs 소스코드를 생성한다. NET framework의 csc.exe는 생성된 소스코드를 http[url path].dl라는 라이브러리로 컴파일한다. 그 후, 마이크로소프트 오피스는 라이브러리를 로딩하고 공격을 완료한다. 그림 4는 공격으로 로딩 된 샘플 라이브러리를 보여준다.


그림 4: DLL 로딩

공격이 성공적인 경우, 삽입된 코드는 새로운 프로세스를 생성하고 동일한 서버에서 “word.db” 라 명명된 HTA 스크립트를 검색하기 위해 mshta.exe를 활용한다. HTA 스크립트는 디스크에서 소스코드, 컴파일된 DLL 및 PDB 파일을 제거하고 “left.jpg” 핀스파이 멀웨어를 다운로드 및 실행한다. “left.jpg”는 .jpg 확장자를 사용하고, “image/jpeg” 콘텐츠 형식을 사용하지만, 실제로 실행 가능하다. 그림 5는 멀웨어 전송의 PCAP에 대한 자세한 내용을 보여준다.


그림 5: 라이브 요청

멀웨어는 %appdata%\Microsoft\Windows\OfficeUpdte-KB[ 6 random numbers ].exe.에 위치하게 된다. 그림 6은 프로세스 모니터(Process Monitor)의 프로세스 생성 체인을 보여준다.


그림 6: 프로세스 생성 체인

멀웨어
“left.jpg”는 핀스파이의 변종이다. 전환이 어렵게 하기 위해 빌트인 가상머신을 사용하는 혼란스럽게 구성된 코드를 활용한다. 다른 분석 방어 기술과 마찬가지로, 전체 패치를 분석하고 MD5 해시를 검색한다. 분석 툴 및 샌드박스와 같은 수 많은 리소스들은 고유한 파일명을 위해 MD5 해시로 파일 및 샘플을 재명명한다. 이 같은 변종은 "WininetStartupMutex0" 뮤텍스를 사용한다.

결론
CVE-2017-8759는 파이어아이가 2017년에 발견한 두 번째 제로데이 취약점으로 핀스파이 배포를 위해 사용됐다. 이러한 취약점 발견은 합법적 해킹 영역의 여러 기업 및 고객들의 중요한 리소스로 활용된다. 핀스파이는 다수의 고객들에게 판매 됐으며, 이는 여러 공격에 취약점이 악용 됐다는 것을 의미한다.

파이어아이는 CVE-2017-8759가 다른 공격자들에 의해 추가로 사용 됐을 가능성 또한 발견했다. 아직 정확한 증거는 확보하지 못했지만, 2017년 4월 발생한 핀스파이 배포에 사용 된 제로데이 취약점 CVE-2017-0199가 금전적 동기를 가진 공격자들로부터 동시에 사용된 것으로 확인됐다. 핀스파이 공격자들이 기존과 동일한 출처로부터 취약점을 확보했다면, 해당 출처는 다른 공격자들에게도 취약점을 판매했을 가능성이 높다. 

전수홍 파이어아이 코리아 지사장은 “일반적으로 제로데이 공격은 정부기관, 방위산업, 법조계, IT회사, NGO 단체 등 다양한 산업군을 타깃으로 하고 있으며, 제품 공급사에서 패치를 제공하기 전까지는 탐지 및 차단이 거의 불가능하다”며 “새로운 제로데이 익스플로잇을 사용하는 유사한 공격이 패치가 제공되기 전에 국내에도 진행될 가능성이 매우 높다. 따라서 기업들의 각별한 주의가 필요하다”고 말했다.