한글 EPS 취약점 노린 오래된 버전의 한글 사용자 대상으로 공격 시도

[보안뉴스 김영명 기자] 북한 해커조직 가운데 1곳인 레드아이즈(RedEyes) 공격그룹(APT37, ScarCruft)이 지난 1월 한글 EPS(Encapulated PostScript) 취약점(CVE-2017-8291)을 악용해 악성코드를 유포하는 정황이 확인됐다.

[보안뉴스 / 2.23.] 北 레드아이즈 해커조직의 최근 공격 분석했더니... 한글 EPS 취약점과 스테가노그래피 사용

안랩 ASEC 분석팀에 따르면, 레드아이즈(RedEyes) 그룹은 기업이 아닌 특정 개인을 대상으로 PC 정보뿐만 아니라 휴대전화 데이터까지 탈취하는 것으로 알려졌다. 이번 레드아이즈 그룹 공격 사례는 한글 EPS 취약점을 사용했다는 점과 스테가노그래피 기법을 이용해 악성코드를 유포했다는 점이 주요 특징이다.

공격에 사용된 한글 EPS 취약점은 이미 최신 버전의 한글 워드 프로세서에서는 패치된 오래된 취약점이다. 공격자는 사전에 공격 대상(개인)이 EPS를 지원하는 오래된 버전의 한글 워드 프로세서를 사용하는 것을 파악한 상태에서 공격을 시도한 것으로 보인다. 레드아이즈 그룹이 스테가노그래피 기법으로 악성코드를 유포한 사례는 과거에도 확인된 바 있다. 카스퍼스키(Kaspersky)는 2019년에 ScarCruft(RedEyes) 그룹이 사용한 다운로더 악성코드가 스테가노그래피 기법을 이용해 추가 악성코드를 다운로드했다는 내용을 공개했다.

[보안뉴스 / 2.23.] 北 레드아이즈 해커조직의 최근 공격 분석했더니... 한글 EPS 취약점과 스테가노그래피 사용

▲공유 메모리 섹션 이름 정보[자료=안랩 ASEC 분석팀]

안랩 ASEC 분석팀에서 최근 발견된 해당 공격을 레드아이즈 그룹으로 분류한 근거는 악성코드 다운로드를 위해 스테가노그래피 기법을 사용했다는 점과 C&C(명령제어) 서버 통신 유지(지속성)를 위한 자동 실행 관련 레지스트리 RUN 키 등록 명령어가 과거에 사용한 형태와 유사하기 때문이다.

레드아이즈 그룹은 PC 정보를 탈취하고 원격 제어를 수행하기 위해 파워쉘과 Chinotto 악성코드를 사용한다고 알려졌다. 그러나 이번 공격에서는 치노토(Chinotto) 악성코드와는 다르게 공유 메모리 섹션을 이용한 C&C 명령을 수행하는 악성코드가 새롭게 확인됐다. 안랩 ASEC 분석팀은 새롭게 확인된 악성코드에 대해 공유 메모리 섹션 이름을 인용해 M2RAT(Map2RAT)이라 명명했다.

ASEC 분석팀은 레드아이즈 그룹의 초기 침투(Initial Access), 방어 회피(Defense Evasion), 지속성 유지(Persistence), 그리고 새롭게 확인된 M2RAT 악성코드의 최신 명령 및 제어(Command Control)와 정보 유출(Exfiltration) 기법에 대해 집중 분석했다.

레드아이즈 그룹의 초기 침투를 보면 올해 1월 13일 ‘양식.hwp’라는 이름으로 한글 EPS 취약점(CVE-2017-8291) 공격 정황이 확인됐다. 분석 당시 HWP 문서는 수집되지 않았지만, 취약점을 유발하는 EPS 파일은 확보할 수 있었다는 설명이다.

[보안뉴스 / 2.23.] 北 레드아이즈 해커조직의 최근 공격 분석했더니... 한글 EPS 취약점과 스테가노그래피 사용

▲공격 시나리오 흐름도 및 ASD 인프라 로그(위부터)[자료=안랩 ASEC 분석팀]

EPS 파일은 일종의 그래픽 파일 형식으로써 어도비(Adobe)에서 만든 포스트스크립트(PostScript) 프로그래밍 언어를 이용해 그래픽 이미지를 표현하는 파일이다. EPS를 통해 고화질 벡터 이미지를 표현할 수 있으며, 한글 워드 프로세서는 EPS를 처리하기 위해 써드-파티 모듈(ghostscript)을 지원했다. 그러나 EPS 취약점을 이용한 APT 공격 등 악용사례가 증가하면서 개발사인 한글과컴퓨터에서는 EPS 처리 써드-파티 모듈을 제거했다.

