Tag Archives: 2015

2015 Whitehat Contest Prequal (blackhat)

HackLab 멤버들(hdarwin, idkwim, jack2, k1rha)이 2015 Whitehat Contest 예선에 참여한 후에 작성한 Write-Up 내용을 정리하여 공개합니다. (이후 말은 설명 관계상 존대 생략 하도록 하겠습니다 ^^;;)

0. Whitehat Contest

2013년 이후로 올해 3회째 맞이하는 Whitehat Contest는 국가정보원, 대한민국 국방부에서 주최하고 국군사이버사령부에서 주관하여 대한민국 국적의 일반인과 청소년들이 각각 팀을 이뤄 해킹방어능력을 겨루는 국내 해킹방어대회이다. [1]

1,2회와는 다르게 이번 대회는 침해사고대응과 관련된 문제가 출제되었습니다. 예선 시작전에 분석 대상파일( 디스크 덤프파일, 메모리 덤프파일)을 제공받은 후 예선 시작과 동시에 압축 비밀번호를 제공받은 후 해당 파일을 분석하는 형태로 진행되었다.

  • 예선 시나리오 및 문제  LINK
  • 일시 : 2015-10-10, 09:00~21:00 (12H)

1. 전체요약

01
[그림 1] 침해사고 타임라인
본 침해사고는 팀 채팅 솔루션(“JANDI”)을 통해 악성 한글 문서(“참고지침.hwp”)를 특정 대상에게 전달하고 랜섬웨어(“temp.exe”)를 설치하는 방식의 스피어 피싱(Spear phshing) 공격이다. 공격 대상의 PC는 취약한 버전의 한글 문서 편집기(“한글 2014”)를 사용하고 있었다. 때문에 악성 한글 문서를 열람 했을 때 랜섬웨어를 시스템에 설치하게 되고, 주요 문서가 랜섬웨어에 의해 암호화됐다.

본 보고서는 악성 한글 파일 내의 한글 2014 취약점 및 공격 코드 그리고 랜섬웨어의 행위를 분석한 내용을 다룬다. 또한 공격자가 소유한 웹 서버의 취약점을 이용해 랜섬웨어가 데이터를 암호화할 때 사용한 키를 역으로 추출했다. 이를 이용해 암호화된 문서 파일을 복구하고 침해 사고를 예방하는 하는 대응 방안을 담고 있다.

1.1 분석 대상 (시스템, 저장매체 정보)

  • 디스크 덤프파일
    MD5 : B09CC2AAB6D52EFC1D7D2A3043AF3804
  • 메모리 덤프파일
    MD5 : 8D0C1449437C7FD295A4AE13DC6A6C31
  • 운영체제 : Windows7 SP1 64bit

1.2 분석 방법 

[그림 2] 침해사고 분석 절차
[그림 2] 침해사고 분석 절차
침해사고 분석 절차 중 데이터 수집 이후 과정인 사전분석, 자동화 처리&분석 및 정밀 분석 파트를 진행하였다.[2]

1) 분석 환경
  • 운영체제 : Windows 8.1 64bit
2) 분석 도구
  • Volatility : 메모리 덤프파일 분석 도구
  • Redline : 메모리 덤프파일 분석 도구
  • NTFS Log Tracke r: 윈도우 $LogFIle, $UsnJrnl 분석 도구
  • FTK Imager : 디스크 덤프파일 분석 도구
  • Windbg : 윈도우 디버거
  • IDA : 인터렉티브 디스어셈블러
  • EseDbViewer : IE의 로그 정보 파일 분석 도구
  • HxD : 헥스 에디터
  • unpy2exe : py2exe로 생성된 .exe 실행 파일로부터 .pyc 파일을 추출하는 도구
  • Easy Python Decompiler : 파이썬 바이트코드 디컴파일러

2. 분석 결과

2.1 침해 원인 (유입된 원인과 과정)

[그림 3] 프로세스 목록
[그림 3] 프로세스 목록
메모리 덤프파일을 Volatility를 이용하여 분석한 결과, 메모리 덤프 시 동작했던 프로세스 목록(pslist)은 [그림 3]과 같다. 해당 프로세스 목록 중 iexplorer.exe (PID:2560)는 “IE”(이하 IE)로 해당 브라우저를 실행한 이후 침해 대상에서 다양한 프로세스가 동작한다.

