상세 컨텐츠

본문 제목

Office Test를 이용하는 새로운 악성코드 발견

국내외 보안동향

by 알약(Alyac) 2016. 7. 28. 09:56

본문

Office Test를 이용하는 새로운 악성코드 발견

Office Test Persistence Method Used In Recent Sofacy Attacks


최근 'Office Test'라고 불리는 새로운 악성코드 은닉 매커니즘이 발견되었습니다. 이 방법은 Microsoft Office 프로그램이 실행될 때만 악성코드가 실행되는 방식으로, 샌드박스 탐지를 우회할 수 있어 주의가 필요합니다.


이 방법은 최근 Sofacy 조직이 개발한 악성코드에서 발견되었습니다. 악성코드는 다음과 같은 레지스트리를 생성합니다. (※ Sofacy 조직 : 러시아 해커부대)


HKEY_CURRENT_USER\Software\Microsoft\Office test\Special\Perf


분석 결과, 해당 악성 dll파일 경로는 레지스트리에 등록된 후, Office가 매 실행될 때마다 dll을 로드한 것으로 보입니다. 해당 레지스트리를 자동실행방식으로 사용하는 악성코드는 처음 발견된 것으로, 이 레지스트리가 왜 악성 dll파일을 로드하는지 알아보기로 했습니다. 


우리는 Office 설치 후 기본설정값에 해당 레지스트리가 없는 것을 확인하였습니다. 


<이미지 출처 : 

http://researchcenter.paloaltonetworks.com/2016/07/unit42-technical-walkthrough-office-test-persistence-method-used-in-recent-sofacy-attacks/>


이렇게 자가실행방식을 이용하는 샘플은 모두 Sofacy 조직이 만들어낸 것들에서 발견되었습니다. 우리는 Sofacy 조직이 발견한 새로운 자가실행방식이라고 생각했습니다. 그러나 놀라운 것은 Hexacom이 2014년 4월, 해당 레지스트리에 대해 공개한 부분에 있습니다.



dll 로드 과정


해당 레지스트리가 어떻게 악성 dll을 실행하는지 알아보기 위해 Office Word를 실행한 후 행위를 분석해보았습니다. 우리가 Word를 분석한 이유는 Sofacy 조직이 Word를 이용하여 악성 dll을 로드했기 때문입니다. 하지만 Office의 다른 제품들 역시 쉽게 이러한 방식에 영향을 받을 수 있습니다. 


아래 API콜 부분은 Office 실행 과정 중 해당 레지스트리와 관련된 행위들을 나타냅니다. API콜은 Word(WINWORD.EXE)가 "wwlib.dll"을 로드한 것을 나타내며, Word가 실행될 때 정상 모듈의 로드가 필요합니다. ”wwlib.dll” 모듈은 레지스트리를 실행한 후, 자신의 기본값을 검색합니다. 그 후 LoadLibrary를 이용하여 레지스트리에 저장되어있던 악성 dll(“btecache.dll”)을 로드합니다.


<이미지 출처 : 

http://researchcenter.paloaltonetworks.com/2016/07/unit42-technical-walkthrough-office-test-persistence-method-used-in-recent-sofacy-attacks/>


wwlib.dll의 가장 마지막 행위는 HKEY_LOCAL_MACHINE 하위에 다음과 같은 레지스트리 실행을 시도합니다.


HKEY_LOCAL_MACHINE\Software\Microsoft\Office test\Special\Perf


해당 레지스트리의 실행이 실패한 이유는 해당 레지스트리가 존재하지 않기 때문입니다. 또한 자가실행을 위해 사용하는 레지스트리는 실행되지 않는데, 그 이유는 사용자가 관리자 권한을 갖고있어야만 HKLM 하위의 레지스트리 항목을 수정할 수 있기 때문입니다. 하지만 HKCU 하위의 Office Test 항목을 수정하여 악성 dll을 로드하는 것은 현재 사용자 권한으로만 가능합니다.


Sofacy 조직 내 공격자는 악성 Loader를 btecache.dll로 명명한 후, Office Test 레지스트리 항목에 저장해 놓았습니다. 악성 Loader는 주요 기능모듈인 “C:\ProgramData\svchost.dll”를 Word에 로드시킨 후 종료됩니다. "svchost.dll" 모듈에는 Sofacy 조직이 사용하는 Carberp 악성코드의 변종코드가 포함되어 있으며, "svchost.dll"는 사용자가 Word 프로그램을 종료할 때까지 계속 실행됩니다.


<이미지 출처 : 

