최근 iSIGHT Partners는
NATO, 유럽연합, 통신 및 에너지 부문을 대상으로 하는
러시아 cyber 간첩행위 캠페인(Russian cyber espionage group)과 관련된 정보를 오픈하였다.
[출처] isightpartners.com
공격에 사용된 다수의 취약점 중 제로데이로 알려진 CVE-201404114 취약점 에 대해서 확인해보자.
# 취약점 정보
- CVE Number : CVE-2014-4114
- MS 업데이트 : MS14-060 Windows OLE 코드 실행 취약점
- 취약점 요약 :
- 해당 취약점은 메모리 상의 오류를 발생하는 크래쉬 취약점은 아님.
- Windows OLE packager(packager.dll)를 통해 외부 INF 파일을 사용자 인지없이 다운로드 후 실행할 수 있고,
- 이를 악성코드 배포에 활용한 사례.
- 따라서, 크래쉬 증상이나 별도의 쉘코드 등은 내포하지 않음.
- 관련파일 :
- spiski_deputatov_done.ppsx / 취약점 파일 (PowerPoint)
- slides.inf / 악성코드 실행을 위한 INF 파일
- slide1.gif / 취약점을 통해 배포되는 악성코드 파일
# 취약점 상세보기
전체적으로 취약점 발생부터 악성코드 실행까지는 아래와 같이 이루어진다.
취약점 파일(PowerPoint)을 클릭~~~!!
[그림] 파일 실행 후 슬라이드 첫 화면
첫 번째 슬라이드(slide1)가 오픈 될 때 INF 관련 행위가 수행된다.
MS Office 2007 이상부터는 ZIP으로 압축된 Office Open XML 파일형식을 사용하기 때문에, 압축을 해제하면 다음과 같은 트리 정보를 얻을 수 있다.
슬라이드(slides) 관련 폴더를 확인해보면, 첫 번째 슬라이드(slide1) 관련 XML 정보에 다음과 같이 OLE Object 연관정보들이 포함되어 있다.
[그림] ../embeddings/oleObject1.bin
[그림] ../embeddings/oleObject2.bin
Packager 모듈(packager.dll)은 OLE 오브젝트 EmbeddedStg1.txt(EmbeddedStg2.txt) 파일의 정보를 읽어서,
명시된 외부파일 경로대로 원격지 서버로부터 공유폴더(SMB/WebDav)에 존재하는 파일들을 로컬로 복사해 온다.
[그림] Packager.dll 코드 안에서
실제 복사하는 과정은 원격지 SMB 공유폴더와 연결 후 Netbios 통신을 통해 이루어지기 때문에
초기에 다음과 같은 서버 연결 트래픽이 발생한다. (현재 서버 연결은 실패)
-
94.185.85.122 – TCP/445
-
94.185.85.122 – TCP/139
실제 공격자의 서버 연결이 불가능하기 때문에 대체할 서버를 우회 사용함으로써,
다음과 같이 실제 SMB 프로토콜을 이용한 파일 복사 과정이 성공적으로 이루어진다.
[그림] 파일 복사 트래픽 일부
복사가 성공적으로 이루어지면 로컬 시스템의 %temp% 폴더에 아래와 같이 2개의 파일이 생성된다.
-
slides1.gif (PE)
-
slides.inf (INF)
파일이 생성된 후에는 복사해 온 slides.inf 안의 데이터를 참고하여 악성코드를 등록하고 실행하는 과정이 이루어진다.
이때, 실제 이 과정에는 slides.inf 를 입력으로 하는 InfDefaultInstall.exe가 실행된다.
[그림] packager.dll 모듈 안에서
아래와 같이 INF 내부에는 파일명을 변경한 후 레지스트리에 등록해서 실행하는 동작이 명시되어 있다.
[그림] slides.inf 파일 내부
자세한 문법은 아래를 참고하세요.
* INF DefaultInstall Section [DefaultInstall] CopyFiles=MyAppWinFiles, MyAppSysFiles, @SRSutil.exe AddReg=MyAppRegEntries [참고] http://msdn.microsoft.com/en-us/library/windows/hardware/ff547356(v=vs.85).aspx
실제 INF 정의된 내용은 아래와 같은 동작을 수행한다.
[Rename Files sections (RenFiles)] : slide1.gif 파일을 slide1.gif.exe 로 파일명 변경.
[Add Registry sections (AddReg)] HKLM 밑에 RunOnce 키에 Install 이라는 키를 만들어 slide1.gif.exe 등록.
이 때, InfDefaultInstall을 통해서 등록된 Install 키는 runonce가 한번 실행한 후에 아래와 같이 자동으로 삭제되어 실제 키로는 남아있지 않는다.
취약점을 실행 후 악성코드가 실행되는 전체적인 프로세스 실행 과정은 아래와 같다.
# 참고
- http://www.isightpartners.com/2014/10/cve-2014-4114/
- http://blog.trendmicro.com/trendlabs-security-intelligence/an-analysis-of-windows-zero-day-vulnerability-cve-2014-4114-aka-sandworm/
- http://www.welivesecurity.com/2014/10/14/cve-2014-4114-details-august-blackenergy-powerpoint-campaigns/
- http://research.zscaler.com/2014/10/analysis-of-sandworm-cve-2014-4124-0-day.html
- http://blog.vulnhunt.com/index.php/2014/10/14/cve-2014-4114_sandworm-apt-windows-ole-package-inf-arbitrary-code-execution/