(1) iexplorer.exe (PID:2756)
(2) Hwp.exe (PID:3336)
(3) temp.exe (PID:3584)
(4) cmd.exe (PID:2972)
(5) OfficeHelp.exe (PID:2424)

출력된 프로세스 ID(이하 PID)와 부모 프로세스 ID(이하 PPID) 정보를 이용하여 프로세스 간 상관관계를 분석한 결과, 프로세스가 동작하는 순서는 위와 같다. 이 과정에서 IE(PID:2756)를 실행한 후, 한글 문서 편집기(PID:3336)가 실행된다. 그리고 이후 temp.exe (PID:3584)라는 의심스러운 프로세스가 동작하고, 명령어 창(PID:2972)에서 OfficeHelp.exe (PID:2424)라는 또 다른 프로세스가 동작한다.

[그림 4] 침해 대상 IP주소
[그림 4] 침해 대상 IP주소
앞서 언급한 일련의 과정 중 가장 먼저 실행되었던 IE(PID:2756)가 동작할 때 네트워크 정보를 RedLine에서 확인한 결과, 침해 대상의 IP 주소는 “10.10.10.135”로 [그림 4]와 같다. (문제 10)

(문제 10) 박부장 PC의 IP주소는 무엇인가요?

IE가 실행된 다음 한글 문서 편집기(PID:3336)가 실행된다. 두 프로세스가 실행되는 시간을 비교하여 IE가 실행된 시간 (2015-09-25 15:21:52)과 한글 문서 편집기가 실행된 시간(2015-09-25 15:22:24) 사이에 어떠한 이벤트가 발생했는지 확인하기 위하여 윈도우 이벤트 로그와 관련된 파일($LogFile, $UsnJrnl 등)을 분석한다.

[그림 5] 파일 다운로드 정보
[그림 5] 파일 다운로드 정보
해당 파일들을 NTFS Log Tracker를 이용하여 분석한 결과, 두 프로세스 실행 시간 사이에서 한글 파일이 IE 임시 저장 경로인(\Users\KAB\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\) 하위에 최초로 생성되는 시간은 “2015-09-25 15:22:24” 이고 해당 파일명과 확장자는 “참고지침[1].hwp” 이다. (문제 6)

(문제 6) 다운로더(Downloader)는 박부장 PC에 언제 다운로드되었나요? (YYYY-MM-DDThh:mm:ss)

그러나, 해당 시간 대 이벤트 로그를 상세하게 분석하면 기록된 참고지침[1].hwp 와 download[1].hwp 파일은 생성된 이후에 삭제되고 참고지침.hwp.vnu7uzf.partial 이라는 파일이 생성된 후 “참고지침.hwp” 로 파일명이 변경되어 3개 hwp 파일 중 남아있는 유일한 파일이다. (문제 5)

(문제 5) 랜섬웨어 파일을 다운로드한 다운로더(Downloader)는 무엇인가요? (파일명.확장자)

인터넷 브라우저에서 어떠한 경로를 통하여 “참고지침.hwp” 파일이 유입되었는지 확인하기 위해 IE의 로그 정보에 대한 분석이 필요하다. 참고로 IE의 로그 정보는 다음 경로에 저장된다.

%UserProfile%\AppData\Local\Microsoft\Windows\WebCache\WebCacheV##.dat

[그림 6] 이벤트 로그 정보
[그림 6] 이벤트 로그 정보
또한 의심 가는 “참고지침.hwp” 파일이 생성되기 이전 시간대 (2015-09-25 15:22:24)를 이벤트 로그에서 분석한 결과 실제로 IE의 로그 정보파일이 %UserProfile%\AppData\Local\Microsoft\Windows\WebCache\ 경로에 생성되는 것으로 파악 되었으며 [그림 6]과 같다.