[보안뉴스 / 2.23.] 北 레드아이즈 해커조직의 최근 공격 분석했더니... 한글 EPS 취약점과 스테가노그래피 사용

▲EPS 취약점 코드(‘양식.hwp’) 및 Stage 1. EPS 취약점을 이용한 쉘코드 실행 단계(위부터)[자료=안랩 ASEC 분석팀]

‘양식.hwp’ 파일에는 취약한 EPS 파일(CVE-2017-8291)이 포함됐으며, 사용자가 해당 문서 파일을 열람할 때 취약점에 의해 써드-파티 모듈에서 공격자의 쉘코드가 동작한다. 쉘코드는 공격자 서버(C&C)로부터 이미지(JPEG) 파일을 내려받고, 이미지 파일 내부에 존재하는 인코딩된 PE 파일을 복호화한다. 그리고 PE 파일을 %temp% 경로에 생성한 뒤 실행하는 기능을 수행한다.

‘방어 회피(Defense Evasion)’ 단계에서 쉘코드는 공격자 서버로부터 이미지 파일을 다운로드받아 추가 악성코드를 실행했다. 즉, 공격자는 악성코드를 이미지에 포함하는 스테가노그래피 기법을 사용했으며 이는 네트워크 탐지 회피를 위해 사용한 기법으로 추정된다. 공격자가 사용한 스테가노그래피 이미지 파일은 ‘wallup.net’이라는 바탕화면 이미지 제공 사이트에서 확보한 것으로 보인다. 이미지 파일은 정상 JPEG 헤더와 PE 파일 디코딩에 필요한 메타 데이터(XOR 키, 파일 사이즈), 인코딩된 PE 파일로 이뤄졌다.

[보안뉴스 / 2.23.] 北 레드아이즈 해커조직의 최근 공격 분석했더니... 한글 EPS 취약점과 스테가노그래피 사용

▲스테가노그래피 이미지 파일 및 스테가노그래피 이미지 파일 구성 정보(위부터)[자료=안랩 ASEC 분석팀]

세 번째로 ‘지속성 유지(Persistence)’ 단계에서 실행된 lskdjfei.exe는 공격자 서버와의 지속성 유지를 위해 ‘RyPO’ 명령어를 레지스트리 Run 키에 ‘HKCU\SOFTWARE\Microsoft\Windows \CurrentVersion\Run’ 경로로 등록한다. 레지스트리 Run 키에 등록되는 명령어는 2021년 카스퍼스키(Kaspersky)에서 공개한 ScarCruft(RedEyes) 그룹 보고서와 유사한 것으로 나타났다.

등록된 레지스트리 키에 의해 시스템이 부팅할 때마다 피해 호스트 PC에서는 파워쉘과 윈도 정상 유틸리티인 mshta가 실행된다. 분석 당시, mshta가 공격자 서버에서 내려받는 ‘1.html’ 파일은 내부에 JS(JavaScriprt) 코드를 포함한 HTA(HTML Application) 파일이 수집됐다. JS 코드는 파워쉘 명령을 실행하며 공격자 서버로부터 명령을 전달받아 실행하고, 결과를 전달하는 기능을 수행한다.

파워쉘이 공격자 서버 주소에 ‘U’ 파라미터를 추가해 컴퓨터 이름과 유저 이름을 전달하면 공격자 서버는 실행할 CMD 명령을 BASE64로 인코딩해 피해 호스트에 전달한다. 인코딩된 BASE64 명령어는 파워쉘이 다시 디코딩해 실행하고, 명령 실행 결과는 %temp%\vnGhazwFiPgQ 경로에 파일로 저장한다. 그리고 공격자 서버에 ‘R’ 파라미터를 추가해 명령 실행 결과를 BASE64로 인코딩한 상태로 전달한다.

[보안뉴스 / 2.23.] 北 레드아이즈 해커조직의 최근 공격 분석했더니... 한글 EPS 취약점과 스테가노그래피 사용

▲Stage 2. 복호화한 PE 파일 실행 단계(백도어 다운로드, 지속성 유지 추가) 및 지속성 유지 관련 파워쉘 코드[자료=안랩 ASEC 분석팀]

네 번째로, ‘M2RAT(Map2RAT)’ 단계에서 최종 실행되는 백도어는 explorer.exe에 인젝션돼 동작한다. 백도어의 주요 기능은 키로깅, 데이터(문서, 음성 파일) 유출, 프로세스 실행 및 종료, 화면 캡처 등 기본적인 원격 제어 악성코드의 기능을 수행한다.

