연구(Insikt)

로그 코발트 스트라이크 서버를 식별하기 위한 다중 방법 접근법

게시일: 2019년 6월 18일
작성자: Insikt Group®

insikt-group-logo-updated-3-300x48.png

Click Here 를 클릭하여 전체 분석 내용을 PDF로 다운로드하세요.

레코디드 퓨처는 여러 코발트 스트라이크 서버 탐지 방법이 공개된 이후 야생의 코발트 스트라이크 서버에 대한 변화를 평가했습니다. 분석에서는 다양한 방법론을 평가하고 이를 기반으로 결합 분석을 수행하여 사용자가 탐지를 피하기 위해 구성을 변경했는지 확인했습니다. 레코디드 퓨처® 플랫폼, BinaryEdge, Censys, Rapid7 Lab의 오픈데이터, 쇼단, 그레이노이즈, 리버싱랩스, 바이러스토탈, 파사이트 DNS 및 기타 오픈소스 등이 있습니다. 이 보고서는 대응 시간을 개선하고자 하는 조직과 정기적으로 코발트 스트라이크 사고를 처리하는 분석가에게 가장 큰 관심을 끌 것입니다.

Executive Summary

코발트 스트라이크는 보안 전문가가 표적 공격과 지능형 공격자의 익스플로잇 후 조치를 에뮬레이션하는 데 사용할 수 있도록 개발된 익스플로잇 플랫폼입니다. 이 도구는 워싱턴 DC에 본사를 둔 Strategic Cyber LLC에서 개발 및 라이선스를 취득한 것으로, 이 회사의 불법적인 사용 여부를 모니터링하고 있으며 수출 통제의 대상이 됩니다. 그럼에도 불구하고, 코발트 스트라이크 프레임워크는 메타스플로잇 프로, 코어 임팩트 등과 같은 다른 유료 제품군을 포함하여 이러한 유형의 다양한 소프트웨어 중에서 인기 있는 옵션이 되었습니다. 라이선스가 없는 사용자와 범죄 행위자들이 사용하는 플랫폼 중 유일한 것은 아니지만, 코발트 스트라이크는 초기 악용에 이 도구를 사용한 APT32와 이 프레임워크에 크게 의존해 온 코발트 그룹을 비롯한 다양한 위협 그룹이 사용했습니다.

보안 테스터, 더 나아가 악의적인 공격자들이 Cobalt Strike 플랫폼을 많이 사용한다는 점을 고려하면 기업 네트워크 자산에 대한 Cobalt Strike 서버 연결을 인식해야 할 필요성은 분명합니다.

탐지 방법론이 공개되었음에도 불구하고 레코디드 퓨처는 코발트 스트라이크 서버가 대부분 패치되지 않은 채로 방치되어 있어 핑거프린팅과 후속 탐지가 가능하다는 것을 관찰했습니다. 이 방법론은 다른 탐지 방법과 결합되어 레코디드 퓨처는 야생에서 발견된 코발트 스트라이크 서버를 샘플링하고 핑거프린팅 방법을 비교하여 방어자가 이 프레임워크를 가장 잘 추적하고 모니터링할 수 있도록 했습니다. 코발트 스트라이크 서버를 추적하면 블루팀이 레드팀의 활동을 감지하고 코발트 스트라이크 팀 서버를 수정하지 않은 적의 활동을 차단하는 데 도움이 될 수 있습니다.

주요 판단

  • 코발트 스트라이크 서버는 특정 핑거프린팅 방법을 더 어렵게 만드는 패치에도 불구하고 여전히 상당히 노출되어 있고 비교적 쉽게 탐지할 수 있습니다. 패치가 출시되기 전에 운영 중인 많은 코발트 스트라이크 서버는 시스템을 업데이트하지 않은 반면, 최근에 배포된 서버는 업그레이드된 소프트웨어를 사용했습니다.

  • 최근에 배포된 Cobalt Strike 서버는 신뢰할 수 있는 탐지 메커니즘인 기본 TLS 인증서를 계속 사용하면서 업데이트된 Cobalt Strike 버전(3.12 이상)을 배포할 가능성이 높습니다.

  • 레코디드 퓨처가 현재 코발트 스트라이크 서버를 샘플링한 결과, 과거 위협 활동과 대조적으로 범죄자들과 국가와 연계된 공격자들 모두 다른 코발트 스트라이크 서버와 섞이기 위해 또는 기본 설정이 변경 없이 잘 작동하고 운영자가 아무것도 변경할 필요를 느끼지 못하기 때문에 패치되지 않은 기본 코발트 스트라이크 구성을 사용한다는 사실을 발견했습니다.

  • 코발트 스트라이크 서버를 탐지하면 방어자가 기업 네트워크에서 경보를 생성하여 레드팀, 범죄 조직 또는 국가가 후원하는 적보다 앞서 나갈 수 있는 사전 조치를 취할 수 있습니다.

