2017년 9월 25일

위협 인텔리전스 팀

 

  본 분석 보고서는 어베스트 위협 분석 연구소에서 작성한 자료를 토대로 작성되었다.

 

 

보안 사고 및 관련 대응


  지난 9월 18일, 피리폼(Piriform)에서는 CCleaner v5.33.6162 및 CCleaner Cloud v1.07.3191 32비트 제품의 파일 변조를 확인하고 관련 조치 및 대응에 나섰다. 공격자의 추적 등을 위해 사법 당국과 공조하였고, 어베스트 위협 분석팀과 함께 CnC 서버 및 추가적인 공격을 분석하였다.


 

피리폼의 보안 사고 공지(2017년 9월 18일, 영문)

   https://www.piriform.com/news/blog/2017/9/18/security-notification-for-ccleaner-v5336162-and-ccleaner-cloud-v1073191-for-32-bit-windows-users

 

어베스트코리아의 보안 사고 공지(2017년 9월 18일, 한글)

   http://blog.avastkorea.com/1228

 

  피리폼은 보안 문제를 해결하는 CCleaner v5.34 및 CCleaner Cloud v1.07.33214 버전을 출시하였으며, 인증서의 신뢰성 문제를 해결하기 위해 이후 CCleaner v5.35.6210 버전을 9월 20일에 출시하였다. 참고로, 클라우드 버전은 중앙 관리가 되기 때문에 새로운 버전이 출시되면 자동으로 알려서 설치할 수 있다.

 

 

보안사고 이력 요약

 

● 7월  3일 - 피리폼 인프라 공격
● 7월 19일 - 어베스트에서 피리폼 인수 발표
● 7월 31일, 06:32 – 공격자가 CnC 서버 설치
● 8월 11일, 07:36 – 9월 15일 공격 준비(CCleaner 바이너리 및 CCleaner Cloud 바이너리) 등
● 8월 15일 – 피리폼에서 CCleaner v5.33 출시. CCleaner v5.33.6162 버전의 바이너리가 Floxif 악성코드에 감염
● 8월 20/21일 – Morphicsec 보아 제품에서 CCleaner의 악성 행위 포착, 악성 행위 중지로 인해 추가 분석 안함
● 8월 24일 – CCleaner Cloud v1.07.3191 출시, 동일 악성코드 감염된 상태
● 9월 10일, 20:59 – CnC 서버가 디스크 공간 부족으로 장애 발생, 데이터 수집 중지. 공격자는 원본 데이터베이스를 백업
● 9월 11일 - Morphissec 엔지니어로부터 고객사의 CCleaner 관련 활동에 대한 세부 로그 정보 공유
● 9월 12일, 07:56 – 공격자가 CnC 서버 삭제
● 9월 12일, 08:02 – 공격자가 CnC 서버 재설치
● 9월 12일 - Morphisec에서 어베스트와 Cisco로 CCleaner의 의심스러운 행위 통지. 어베스트에서는 관련 분석시작. 미국 사법기관에 통지. Cisco도 자체 조사 시작
● 9월 14일 – Cisco, 어베스트에게 분석 정보 통지
● 9월 15일 – 사법기관이 CnC 서버 압수
● 9월 15일 – 어베스트에서 CCleaner v5.34, CCleaner Cloud v1.07.3214 버전 출시. 악성코드 제거된 버전
● 9월 18일 – Cisco, Morphisec, 어베스트/피리폼에서 보안 사고 보고서 공개
● 9월 ??일 - ServerCrate에서 백업서버의 사본을 어베스트에게 제공

 

 

 

보안 사고 및 관련 대응

 

