포티넷, HWP 문서 사용자 대상 멀웨어 공격 발견

추적이 어려운 무료 클라우드 서비스 ‘pCloud’를 C&C서버로 사용

Seoul, Korea - Sep 27, 2017


고성능 네트워크 사이버 보안 솔루션의 글로벌 리더인 포티넷코리아(지사장 조현제, www.fortinet.com/kr)는 오늘, 자사 보안연구소인 포티가드랩(FortiGuard Labs)이 HWP 문서 사용자 대상 멀웨어 공격을 발견했다고 밝혔다.

이번 공격은 이미 알려진 CVE-2015-2545 Encapsulated PostScript(EPS) 취약성을 사용하는 한글 워드 프로세서(Hangul Word Processor, HWP) 문서였다. 

HWP는 우리나라 정부 기관에서 많이 사용되며, 한국어 사용자를 스피어 피싱 대상으로 삼았다. 악성 문서 내용은 한국의 원전 및 노동 정책 등의 정치적 이슈로 사용자를 유인한 것으로 보인다.

이 공격은 추적이 어려울 뿐만 아니라, 데이터 스토리지와 통신을 제공하는 무료 클라우드 서비스인 ‘피클라우드(pCloud)’를 이용했으며, 수집한 샘플을 분석한 결과 ‘클라우드탭(CloudTap)’이라는 멀웨어가 나타난 지 1년이 넘은 것으로 나타났다.

악성문서에는 캡슐화 된 포스트 스크립트를 숨겼으며, 문서가 실행되면 스크립트가 실행되고 페이로드가 다운된다. 그리고 피해자 단말에 저장된 기밀문서를 검색하고, 브라우저에 저장된 자격 증명을 탈취하는 것으로 보인다.

또한 이 공격은 무료 클라우드 서비스인 ‘pCloud’를 C&C 서버로 사용하며, 타깃 사용자로부터 기밀문서와 자격증명을 탈취한 후 암호화해 저장한다. 무료 클라우드를 사용하면 C&C 서버 운영 비용을 줄일 수 있을 뿐 아니라 추적을 피할 수도 있다. 또한 ‘CloudTap’이라는 악성코드를 1년 이상 사용한 것으로 분석됐다. 

이번 공격의 주요 내용은 다음과 같다.                                               

JPEG 이미지에 숨겨진 페이로드

이 공격에서 사용한 두 문서에는 한국의 원자력 및 노동력 문제와 관련된 기사 발췌문이 들어 있었다.

캡슐화된 포스트스크립트 파일이 문서에 들어 있는데, 사실상 일반 사용자의 눈에는 전혀 보이지 않는다. HWP 문서의 모든 개체와 마찬가지로 zlib을 사용하여 압축을 풀어야 실제 쉘코드를 볼 수 있다. 결국, http://price365[dot]co[dot]kr/abbi/head0.jpg에서 실행 파일을 다운로드 하게 된다.

파일이 실행되면 JPEG 이미지 헤더가 포함된 다른 파일을 다운로드한다.

그림.2 다운로드 URL을 포함한 압축이 해제된 쉘코드 바이너리

예상했던 대로 이 이미지에는 실행 바이너리가 있었고, 간단한 싱글바이트 xor 키로 암호화되어 있었다. 이렇게 가장하는 목적은 일부 멀웨어 방지 시스템이 스캔과 샌드박스 절차를 멀웨어에서 흔히 사용하는 실행 파일에만 적용하여 서비스를 최적화하는 특징을 악용하기 위해서다.

FortiGuard는 클라우드 서비스 사용에 기초하여 CloudTap으로 임베딩된 멀웨어를 찾아낸다. 이 클라우드 서비스에 대해서는 글의 뒷부분에서 설명할 것이다.

또한, 이 멀웨어의 이전 샘플도 발견했다. 그 중 하나가 2016년 초에 컴파일된 디버그 버전인 것으로 미루어 보았을 때 이 멀웨어가 벌써 1년 이상 떠돌아다녔다는 것을 짐작할 수 있다.

표적 찾기

