[상세보고서] 우크라이나 정전사태 관련 악성코드 (update. 2016.03.25)

malwares.com 악성코드 분석팀 분석 자료


< 부제 : 이제 그만 좀 하자 >


update. 2016.03.25

우크라이나의 정전사태에 대한 상세보고서가 최초 공개됐다. 



update. 2016.03.07

우크라이나의 대규모 정전사태에 대해 ICS-CERT에서 다음과 같은 보고서를 공개했다. 해당 보고서에서 "우크라이나 정전사태는 CyberAttack이며 함께 발견된 BlackEnergy에 의한 것이나 (분석된 BlackEnergy 동작이외에 정전사태와 관련된) 정확한 동작은 아직 분석되지 않은 상태"라고 밝혔다. 




1. 개요


2015년 12월 23일 우크라이나에서 대규모의 정전사태가 발생했다. 이와 관련해 해외 보안 업체에서 오랜 기간 조사 결과 정전사태의 원인은 악성 매크로가 삽입되어 있는 MS Office 문서 파일 (엑셀, 워드) 과 연관된 것으로 확인되었다. 
즉, 엑셀 문서나 워드 문서에 포함되어 있던 악성 매크로가 동작하면서 추가 악성코드를 생성 및 실행했으며 그로 인해 정전사태가 유발되었다는 것이다.
실제 매크로 바이러스를 통한 악성코드 감염 사례가 최근 급격히 증가하고 있으며 이와 관련해 세인트 시큐리티에서도 분석 보고서를 공개한 바 있다. 


< Figure 1. 문서 파일을 통한 APT 공격 과정 >


이렇게 APT 공격을 통해 실행되는 악성코드의 종류 또한 백도어, 봇넷에서 최근에는 랜섬웨어 및 기간시설 대상 악성코드에 이르기까지 다양하다. 하지만 악성코드 실행을 위한 방법은 과거 취약점을 이용한 공격이 주를 이루었다면 2015년 부터 다시 90년대 활동하던 매크로로 흐름이 넘어온 상태이다. 

                                   APT : 악성 한글 파일을 통해 확산되는 악성코드

따라서 최근 이슈가 되었던 우크라이나 정전사태의 원인으로 지목된 악성 매크로가 삽입되어 있는 MS Office 문서 파일을 살펴보고 이를 통해 생성된 악성코드의 동작에 대해 확인해 보겠다. 


2. Anti-Virus 진단 정보
  • 파일명 : Ocenka.xls
  • 파일크기 : 835,584 Bytes
  • SHA-256 : 0BB5E98F77E69D85BF5068BCBC5B5876F8E5855D34D9201D1CAFFBF83460CCCC
  • 연관 태그 정보 : #xls, #blackenergy #macros #ukraine
  • malwares.com 정보 : https://goo.gl/eZnls9

< Figure 2. Anti-Virus 진단 정보 (malwares.com) > 


  • 파일명 : $RR143TB.doc

  • 파일크기 : 1,194,496 Bytes 

  • SHA-256 : 39D04828AB0BBA42A0E4CDD53FE1C04E4EEF6D7B26D0008BD0D88B06CC316A81

  • 연관 태그 정보 : #doc #blackenergy #macros #ukraine

  • malwares.com 정보 : https://goo.gl/MT7AJ3

< Figure 3. Anti-Virus 진단 정보 (malwares.com) >


3. 매크로가 존재하는 문서 파일

< Figure 4. 매크로가 존재하는 악성문서 실행 모습 >

  • 실행 환경 : Windows XP SP3, Microsoft Office 2007

Figure 4는 우크라이나 정전사태를 유발한 악성 문서 파일을 실행한 모습이다. 두 악성 문서 파일을 각각 실행하면 매크로 차단 메시지가 나타난다. 이 보안 옵션을 활성화하면 악성 문서 내의 매크로가 동작하게 되고 악성코드가 생성 및 실행된다. 이는 정상 VBA 매크로 동작을 이용한 악성행위이므로 모든 Office 버전에서 동작한다. 

따라서 악성 문서 파일내에 존재하는 매크로를 확인하면 정확한 동작을 확인할 수 있다.

( 참고 : 악성 문서 파일을 직접 실행하는 경우 악성 매크로가 동작하지만 Office 프로그램을 먼저 실행한 후 악성 문서 문서 파일을 Drag & Drop 하는 경우 악성 매크로가 실행되지 않는다. )


< Figure 5. 악성 문서 내부 VBA 매크로 모습 >