http://researchcenter.paloaltonetworks.com/2016/07/unit42-technical-walkthrough-office-test-persistence-method-used-in-recent-sofacy-attacks/>



OFFICE TEST의 의미


프로세스의 시작 행위를 보았을 때, 정상 “wwlib.dll” 모듈이 레지스트리를 읽고 악성 dll을 로드하는 것을 확인할 수 있습니다. 왜 “wwlib.dll”가 존재하지 않는 레지스트리 항목 중에서 dll을 로드하는 것일까요? 관련사항에 대해 정적 분석 결과, “wwlib.dll”는 레지스트리 항목을 읽고 지정된 모듈을 로드한 후 해당 모듈 중에서 “_GetPerfhostHookVersion@0”도출함수를 찾는 것으로 밝혀졌습니다.


<이미지 출처 : 

http://researchcenter.paloaltonetworks.com/2016/07/unit42-technical-walkthrough-office-test-persistence-method-used-in-recent-sofacy-attacks/>


“wwlib.dll”가 LoadLibraryW 함수를 이용해서 레지스트리 중 dll을 로드할 때, dll의 DllEntryPoint 함수를 콜합니다. Sofacy 조직의 “btecache.dll” dllEntryPoint 함수는 “svchost.dll”를 검색하고 로드하며, 코드를 실행할 수 있습니다.


“btecache.dll” 중 “_GetPerfhostHookVersion@0”는 함수를 도출해 내지는 못했지만, 별다른 영향을 미치지 않습니다. 위 이미지처럼 검색에 실패하는 이유는 해당 API를 콜하지 못했기 때문입니다.


“wwlib.dll”은 레지스트리에서 가리키는 dll중에서 "_GetPerfhostHookVersion@0” 함수를 찾는 것 이외에, 다음과 같은 함수를 검색합니다.


_InitPerf

_PerfCodeMarker

_UnInitPerf


다른 Office 프로그램을 포함하여, Word가 레지스트리 중에서 해당 dll을 로드하는 이유는 제품 성능평가와 제품을 개발하는 동안 디버깅 혹은 개발 단계에서 사용하기 위함입니다. 이는 “Software\Microsoft\Office test\Special\Perf”레지스트리가 기본적으로 존재하지 않는 이유를 말해주기도 합니다.


우리는 또 ”wwlib.dll”가 HKEY_LOCAL_MACHINE\Software\Microsoft\Office test\Special\Perf\RuntimePerfMeasurement에서 dll로드를 시도하는 것을 발견했습니다.


"RuntimePerfMeasurement” 레지스트리명에서 해당 레지스트리가 성능 측정 및 디버깅 목적으로 사용된다는 것을 알 수 있습니다.



영향받는 프로그램 및 버전


과연 어떤 버전의 Word가 영향을 받는지 알기 위해, 프로그램 중 “wwlib.dll ”모듈을 테스트했습니다. 테스트 결과 Office 2007,2010,2013,2015,2016의 “wwlib.dll”이 "Office Test"레지스트리 항목의 값을 읽고 dll을 로드했습니다. 


Office 뿐만 아니라 다른 프로그램들도 테스트를 진행했습니다. 흥미로운 것은 Office패키지 중 몇몇 프로그램들은 dll을 통하지 않고도 악성모듈을 로드할 수 있으며, 주요 프로그램은 직접 주요 프로그램을 읽고 로드할 수 있다는 것입니다.


다음은 각 프로그램들이 악성모듈을 읽고 로드하는 흐름도입니다. 


<이미지 출처 : 

http://researchcenter.paloaltonetworks.com/2016/07/unit42-technical-walkthrough-office-test-persistence-method-used-in-recent-sofacy-attacks/>



악성코드는 “Office Test” 실행 방식을 사용합니다. 사용자들이 Office를 매번 실행할 때마다, 악성코드가 실행되도록 하는 방식입니다. 이는 샌드박스 자동분석에 대한 새로운 도전이라고 볼 수 있겠습니다. 따라서 보안 SW는 레지스트리 감시를 강화해야합니다.


MS는 Autoruns 업데이트를 통해 “Office Test” 실행방식에 대한 감시기능을 지원하도록 조치를 취했습니다. 더불어 사용자들은  “Office Test” 레지스트리에 읽기 권한만을 부여하여 악성코드에게 악용되는 것을 방지해야 합니다.




출처 :

http://researchcenter.paloaltonetworks.com/2016/07/unit42-technical-walkthrough-office-test-persistence-method-used-in-recent-sofacy-attacks/

관련글 더보기

댓글 영역