배경

A primary issue for incident response and security operations analysts today is determining which security events or alerts are a priority to review. Fortunately, applying accurate threat intelligence to a SIEM workflow, such as Splunk, can be valuable for identifying credible threats, and can even reveal crucial additional context to enable security teams to take more proactive measures. For example, an alert comes across your SIEM — it’s an IP address, 89.105.198[.]28, that has been contacted by one of your endpoints. Now what?

cobalt-strike-servers-1-1.png

기록된 향후 브라우저 확장.

Upon opening the Recorded Future browser extension on the Splunk alerts page, the IP 89.105.198[.]28 jumps to the top with a risk score of 93 (this finding was made on May 6, 2019, and the risk score will decay on May 17, 2019 if no further malicious activity is observed). This investigation reveals that the IP address was previously reported by Sophos as part of the MegaCortex ransomware campaign, using a Cobalt Strike reverse shell.

코발트 스트라이크는 전략적 사이버 LLC의 설립자인 라파엘 머지가 모의 침투 테스터를 위해 개발한 공격 시뮬레이션 플랫폼입니다. 메타스플로잇, NMAP, 파워쉘 엠파이어와 같은 다른 플랫폼과의 상호 운용성을 위해 설계되었으며, 처음에는 메타스플로잇용으로 Mudge에서 개발한 그래픽 사용자 인터페이스(GUI)인 Armitage를 사용하여 실행할 수 있습니다. 아미티지 및 코발트 스트라이크는 정보를 공유하고 잘 조율된 행동을 지시하고 실행할 수 있는 팀 서버를 중심으로 설계되었습니다.

고급 기능으로 잘 알려진 Cobalt Strike는 수많은 보안 전문가가 채택했으며 범죄 및 국가 기관에서 불법적으로 사용하기도 했습니다. MITRE는 "코발트 스트라이크의 대화형 사후 익스플로잇 기능은 모든 범위의 ATT&CK 전술을 포괄하며, 모두 단일 통합 시스템 내에서 실행됩니다."라고 설명했습니다. 이 프레임워크는 지난 3년 동안 범죄 그룹, 국가가 후원하는 공격자, 그리고 모의 침투 테스트 팀이 자주 사용하는 위협 환경의 주축이 되었습니다.

cobalt-strike-servers-2-1-1024x640.png (시간 경과에 따른 Cobalt Strike 사용. (출처: Recorded Future))

코발트 스트라이크는 전문적으로 유지 관리되며, 현재 연간 갱신 시 미화 3,500달러의 라이선스 비용으로 이용할 수 있습니다. 미국에서 설정한 수출 통제 외에도 Strategic Cyber LLC는 라이선스 및 사용을 합법적인 보안 전문가에게만 엄격하게 통제하고 악의적인 행위자의 손에 소프트웨어가 들어가지 않도록 하여 범죄자나 미국 이외의 단체가 소프트웨어를 획득하기 어렵게 만들려고 노력합니다.

Strategic Cyber LLC는 라이선스 버전의 소프트웨어를 정기적으로 업데이트하고 패치합니다. 최근 코발트 스트라이크의 서버 구성이 변경되어 프레임워크가 탐지를 회피할 수 있게 되었습니다. 그러나 불법 복제된 버전의 소프트웨어는 공식 업데이트 및 패치를 받을 수 없습니다.

소프트웨어 라이선스는 엄격하게 통제되고 있지만, Cobalt Strike의 불법 복제 버전, 종종 크랙 평가판 버전 사례가 확인되었으며 지하 범죄의 다양한 행위자가 이를 획득하거나 거래하려고 시도하는 것이 관찰되었습니다. 하지만 크랙 버전에는 백도어 같은 자체 '기능'이 추가되거나 어떤 식으로든 기능이 부족할 수 있습니다. Raid Forums의 한 회원은 2019년 4월 5일에 Cobalt Strike 3.13(최신 버전)의 크랙 사본 링크를 게시했지만, 몇몇 회원들은 일부 기능이 누락되어 있고 EICAR을 비롯해 제거해야 할 소프트웨어의 일부가 남아 있다고 지적했습니다. 그래서 Cobalt Strike의 정식 버전이 가치가 있습니다. 예를 들어, 지난해 한 Maza 포럼 회원은 Cobalt Strike의 라이선스 사본을 얻어 이 포럼 회원에게 불법적으로 양도하기 위해 미국 내 구매자에게 미화 25,000달러를 제안한 것이 관찰되었습니다.

Returning to our investigation of 89.105.198[.]28, this IP address was used as a command-and-control server for a Cobalt Strike reverse shell on a victim domain controller during a MegaCortex incident. The ransomware was then distributed across the environment via PSExec. The MegaCortex ransomware campaign was active at the time of this analysis. Further investigation of the IP address reveals that it makes use of the Cobalt Strike server default security certificate to encrypt traffic.

