최근에 팔로알토 네트웍스 Unit 42는 Sofacy 그룹(AKA APT28, Fancy Bear, STRONTIUM, Pawn Storm, Sednit)이 사용하는 “DealersChoice”라는 새로운 익스플로잇 공격 플랫폼에 대한 보고서를 발표했습니다.  원래 게시글에서 개요를 살펴보았듯 DealersChoice 익스플로잇 공격 플랫폼은 악성 RTF 문서를 생성하는데, 이 문서는 결국 임베디드 OLE Word 문서를 사용합니다. 이 OLE Word 문서에는 Adobe Flash의 취약점을 이용하도록 설계된 임베디드 Adobe Flash(.SWF) 파일이 포함되어 있습니다.

최초 보고에서 저희는 다음과 같은 두 가지 변종을 찾아냈습니다.

  1. 변종 A: 페이로드와 함께 패키지 처리된 Flash 익스플로잇 코드가 포함된 독립형 변종.
  2. 변종 B: 익스플로잇 코드를 온디맨드 방식으로 로드하고 그 시점에는 작동하지 않는 것으로 보였던 모듈형 변종.

그 이후 저희는 DealersChoice 익스플로잇 공격 플랫폼이 생성하는 무기화된 문서의 추가 샘플을 수집할 수 있었습니다. 이 최신 추가 샘플은 모두 변종 B의 샘플입니다. 이 샘플 중 두 개에 작업 명령 및 제어 서버가 있어 공격과 관련된 추가 아티팩트를 수집 및 분석할 수 있었습니다.

2016년 10월 Adobe는 CVE-2016-7855에 대처하기 위해 Adobe 보안 공고 APSB16-36을 발표했습니다. 2016년 11월 초에 Microsoft는 CVE-2016-7255에 대처하기 위해 Microsoft 보안 공고 MS16-135를 발표했습니다.

둘 다 다른 연구자들이 Sofacy 그룹과 관련된 것으로 본 제로 데이 취약점에 대한 활발한 공격에 대응하기 위한 것이었습니다. 저희의 분석뿐 아니라 추가 보고 역시 Adobe Flash 취약점 CVE-2016-7855에 대한 익스플로잇 코드가 DealersChoice를 사용해 전달되었음을 알려줍니다. 내부 테스트 역시 팔로알토 네트웍스 Traps 엔드포인트 에이전트의 고객들이 새로운 익스플로잇 코드로부터 보호를 받고 있음을 보여줍니다.

개입: 라이브 C2 서버 찾기

앞서 올린 DealersChoice 관련 블로그 게시물에서 저희는 변종 B가 피해자 호스트에서 실행될 때 어떤 단계를 거치는지 알아냈지만, 그때 찾아낸 명령 및 제어(C2) 서버와 교신할 수는 없었습니다.

이후에 저희는 완전히 가동하고 활성화된 C2 서버 두 개(versiontask[.]com 및 postlkwarn[.]com)를 찾아냈습니다. 이 서버들은 저희가 블로그에 설명한 것과 똑같은 단계를 따랐습니다. 즉 메모리에 추가 Flash 익스플로잇 코드를 로드한 후 연결된 페이로드도 메모리에 로드하는 방식입니다. 그림 1은 피해자와 C2 간 교신의 워크플로우를 자세히 보여줍니다.

dealerschoice2_1

그림 1 DealersChoice의 워크플로우

변종 B 내부의 ActionScript는 특히 악성 SWF 파일 및 페이로드를 획득할 목적으로 C2 서버와 교신합니다. 이 절차는 시스템 정보와 피해자의 Adobe Flash Player 버전이 담긴 C2 서버에 대한 초기 비콘으로 시작됩니다. 그림 2는 ActionScript가 C2 서버로 전송한 비콘을 보여줍니다.

dealerschoice2_2

그림 2 DealersChoice가 C2 서버로 전송한 초기 비콘

C2는 DealersChoice의 ActionScript가 추가 HTTP 요청 및 그 요청에 대한 응답의 복호화와 같은 향후 작업에서 변수로 사용할 문자열로 초기 비콘에 응답합니다. 그림 3은 비콘에 대한 C2 서버의 응답, 특히 k1, k2, k3 및 k4 값을 포함한 응답을 보여줍니다.

dealerschoice2_3

그림 3 비콘에 대한 C2의 응답은 데이터 복호화에 필요한 DealersChoice 토큰 및 키를 제공합니다

그 다음에 ActionScript는 그림 4에서와 같이 C2 응답 데이터의 k1 변수를, 악성 SWF 파일을 획득하기 위해 C2 서버로 전송된 HTTP 요청 내에서 토큰으로 사용합니다.

C2 서버는 ActionScript가 k3 변수의 값을 사용하여 복호화할 데이터로 이 응답에 반응합니다.