멀웨어 공격자는 대개 시스템 환경을 조사하여 흥미로운 공격 표적을 찾는다. 그리고 네트워크에 더욱 깊이 침투하거나 가치가 높은 시스템에서 단순히 리소스를 찾아내는 등 다음 행보를 결정한다. 이 공격에서는 페이로드가 문서를 검색하고 브라우저가 저장한 자격 증명을 추출하려고 시도한다.

페이로드 실행 파일은 키 문자열을 바꾸어 놓기만 하고 분석 방지 기술을 전혀 사용하지 않은 채 바로 작업에 들어간다.

프로세스와 특정 확장자가 붙은 문서 목록화

멀웨어는 시스템의 모든 실행 중인 프로세스를 나열하고 피해자가 사용 중인 애플리케이션 중에 흥미로운 것이 있는지 살펴보거나 안티바이러스 제품을 찾아낸다.

그런 다음 “.hwp”, “.doc”, “.docx”, “.pdf”, “.ppt”, “.pptx” 등의 확장자가 붙은 문서를 찾기 시작한다. 루트 드라이브를 제외하고 시스템에서 발견된 모든 고정 및 이동식 드라이브의 디렉터리 전체를 검색한다.

루트 드라이브를 검색할 때는 일반적으로 문서를 저장하는 디렉터리만 확인한다(예를 들어, 내 문서/문서, 바탕화면, 최근 문서 등). 그러나 앞서 진행했던 과정과는 달리 여기서 발견한 파일은 확장자에 제한을 두지 않는다.

지금은 문서 파일 경로 목록만 있기 때문에, 이 시점에서는 멀웨어 제작자가 어떤 정보에 관심이 있는지 알아내기 어렵다. 아마 위협 분자는 유출할 만한 기밀 정보가 있는 문서를 찾고 있거나 나중에 피싱에 이용할 만한 문서를 찾고 있는지도 모른다.

다양한 방법을 활용하여 자격 증명 추출

이 멀웨어는 여러 가지 기술을 활용하여 Microsoft Windows와 특정 브라우저가 저장한 자격 증명을 추출하려고 한다.

Internet Explorer에서 저장한 로그인 자격 증명을 알아내기 위해 CredEnumerateW API로 자격 증명을 끼워 맞추는 동시에 “Microsoft_WinInet_”으로 시작하는 항목으로만 결과를 필터링한다. 그런 다음, CryptUnprotectData를 적용하고 GUID “abe2869f-9b47-4cd9-a358-c22904dba7f7”을 암호 해독 엔트로피를 활용하여 자격 증명을 해독한다.

그 외에 IE가 자동 완성 자격 증명을 저장하는 데 사용하는 “Software\Microsoft\Internet Explorer\IntelliForms\Storage2” 레지스트리도 활용한다.

다음 브라우저로 넘어가기 전에, 멀웨어는 Windows Vault에서 자격 증명을 추출하려고 시도한다. Windows Vault도 Microsoft가 내장한 자격 증명 스토리지다. 이번에는 Vault Client Access Library(vaultcli.dll)를 활용한다.

마지막으로 Chrome 브라우저에서 자격 증명을 추출하기 시작한다. Chrome의 자격 증명은 :\Users\\Appdata\Local\Google\Chrome\User Data\Default에 로컬 저장된다.

무료 클라우드 서비스 pCloud를 C&C 서버로 활용

앞서 설명한 바와 같이, 공격자는 스위스 IT 회사인 pCloud AG가 개발한 클라우드 스토리지 서비스 pCloud를 활용한다. 이 클라우드는 2013년부터 서비스를 시작했으며, 가입하자마자 이메일 검증 절차 없이 무료 스토리지를 10GB 제공한다.

AES로 표적 데이터를 획득하고 암호화한 뒤에는 .dat라는 이름으로 파일을 작성하고 클라우드에 업로드한다. 게다가 훔친 데이터를 저장하는 공간으로 서비스를 악용할 뿐만 아니라 URL 목록에서 파일을 다운로드하도록 멀웨어에 지시한다.