This case involving 89.105.198[.]28 prompted Recorded Future to investigate this specific Cobalt Strike activity. This further encouraged larger-scale Cobalt Strike research, in the wake of security firm Fox-IT’s findings around the anomalous space included in Cobalt Strike HTTP responses and other public detections, including common use of the standard, pre-configured, self-signed SSL/TLS certificate on Cobalt Strike servers. Servers that deploy this certificate can be detected via Shodan or Censys by the SHA256 hash or the serial number of the certificate.

cobalt-strike-servers-3-1.png

기본 코발트 스트라이크 SSL/TLS 인증서.

코발트 스트라이크 팀 서버를 식별하는 공개 방법론

2019년 2월 19일, 코발트 스트라이크의 제작사인 Strategic Cyber LLC는 "코발트 스트라이크 팀 서버 인구 연구" 결과를 발표했습니다. 이 연구는 발견된 코발트 스트라이크 소프트웨어의 라이선스 현황을 파악하고 현재 사용 중인 소프트웨어 버전에 중대한 변경 사항이 있는지 파악하고 분석하기 위해 일부 수행되었습니다.

이 연구에서는 야생에서 코발트 스트라이크 서버를 식별하는 데 사용할 수 있는 여러 가지 방법을 확인했습니다:

  • 코발트 스트라이크 서버는 관리자가 변경하지 않는 한 기본 보안 인증서와 함께 제공되며, 이 인증서를 사용하여 핑거프린팅할 수 있습니다.

  • SHA256: 87f2085c32b6a2cc709b365f55873e207a9caa10bffecf2fd16d3cf9d94d390c

  • Serial Number: 146473198

  • 활성화하면 Cobalt Strike DNS 서버는 보고(가짜) IP: 0.0.0.0으로 수신되는 모든 DNS 요청에 응답합니다(이는 Cobalt Strike 서버에만 해당되지 않음).

  • 코발트 스트라이크 팀 서버의 기본 컨트롤러 포트는 50050/TCP로, 다른 서버에서는 열리지 않는 포트입니다.

  • 코발트 스트라이크에 대한 "404 찾을 수 없음" HTTP 응답은 NanoHTTPD 웹 서버에 고유하며 감지할 수 있습니다.

위 목록에서 전체적으로 볼 때 가장 확실한 방법은 기본 보안 인증서를 사용하여 코발트 스트라이크 서버에 핑거프린팅을 하는 것입니다. 나머지 탐지 방법은 덜 확실하며 다른 방법론으로 확증할 경우 모두 신뢰도가 높아집니다. 예를 들어, 포트 50050을 사용하면서 NanoHTTPD 웹 서버 고유의 HTTP 응답도 제공하는 서버는 HTTP 응답 서명만 표시하는 서버보다 코발트 스트라이크 서버일 가능성이 높습니다.

NanoHTTPD는 오픈 소스 웹 서버 프레임워크입니다. 버전 3.12 이하를 실행하는 NanoHTTPD 서버 및 Cobalt Strike 서버는 다른 웹 서버 응답에서는 볼 수 없는 빈 공간(0x20)이 "HTTP/1.1" 뒤에 오는 HTTP 응답의 널 공백을 통해 식별할 수 있습니다. 3.13 이전 버전의 코발트 스트라이크 서버로부터의 모든 HTTP 응답에는 이 널 공간이 포함되며, HTTP 서버 응답을 검색할 수 있는 스캐너를 사용하여 이를 검색할 수 있습니다. 앞서 언급한 널 공간을 식별하는 간단한 수동 방법은 브라우저 HTTP 연결의 패킷 캡처를 통해 코발트 스트라이크 서버에 대한 여분의 공간을 쉽게 확인할 수 있습니다.

크랙 버전을 실행하는 Cobalt Strike 인스턴스는 업데이트나 패치가 되지 않기 때문에 이 방법을 사용하면 범죄자가 운영하는 Cobalt Strike 서버를 발견할 가능성이 높아집니다.

스트래티직 사이버 LLC 블로그 게시물에는 구체적으로 언급되지 않았지만, 코발트 스트라이크 서버를 식별하는 또 다른 방법이 있습니다. 2019년 1월 2일, 코발트 스트라이크 버전 3.13이 출시되었습니다. 코발트 스트라이크 릴리스 노트에 따르면 이전 버전에서 변경된 사항 중 하나는 "HTTP 상태 응답에서 불필요한 공백"을 제거한 것입니다. 2012년에 처음 출시되어 NanoHTTPD를 기반으로 하는 코발트 스트라이크 팀 서버에 영향을 준 것은 오픈 소스 자바 기반 웹 서버인 NanoHTTPD 서버의 HTTP 서버 응답에 있는 추가 null 바이트였습니다.