요약

 

  어베스트 위협 분석팀에서는 블로그를 통해 CCleaner 보안 사고에 대해 초기부터 적극적인 참여를 통해 분석을 진행하고 있다.

  앞서 언급한 보안 공지에서는 기초적인 분석자료와 함께, 추가적인 공격(Second Stage)이 실패했었다라는 취지의 내용이 포함되었다. 하지만, 아래의 추가 분석 내용을 토대로 검토한 결과, 특정 기술 기업 및 통신사를 대상으로 하는 APT(Advanced Persistent Threat, 지능형 지속 위협) 공격이라는 결론을 내렸다. 사실 CCLeaner는 기업이 아닌 개인이 주로 이용하는 제품이기 때문에 이용자를 직접적인 대상으로 공격하는 형태가 아니었으며, 특정한 대기업의 네트워크를 침입하기 위한 용도로 분석됐다.

Progress on CCleaner Investigation(2017년 9월 20일, 영문)

  https://blog.avast.com/progress-on-ccleaner-investigation

 

Avast Threat Labs analysis of CCleaner incident(2017년 9월 21일, 영문)

  https://blog.avast.com/avast-threat-labs-analysis-of-ccleaner-incident

 

 

소개

 

  CnC 서버와 통신을 주고받은 호스트의 정확한 목록을 확인할 수 있는 중요한 정보는 CnC 서버를 분석하여 얻을 수 있다. 이 호스트들이 실제 공격자가 공격을 실행하기 위해 초기 실행하는 2차 공격용(Second stage) 페이로드가 전송됐다.  호스트 목록은 CnC 서버의 데이터베이스에 저장되어 있었지만, 데이터베이스 손상으로 인해 약 3.5일치의 데이터만 수집되었다. 데이터베이스 손상의 원인은 9월 10일에 디스크 공간 부족으로 발생했으며, 공격자가 새로 데이터베이스를 생성하는 과정에서 데이터가 삭제된 것으로 추정된다.

 추가적인 분석을 통해 공격자가 새로 데이터베이스를 생성하기 전에 기존 데이터를 백업하여 다른 CnC 서버로 전송한 사실을 밝혀냈다. 어베스트 위협 분석 연구소와 미국 사법기관의 공조로 이러한 분석 작업이 진행됐다. 

  CnC 서버의 IP 주소는 216.126.225.163이었고, speccy.piriform.com에서 발생한 자가 서명 인증서(self-signed certificate)가 저장되었다. 서버는 CentOS 6.9 리눅스 배포판, Apache 2.2.15, PHP 5.3.3이 설치되어 있었다. 분석에 가장 핵심적으로 필요한 MySQL 데이터베이스는 9월 18일 이전으로 되돌려졌다. 백업 서버를 분석하여 9월 10일 19:03:18부터 9월 12일 9:58:47 UTC 간 약 40시간 정도의 데이터를 제외한 나머지 데이터베이스를 확보하였다. 참고로 이 시간은 초기 CnC DB의 손상시점부터 새로운 DB를 생성하는데 걸리는 시간으로 추정되며, CnC 서버가 그 기간동안 동작했는지 여부는 명확하지 않다.

  확보한 데이터베이스를 토대로 다음과 같은 중요한 사항을 확인하였다.

 

● CnC 서버에 접속한 연결 개수: 5,686,677 

   ● CnC 서버에 접속한 PC 개수: 1,646,536 (MAC 주소를 기준으로 중복 연결은 제외) 

   ● 2차 공격용 페이로드를 다운로드한 PC 개수: 40

 

 