클라우드 서비스를 C&C 서버로 활용하는 데는 여러 가지 장점이 있다. 우선, 설정이 매우 간편하고 이런 목적으로 사용하기에 충분한 기능을 갖춘 무료 클라우드 서비스가 무수히 많다. 그러므로 공격자는 직접 웹 서버를 설치하거나 다른 사람의 웹 서버에 침투할 필요가 없다. 그뿐만 아니라 클라우드는 언제나 온라인 상태에서 액세스할 수 있다. 또한, 정보가 거의 없기 때문에 포렌식 조사에 착수하기에도 매우 복잡하다. 웹사이트에 침투하는 것과 달리, 클라우드는 포렌식 조사를 진행할 실제 기계도 없고 멀웨어의 흔적을 찾아낼 만한 웹 관리자도 없다. 게다가 이런 서비스 계정은 개인정보 보호정책의 보호를 받다. 특정 계정에 대한 정보가 필요할 때는 개인정보 보호정책이 걸림돌로 작용한다.

다음은 이 공격에서 pCLoud 계정에 등록하는 데 사용한 이메일 주소이다(일회용 포함). 이 목록은 처음 발견해서 기록한 이후로 확장 및 변경되었다.

•        szfmcyjl15wfe@pokemail.net

•        dribacukes@throwawaymail.com

•        silverbrown6767@yandex.com

•        laowinjintorres@yandex.co

•        wirecapital9090@yandex.com

•        longspairman@yandex.com

•        laowinjintorres@yandex.com

•        kduandql@yomail.info

•        applestorm8188@yandex.com

데이터 유출 및 깊은 침투

이 공격은 pCloud API를 사용하여 피해자 컴퓨터에서 쉽게 데이터를 업로드하고 감염된 시스템에 다른 도구나 멀웨어를 다운로드한다.

당연하겠지만, 파일 작업과 관련된 API를 사용하려면 먼저 로그인을 통해 서비스에서 세션 키를 얻어야 한다. 멀웨어는 계정 이메일과 비밀번호로 userinfo API를 사용하여 이후 API 호출에 사용할 세션 키를 얻으려고 시도한다. 아래 요청에서는 HTTPS를 사용하였으나, 요청을 상세하게 보여주기 위해 멀웨어가 강제로 HTTP를 사용하게 했다.

멀웨어는 앞서 얻은 세션 키를 사용하여 uploadfile API를 통해 암호화된 데이터가 포함된 파일을 클라우드 스토리지에 업로드한다. 데이터에는 다음 정보가 포함된다.

•        MAC 주소

•        실행 중인 프로세스

•        파일 목록

•        자격 증명

그 후 파일은 시스템에서 삭제됩니다.

멀웨어는 훔친 데이터를 업로드한 후, 나중에 다운로드할 .lst라는 이름의 파일을 찾다. 이 글을 작성하던 당시에는 파일 샘플을 얻을 수 없었다. 하지만 이를 통해 몇 가지 결론을 내릴 수 있다.

즉, 멀웨어가 다운로드하는 .lst 파일 이름에 있는 MAC 주소는 해당 MAC 주소를 가진 피해자만 이 파일을 받는다는 뜻입니다. 여기서 .lst 파일의 내용을 짐작할 수 있다. 나중에 이 파일에 다운로드 URL 목록이 들어 있는 것으로 확인되었는데, 이는 특정 피해자에 맞추어 작성한 것이다. 또한, 공격자가 앞서 수집한 데이터를 기반으로 특정 피해자만 선택한다는 것을 의미할 수도 있다. 어떤 경우라도 MAC 주소가 스푸핑되었다면, MAC 주소는 여전히 특정 표적과 연결된 고유한 식별자이기 
때문에 공격의 두 번째 단계를 예고하는 것일 수 있다. 이러한 가정은 이전 단계의 데이터 수집이 공격의 정찰 단계에 불과하고 피해자의 환경에 따라 다음 단계를 결정한다는 추측에 힘을 실어줍니다. 다운로더의 주요 기능은 다음과 같다.

멀웨어는 .lst 파일을 다운로드한 후에는 pCloud에서 삭제함으로써 멀웨어 분석 전문가/연구자들이 공격의 두 번째 단계를 알 수 없도록 차단한다. 다운로드가 실패하면 멀웨어는 5시간 동안 다시 시도한다. 5시간까지는 시스템에 남아 있다가 자체 종료한다. 지금은 이 공격이 피해자의 시스템에서 어떤 도구 또는 멀웨어를 사용했는지 추측만 가능할 뿐이다.