2019년 2월 26일 보안 업체 Fox-IT가 발표한 Cobalt Strike 서버에 대한 연구에는 버전 3.13 이전 서버(HTTP 응답에 추가 널 공백으로 응답)를 식별하는 방법에 대한 세부 정보뿐만 아니라 2015년부터 2019년까지 Rapid7의 공개 데이터에서 이 탐지 방법을 사용하여 관찰된 Cobalt Strike 서버를 호스팅하는 7천 개 이상의 IP 목록이 포함되어 있습니다.

cobalt-strike-servers-4-2.png

코발트 스트라이크 서버의 HTTP 헤더에 여분의 널 공간이 있음을 보여주는 패킷 캡처.

마찬가지로 2019년 2월 27일, 중국 Knownsec 보안 연구팀은 코발트 스트라이크 서버를 식별하기 위해 전략적 사이버 LLC에서 보고한 나노HTTPD 404 찾을 수 없음 응답 이상과 널 공간 이상에 대해 자세히 설명하는 블로그를 게시했습니다. 관련 ZoomEye 검색 엔진 플랫폼 내 데이터에서 더 적은 수의 서버를 발견했지만 여전히 3,000개가 넘는 서버를 발견했습니다. 알려진섹은 코발트 스트라이크의 기반이 되는 오픈 소스 나노HPPTD 코드가 다음과 같은 방식으로 정확하게 응답한다고 보고했습니다:

HTTP/1.1 404 찾을 수 없음
콘텐츠 유형: 텍스트/일반
Date: Day, DD Mmm YYYY HH:MM:SS GMT
Content-Length: 0

Knownsec은 이 발견을 기반으로 탐지 로직을 구축했습니다. 그러나 Knownsec은 이후 일부 코발트 스트라이크 시스템의 응답에서 '날짜' 뒤에 '콘텐츠 유형'이 표시되는 것을 발견한 후 HTTP 응답 내 순서가 실제로 다를 수 있음을 관찰했습니다.

자세한 네트워크 트래픽 데이터에 액세스할 수 있는 사용자는 코발트 서버를 검색할 수 있는 신뢰할 수 있는 방법을 사용할 수 있습니다. 세 명의 Salesforce 연구원이 개발한 오픈 소스 JA3 프로젝트는 서버와 클라이언트 간의 TLS 협상을 핑거프린팅하여 의심스러운 HTTPS 트래픽을 탐지할 수 있습니다. 브라우저의 버전, 애드온 및 해당 브라우저에 특정한 기타 기능으로 지문을 찍을 수 있는 것처럼 TLS/SSL 버전, 허용되는 암호 모음 및 타원 곡선 세부 정보(예: 타원 곡선 포인트 형식)를 핑거프린팅할 수 있습니다.

JA3 서명은 클라이언트 측을 위한 것이고 JA3S 서명은 서버를 위한 것입니다. 코발트 스트라이크의 경우, 클라이언트 비콘(Windows 소켓을 사용하여 통신을 개시하는)과 칼리 리눅스 운영 체제에서 실행되는 코발트 스트라이크 서버가 TLS 협상을 위해 지문을 생성했습니다. 코발트 스트라이크 서버를 안정적으로 발견하려면 이러한 지문을 함께 사용해야 합니다. 이 탐지 방법은 코발트 스트라이크 운영자가 '리디렉터'를 사용하여 부분적으로 완화할 수 있지만, 많은 코발트 스트라이크 서버는 이러한 프록시를 사용하지 않습니다.

JA3 및 JA3S 서명은 Zeek/Bro 및 Suricata와 같은 도구와 함께 사용할 수 있습니다. 이러한 네트워크 탐지 도구의 데이터는 이후 Splunk와 같은 SIEM에 공급될 수 있습니다. JA3 및 JA3S 서명은 Salesforce의 Github 계정 및 기타 출처에서 사용할 수 있습니다.

보안팀이나 관리자가 사용할 수 있는 Metasploit, Powershell 또는 PsExec과 같은 다른 도구의 탐지와 마찬가지로, 네트워크 방어자는 탐지 자체로는 사용자의 의도를 식별할 수 없으므로 네트워크 내에서 Cobalt Strike 서버로의 연결을 나타내는 증거를 발견하는 경우 실사를 수행해야 합니다. 탐지된 트래픽만으로는 코발트 스트라이크 서버가 승인된 레드팀의 서버인지, 아니면 실제 적의 서버인지 식별하는 것이 불가능할 수 있습니다.

Fox-IT와 Knownsec이 비정상적인 HTTP 응답을 공개한 이후 변화된 사항