MS에서 제공하고 있는 CFBF 파일 상세 문서에 따르면 분석 대상 Strream의 이름만 다를 뿐 엑셀 및 워드 파일 모두 VBA Storage 하위 Stream에 VBA 매크로가 존재함을 알 수 있다. 따라서 엑셀 파일과 워드 파일 내부에 존재하는 매크로 소스를 추출해 분석하면 된다. 샘플의 경우 분석 대상 Stream 명은 다음과 같다. 

  • 엑셀 문서의 경우 분석 대상 Stream 명 : Лист1 ~ Лист3, ЭтаКнига

  • 워드 문서의 경우 분석 대상 Stream 명 : TheDocument


4. 악성 문서 파일 분석

(1) VBA Storage 구조


< Figure 6. VBA 하위 구조 일부 >

  • 참고 문서 : [MS-OVBA].pdf

VBA 하위에 존재하는 Stream은 Figure 6과 같은 구조로 이루어져 있다. 그 중 dir Stream은 VBA 하위에 존재하는 Stream (Module Stream, _SRP_0 등) 에 대한 정보를 갖고 있다. 따라서 CFBF 파일 포맷에 따라 Module Stream 과 같은 하위 모듈을 추출하더라도 dir Stream 분석이 선행되어야 정확한 데이터를 확인할 수 있다. 따라서 분석 대상은 다음과 같다. 


< FIgure 7. VBA Storage 하위의 분석 대상 Stream >


(2) dir Stream 구조 분석


< Figure 8. dir Stream 디코딩 >

  • 참고 문서 : [MS-OVBA].pdf

dir Stream은 첫 1Byte를 통해 인코딩 여부를 판단한다. 만약 첫 1Byte가 0x01인 경우 인코딩된 Stream으로 판단해 첫 1Byte 이후 바이너리를 디코딩 후 포맷 분석을 수행한다.

( 디코딩 알고리즘은 [MS-OVBA].pdf 의 2.4.1.3.1. Decompression Algorithm 을 참고하기 바란다. )


< Figure 9. 디코딩한 dir Stream 내부 구조 >


디코딩된 dir Stream은 크게 세 부분으로 나눌 수 있다. 

  • PROJECTINFORMATION : 프로젝트 명, 버전 정보, 코드페이지 등 기본정보를 담고 있는 Record

  • PROJECTREFERENCE : 참조하는 외부 라이브러리 정보 등을 담고 있는 Record

  • PROJECTMODULES : 하위 Stream 명, 위치 정보 등을 담고 있는 Record

< FIgure 10. 구조 분석된 dir Straem 내부 정보 (일부) >


따라서 dir Stream의 추출된 정보를 바탕으로 하위 Stream에 대한 정확한 분석이 가능하다. 특히 그 중 dir Stream의 PROJECTINFORMATION의 코드페이지(CodePage) 정보는 이후 나오는 문자열 관련 정보를 디코딩할 때 관여하게 된다. 

< Figure 11. CodePage를 이용한 디코딩 >


Figure 11에서 분석 대상 악성코드를 확인해 보았다. 악성 워드 문서의 경우 Module Name 등 문자열이 정상적으로 출력됨을 확인할 수 있다. 하지만 악성 엑셀 파일의 경우 기본적으로 인코딩이 적용되어 있어 모듈을 구분할 수 없다. 따라서 PROJECTINFORMATION 에서 CodePage 정보를 추출해 디코딩해야 한다. 


(2) VBA 매크로 소스 추출 및 분석


< Figure 12. 추출된 VBA 매크로 소스코드 >


dir Stream 정보를 바탕으로 각각 대상 module Stream을 분석하면 Figure 12와 같은 VBA 매크로 소스를 확인할 수 있다. 

  • 악성 엑셀 파일 내 VBA 매크로 소스코드 모듈 : ЭтаКнига

  • 악성 워드 파일 내 VBA 매크로 소스코드 모듈 : TheDocument

함수명 등의 차이를 제외하면 악성 문서 파일에서 추출되는 VBA 매크로 소스는 동일하다. 

우선 악성 파일의 이름을 생성한다. 

  • 악성 엑셀 파일에서 생성되는 악성코드 명 : %TEMP%\test_vb.exe

  • 악성 워드 파일에서 생성되는 악성코드 명 : %TEMP%vba_macro.exe

악성 파일을 생성하기 위한 바이너리는 128Bytes 씩 468개로 나누어 배열로 저장하고 있으므로 이를 결합하는 작업을 수행한다. 이렇게 생성된 악성코드를 실행하게 된다. 


5. Anti-Virus 진단 정보

  • 파일명 : test_vb.exe

  • 파일크기 : 59,904 Bytes

  • SHA-256 : 43B69A81693488905EF655D22E395C3F8DEE2486ABA976D571D3B12433D10C93

  • 연관 태그 정보 : #ukraine

  • malwares.com 정보 : https://goo.gl/XhXA7N