이 목록도 AES로 암호화되어 있으며, 멀웨어가 다운로드한 파일을 분석하는 방식을 기반으로 미루어 보면 새 줄로 구분한 URL 목록이 들어 있다. 최종적으로 멀웨어는 목록에 있는 모든 항목을 다운로드하고 실행한다.

해결 방법

1. Hacome에서 릴리스한 CVE-2015-2545 취약성 해결 패치를 적용한다.

2. Fortinet 보안 장비에서 구동되는 FortiGuard 안티바이러스 서비스는 악성 HWP 파일을 MSOFFICE/CVE20152545.HWP!exploit으로, 페이로드는 W32/Cloudtap.A!tr.pws로, 작성된 JPEG 파일은 DATA/CloudTap.JPG!tr.dldr로 탐지한다.

3. Fortinet 보안 장비에서 구동되는FortiGuard 웹 필터링 서비스는 모든 C&C 및 관련 URL을 차단한다.

4. FortiSandbox는 HWP 파일을 고위험군으로 분류한다.

결론

이 글에서는 표적화된 공격이 어떤 방식으로 점점 탐색을 회피하는지 보여줍니다. 공격자들은 공격의 흔적을 남기지 않도록 더욱 주의를 기울이고 있다. 이 블로그에서 설명했듯이 무료 클라우드 스토리지 서비스를 사용하는 장점을 결합해 보면, 점점 더 많은 멀웨어 공격이 간편한 무료 설정을 이용하기 시작하는 것도 당연하다.

포티넷

포티넷은 전세계 정부 조직, 서비스 제공업체, 대기업들의 보안을 책임지고 있다. 포티넷은 확장되고 있는 공격 면을 지능적인 방식으로 원활히 보호하며 현재는 물론, 미래의 경계 없는 네트워크에 대한 점차 커져가는 성능 요구사항을 충족시킬 수 있다. 오직 포티넷 보안 패브릭(Fortinet Security Fabric) 아키텍처만이 네트워크 어느 곳이든, 애플리케이션, 클라우드, 모바일 환경에 상관없이 ‘허점 없는 보안’을 제공함으로써 가장 중요한 보안 과제를 충족시킨다. 또한, 포티넷은 가장 많은 보안 어플라이언스를 출하한 전세계 출하량 1위 업체로 선정된 바 있다. 전세계 310,000개 이상의 고객들이 비즈니스 보안을 위해 포티넷을 신뢰하고 있으며, 보다 자세한 사항은 www.fortinet.com 및 www.fortinet.com/kr, 포티넷 블로그, 포티가드랩에서 확인할 수 있다.

Copyright © 2017 Fortinet, Inc. All rights reserved. The symbols ® and ™ denote respectively federally registered trademarks and unregistered trademarks of Fortinet, Inc., its subsidiaries and affiliates. Fortinet's trademarks include, but are not limited to, the following: Fortinet, FortiGate, FortiGuard, FortiManager, FortiMail, FortiClient, FortiCloud, FortiCare, FortiAnalyzer, FortiReporter, FortiOS, FortiASIC, FortiWiFi, FortiSwitch, FortiVoIP, FortiBIOS, FortiLog, FortiResponse, FortiCarrier, FortiScan, FortiAP, FortiDB, FortiVoice and FortiWeb. Other trademarks belong to their respective owners. Fortinet has not independently verified statements or certifications herein attributed to third parties and Fortinet does not independently endorse such statements. Notwithstanding anything to the contrary herein, nothing herein constitutes a warranty, guarantee, binding specification or other binding commitment by Fortinet, and performance and other specification information herein may be unique to certain environments. This news release contains forward-looking statements that involve uncertainties and assumptions, such as statements regarding technology releases. Changes of circumstances, product release delays, or other risks as stated in our filings with the Securities and Exchange Commission, located at www.sec.gov, may cause results to differ materially from those expressed or implied in this press release. If the uncertainties materialize or the assumptions prove incorrect, results may differ materially from those expressed or implied by such forward-looking statements and assumptions. All statements other than statements of historical fact are statements that could be deemed forward-looking statements. Fortinet assumes no obligation to update any forward-looking statements, and expressly disclaims any obligation to update these forward-looking statements.