2019년 2월 말 전략적 사이버 LLC, Fox-IT, Knownsec이 코발트 스트라이크 서버 탐지에 관한 정보를 발표한 이후 이러한 방법으로 식별된 코발트 스트라이크 서버의 수가 감소할 것으로 예상했습니다. 또한, 코발트 스트라이크 운영자는 2월 연구에서 스트래티직 사이버 LLC의 권유에 따라 트래픽을 프록시하는 '리디렉터'로 아파치 또는 Nginx 웹 서버를 사용하여 비정상적인 HTTP 응답, 기본 보안 인증서 및 기타 식별자를 제거함으로써 코발트 스트라이크 서버를 간단하게 탐지하지 못하도록 했습니다. 합법적인 라이선스가 있는 서버를 3.13 버전으로 업데이트하면 불필요한 널 공간 방법을 사용하여 탐지되는 서버의 수가 줄어들겠지만, 코발트 스트라이크 운영자가 잘 알려진 탐지 방법을 알고 있다면 탐지 가능한 서버의 수도 줄어들 것으로 예상됩니다.

인식트 그룹은 HTTP 응답에서 비정상적인 널 공간을 탐지하는 Fox-IT의 방법론을 복제하여 식별된 서버가 눈에 띄게 감소하는 것을 확인했습니다. 388개의 코발트 스트라이크 서버는 2019년 2월에 Rapid7의 데이터를 사용하여 처음으로 관찰되었습니다. 이 방법을 처음 사용한 코발트 스트라이크 서버의 수는 2019년 4월에 90개에 불과했습니다. 하지만 이는 일부에 불과하며, 이 방법을 사용하는 오래된 코발트 스트라이크 서버는 그 수가 줄었지만 그 정도는 훨씬 적습니다. Rapid7의 데이터에서 관찰된 서버 중 441개는 2019년 4월에도 여전히 가동 중인 것으로 관찰되었으며, 이는 2019년 1월에 마지막으로 관찰된 387개보다 많은 수입니다.

인식트 그룹은 다른 HTTP 탐지 방법론으로 코발트 스트라이크를 식별하기 위해 알려진섹의 연구를 분석하여 동일한 줌아이 검색 엔진 데이터로 연구를 복제했습니다. 인식트 그룹은 2018년에 1,580개, 2019년 5월까지 1,053개의 서버가 가동된 것을 확인했습니다.

cobalt-strike-servers-5-1.png

개별 코발트 스트라이크 감지 매개변수에 대한 최근 지표. (2019년 1월 ~ 2019년 5월)

앞서 언급했듯이, 이 두 가지 HTTP 탐지 방법은 모두 NanoHTTPD 내의 이상 징후를 기반으로 하며, 특히 코발트 스트라이크 시스템이 아닙니다. 이러한 방법을 사용하여 탐지된 모든 항목에 포트 50050이 열려 있는 것과 같은 확실한 데이터가 있는 것은 아닙니다. 서버 수 변경에는 다른 변수들도 관련되어 있습니다. 코발트 스트라이크 서버는 IP가 변경될 수 있으며 항상 장시간 가동되는 것은 아닙니다. 2019년 1월 이후 새로 발견된 코발트 스트라이크 서버는 감소했지만, 데이터에 따르면 여전히 HTTP 널 스페이스 이상 메서드로 탐지되는 서버가 다수 운영되고 있는 것으로 나타났습니다.

cobalt-strike-servers-6-1.png

결합된 감지 방법을 사용한 코발트 스트라이크 식별. (2019년 1월 ~ 2019년 5월)

세 가지 탐지 결과를 조합하여 코발트 스트라이크를 호스팅하는 서버를 높은 신뢰도로 평가할 수 있었으며, 실제로 이러한 방식으로 확인된 6개의 서버는 모두 이전에 코발트 스트라이크를 호스팅하고 다양한 코발트 스트라이크 비콘과 통신하는 것으로 보고된 바 있습니다. 기본 코발트 스트라이크를 사용하는 것이 가장 좋은 탐지 방법이지만, NanoHTTPD와 오픈 포트 50050을 함께 사용하면 모니터링할 IP의 범위가 크게 좁아질 수 있습니다.

위협 분석

레코디드 퓨처는 Fox-IT의 방법론을 사용하여 접근 가능한 IP에서 표준 발급 코발트 스트라이크 TLS 인증서를 사용하는지 살펴본 결과, 전략적 사이버 LLC가 주요 탐지 메커니즘을 패치한 후 코발트 스트라이크 사용량을 프로파일링하려고 시도했습니다. 향후 방법론과 연구는 눈에 보이는 코발트 스트라이크 서버를 추적하며, 단순한 변경으로 탐지를 회피하는 코발트 스트라이크 서버는 설명할 수 없다는 점에 유의하시기 바랍니다.

이 연구에서 레코디드 퓨처는 폭스-IT의 연구 결과가 코발트 스트라이크의 도입을 최신 버전으로 전환할 것으로 예상했고, 실제로 어느 정도 실현되었습니다. 전략적 사이버 LLC가 이 탐지를 해결하기 위한 패치를 제공하고 HTTP 응답에 추가 공간이 있는 IP 주소를 공개했지만, 업데이트 이전의 코발트 스트라이크 배포는 업데이트되지 않은 것으로 보입니다. 프레임워크가 업데이트된 다음 달에는 Fox-IT의 탐지 방법론이 Rapid7의 데이터 세트에 적용되면서 새롭게 관찰된 코발트 스트라이크 서버가 가장 많이 증가했습니다. 이 서버들은 평균 70일 동안 온라인 상태를 유지했습니다.