2차 공격용 페이로드를 다운로드한 PC 및 관련 회사

 

  확보한 데이터베이스에서 가장 중요한 부분은 바로 “OK” 테이블로, 2차 공격용 페이로드를 성공적으로 다운로드한 PC의 목록을 저장하고 있다. 따라서, 악성코드로 실제 감염되어 추가적인 공격이 발생했는지에 대한 부분은 더 분석해야 알 수 있을 것으로 판단되지만, 하여튼 “감염된” 상태로 간주했다.

  아래 목록은 감염된 PC 개수 및 연관된 기업 및 도메인 목록이다.

  어베스트 위협 분석팀은 보안 사고에 대한 자세한 정보, 감염된 PC의 목록, 추가적인 IOC(Indicator of Compromise, 침해지표) 등을 위에 언급된 회사에게 제공하여 감염 및 올바른 대응 방안을 수립할 수 있도록 하기 위해 접촉한 바 있다.

  취약한 CCleaner를 이용하는 2백 27만여대 PC 가운데에서 단 40대(약 0.0018%)만 감염되었다는 점에서 APT 공격으로 볼 수 있다.

  도메인 목록은 SQL 데이터베이스에서 수집한 로그, 미리 정해 놓은 목록이 아닌 실제 CCleaner가 설치된 PC가 CnC 서버와 연결하는 과정을 통해 PC 호스트의 유형을 분석하는 등 시간이 지남에 따라 추가적으로 확인되었다. 참고로, 도메인 목록은 잠재적인 공격 대상으로 볼 수 있지만, 2차 공격용 페이로드가 실제로 다운되지는 않았다.

 

  로그에는 공격 대상으로 삼을 추가적인 유명 기업을 찾는 흔적도 있었지만, 통신사/ISP, 호스팅 업체, 도메인 관리 업체와 같은 유통망을 노리는 모습도 확인되었다.

  감염된 PC가 가장 많았던 cht.com.tw와 nsl.ad.nec.co.jp 회사(도메인)은 위의 목록에서 빠져 있는데 그 이유는 CnC 서버가 다운되었더 시점에 공격 대상 목록에서 실제로 빠져 있었기 때문이다. 공격자가 페이로드가 전송된 이후에 목록에서 해당 회사를 제외했다는 것을 의미한다.

 

 

 