[그림 7] 로그정보 파일
[그림 7] 로그정보 파일
실제로 \Users\KAB\AppData\Local\Microsoft\Windows\WebCache\ 경로로 이동하여 저장된 로그 정보 파일(WebCacheV01.dat)은 [그림 7]과 같다.

[그림 8] 로그정보 파일 시그니처
[그림 8] 로그정보 파일 시그니처
WebCacheV01.dat 파일은 HxD를 이용하여 확인한 결과, 시그니처는 EF CD AB 89 로 ESE(Extensible Storage Engine) 포맷으로 [그림 8]과 같다. 때문에 ESE 파일을 분석하기 위한 도구인 EseDbViewer를 이용한다.

[그림 9] ESE 정보
[그림 9] ESE 정보
[그림 9]와 같이 EseDbViewer를 이용하여 WebCacheV01.dat 파일을 확인한 결과, 각각의 정보들이 Container_N 형식의 이름을 가진 테이블에 저장된다. 그리고 현재 분석 대상 파일은 Container_1 테이블에 존재한다.

[그림 10] 유입 URL 경로
[그림 10] 유입 URL 경로
[그림 10]과 같이 해당 테이블의 “URL” 에서 URL 전체 경로는 아래와 같다. https://files.jandi.com/files-private/11278028/142fc17cddb52a1749b66935d2184bae.hwp/download/ 

이를 통하여, 사내에서 사용하는 JANDI 메신저를 통해서 “참고지침.hwp”이 유입(다운로드)된 것을 알 수 있다. (문제 7)

(문제 7) 다운로더(Downloader)는 어디에서 다운로드 되었나요? (다운로드 URL 전체 경로, 프로토콜 포함)

위의 분석 결과를 정리하면, 웹 브라우저(IE)에서 동작하는 “JANDI(잔디)” 메신저(문제 시나리오에서 언급한 팀 채팅 솔루션)의 사용자를 대상으로 악성 한글파일(참고지침.hwp)을 유포하는 스피어 피싱 형태의 공격이 있었다는 것을 알 수 있다. 다음 장에서는 해당 공격과 관련된 “참고지침.hwp”파일이 어떤 방식으로 피해자의 PC에서 동작했는지 상세한 분석을 통해 다룬다.

2.2 침해 흔적 (악성코드 실행 흔적 및 악성코드 파일 분석 내용)

[그림 11] 다운로더 이벤트 로그
[그림 11] 다운로더 이벤트 로그
[그림11]과 같이 윈도우 이벤트 로그를 분석한 결과, JANDI 메신저를 통해 유입(다운로드)된 “참고지침.hwp” 파일이 실행된 후 의심스러운 파일인 “temp.exe“ 프로세스가 실행된다. 이벤트로그를 보면 “temp.exe” 프로세스가 실행되기 전에 “EMB00000d0c32d3.PCT” (.PCT : 매킨토시용 이미지 파일 포맷) 파일이 생성되는데 “참고지침.hwp” 파일 내에 존재하는 이미지 파일인 것으로 판단 된다. 이를 위해 악성 한글 문서에 대한 상세분석을 진행한다.

– 한글문서 편집기 PCT 파일 파서 (Parser)

현재 디스크 이미지 파일에서 한글 문서 편집기가 설치된 경로는 “\Program Files (x86)\HNC\HOffice9″ 이다. “Hoffice9” 문자열을 통하여 해당 한글 문서 편집기의 버전이 “한글 2014”인 것을 알 수 있다.

[그림 12] 한글 2014 PCT 모듈
[그림 12] 한글 2014 PCT 모듈

한글 2014는 “C:\Program Files\HNC\HOffice9\Bin\ImgFilters” 경로에 각각의 이미지 파일을 위한 파서(Parser)를 갖고 있다. [그림 12]에서 표시한 IMPCT9.FLT는 ISGDI32.dll에 의존하는 PCT 이미지 파서이다.

이미지 파일파서 함수 디버깅
[그림 13] isgdi32.dll 동적 분석
[그림 13] isgdi32.dll 동적 분석