cobalt-strike-servers-7-1.png

그러나 이 방법은 2019년 2월 1일에만 활성화된 포트 1443에서 NanoHTTPD를 사용하여 AS 132839의 연속적인 CIDR 범위에서 248개의 디바이스를 발견했기 때문에 신뢰할 수 없는 것으로 판명되었습니다. 이 변칙을 제거한 후 데이터에 따르면 NanoHTTPD를 사용하는 새로운 코발트 스트라이크 호스트의 탐지가 현저히 감소한 것으로 나타났습니다. 이는 전체적으로 코발트 스트라이크의 신규 배포가 줄어들었기 때문일 수도 있지만, 사용 중인 업데이트된 소프트웨어가 반영된 것일 수도 있습니다.

cobalt-strike-servers-8-1.png

2019년 4월에 마지막으로 확인된 데이터에 따르면 이전에 배포된 코발트 스트라이크 인스턴스가 제거되거나 업데이트되지 않은 것으로 나타났습니다. 또한 동일한 데이터 세트를 기준으로 서버가 온라인 상태를 유지한 시간도 데이터 세트의 평균 70일 근처에서 계속 감지된 서버에 눈에 띄는 변화가 없는 것으로 나타났습니다. 하지만 HTTP 헤더에 널 공백이 있는 새로운 코발트 스트라이크 서버가 발견되는 건수가 감소했습니다.

cobalt-strike-servers-9-1.png

오래된 버전의 프레임워크(HTTP 헤더의 널 공백을 통해)와 기본 구성을 사용하는 Cobalt Strike 서버가 계속 식별되는 것은 많은 수의 Cobalt Strike 서버가 크랙 또는 도난 버전임을 나타낼 수 있습니다. 운영자가 보안 관련 자료를 읽지 않는 사례일 수도 있지만, 대부분의 표적 공격자가 코발트 스트라이크 서버를 검색하지 않을 가능성이 높고 페이로드가 여전히 효과적인데 왜 행동을 바꾸려고 할까 하는 단순한 이유일 수도 있습니다.

코발트 스트라이크 서버 샘플링

레코디드 퓨처는 2019년 4월에 활동이 확인된 IP 주소의 샘플링을 통해 주목할 만한 활동과 탐지 중복을 모두 조사했습니다. 이러한 서버는 확인된 코발트 스트라이크 활동, 다른 멀웨어와 연결된 코발트 스트라이크 서버, 알려진 위협 그룹에 연결된 코발트 스트라이크 서버, 위협 목록이나 보고에 아직 이름이 없는 보고되지 않은 코발트 스트라이크 서버 등 여러 범주에 속합니다.

사용된 연구 방법으로는 분석 대상 시스템의 라이선스 여부를 확인할 수 없었으며, 마찬가지로 서버가 승인된 보안 테스트를 수행하고 있는지 또는 불법적인 공격을 수행하고 있는지도 확인할 수 없었습니다.

코발트 스트라이크와 관련된 신호에서 중복되는 IP 주소가 다수 발견되었습니다. 세 곳 모두 기본 인증서를 사용했고, Cobalt Strike 컨트롤러 포트 50050이 열려 있었으며, 이전에 Cobalt Strike 비콘 또는 Meterpreter 리버스 프록시를 호스팅하는 것으로 확인되었습니다. 확증적인 탐지 방법을 사용할 때 더 높은 정확도의 탐지가 이루어진다는 점을 다시 한 번 강조합니다.

  • The IP address 89.105.202.58 made use of the standard Cobalt Strike certificate. Previous URLscan.io results show an HTTP 404 Not Found response, with no content and plain text Content-Type, and Shodan scanning indicates that port 50050 was open, which can host the Cobalt Strike controller. Twitter user @Scumbots has previously identified the server as hosting a Meterpreter reverse proxy, which was contacted via Powershell script that has been hosted on PasteBin since February 2019.

  • 199.189.108.71 also made use of the default Cobalt Strike certificate, had port 50050 open, and had previously been identified by Twitter user @Scumbots for hosting a Meterpreter reverse proxy, which also made use of base64-encoded Powershell to obfuscate execution.

The IP 31.220.43.11 was identified using the baseline Cobalt Strike certificate, corroborated by port 50050 being open on the server. A Meterepreter sample has been observed sending HTTP traffic to the IP in a command-and-control capacity. According to Shodan data, The IP has a number of ports open and is vulnerable to a number of exploits, which may indicate that the host is compromised to serve other malware. The IP hosts a single domain at the time of analysis: cob.ozersk[.]today.

