KOROMOON

착한 사마리아인이 되고 싶습니다.

12/28/2019

APT20 그룹이 사용한 XServer 백도어 분석


( 1 ) APT20 그룹 설명



< APT20 그룹에 해킹된 피해 국가 >

12월 19일에 NCC 그룹의 일원인 IT 보안회사 Fox-IT 사에서 제공한 보고서에서 APT(Advanced Persistent Threat) 그룹 "APT20"의 활동을 자세히 설명하는 보고서를 발표함.
( 링크 : https://resources.fox-it.com/rs/170-CAK-271/images/201912_Report_Operation_Wocao.pdf , 
https://drive.google.com/open?id=1IpIcKpSL5JFGLM1IM-REitAFB6OlK7iw )

간첩 목적을 가지고 중국 정부를 위해 일하는 중국인 그룹으로 추정됨.

피해국은 10개 이상에서 발견되었으며 정부 기관, 관리 서비스 제공 업체(MSP), 에너지, 의료 및 첨단 기술 분야가 포함됨.
지난 2년 동안 해당 그룹은 암호를 훔치고 2단계 인증을 우회하여 다른 악의적인 활동을 수행하였으며 정부가 지원한 해킹 그룹으로 집중 관리와 풍부한 자금 지원으로 해킹팀 발자취를 찾는데 어려움이 있음.

보고서에 따르면 APT20 그룹의 운영 방식에 대한 자세한 내용은 아래와 같음.

- 합법적인 채널을 통한 액세스 기반으로 대부분 활동을 수행함.
- 백업 목적으로 추가 액세스 방법을 유지할 수 있음.
- 그들은 네트워크를 통해 이동하며 특권 액세스 권한을 가진 직원의 워크스테이션을 직접 처리함.
- 이러한 시스템에서 비밀번호 저장소(암호 관리자)의 콘텐츠는 직접 대상이 되고 검색됨.
- 가능한 한 파일 시스템 기반의 포렌식 흔적을 제거하여 조사하는데 어려움이 있음.
- 위의 내용을 바탕으로 공격자는 데이터 유출, 시스템 파괴, 액세스 유지 및 추가 대상으로의 이동 목표를 효율적으로 달성할 수 있음.
- 해킹 작업에 사용하는 도구와 기술이 비교적 단순하여 전체적으로 탐지 레이더 아래에 머물 수 있음.

해당 보고서를 보면 단순한 방식을 기반으로 배울만한 것들이 많아 공부하길 바람.




( 2 ) XServer 백도어 설명


해당 보고서 안에 사용된 툴 중에 XServer 백도어에 대한 설명은 다음과 같음.


XServer 백도어는 PowerShell 을 사용하여 시스템에서 실행되는 C#으로 작성된 사용자 정의 백도어임.

일반적으로 Base64 방식으로 인코딩되어 zlib 로 압축됨.
주로 포트 25667과 47000 을 사용하며 0.0.0.0 주소로 바인딩되어 인터넷에서 액세스가 가능함.
그러나 주로 내부 네트워크에서 사용하기 위해 개발됨.

두 가지 주요 기능이 있므며 하나는 간단한 백도어 기능을 제공하는 것이고 다른 하나는 프록시 기능을 하는 것임.

프록시 기능은 감염된 여러 시스템을 통한 프록시를 지원함.

XServer 가 시작되면 들어오는 연결을 기다림.

수신된 명령 패킷에 따라 해당 연결의 프록시 연할을 하거나 백도어 세션을 시작함.
XServer 백도어가 지원하는 명령 패킷 목록은 아래와 같음.


바이트
설명
0x0500
SOCKS5 프록시
0x17XX
프록시 체인과 IP 주소 및 포트 목록이 뒤따름.
두 번째 바이트는 프록시 체인의 길이를 결정함.
0x1800
TLS-wrapped 명령 및 제어 세션
< XServer 백도어가 지원하는 명령 패킷 목록 >


XServer 백도어의 SOCKS5 프록시 기능은 매우 간단한 구현(인증되지 않음)으로 들어오는 연결과 요청된 대상 간에 데이터를 프록시함.

프록시 체인 기능을 사용하는 경우 연결 클라이언트는 홉 목록을 바이트 인코딩 방식으로 IP 및 포트 번호로 제공함.
XServer 는 목록에서 하나의 IP와 포트를 가져오고 다음 홉은 다른 IP 와 포트를 가져옴.
거기서부터 들어오는 클라이언트와 다음 홉 사이의 모든 트래픽이 프록시됨.

명령 및 제어 세션을 시작하면 세선이 TLS 로 업그레이드되고 XServer 는 TLS 클라이언트 역할을 하여 특정 SNI "root" 를 요청함.


TLS 연결을 성공적으로 설정한 후 XServer 는 피해자 유형("WIN" 문자열로 하드코딩됨) 및 백도어 현재 디렉토리를 응답함.

백도어 명령을 실행할 수 있으며 자세한 설명은 아래와 같음.


ID
설명
200
디렉토리 목록 검색
201
다운로드 파일
202
업로드 파일
204
삭제 파일
205
실행 명령
206
타임 아웃 시간 얻기 (자동 종료 기능)
207
타임 아웃 시간 설정 (자동 종료 기능)
208
디렉토리 변경
209
프록세스 목록 (구현되지 않았으며 기능이 비어 있음)
210
현재 디렉토리 얻기
211
SOCKS5 프록시 켜거나 끄기
999
Ping
< XServer 백도어에서 지원하는 백도어 명령/기능 >


다운로드 명령에는 몇 가지 추가 기능이 있음.

예를 들어 파일 전송 속도 설정을 지원함.
이렇게 하면 한번에 전송되는 데이터의 양이 제한되고 간헐적으로 sleep 상태가 됨.
XServer 백도어 프로토콜은 실제로 DEFLATE를 사용하여 대부분의 통신을 압축하지만 다운로드 명령에는 파일 전송에 대한 압축을 생략할 수 있음.

XServer 백도어를 통해 파일을 업로드할 때 실제로는 파일 이름으로 이동하기 전에 임시 파일 이름으로 저장됨.

임시 파일 이름은 단순히 ".CT" 확장자가 붙은 의도된 파일 이름임.

명령 실행 기능은 두 가지 다른 방법도 구현함.

첫 번째 방법은 ShellExecute Windows API 를 사용하는 반면 다른 방법은 실행되는 모든 명령에 대해 새로운 cmd.exe 프로세스를 생성함.
생성된 모든 cmd.exe 는 다음 템플릿을 따름.

cmd.exe /c cd /d <current working directory> & <command to be executed>


사용되는 작업 디렉토리는 C:\Windows\Temp 폴더에서 일관되게 사용함.


해시유형
해시값
MD5
8de3b2eac3fa25e2cf9042d1b952f0d9
SHA1
23b1c6b81fd7d4d6ea0bc81109ce886a45967180
SHA256
6972ba198ed0d30de9f66be5777ecdba2d657078f138325ee6db225c20b29e6e
< XServer 백도어 해시값 >



( 3 ) XServer 백도어 트래픽 분석



< 운영자와 XServer 백도어 간의 네트워크 트래픽 >

< 프록시 체인 기능을 활용한 XServer 트래픽의 네트워크 스트림 >


먼저 SOCKS5 프록시가 IP 와 포트를 설정함. (위 화면 10.120.3.178 - 0a 78 03 b2, 25667 - 64 43)


XServer 가 성공적으로 응답하며 추가 트래픽이 이 호스트로 프록시됨.

운영자는 이제 CMD 0x18 로 명령 및 제어 기능을 시작함.

10.120.3.178 에저 동작 중인 XSever 는 TLS 소켓으로 업그레이드하고 SNI Root 와 함께 ClientHello 를 보내서 응답함.

운영자는 적절한 ServerHello 를 보내 응답함.
TLS handshake 가 완료되고 이제 모든 명령 및 제어 트래픽이 TLS 를 통해 터널링됨.



( 4 ) Snort 탐지룰


서버에서 클라이언트로 프록시전송 REPLY OK값과 ERROR값을 전송 시 각각 탐지함.


alert tcp any !1080 -> any any (msg:"KOROMOON_XServer Backdoor ProxyTransmit REPLY_OK"; dsize:10; content:"|05000001000000000000|";)


alert tcp any !1080 -> any any (msg:"KOROMOON_XServer Backdoor ProxyTransmit REPLY_ERROR"; dsize:10; content:"|05050001000000000000|";)




참고 사이트 : 
https://www.fox-it.com/en/news/whitepapers/operation-wocao-shining-a-light-on-one-of-chinas-hidden-hacking-groups/
https://github.com/fox-it/operation-wocao/blob/master/suricata.rules



============================================================

본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.

댓글 없음:

댓글 쓰기