활성화된 C2 서버들은 CVE-2015-7645(2016년 10월 Adobe 보안 공고 APSA15-05를 통해 해결됨)를 공격한 변종 A 샘플 내에서 발견된 것과 동일한 악성 SWF 파일을 변종 B에 제공하였습니다.

c42a0d50eac9399914090f1edc2bda9ac1079edff4528078549c824c4d023ff9
45a4a376cb7a36f8c7851713c7541cb7e347dafb08980509069a078d3bcb1405

dealerschoice2_4

그림 4 악성 SWF 파일을 획득하여 Adobe Flash Player의 익스플로잇 공격을 위한 DealersChoice의 HTTP 요청

악성 SWF 파일을 받은 변종 B는 그림 5와 같이 페이로드를 획득하기 위해 k2 변수를 토큰으로 사용하여 HTTP 요청을 전송합니다. C2는 변종 B가 k4 변수의 값을 키로 사용하여 복호화할 데이터로 이 응답에 반응합니다. 그 결과 얻게 되는 복호화 데이터에는 셸코드와 셸코드가 복호화 및 실행하는 페이로드가 포함되어 있습니다.

dealerschoice2_5

그림 5 익스플로잇 공격에 성공하자마자 실행할 셸코드 및 페이로드를 획득하기 위한 DealersChoice의 HTTP 요청

활성화된 C2 서버 versiontask[.]com 및 postlkwarn[.]com은 페이로드를 복호화 및 실행하는 셸코드를 제공하였습니다. 두 경우 모두 페이로드는 시스템에 저장되는 임베디드 DLL을 추출하여 복호화하는 Trojan 로더였습니다.

5dd3066a8ee3ab5b380eb7781c85e4253683cd7e3eee1c29013a7a62cd9bef8c fa8b4f64bff799524f6059c3a4ed5d169e9e7ef730f946ac7ad8f173e8294ed8

두 경우 모두 시스템에 저장된 DLL은 Carberp 소스 코드를 사용하는 Sofacy 도구의 변종입니다.

82213713cf442716eac3f8c95da8d631aab2072ba44b17dda86873e462e10421 3ff1332a84d615a242a454e5b29f08143b1a89ac9bd7bfaa55ba0c546db10e4b

Seduploader 도구의 두 가지 변종은 appservicegroup[.]com 및 joshel[.]com의 서로 다른 백업 C2 도메인과 함께 apptaskserver[.]com의 공통 C2 도메인을 공유합니다.

감춰둔 무기: 피해자 지문 분석

변종 B의 활성화된 C2 서버를 분석하는 과정에서 저희는 C2 서버가 피해자 지문에 따라 서로 다른 익스플로잇 코드를 로드한다는 가설을 테스트해보고 싶었습니다.  저희는 C2 서버에 서로 다른 응답을 제공함으로써 이를 테스트하였습니다.

먼저 미국 캘리포니아 주에 있는 VPN에서 C2 서버에 요청을 전송하였으나 서버는 이 요청에 응답하지 않았습니다. 그 다음에 중동에 위치한 VPN에 연결하여 동일한 요청을 전송하였는데, 이 경우 C2 서버는 악성 SWF 및 페이로드로 응답하였습니다. 이러한 사실은 Sofacy 그룹이 지리적 위치를 사용하여 목표물의 위치와 일치하지 않는 위치에서 발신된 요청을 걸러낸다는 것을 암시합니다.

그 다음에 C2 테스트를 위해 여러 개의 요청을 전송했는데, 그때마다 서버는 서로 다른 k1, k2, k3 및 k4 변수로 응답하였습니다. 이는 서버가 각 인바운드 요청에 대해 이러한 값들을 무작위로 선택한다는 것을 암시합니다.

C2 서버 로직에 대한 추가 테스트를 위해 저희는 운영 체제 및 Flash Player 버전에 대해 서로 다른 값을 포함한 요청을 생성했습니다. CVE-2016-7855에 취약한 최신 Flash Player 버전인 23.0.0.185로 설정된 Adobe Flash Player 버전으로 C2 서버에 HTTP 요청을 전송하자 서버는 바로 그 취약점을 이용해 압축 SWF 파일(SHA256: c993c1fe10299162357196de33e4953ab9ab9e9359fa1aea00d92e97e7d8c5f2c)로 응답했습니다.

끝으로 저희는 피해자가 macOS 시스템임을 암시하면서 C2 서버에 요청을 전송하였습니다. 그러자 C2 서버는 이전과 동일한 악성 SWF 파일과 Windows 페이로드로 응답하였습니다. 이는 Sofacy 그룹이 피해자의 운영 체제 유형을 확인하는 데 DealersChoice를 사용하고 있지 않음을 암시합니다.