다수의 IP가 표준 코발트 스트라이크 인증서를 사용했으며, 이전에 FIN6 활동과 연관된 적이 있는 랜섬웨어를 전달하고 POS 멀웨어를 배포하는 초기 공격 벡터로 사용했습니다. 이 분석 당시 이 두 코발트 스트라이크 팀 서버는 캠페인이 공개적으로 소각되었음에도 불구하고 모두 활성화되어 있었습니다. 이는 FIN6가 운영 후 정리할 필요가 없었다는 점과 운영이 중단된 속도가 빠르다는 점을 말해줍니다.

흥미롭게도 세 가지 방법 모두에서 서버 중 하나가 탐지되었지만, 서버 중 하나는 NanoHTTPD 추가 공간에 대한 패치가 적용되어 있어 표준 웹 서버가 재구성되었거나 공격자들이 업데이트된 버전의 Cobalt Strike를 사용했음을 의미합니다. 동일한 사고에 배포된 코발트 스트라이크 서버의 다양성을 보면 FIN6가 표준 코발트 스트라이크 프레임워크를 거의 수정하지 않고 사용한다는 것을 알 수 있습니다.

  • The server at 185.80.233.166 uses the default Cobalt Strike security certificate. This system also has the default Cobalt Strike Team Server port 50050/TCP open. The system had an MX record of mail.sexlove24[.]com, and Talos telemetry data indicates that no mail has been observed to or from this system in the month of April 2019. This IP was identified by Morphisec in February 2019 as part of a coordinated attack on point-of-sale systems using FrameworkPOS. The activity made use of TTPs used by the FIN6 group, specifically the use of WMI/PowerShell for lateral movement and privilege escalation.

  • The IP 176.126.85.207 was detected both by Fox-IT’s anomalous space and the use of the default Cobalt Strike certificate, with data corroborated by having port 50050 open. The IP has been observed delivering a Metasploit Meterpreter reverse HTTP payload in conjunction with LockerGoga and Ryuk delivery from FIN6.

두 개의 IP는 표준 코발트 스트라이크 인증서를 사용했으며, 코발트 스트라이크 반사 로더를 사용했습니다. 반사적 DLL(동적 로드 라이브러리) 로딩은 Windows DLL 로더를 우회하여 DLL을 디스크에 저장하지 않고 프로세스의 메모리에 DLL을 주입하는 방식입니다. 이러한 방식으로 주입된 DLL은 메모리에만 상주하기 때문에 탐지하기 어려울 수 있습니다. APT40( 템프페리스코프라고도 함)과 시든 튤립 캠페인에서 사용된 것으로 유명한 반사적 DLL 로딩은 코발트 스트라이크에만 국한된 것이 아니며 여러 공격자들이 다양한 수단을 통해 수행합니다. 반사 로더를 사용했다고 해서 해당 그룹이 해당 서버에서 활동했다는 증거는 아닙니다. 이 분석 시점에 도메인을 호스팅하는 IP 주소는 두 개 모두 없었습니다.

  • The IP 89.105.198.18 made use of the default Cobalt Strike certificate as well. The IP previously was identified as a command-and-control server, receiving Meterpreter data over HTTP, according to @Scumbots. Previous scan data from Shodan corroborated the Cobalt Strike server existing on the IP address by having the Cobalt Strike controller port 50050 open. Recorded Future’s collections identified two files which contacted the IP address 89.105.198.18, first observed in March 2019. The payloads had inconsistent detections on VirusTotal, likely due to at least the first file being UPX-packed. An inspection of the memory dumps from executing the files found that both were Cobalt Strike reflective loaders.

  • 3a143d038aae9e4253ed6656beaaae298795a3df20e874544c0122435ef79bc0

  • 9668c17504a0d9471668dac64b3c5c2abfb3b186c25dc28d91afbe95ed341002

  • Another IP address on the same CIDR range also made use of the default Cobalt Strike certificate:89.105.198.21. The IP address did not host domains at the time of this analysis, but previous scan data corroborated the presence of a Cobalt Strike server.

  • The IP 106.12.204.25 was detected both by Fox-IT’s anomalous space and the use of the default Cobalt Strike certificate. The IP also had port 50050 open, and had a plaintext 404 Not Found response, as mentioned above. The IP has been reported as delivering with a Cobalt Strike beacon, which was also detected by a VirusTotal user as a Cobalt Strike reflective loader related to APT40. Recorded Future has not observed the IP operating in connection with APT40.