공격자를 찾아서(Origin of attacker)

 

 

  앞서 공개한 블로그 글을 통해 CnC 서버에서 발견된 다양한 PHP 코드들, myPhpAdmin 로그, 기존 중국발 APT 공격에서 발견되었던 특정한 공격 형태의 유사성 등 다양한 실마리를 토대로 공격이 중국에서 시작되었을 것이라고 언급한 바 있다.

  문제는 이러한 지표 자체가 쉽게 속일 수 있다는 점으로, 공격자가 출처를 속이기 위해 약간만 수정하더라도 분석이 어려워지기 때문이다.

  어베스트 위협 분석팀은 약간 다른 방식으로 접근했다. CnC 서버로 직접 접속하는 횟수가 상대적으로 많다는 점을 알게 되었다. 서버에 접속하는 관리자는 CnC 서버에 총 83회, 백업 서버에는 17회에 달한다. 일반적으로 유지보수 측면에서는 접근하는 회수가 하루에 한번 정도로 적지만, 만약 손상된 데이터베이스를 복구하는 등 시스템의 모니터링하고 문제를 해결하는 과정과 같이 다양한 업무를 진행한다면 직접 접속하는 횟수가 늘 수 밖에 없다. 한편 문제가 해결된 토요일에는 몇번 정도, 일오일에는 전혀 연결하지 않았다는 점에서 이러한 가설에 의미를 둘 수 있다고 보여진다.

  이 가설을 토대로 관리자가 연결하는 시간대(UTC)를 분석하는 표로 작성하면 실제 공격자가 위치한 곳을 추정해 볼 수 있다고 본다.

 

  위 표를 잘 살펴 보면, 8시간 근무, 오후 또는 저녁 5~6시간 정도의 휴식, 이후 추가적으로 업무를 보는 전형적인 IT 근무자 패턴임을 알 수 있다.

  일반적으로 오전 8시, 9시에 업무를 시작하는 경우가 대부분이므로 이를 시간대에 적용해 보면 UTC+4 또는 UTC+5로, 시간대로 보면 공격자는 러시아, 중동/중앙아시아, 인도에 위치하고 있다고 볼 수 있다. 게다가 토요일과 일요일에는 전혀 연결하지 않았기 때문에 아라비아 국가는 아닌 것으로 볼 수 있다.(참고자료: 근무일, 주말 https://en.m.wikipedia.org/wiki/Workweek_and_weekend)

 

 

  한편 다양한 지역에 위치한 공격자 다수가 작전을 진행했었을 가능성도 충분히 있다고 보여진다.

  중국, 러시아, 인도 등에도 수많은 기술기업 및 통신사업자가 있지만 이번 공격의 목표로 포함되지 않았다는 점 또한 주목할 만한 부분이다.

 

 

조사 과정 및 앞으로의 방향

 

 

   어베스트 위협 분석팀은 이번 보안 사고에 대해 사법기관, 협력사, 침해사고에 특화된 전문 기업 등과 공조하여 계속 분석하고 있다. 또한 보안팀은 2차 공격용 페이로드에 연관된 모든 기업과 접촉하여 문제를 풀 수 있도록 공조할 예정이다. 사실 2차 공격용 페이로드가 다운로드되었다고 해서 해당 회사의 네트워크가 침해되었다고 보기는 어렵다. 하지만, 적절히 대응 및 조치할 수 있도록 충분한 조사가 필요하다고 보여진다. 어베스트 위협 분석팀에서는 2차 공격용 페이로드 이후에 다운로드된 페이로드 등에 대한 추가적인 분석을 진행할 예정이며, 새로운 소식이 나오면 관련 정보를 공개할 예정이다.

 

 

침해 지표(IOC)

 

파일(1차 공격)

04bed8e35483d50a25ad8cf203e6f157e0f2fe39a762f5fbacd672a3495d6a11 - CCleaner - installer (v5.33.0.6162)
0564718b3778d91efd7a9972e11852e29f88103a10cb8862c285b924bc412013 - CCleaner - installer (v5.33.0.6162)
1a4a5123d7b2c534cb3e3168f7032cf9ebf38b9a2a97226d0fdb7933cf6030ff - CCleaner - installer (v5.33.0.6162)
276936c38bd8ae2f26aab14abff115ea04f33f262a04609d77b0874965ef7012 - CCleaner - installer (v5.33.0.6162)
2fe8cfeeb601f779209925f83c6248fb4f3bfb3113ac43a3b2633ec9494dcee0 - CCleaner - installer (v5.33.0.6162)
3c0bc541ec149e29afb24720abc4916906f6a0fa89a83f5cb23aed8f7f1146c3 - CCleaner - installer (v5.33.0.6162)
4f8f49e4fc71142036f5788219595308266f06a6a737ac942048b15d8880364a - CCleaner - installer (v5.33.0.6162)
7bc0eaf33627b1a9e4ff9f6dd1fa9ca655a98363b69441efd3d4ed503317804d - CCleaner - installer (v5.33.0.6162)
a013538e96cd5d71dd5642d7fdce053bb63d3134962e2305f47ce4932a0e54af - CCleaner - installer (v5.33.0.6162)
bd1c9d48c3d8a199a33d0b11795ff7346edf9d0305a666caa5323d7f43bdcfe9 - CCleaner - installer (v5.33.0.6162)
c92acb88d618c55e865ab29caafb991e0a131a676773ef2da71dc03cc6b8953e - CCleaner - installer (v5.33.0.6162)
e338c420d9edc219b45a81fe0ccf077ef8d62a4ba8330a327c183e4069954ce1 - CCleaner - installer (v5.33.0.6162)
36b36ee9515e0a60629d2c722b006b33e543dce1c8c2611053e0651a0bfdb2e9 - CCleaner.exe (32-bit v5.33.0.6162)
6f7840c77f99049d788155c1351e1560b62b8ad18ad0e9adda8218b9f432f0a9 - CCleaner.exe (32-bit v5.33.0.6162)
a3e619cd619ab8e557c7d1c18fc7ea56ec3dfd13889e3a9919345b78336efdb2 - CCleanerCloud - installer (32-bit v1.7.0.3191)
0d4f12f4790d2dfef2d6f3b3be74062aad3214cb619071306e98a813a334d7b8 - CCleanerCloudAgent.exe (32-bit v1.7.0.3191)
9c205ec7da1ff84d5aa0a96a0a77b092239c2bb94bcb05db41680a9a718a01eb - CCleanerCloudAgentHealtCheck.exe (32-bit v1.7.0.3191)
bea487b2b0370189677850a9d3f41ba308d0dbd2504ced1e8957308c43ae4913 - CCleanerCloudTray.exe (32-bit v1.7.0.3191)
3a34207ba2368e41c051a9c075465b1966118058f9b8cdedd80c19ef1b5709fe - 1st stage payload DLL found in CCleaner
19865df98aba6838dcc192fbb85e5e0d705ade04a371f2ac4853460456a02ee3 - 1st stage payload DLL found in CCleanerCloud

 

 

파일(2차 공격)

dc9b5e8aa6ec86db8af0a7aa897ca61db3e5f3d2e0942e319074db1aaccfdc83 - 2nd stage payload DLL (GeeSetup_x86.dll)
a414815b5898ee1aa67e5b2487a11c11378948fcd3c099198e0f9c6203120b15 - loader of the 2nd stage payload (64-bit)
7ac3c87e27b16f85618da876926b3b23151975af569c2c5e4b0ee13619ab2538 - loader of the 2nd stage payload (32-bit)
4ae8f4b41dcc5e8e931c432aa603eae3b39e9df36bf71c767edb630406566b17 - inner DLL of the 2nd stage payload (64-bit)
b3badc7f2b89fe08fdee9b1ea78b3906c89338ed5f4033f21f7406e60b98709e - inner DLL of the 2nd stage payload (32-bit)
a6c36335e764b5aae0e56a79f5d438ca5c42421cae49672b79dbd111f884ecb5 - inner DLL of the 2nd stage payload (32-bit) 

 

 

CnC IP

216.126.225.148 – 1차 공격용 페이로드에 이용된 CnC 서버
216.126.225.163 – CnC 백업 서버

 

 

URL(2차 공격용 CnC 서버에서 수집)

 

 

DGA(1차 공격용 페이로드에서 이용)

ab8cee60c2d.com   - valid for 2017-08
ab1145b758c30.com - valid for 2017-09
ab890e964c34.com  - valid for 2017-10
ab3d685a0c37.com  - valid for 2017-11
ab70a139cc3a.com  - valid for 2017-12
ab3c2b0d28ba6.com - valid for 2018-01
ab99c24c0ba9.com  - valid for 2018-02
ab2e1b782bad.com  - valid for 2018-03
ab253af862bb0.com - valid for 2018-04
ab2d02b02bb3.com  - valid for 2018-05
ab1b0eaa24bb6.com - valid for 2018-06
abf09fc5abba.com  - valid for 2018-07
abce85a51bbd.com  - valid for 2018-08
abccc097dbc0.com  - valid for 2018-09
ab33b8aa69bc4.com - valid for 2018-10
ab693f4c0bc7.com  - valid for 2018-11
ab23660730bca.com - valid for 2018-12

 

 

윈도우 레지스트리

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WbemPerf\004 - used by the 2nd stage payload
HKLM\SOFTWARE\Piriform\Agomo\NID - used by the 1st stage payload
HKLM\SOFTWARE\Piriform\Agomo\TCID - used by the 1st stage payload
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WbemPerf\HBP - used by the 2nd stage payload
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WbemPerf\001 - used by the 2nd stage payload
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WbemPerf\002 - used by the 2nd stage payload
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WbemPerf\003 - used by the 2nd stage payload
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WbemPerf\004 - used by the 2nd stage payload

 

 

끝.

 

자료 출처

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by 문스랩닷컴