모든 경우에 C2 서버가 전달한 페이로드는 Seduploader의 변종(SHA256: 4cbb0e3601242732d3ea7c89b4c0fd1074fae4a6d20e5f3afc3bc153b6968d6e)을 설치하는 Trojan 로더(SHA256: 3bb47f37e16d09a7b9ba718d93cfe4d5ebbaecd254486d5192057c77c4a25363)이고,설치된 Seduploader의 변종은 akamaisoftupdate[.]com의 C2 서버를 사용합니다.

상대 속셈 파악: 유인 문서

이러한 DealersChoice의 파상 공격과 관련해 여섯 건의 문서가 수집되었습니다. 이 공격은 모두 변종 B인 것으로 보이는데, 이전의 파상 공격에서 저희가 관찰한 것과 유사한 미끼를 사용하고 있었습니다. 그 여섯 건의 파일명은 다음과 같습니다.

  • Operation_in_Mosul.rtf – 모술에 주둔 중인 터키 군대에 관한 글
  • NASAMS.doc – 리투아니아 국방부의 노르웨이제 미사일 방어 시스템 구매에 관한 글의 사본
  • Programm_Details.doc – 한 유럽 국가의 국방부를 목표로 한 문서로서, 런던에서 개최될 예정인 사이버 위협 정보 회의의 일정에 관한 사본
  • DGI2017.doc – 한 중앙 아시아 국가의 외교부를 목표로 한 문서로서, 런던에서 열릴 방어 지리 공간 정보 회의 의제에 관한 내용
  • Olympic-Agenda-2020-20-20-Recommendations.doc – 2020년 올림픽 관련 협정의 세부 정보를 담은 문서
  • ARM-NATO_ENGLISH_30_NOV_2016.doc – 아르메니아 공화국과 NATO 간 협정의 개요를 정리한 문서

dealerschoice_figure_6

그림 6. 현재 진행 중인 파상 공격에서 수집된 유인 문서

최초 DealersChoice 공격과 달리 이 문서들은 부가적인 난독화 레이어에 추가하기 위해 발췌 또는 위조된 메타데이터를 사용하였습니다. 그 중 NASAMS.doc과 Programm_Details.doc 두 문서는 Last Saved By(마지막으로 저장한 사람) 필드에 공통된 고유 사용자 이름을 사용하였습니다. 뿐만 아니라 무기화된 문서들은 모두 저희가 전에 보고한 OfficeTestSideloading 기법을 계속 사용하였습니다. 이것은 Sofacy 그룹이 피해자 호스트에 대한 지속성을 유지할 뿐 아니라 Microsoft 제품군에 구축된 성능 테스트 모듈을 사용하여 DLL 파일을 사이드로드하기 위한 수단으로 지난 여름부터 사용하기 시작한 기법이었습니다.

파일명 작성자 마지막으로 저장한 사람 주제 SHA256
Operation_in_Mosul.rtf Robert Tasevski —- 모술 주둔 터키 군대 f5d3e827…
NASAMS.doc Антон Гладнишки pain 노르웨이제 미사일 방어 시스템 1f81609d…
Programm_Details.doc Laci Bonivart pain 회의 일정 1579c7a1…
DGI2017.doc Невена Гамизов Невена Гамизов 회의 일정 c5a389fa…
Olympic-Agenda-2020-20-20-Recommendations.doc 관리자 사용자 2020년 올림픽 관련 권장 사항 13718586…
ARM-NATO_ENGLISH_30_NOV_2016.doc 사용자 사용자 NATO 협정 73ea2cce…

 

무기화된 문서의 1단계 C2 도메인 여섯 개는 모두 고유 등록자 이메일에 의해 등록되었습니다. Versiontask[.]com과 Uniquecorpind[.]com은 완전히 새로운 인프라로 보이며, 이전에 관찰된 Sofacy 그룹 캠페인과는 아티팩트를 공유하지 않고 있습니다.

유형 도메인 등록일 등록자 이메일
1단계 C2 Versiontask[.]com 2016-10-24 dalchi0@europe.com
1단계 C2 Uniquecorpind[.]com 2016-10-25 yasiner@myself.com
1단계 C2 Securityprotectingcorp[.]com 2016-08-19 ottis.davis@openmailbox.org
1단계 C2 Postlkwarn[.]com 2016-11-11 fradblec@centrum.cz
1단계 C2 adobeupgradeflash[.]com 2016-11-22 nuevomensaje@centrum.cz
1단계 C2 globalresearching[.]org 2016-11-18 carroz.g@mail.com

DealersChoice가 전송한 Seduploader 페이로드의 2단계 C2 도메인 여섯 개가 확인되었습니다.