코발트 스트라이크를 호스팅하는 것으로 확인된 또 다른 일반적인 범주의 IP는 다른 멀웨어나 의심스러운 활동과 관련이 없는 위협 활동을 보였지만 대부분 결정적이지 않은 결과를 낳았습니다.

  • The IP address 91.152.8.14 made use of the standard Cobalt Strike certificate in mid-April 2019. A generic trojan was found to communicate with the IP address via HTTP methods over port 433. The IP hosted no domains at the time of analysis, but shared a certificate with forum.happyhippos[.]org. The certificate issuer claimed to be from Espoo, Uusimaa, Finland, the same relative geolocation of the IP address. Another IP address on the same CIDR range was detected via the anomalous HTTP header space, on 91.152.8.173. While this IP made use of a different certificate, previous Shodan scans over port 443 show a 404 Not Found response with no content and plain text Content-Type, which is a low-confidence signal of a Cobalt Strike server. Without further data, Recorded Future could not come to a conclusion about these IPs.

  • The IP 99.81.122.12 was identified in late April 2019, from the anomalous spacing, use of the Cobalt Strike certificate, and having the controller port 50050 open. The server is now inactive, but previously served as a Cobalt Strike beacon, accessed via HTTP. The server did not host domains at the time of analysis.

  • The IP 72.14.184.90 also made use of the generic Cobalt Strike certificate. The IP address is contacted by a malicious file, reaching out over HTTP to the URL hxxps://72.14.184[.]90/search/news/. The file is detected as a Cobalt Strike beacon. The IP address was also implicated for being involved in a spearphishing campaign in late January 2019. Shodan scan data indicates the server has a number of vulnerabilities, which points to the server potentially being compromised to host the Cobalt Strike server, rather than the server being rented for a pen-testing engagement.

  • 06f8004835c5851529403f73ad23168b1127315d02c68e0153e362a73f915c72

마지막으로, 위협 활동에 대한 보고는 제한적이지만 가까운 시일 내에 잠재적인 악성 활동이 발생할 수 있다는 징후가 있는 IP가 다수 있었습니다:

  • The IP 172.96.250.199 used the baseline Cobalt Strike certificate, but has not had any threat activity associated with it, according to Recorded Future telemetry. The IP address has since swapped certificates to use a pair of LetsEncrypt certificates, including one linked to the domain haqiu[.]cf. The domain was neither active nor hosted on this IP at the time of this analysis. The IP has been associated with hosting a suspicious domain, ssss.ppwu[.]xyz, which has made use of dual LetsEncrypt certificates. These certificates are good for only 90 days and have since been rotated onto Cloudflare servers. This may indicate a forthcoming red-team engagement, or future threat activity using Cobalt Strike.

  • The IP 139.162.18.83 was identified from the use of the default Cobalt Strike SSL certificate, but no threat activity or other oddities, have been observed on the IP address. However, on the same CIDR range, 139.162.18.179 was identified from the anomalous space included in the HTTP response, and it was found to be using the default Cobalt Strike SSL certificate. There is no threat activity currently associated with the server, but a number of suspicious domains are hosted on the IP.

  • The IP 124.156.106.98 also made use of the default Cobalt Strike certificate, and had port 50050 open which can be used for the Cobalt Strike controller panel. The IP has been observed as the command and control for a Cobalt Strike beacon, observed in March 2019. However, an odd domain was registered and hosted on the IP as of May 2, 2019, kongbu.koubaogangjiao[.]xyz, while the Cobalt Strike signals were still live. The domain may be used going forward for penetration testing or malicious infections.

전망

레코디드 퓨처는 알려진 위협의 신호를 클러스터링하여 위협 활동의 기준이 되고 보다 고유한 위협을 쉽게 식별할 수 있도록 하는 것이 중요하다고 생각합니다. 표준 코발트 스트라이크 인증서의 지속적인 목격과 3.13 이전 버전의 HTTP 응답에서 비정상적인 공간이 발견되는 것은 여러 서명을 공동으로 사용하는 것이 활성 코발트 스트라이크 서버를 식별하는 가장 좋은 방법이라는 것을 나타냅니다.

첩보 활동을 하는 플레이어는 개발 시간과 리소스를 많이 확보할 수 있는 반면, 군중 속에 섞일 수 있는 기득권이 있는 경우가 많습니다. 언어 장벽으로 인한 업데이트에 대한 지식 부족, 현재 설치된 버전의 운영 편의성, 업데이트 설치를 방해하는 기타 수정 사항 등 고의가 아닌 다른 장애물로 인해 코발트 스트라이크 서버에 패치가 적용되지 않을 수 있습니다. 크랙 버전의 Cobalt Strike를 사용하거나 표준 Cobalt Strike 인스턴스를 배포하면 위협이 혼합되어 어트리뷰션이 어려워집니다. 또한, 크랙 버전의 프레임워크를 실행하면 액터는 이전 버전의 코발트 스트라이크와 혼합하여 사용할 수 있습니다.

이러한 서버를 지속적으로 탐지하면 SOC 및 IR 팀이 경고 또는 차단 기능을 개발할 수 있는 규칙을 제공하고 이러한 서버와 통신하는 호스트에 대한 조사를 진행할 수 있습니다.

관련 뉴스 & 연구