< Figure 13. Anti-Virus 진단 정보 (malwares.com) >

  • 파일명 : vba_macro.exe

  • 파일크기 : 73,235 Bytes

  • SHA-256 : CF52F3C07AFAA6D74E881FD6AE72C203E1CC154706DEFADE75BE02DB3962C31A

  • 연관 태그 정보 : #ukraine

  • malwares.com 정보 : https://goo.gl/ar43GT

< Figure 14. Anti-Virus 진단 정보 (malwares.com) >


6. 바이너리 분석


< Figure 15. 생성 파일 실행 >


VBA 매크로에 의해 실행된 악성코드는 특정 경로에 DLL 파일을 생성하고 특정 파라미터와 함께 ShellExecute( ) API로 실행된다. 

  • 생성 경로 : c:\documents and settings\(사용자 계정)\Local Settings\Application Data

  • 생성 파일명 : FONTCACHE.DAT

  • 파라미터 : c:\documents and settings\(사용자 계정)\시작 메뉴\프로그램\시작프로그램\{사용자 SID}.lnk

파라미터로 전달된 lnk 바로가기 파일을 통해 PC 재부팅시 자동 시작되도록 설정된다. 

lnk 바로가기 파일을 살펴보면 다음과 같은 정보를 확인할 수 있다. 

  • 파라미터 1 : %windir%\system32\rundll32.exe

  • 파라미터 2 : FONTCACHE.DAT 파일 경로

  • 파라미터 3 : #1

즉, lnk 바로가기 파일이 실행되면 rundll32.exe를 통해 FONTCACHE.DAT 파일을 실행하게 된다. 


7. Anti-Virus 진단 정보

  • 파일명 : FONTCACHE.DAT

  • 원본 파일명 : Packet.dll

  • 파일크기 : 56,832 Bytes

  • SHA-256 : EF380E33A854EF9D9052C93FC68D133CFEAAE3493683547C2F081DC220BEB1B3

  • 연관 태그 정보 : #ukraine #blackenergy

  • malwares.com 정보 : https://goo.gl/kmZrxD

< Figure 16. Anti-Virus 진단 정보 (malwares.com) >


8. 외부 서버 접근


< Figure 17. 악성코드 실행시 네트워크 동작 >


FONTCACHE.DAT 파일은 외부 서버 접속을 통한 추가 악성코드 다운로드를 시도하지만 현재 다운로드는 이루어지지 않는다. 
  • 서버 IP : 5.149.254.114
  • SubURL : /Microsoft/Update/KC074913.php
외부 서버로부터 다운로드 후 실행되는 악성코드는 Win32/KillDisk로 명명된 BlackEnergy 악성코드로 MBR 파일 및 파일 삭제를 수행하는 악성코드이다. 


▶ 보고서 원본 PDF 다운로드: https://goo.gl/1n595N


* 본 보고서 및 관련 컨텐츠는 저작권의 보호를 받습니다. 재배포, 영리목적의 활용 관련 법률에 의거 처벌 받을 수 있습니다.



이 글을 공유하기

댓글(4)

  • 홍동서
    2016.02.19 16:04

    3CA010841B526D9093374F95E8412F58 이건 깨진파일이네요. 그래서 진단이 안되는게 정확!

    • 2016.02.21 22:06 신고

      안녕하세요. malwares.com 운영팀입니다. 해당 내용 코드 분석팀에 전달했습니다. 확인 후 피드백 드릴 수 있도록 하겠습니다. 감사합니다. :)

    • 2016.02.22 09:26 신고

      안녕하세요. malwares.com 코드 분석팀입니다.
      우선 저희 malwares.com에 관심가져주셔서 감사합니다.

      언급하신 3CA010841B526D9093374F95E8412F58 파일은 vba_macro.exe 파일로 말씀하신 것처럼 깨진 상태로 정상동작이 이뤄지지 않습니다.
      test_vb.exe 진단 정보인 Figure 13와 vba_macro.exe 진단정보인 Figure 14를 비교해 보시면 vba_macro.exe만 malwares.com의 행위 분석 결과가 나오지 않는 것도 같은 이유입니다.
      그로 인해 코드분석팀에서는 악성 여부 판단을 위해 동적 분석이 아닌 정적 분석을 통해 어셈코드를 확인했으며 확인 결과 test_vb.exe 파일과 같은 목적의 내부 코드를 확인할 수 있었으며 실제 유사 변종 샘플을 통해 이를 검증해 보았습니다. 그 결과 악성으로 판단하는 것이 맞다고 결론 지었습니다.

      감사합니다.

  • 2016.06.09 04:27

    좋은 정보 잘보고 갑니다