유형 도메인 등록일 등록자 이메일
Seduploader C2 Joshel[.]com 2016-11-11 germsuz86@centrum.cz
Seduploader C2 Appservicegroup[.]com 2016-10-19 olivier_servgr@mail.com
Seduploader C2 Apptaskserver[.]com 2016-10-22 partanencomp@mail.com
Seduploader C2 Akamaisoftupdate[.]com 2016-10-26 mahuudd@centrum.cz
Seduploader C2 globaltechresearch[.]org 2016-11-21 morata_al@mail.com
Seduploader C2 researchcontinental[.]org 2016-12-02 싱크홀링됨

1단계 C2 도메인과 아주 유사하게도, 싱크홀링되지 않은 2단계 C2 도메인 다섯 개는 최근에 등록된 것이었고 Sofacy 그룹이 이전에 사용하지 않은 고유 등록자 이메일 주소를 사용하였습니다. 그러나 이 도메인들은 모두 Sofacy 그룹과 흔히 연관된 이름 서버인 ns*.carbon2u[.]com과 ns*.ititch[.]com을 사용하였습니다. akamaisoftupdate[.]com 도메인은 이 도메인을 이전 Sofacy 그룹 캠페인에 다시 연결시켜주는 부가적인 아티팩트를 드러냈습니다. 수동 DNS 데이터를 근거로 저희는 89.45.67.20으로 분석되는 akamaisoftupdate[.]com을 발견하였습니다. 동일한 C 클래스 서브넷에서는 Sofacy 그룹이 사용하는 것으로 잘 알려진 도메인인 updmanager[.]net으로 분석된 89.45.67.189를 발견하였습니다.

securityprotectingcorp[.]com 도메인 역시 이전 Sofacy 그룹 인프라와 연계된 것으로 밝혀졌습니다. 이 도메인은 몇 달 전에 등록되었지만 등록자 이메일 주소를 분석한 결과, 이 주소가 microsoftsecurepolicy[.]org를 등록하는 데도 사용되었음을 알 수 있었습니다. 저희는 수동 DNS 데이터를 사용하여 이 도메인이 다른 몇 개의 Sofacy 그룹 관련 도메인과 함께 싱크홀인 40.112.210.240으로 분석된다는 것을 알아냈습니다. 싱크홀링된 해당 도메인들 중 몇 개는 Sofacy 그룹이 수년 동안 Azzy 또는 XAgent와 같은 다중 도구에 대한 C2로 사용하거나 피싱 사이트를 호스팅하여 목표물로부터 자격 증명을 수집하기 위해 사용하는 등 다목적으로 사용해왔습니다.

 

그림 7 DealersChoice 인프라 도해

결론

현재 Sofacy 그룹은 DealersChoice 도구, 특히 변종 B를 적극적으로 사용하여 관심 목표물을 공격하고 있는 것이 명백합니다. Flash의 최근 패치 처리된 취약점에 대해 전송된 익스플로잇 코드(제로 데이 공격에서 사용됨)에서 증명된 바와 같이, 우리는 멀웨어가 어떻게 익스플로잇 공격 방법에 유연성을 제공하며 그 자체로 플랫폼이 될 수 있는지 알 수 있습니다. DealersChoice를 위해 새 인프라가 생성된 것처럼 보일 수 있지만, 과거에 보았듯이 Sofacy 그룹은 이전 캠페인에 사용한 아티팩트를 재사용하는 경향이 있고, 여기에는 예외가 없습니다. 팔로알토 네트웍스 고객은 더 많은 내용을 학습할 수 있고 다음과 같은 방법을 통해 보호를 받습니다.

CVE-2016-7855가 제로 데이 취약점이었다 할지라도 팔로알토 네트웍스 고객은 그림 8과 같이 Traps 엔드포인트 에이전트로 보호를 받는다는 점에 유념하십시오.

그림 8 CVE-2016-7855 익스플로잇 공격을 차단하는 팔로알토 네트웍스 Traps

침해 지표

문서 해시:

f5d3e827c3a312d018ef4fcbfc7cb5205c9e827391bfe6eab697cc96412d938e
1f81609d9bbdc7f1d2c8846dcfc4292b3e2642301d9c59130f58e21abb0001be
1579c7a1e42f9e1857a4d1ac966a195a010e1f3d714d68c598a64d1c83aa36e4
c5a389fa702a4223aa2c2318f38d5fe6eba68c645bc0c41c3d8b6f935eab3f64
137185866649888b7b5b6554d6d5789f7b510acd7aff3070ac55e2250eb88dab
73ea2ccec2cbf22d524f55b101d324d89077e5718922c6734fef95787121ff22

DealersChoice C2:

Versiontask[.]com
Uniquecorpind[.]com
Securityprotectingcorp[.]com
postlkwarn[.]com
adobeupgradeflash[.]com
researchcontinental[.]org

Seduploader C2:

Appservicegroup[.]com
Apptaskserver[.]com
Akamaisoftupdate[.]com
Joshel[.]com
globaltechresearch[.]org
researchcontinental[.]org