[보안뉴스 / 2.23.] 北 레드아이즈 해커조직의 최근 공격 분석했더니... 한글 EPS 취약점과 스테가노그래피 사용

▲Stage 3. M2RAT 백도어 실행 단계[자료=안랩 ASEC 분석팀]

하지만 이번에 확인된 백도어 악성코드는 기존에 알려진 치노토(Chinotto) 악성코드와 명령 체계가 다르며 피해 시스템에 키로깅 데이터, 화면 캡처 기록을 저장하지 않고 공격자 서버로 전송해 피해 시스템에 유출 데이터 흔적을 남기지 않는 것이 특징이다. ASEC 분석팀은 이번에 새롭게 확인된 악성코드를 C&C 통신에 사용된 공유 메모리 섹션(FileInputMap2, ProcessInputMap2, CaptureInputMap2, RawInputMap2, RegistryModuleInputMap2, TypingRecordInputMap2, UsbCheckingInputMap2) 이름의 공통 부분을 인용해 M2RAT(Map2RAT)이라 명명했다.

M2RAT의 명령 및 제어(Command and Control) 서버에서 M2RAT의 C&C 통신 명령체계는 공격자 서버로부터 POST 메소드의 Body로 명령을 전달받는다. 해당 명령의 의미는 △OKR(최초 C&C 통신 접속 시에 전달받는 명령) △URL(C&C 업데이트를 위한 레지스트리 키 값 수정) △UPD(현재 접속 중인 C&C 업데이트) △RES(C&C 연결 종료(M2RAT 종료) △UNI(C&C 연결 종료(M2RAT 종료)) △CMD(키로깅, 프로세스 생성·실행 등 원격 제어 명령 수행)이다.

[보안뉴스 / 2.23.] 北 레드아이즈 해커조직의 최근 공격 분석했더니... 한글 EPS 취약점과 스테가노그래피 사용

▲M2RAT의 C&C 통신 캡처 화면(Fiddler)[자료=안랩 ASEC 분석팀]

M2RAT의 공격자 서버는 피해 호스트 식별을 위해 MAC 주소로 호스트를 관리한다. M2RAT에 감염될 경우 레지스트리 ‘HKCU\Software\OneDriver’ 경로의 ‘Version’ 값에 MAC 주소를 0x5C로 인코딩(XOR)해 저장한다. 인코딩된 MAC 주소 값은 공격자 서버에서 피해 호스트를 식별하는데 사용된다. 이때 레지스트리 키 경로는 ‘HKCU\Software\OneDriver’, 값 이름은 ‘Version’이며, 값은 ‘피해 호스트의 MAC 주소 XOR 인코딩(0x5C)한 값’이다.

공격자가 피해 호스트에 전달한 명령에 대한 결과 값은 공격자 서버의 ‘_인코딩된 MAC 주소 값_2’ 폴더에 저장되며, M2RAT이 피해 호스트의 화면을 캡처한 파일은 ‘_인코딩된 MAC 주소 값_cap’ 폴더에 저장된다.

[보안뉴스 / 2.23.] 北 레드아이즈 해커조직의 최근 공격 분석했더니... 한글 EPS 취약점과 스테가노그래피 사용

▲공격자 서버의 예시(서버 화면은 공격자 웹 서버와 유사하게 안랩의 분석 시스템에서 구축한 화면임)[자료=안랩 ASEC 분석팀]

이외에도, M2RAT은 공격자 서버 주소 정보를 MAC 주소와 같은 레지스트리 키 경로의 ‘Property’ 값에 0x5C로 XOR 인코딩해 저장한다. 이때 레지스트리 키 경로는 ‘HKCU\Software\OneDriver’, 값 이름은 ‘Property’이며, 값은 ‘공격자 서버 주소 XOR 인코딩(0x5C)한 값’이다.

추후 공격자는 공격자 서버 주소 업데이트를 위해 ‘URL’과 ‘UPD’ 명령을 M2RAT에 전달할 수 있다. ‘URL’ 명령은 새로운 공격자 주소를 레지스트리 키에 업데이트하기 위해 사용되는 명령이고, ‘UPD’ 명령은 현재 실행 중인 M2RAT의 공격자 서버 주소를 바꾸기 위한 명령이다.

M2RAT의 원격 제어 명령은 공격자 서버로부터 CMD 명령을 전달받아 이뤄진다. 기존에 레드아이즈 그룹이 사용한 것으로 확인된 치노토 악성코드의 경우 쿼리 스트링(Query string) 방식으로 원격 제어 명령을 수행했지만, M2RAT의 경우 공유 메모리 섹션을 생성해 공격자 서버로부터 원격 제어 명령을 실행한다. 이는 공격자가 초기 침투 단계에서 스테가노그래피 기법을 사용한 것과 같이 명령 정보를 POST의 보디로 은닉해 네트워크 탐지를 회피하기 위한 것으로 보인다.

CMD 명령은 공유 메모리를 통해 전달되며, 메모리 섹션의 이름 정보는 △RegistryModuleInputMap2(추가 모듈 실행 결과 전송(ex. 휴대전화 데이터 유출 모듈)) △FileInputMap2((A:\ ~ Z:\) 드라이브 파일 탐색, 파일 생성·쓰기, 파일 읽기, 파일 시간 변경) △CaptureInputMap2(현재 피해 호스트 PC 화면 캡처) △ProcessInputMap2(프로세스 리스트 확인, 프로세스 생성·종료) △RawInputMap2(ShellExectueExW API를 사용해 프로세스 실행) △TypingRecordInputMap2(키로깅 데이터 유출) △UsbCheckingInputMap2(USB 데이터 유출(hwp, doc, docx, xls, xlsx, ppt, pptx, cell, csv, show, hsdt, mp3, amr, 3gp, m4a, txt, png, jpg, jpeg, gif, pdf, eml)) 등이다.

M2RAT의 정보 유출 기능은 피해 호스트 화면 캡처, 프로세스 정보, 키로깅, 데이터(문서, 음성 파일) 유출이 있다. 먼저 화면 캡처의 경우 공격자가 명령을 내리지 않더라도, 주기적으로 캡쳐해 공격자 서버에 전송하며, 서버에서는 ‘_인코딩된 MAC 주소 값_cap’ 폴더에 ‘result_[숫자]’로 저장한다. 이외에 모든 데이터 유출 정보들은 공격자 웹서버의 ‘_인코딩된 MAC 주소 값_2’ 폴더에 저장된다.

특히, 이동식 디스크나 공유 폴더에 민감한 데이터인 문서와 음성 녹음 파일이 있을 경우 %TEMP% 경로에 파일을 복사해 Winrar(RAR.exe)로 비밀번호를 압축한 뒤 결과를 공격자 서버에 전송한다. 이때 데이터 복사 폴더 경로는 ‘%Temp%\Y_%m_%d_%H_%M_%S // (ex. %TEMP%\연_월_일 _시_분_초)’이며, 파일 확장자는 hwp, doc, docx, xls, xlsx, ppt, pptx, cell, csv, show, hsdt, mp3, amr, 3gp, m4a, txt, png, jpg, jpeg, gif, pdf, eml 등이다. 압축 파일 생성 경로는 %TEMP% 폴더 경로와 같이 ‘a -df -r -hp dgefiue389d@39r#1Ud –m1 ‘압축 파일 생성 경로’ ‘압축 대상 경로’’다.

사용된 RAR.exe 옵션은 △a(압축) △df(압축 후 파일 삭제) △r(압축 파일 복구) △hp(파일 데이터와 헤더 암호화) △m(압축 레벨 설정) 등이다.

안랩 ASEC 분석팀은 M2RAT과 통신하는 정보 유출 악성코드를 추가로 확인할 수 있었다고 밝혔다. 해당 악성코드는 휴대전화에 저장된 문서 파일을 탈취해 M2RAT의 RegistryModuleResultMap2라는 이름의 공유 메모리 섹션에 유출 데이터를 전송하는 닷넷 파일로 확인됐다.

[보안뉴스 / 2.23.] 北 레드아이즈 해커조직의 최근 공격 분석했더니... 한글 EPS 취약점과 스테가노그래피 사용

▲M2RAT에 유출 데이터 전송하는 코드 및 휴대전화 데이터 탈취 대상(확장자) 정보[자료=안랩 ASEC 분석팀]

레드아이즈 해커조직은 북한 정부의 지원을 받는 것으로 추정되는 APT 조직이다. 인권 운동가, 기자, 탈북 주민 등 개인을 대상으로 공격을 수행하는 것으로 알려졌으며, 공격의 목표는 정보 유출인 것으로 보인다. 이러한 APT 공격은 방어하기 매우 까다롭고, 특히 레드아이즈 그룹은 개인을 대상으로 주로 공격하는 것으로 알려져 있어 기업이 아닌 개인은 피해를 인지하는 것조차 어려울 수 있다.
[김영명 기자(boan@boannews.com)]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>