[그림 13]과 같이 WinDbg를 이용하여 동적 분석을 진행한다. ISGDI32.dll 모듈은 “imsRead” 문자열로 시작하는 이미지 데이터를 읽는 함수가 구현되어 있다. 그리고 해당 함수를 추적하여 프로세스 메모리로 삽입되는 공격 페이로드와 취약점의 원인을 분석할 수 있다.

– 스택 기반 버퍼 오버플로우
[그림 14] PCT 파일 해석 함수
[그림 14] PCT 파일 해석 함수

[그림 14]는 IMPCT9.FLT 모듈 0xD0B0 오프셋 위치에는 PCT 이미지 파일을 해석하는 함수이다. 해당 함수에는 버퍼에 대한 별도의 경계 검사 없이 데이터를 복사하는 스택 기반 버퍼 오버플로우 취약점이 존재한다. 공격자는 해당 코드를 이용해서 스택 프레임에 저장된 함수의 복귀 주소를 변조하여 한글 문서 편집기(한글 2014)의 실행 흐름을 임의로 변경 할 수 있다.

[그림 15] 취약한 코드
[그림 15] 취약한 코드

[그림 15]와 같이 0x1C00DE11 오프셋에서 시작하는 2개의 코드 블록에 취약한 코드가 존재한다. imsReadChar 함수는 파일 포인터, 버퍼, 사이즈를 인자로 입력 받는다. 위 코드는 파일에서 읽은 1바이트 데이터를 imsReadChar 함수의 사이즈 정보로 사용한다. 그리고 데이터 복사 버퍼의 경계를 검사하지 않아 스택 기반 버퍼 오버플로우 취약점을 발생시킬 수 있다. 데이터를 저장할 버퍼의 크기는 132바이트(ebp+var_84, 0x84)이다.

하지만 공격자는 복사할 데이터의 크기를 0~255까지 임의로 결정할 수 있다. 결과적으로 함수 프레임 내 복귀 주소를 변경하여 프로그램의 실행 흐름을 공격자 임의로 결정 할 수 있다. 공격자는 최대 255바이트 까지만 입력할 수 있는 제약과 DEP 방어기법을 우회하기 위해 다음과 같이 1차 페이로드를 구성했다.

  1차 페이로드는 ALSR이 적용되지 않은 모듈을 이용해 VirtualAlloc 함수를 호출하고 스택에 실행 권한을 설정(DEP 우회)하고 스택 상위에 존재하는 파일 포인터를 재활용하여 파일에서 데이터(2차 페이로드)를 추가로 읽어 2차 페이로드를 실행한다.  

– 2 차 페이로드 분석 (다운로드&실행 공격 코드)

[그림 16] 악성 한글 문서 내 쉘코드
[그림 16] 악성 한글 문서 내 쉘코드

  [그림 16]과 같이 랜섬웨어를 다운로드 후 실행하는 쉘코드 페이로드는 EMB00000d0c32d3.PCT 파일 오프셋 0x2AA 위치에 존재하고 1차 페이로드에 의해 프로세스에 삽입된다.  

위와 같이 랜섬웨어는 http://poworks.com/wp-includes/theme-compat/post.gif 위치에 존재한다. 그리고 2차 페이로드가 실행되면 한글 2014 설치 경로인 “C:\Program Files\HNC\HOffice9\Bin” 경로에 “temp.exe”라는 이름으로 저장된 후 실행된다 (문제 1, 4). 이는 아래와 같이 일련의 과정으로 나타낼 수 있다.

(문제 1) 박부장 PC의 문서를 암호화한 랜섬웨어 파일은 무엇인가요? (전체 경로)
(문제 4) 랜섬웨어 파일은 어디에서 다운로드 되었나요? (원본 파일 URL 전체 경로, 프로토콜 포함)

