국내 기업을 타겟으로 유포 중인 코발트 스트라이크

코발트 스트라이크(Cobalt Strike)는 상용 침투 테스트 도구이다. 기업이나 기관의 네트워크 및 시스템에 대한 보안 취약점을 점검하기 위한 목적으로 사용 가능한 도구로서 침투 테스트 각 단계별로 다양한 기능들을 지원한다. 하지만 크랙 버전이 공개됨에 따라 다양한 공격자들에 의해 악성코드로서 사용되고 있으며, 특히 다수의 랜섬웨어 공격자들이 내부 시스템 장악을 위한 중간 단계로써 사용하고 있는 사례가 늘고 있다. 2020년 11월, 코발트 스트라이크의 소스 코드가 유출되었고 최신 크랙 버전도 유포됨에 따라 더 많은 공격자들에게 사용될 것으로 보여 국내도 각별히 주의가 필요하다.

[그림 1] 코발트 스트라이크를 이용한 공격 흐름
[그림 1] 코발트 스트라이크를 이용한 공격 흐름

최근 ASEC 분석팀은 코발트 스트라이크 해킹 툴에 의한 공격을 모니터링하던 중 3월 11일에 국내 기업에서 코발트 스트라이크가 유포된 것을 확인하였다. 피해 기업은 특정 솔루션 개발 및 공급하는 중소기업으로, 초기 감염 방법은 확인되지 않았지만 파워쉘(powershell) 프로세스가 공격자 서버(5.34.178.203)에서 “0a3b4f.css”라는 파일을 다운로드 하는 것을 확인하였다.

[그림 2] 인코딩된 파워쉘 스크립트 파일(0a3b4f.css)
[그림 2] 인코딩된 파워쉘 스크립트 파일(0a3b4f.css)

이 “0a3b4f.css”라는 파일은 파워쉘 스크립트로 SecureString으로 인코딩된 스크립트이며 디코딩 시 아래와 같다.

[그림 3] 디코딩된 파워쉘 스크립트(일부)
[그림 3] 디코딩된 파워쉘 스크립트(일부)

해당 스크립트는 코발트 스트라이크 클라이언트에서 ‘Stager’라 불리는 페이로드 생성 방법을 선택할 시 기본으로 제공되는 스크립트 형태이다. 이는 Base64와 XOR(0x35) 인코딩을 사용하며 디코딩된 쉘코드를 메모리에 로드한다.

[그림 4] 64bit 쉘코드(내부 C2 확인 가능)
[그림 4] 64bit 쉘코드(내부 C2 확인 가능)

확인된 쉘코드는 64bit 쉘코드로 wininet api를 사용해 공격자 주소에 접속하여 백도어 역할인 비컨(beacon)을 다운로드한다. 다운로드된 비컨은 파일로 생성되지 않고 Reflective DLL을 사용해 메모리에 로드되어 백도어 기능을 수행한다.

[그림 5] 다운로드 받은 비컨(백도어)에서 확인된 정보
[그림 5] 다운로드 받은 비컨(백도어)에서 확인된 정보

[그림 5]는 비컨의 설정 정보로 메모리에 로드된 PE를 추출하여 SentinelOne의 파싱 도구를 사용한 결과이다. 이는 포트 번호, C2 주소, 접속 주기, Malleable C2 기능으로 위장할 Host, 인젝션 기능을 수행할 시 대상 프로그램 등을 확인할 수 있다.

공격자는 Malleable C2 기능을 사용하여 HTTP 프로토콜의 호스트(Host) 도메인을 ‘www.microsoft.com’으로 설정하였다. 이는 정상적인 호스트로 위장해 네트워크 관리자의 눈을 피하기 위한 것으로 보인다.

[그림 6] 캡쳐한 패킷 정보
[그림 6] 캡쳐한 패킷 정보

해당 C2 정보는 ‘Virustotal’에서 확인 시 어느 곳도 차단하고 있지 않음을 확인할 수 있다.

[그림 7] ‘Virustotal’ 공격자 C2 검색 결과
[그림 7] ‘Virustotal’ 공격자 C2 검색 결과

안랩 제품에서는 코발트 스트라이크를 활용한 첫 침투 단계부터 내부 확산 시 사용되는 비컨 백도어에 대해 프로세스 메모리 기반의 탐지 방식과 행위 기반의 탐지 기술을 보유하고 있다.

[IOC 정보]

  • 공격자 C2 주소 : http[:]//5.34.178.203/diststd/0a3b4f.css
  • (메모리 내부)백도어 비컨 DLL : 68093cd0e8d07a0b070b6bc3cf2e25d1 (Trojan/Win32.RL_Cometer.R325811, 엔진버전 : 2020.02.14.00)

4.4 5 votes
별점 주기
guest
0 댓글
Inline Feedbacks
View all comments