(1) 참고지침.hwp 실행
(2) 참고지침.hwp 내에 있는 PCT 이미지 파일 파싱
(3) IMPCT9.FLT 모듈 내 취약한 함수로 인한 공격코드 실행
(4) 랜섬웨어 다운로드 (http://poworks.com/wp-includes/theme-compat/post.gif)
(5) 랜섬웨어 실행 (C:\Program Files\HNC\HOffice9\Bin\temp.exe)
(6) 문서 파일 암호화 진행

[그림 17] 문서파일 암호화
[그림 17] 문서파일 암호화

[그림 17]과 같이 윈도우 이벤트 로그를 분석한 결과, “temp.exe”가 실행한 후 다수의 문서파일이 삭제되고 원본 파일명에 “_enc” 문자열이 추가된 형태로 새로운 파일을 생성한다(다수의 문서와 관련된 로그는 [부록 1]을 참고). 즉, 랜섬웨어(temp.exe)가 실행된 후 피해자 PC 내에 있는 문서파일을 암호화하고 원본 파일을 삭제한 것이다.

– 추가 파일 생성, OfficeHelp.exe (PID:2424)
[그림 18] OfficeHelp.exe 생성 및 실행
[그림 18] OfficeHelp.exe 생성 및 실행

[그림 18]과 같이 랜섬웨어(temp.exe)는 주요 문서들을 암호화한후 추가적으로 “OfficeHelp.exe”(PID:2424) 파일을 실행한다.

– OfficeHelp.exe 실행 시간: 2015-09-25 06:32:19 UTC
– temp.exe 삭제 시간: 2015-09-25 06:32:20 UTC

– OfficeHelp.exe 분석
[그림 19] py2exe 바이너리
[그림 19] py2exe 바이너리

[그림 19]와 같이 IDA를 이용하여 “OfficeHelp.exe” 파일을 분석한 결과, 파이썬 코드를 PE 바이너리로 변경하는 py2exe로 작성된 것을 확인할 수 있다.

[그림 20] py2exe 디컴파일
[그림 20] py2exe 디컴파일

[그림 20]과 같이 py2exe로 생성된 .exe 실행파일에서 .pyc 파일을 추출하는 도구인 “unpy2exe”를 이용하여 OfficeHelp.exe 파일에 포함된 파이썬 파일을 추출한다. 추출된 pyc 파일은 파이썬 바이트코드 디컴파일러인 “easy python decompiler”를 이용하여 원본 스크립트(.py)형태로 복원이 가능하다.

[그림 21] 복구한 악성 파이썬 파일
[그림 21] 복구한 악성 파이썬 파일

[그림 21]과 같이 pyc 파일이 디컴파일되면 원본 스크립트 형태의 코드(Popup.py)를 확인할 수 있다.

[그림 22] Blowfish 암호 코드
[그림 22] Blowfish 암호 코드

코드를 분석한 결과 랜섬웨어가 사용한 암호 알고리즘는 “Blowfish”인 것을 알 수 있다. 정확한 모드가 명시되어 있지 않아 해당 모듈에 대한 문서를 확인한 결과, Default로 ECB 모드가 설정된다는 것을 확인할 수 있다. (문제 3)

(문제 3) 랜섬웨어가 사용한 암호 알고리즘과 모드는 무엇인가요? (암호 알고리즘_모드)
[그림 23] OfficeHelp.exe 실행창
[그림 23] OfficeHelp.exe 실행창

OfficeHelp.exe 파일을 실행한 화면은 [그림 23]과 같다.

[그림 24] 시그니처 전송코드
[그림 24] 시그니처 전송코드

실행된 OfficeHelp.exe 파일의 “보내기” 버튼을 누르면 서버에서 랜섬웨어가 실행된 PC별로 각각의 key값을 관리한다. 그리고 입금을 했을 경우 각 PC별로 복호화 할 때 사용하는 key를 돌려주는 방식임을 확인 할 수 있다.

[그림 25] 시그니처 생성코드
[그림 25] 시그니처 생성코드

[그림 25]와 같이 시그니처 값은 각 PC의 MAC 주소(“mac”)와 볼륨 시리얼번호(“volsn”)를 조합하여 생성한다.

[그림 26] 볼륨 시리얼 번호
[그림 26] 볼륨 시리얼 번호
[그림 27] 맥(MAC) 주소
[그림 27] 맥(MAC) 주소

볼륨 시리얼번호와 MAC 주소는 FTK Imager에서 확인한 “\Windows\System32\config” 디렉토리 내에 존재하는 레지스트리 파일을 추출한 뒤 레지스트리 분석 도구인 “REGA”를 이용해서 확인을 할 수 있다. 확인 결과 각각의 값은 다음과 같다.

– 볼륨 시리얼 번호: 139153635 (0x84B50E3), 08 4B 50 E3
– MAC 주소: 24-0A-64-DE-C5-0A

확인한 MAC 주소와 볼륨 시리얼번호를 이용해 시그니처를 생성하고 “보내기” 버튼을 눌렀을 때 발생하는 패킷을 이용해 전송을 시도했지만 KEY값을 정상적으로 반환해 주지 않았다. 하지만 웹 서버의 취약점을 통해 데이터베이스를 분석하는 과정에서 KEY값을 찾을 수 있었고, 랜섬웨어가 특정 파일을 암호화하는 방식, 암호화 키를 관리하는 방식 그리고 공격 대상 시스템에 대한 시그니처를 생성 하는 방식을 확인할 수 있다.

3. 추가내용

3.1 웹 서버(http://poworks.com) – 취약점 분석

OfficeHelp.exe 파일을 분석한 결과, 해당 파일은 웹 서버에서 key값을 요청해서 받아온다. 실제 웹 서버에 접속을 하면 악의적인 목적을 가진 사이트보다는 마치 정상적으로 운영이 되는 사이트로 보인다.

[그림 28] show 파라미터 논리연산 결과
[그림 28] show 파라미터 논리연산 결과

해당 사이트의 여러 링크 중 [그림 28]과 같이 파라미터를 전달하는 페이지에서 “Blind SQL Injection”이 될 것으로 예상이 되는 공격 벡터를 찾았다. “show” 파라미터와 함께 간단한 논리 연산을 더해 넣으면 논리 연산에 따라 다른 결과가 나오고 이를 통해 “Blind SQL Injection” 공격을 시도할 수 있다. 1은 2보다 작기 때문에 “1>2(거짓)”라는 논리 연산에서는 아무 글도 출력되지 않고 “Sorry This topic is no longer available”이라는 메시지가 출력된다. 하지만, “1<2 (참)”에서는 정상적으로 글을 출력한다. 때문에 해당 벡터에 “Blind SQL Injection”을 통해 데이터베이스, 테이블, 컬럼의 이름을 확인 할 수 있다.

[그림 29] 데이터베이스명 추출 파이썬 코드 (extract_db.py)
[그림 29] 데이터베이스명 추출 파이썬 코드 (extract_db.py)
[그림 30] 데이터베이스명 추출결과
[그림 30] 데이터베이스명 추출결과

앞에서 분석한 결과에서 알 수 있듯이 랜섬웨어를 암호화(복호화)하기 위해서는 Key가 필요하다. 그래서 KeyDB가 가장 유력한 DB명으로 유추할 수 있다.

[그림 31] 테이블명 추출 파이썬코드(extract_tb.py)
[그림 31] 테이블명 추출 파이썬코드(extract_tb.py)
[그림 32] 테이블명 추출결과
[그림 32] 테이블명 추출결과

이 후 KeyDB와 관련된 모든 테이블명을 “information_schema”에서 추출하는 코드는 [Figure 31]과 같고 [Figure 32]에서 6개의 table명을 확인 할 수 있다. 이 중 악성코드가 감염된 날짜가 “2015년 9월 25일”이라는 것을 감안하면, 랜섬웨어를 심은 해커는 수 많은 사람에게 악성코드를 심고 키를 관리해야 하기 때문에 테이블을 월, 년도 별로 나눴을 가능성이 높다. 그래서 Key Table은 1509월을 의미하는 kt1509임을 유추 할 수 있고, 그 안에서 Key값들을 확인 할 수 있다. (문제 8)

(문제 8) 박부장 PC의 문서를 암호화한 키가 저장되어 있는 데이터베이스명, 테이블명은 무엇인가요? (DBNAME_TABLENAME) 답 : KeyDB_kt1509

3.2 웹 서버(http://poworks.com) – 키 추출

이전에 확인한 MAC 주소와 볼륨 시리얼번호를 이용하여 “보내기”버튼을 누르면 발생하는 패킷과 동일하게 전송을 시도했지만 Key값을 정상적으로 반환해 주지 않았다. 이 부분을 해결하기 위해 앞에서 찾은 SQL Injection 취약점을 활용했다. “KeyDB”가 Key값이 저장된 DB이고, “kt1509” 테이블에 “flag, signature, keystr” 라는 컬럼이 있다는 것을 알고 있다. 때문에 “Blind SQL Injection”을 통해 우리가 만든 시그니처 값에 맞는 key값을 추출했다.

[그림 33] 시그니처 16진수값(HEX)
[그림 33] 시그니처 16진수값(HEX)
[그림 34] 복호화 Key 추출
[그림 34] 복호화 Key 추출
공격 시도 결과 문자열로 전송이 되지 않는 문제가 있어서 해당 문자열을 16진수로 변환 값으로 “SQL Injection”을 시도했다. 이 결과 DB에서 직접 복호화를 할 수 있는 Key를 얻는데 성공했다. (문제 9)

(문제 9) 박부장 PC의 문서를 암호화한 키는 무엇인가요?
답: d8f13049cda1b0fa73d5707c750622b7

3.3 암호화된 문서 파일 복구

Popup.py 분석에서 랜섬웨어가 암호화하는 문서 확장자 대상(pdf, hwp, docx, pptx, xlsx)과 암호화 방식을 파악했다. 이 때 암호화된 파일은 원본 파일 확장자에 “_enc” 문자열이 추가된 형태로 저장된다. 그래서 FTK Imager로 침해 대상 파일 시스템을 마운트하여 *_enc 형식의 파일을 추출하였고 해당 파일 목록은 다음과 같다.

\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\PDFSigQFormalRep.pdf_enc
\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\IDTemplates\ENU\AdobeID.pdf_enc
\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\IDTemplates\ENU\DefaultID.pdf_enc
\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\IDTemplates\KOR\AdobeID.pdf_enc
\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\IDTemplates\KOR\DefaultID.pdf_enc
\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\plug_ins\Annotations\Stamps\Words.pdf_enc
\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\plug_ins\Annotations\Stamps\ENU\Dynamic.pdf_enc
\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\plug_ins\Annotations\Stamps\ENU\SignHere.pdf_enc
\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\plug_ins\Annotations\Stamps\ENU\StandardBusiness.pdf_enc
\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\plug_ins\Annotations\Stamps\KOR\Dynamic.pdf_enc
\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\plug_ins\Annotations\Stamps\KOR\Hanko.pdf_enc
\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\plug_ins\Annotations\Stamps\KOR\SignHere.pdf_enc
\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\plug_ins\Annotations\Stamps\KOR\StandardBusiness.pdf_enc
\Program Files (x86)\Adobe\Acrobat Reader DC\Resource\ENUtxt.pdf_enc
\Program Files (x86)\Hnc\HOffice9\Bin\Hwp\DAISY\DaisyStyle1.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Bin\Hwp\DAISY\DaisyStyle2.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Bin\Hwp\Toolbox\Preset\memo_preset.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Bin\Hwp\Toolbox\Preset\textart_preset.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Book\Book1.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Book\Book2.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Book\Book3.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Book\Book4.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Book\Book5.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Letter\Letter1.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Letter\Letter2.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Letter\Letter3.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Letter\Letter4.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Letter\Letter5.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Paper\Paper1.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Paper\Paper2.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Paper\paper3.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Present\Present1.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Present\Present2.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Present\Present3.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Present\Present4.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Present\Present5.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Report\Report1.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Report\Report2.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Report\Report3.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Report\Report4.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Thesis\Thesis1.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Thesis\Thesis2.hwp_enc
\Program Files (x86)\Hnc\HOffice9\Shared\HwpTemplate\Style\Kor\Thesis\Thesis3.hwp_enc
\Users\KAB\Documents\Sample9\BlogForm_BookReview.hwp_enc
\Users\KAB\Documents\Sample9\BlogForm_MovieReview.hwp_enc
\Users\KAB\Documents\Sample9\BlogForm_Recipe.hwp_enc
\Users\KAB\Documents\Sample9\calendar_monthly.hwp_enc
\Users\KAB\Documents\Sample9\calendar_year.hwp_enc
\Users\KAB\Documents\Sample9\classical_literature.hwp_enc
\Users\KAB\Documents\Sample9\eMarketing.hwp_enc
\Users\KAB\Documents\Sample9\Hyper(hwp2014).hwp_enc
\Users\KAB\Documents\Sample9\interview.hwp_enc
\Users\KAB\Documents\Sample9\NewYear_s_Day.hwp_enc
\Users\KAB\Documents\Sample9\request.hwp_enc
\Users\KAB\Documents\Sample9\shortcut.hwp_enc
\Users\KAB\Documents\Sample9\sungeo.hwp_enc
\Users\KAB\Documents\Sample9\Textmail.hwp_enc
\Users\KAB\Documents\Sample9\treatise sample.hwp_enc
\Users\KAB\Documents\Sample9\Trifold_Brochure.hwp_enc
\Users\KAB\Downloads\8월 1주차 회의록.hwp_enc
\Users\KAB\Downloads\8월 3주차 회의록.hwp_enc
\Users\KAB\Downloads\9월 1주차 회의록.hwp_enc
\Users\KAB\Downloads\9월 3주차 회의록.hwp_enc
\Users\KAB\Downloads\업무협조서신.docx_enc
\Users\KAB\Downloads\프로젝트 개선사항.pdf_enc
\Users\KAB\Downloads\프로젝트 개선사항2.pdf_enc
\Users\KAB\Downloads\프로젝트 개선사항3.pdf_enc
\Users\KAB\Downloads\프로젝트 설계서.pdf_enc
\Windows\ShellNew\EXCEL12.XLSX_enc
\Windows\ShellNew\PWRPNT12.PPTX_enc

파일명(“*_enc”)으로 검색한 결과 랜섬웨어에 의해 총 70개 문서파일이 암호화된 것으로 확인됐다. 그러나 파일의 내용을 확인한 결과, 70개 중 3개 파일은 데이터가 암호화되지 않았다. 결과적으로 총 67개 문서 파일이 랜섬웨어에 의해 암호화 됐다. (문제 2)

(문제 2) 박부장 PC에서 랜섬웨어에 의해 암호화된 파일을 모두 몇개인가요?

4. 대응 방안

해당 침해 사고에서 공격자가 추가 악성행위를 위해 설치해둔 “OfficeHelp.exe” 파일 분석을 통해 암호화 방식 및 공격자 소유 웹 서버의 주소를 확보할 수 있다. 추가로 웹 서버에 존재하는 취약점을 이용해 랜섬웨어가 데이터를 암호화하는데 이용한 키 값을 얻을 수 있다. 획득한 키 값을 이용한 복호화 코드는 다음과 같다.

[그림 35] 암호화된 파일 복호화 코드
[그림 35] 암호화된 파일 복호화 코드
[그림 36] 암호화된 파일 복호화
[그림 36] 암호화된 파일 복호화
[그림 37] 복호화된 문서파일
[그림 37] 복호화된 문서파일
복호화 코드를 이용해 랜섬웨어에 의해 암호화된 67개 파일을 복호화하고 문서 내용 확인을 통해 정확하게 복호화 된 것을 확인 할 수 있다.

5. 후기

qualifiers

결과적으로 본선에는 진출하지 못해서 아쉽지만, 예선 종료 후 최선을 다해서  보고서까지 작성했기때문에 그 과정에서 배우는 것도 많고 좋은 멤버들과 즐겁게 대회를 마무리 할 수 있었습니다. 같이 문제풀이한 멤버들에게 수고했다는 말과 함께 문제 출제한 Deok9 에게도 좋은 문제 내느라 고생했다는 한 마디 남기고 갑니다. 본선 대회까지 잘 마무리되었으면 하네요~

 


 

[Reference]

  1. https://namu.wiki/w/%ED%99%94%EC%9D%B4%ED%8A%B8%ED%96%87%20%EC%BD%98%ED%85%8C%EC%8A%A4%ED%8A%B8
  2. http://dailysecu.com/news_view.php?article_id=1817