로그 코발트 스트라이크 서버를 식별하기 위한 다중 방법 접근법
전체 분석 내용을 PDF로 다운로드하려면 여기를 클릭하세요.
레코디드 퓨처는 여러 코발트 스트라이크 서버 탐지 방법이 공개된 이후 야생의 코발트 스트라이크 서버에 대한 변화를 평가했습니다. 분석에서는 다양한 방법론을 평가하고 이를 기반으로 결합 분석을 수행하여 사용자가 탐지를 피하기 위해 구성을 변경했는지 확인했습니다. 레코디드 퓨처® 플랫폼, BinaryEdge, Censys, Rapid7 Lab의 오픈데이터, 쇼단, 그레이노이즈, 리버싱랩스, 바이러스토탈, 파사이트 DNS 및 기타 오픈소스 등이 있습니다. 이 보고서는 대응 시간을 개선하고자 하는 조직과 정기적으로 코발트 스트라이크 사고를 처리하는 분석가에게 가장 큰 관심을 끌 것입니다.
Executive Summary
코발트 스트라이크는 보안 전문가가 표적 공격과 지능형 공격자의 익스플로잇 후 조치를 에뮬레이션하는 데 사용할 수 있도록 개발된 익스플로잇 플랫폼입니다. 이 도구는 워싱턴 DC에 본사를 둔 Strategic Cyber LLC에서 개발 및 라이선스를 취득한 것으로, 이 회사의 불법적인 사용 여부를 모니터링하고 있으며 수출 통제의 대상이 됩니다. 그럼에도 불구하고, 코발트 스트라이크 프레임워크는 메타스플로잇 프로, 코어 임팩트 등과 같은 다른 유료 제품군을 포함하여 이러한 유형의 다양한 소프트웨어 중에서 인기 있는 옵션이 되었습니다. 라이선스가 없는 사용자와 범죄 행위자들이 사용하는 플랫폼 중 유일한 것은 아니지만, 코발트 스트라이크는 초기 악용에 이 도구를 사용한 APT32와 이 프레임워크에 크게 의존해 온 코발트 그룹을 비롯한 다양한 위협 그룹이 사용했습니다.
보안 테스터, 더 나아가 악의적인 공격자들이 Cobalt Strike 플랫폼을 많이 사용한다는 점을 고려하면 기업 네트워크 자산에 대한 Cobalt Strike 서버 연결을 인식해야 할 필요성은 분명합니다.
탐지 방법론이 공개되었음에도 불구하고 레코디드 퓨처는 코발트 스트라이크 서버가 대부분 패치되지 않은 채로 방치되어 있어 핑거프린팅과 후속 탐지가 가능하다는 것을 관찰했습니다. 이 방법론은 다른 탐지 방법과 결합되어 레코디드 퓨처는 야생에서 발견된 코발트 스트라이크 서버를 샘플링하고 핑거프린팅 방법을 비교하여 방어자가 이 프레임워크를 가장 잘 추적하고 모니터링할 수 있도록 했습니다. 코발트 스트라이크 서버를 추적하면 블루팀이 레드팀의 활동을 감지하고 코발트 스트라이크 팀 서버를 수정하지 않은 적의 활동을 차단하는 데 도움이 될 수 있습니다.
주요 판단
코발트 스트라이크 서버는 특정 핑거프린팅 방법을 더 어렵게 만드는 패치에도 불구하고 여전히 상당히 노출되어 있고 비교적 쉽게 탐지할 수 있습니다. 패치가 출시되기 전에 운영 중인 많은 코발트 스트라이크 서버는 시스템을 업데이트하지 않은 반면, 최근에 배포된 서버는 업그레이드된 소프트웨어를 사용했습니다.
최근에 배포된 Cobalt Strike 서버는 신뢰할 수 있는 탐지 메커니즘인 기본 TLS 인증서를 계속 사용하면서 업데이트된 Cobalt Strike 버전(3.12 이상)을 배포할 가능성이 높습니다.
레코디드 퓨처가 현재 코발트 스트라이크 서버를 샘플링한 결과, 과거 위협 활동과 대조적으로 범죄자들과 국가와 연계된 공격자들 모두 다른 코발트 스트라이크 서버와 섞이기 위해 또는 기본 설정이 변경 없이 잘 작동하고 운영자가 아무것도 변경할 필요를 느끼지 못하기 때문에 패치되지 않은 기본 코발트 스트라이크 구성을 사용한다는 사실을 발견했습니다.
코발트 스트라이크 서버를 탐지하면 방어자가 기업 네트워크에서 경보를 생성하여 레드팀, 범죄 조직 또는 국가가 후원하는 적보다 앞서 나갈 수 있는 사전 조치를 취할 수 있습니다.
배경
오늘날 사고 대응 및 보안 운영 분석가의 주요 문제는 어떤 보안 이벤트 또는 알림을 우선적으로 검토할지 결정하는 것입니다. 다행히도 Splunk와 같은 정확한 위협 인텔리전스를 SIEM 워크플로에 적용하면 신뢰할 수 있는 위협을 식별하는 데 유용할 수 있으며, 보안 팀이 보다 선제적인 조치를 취할 수 있도록 중요한 추가 컨텍스트를 파악할 수도 있습니다. 예를 들어, IP 주소 89.105.198[.]28로 SIEM에 알림이 들어오는 경우입니다, 엔드포인트 중 하나에서 연락을 받은 적이 있습니다. 이제 어떻게 할까요?
Splunk 알림 페이지에서 Recorded Future 브라우저 확장 프로그램을 열면 IP 89.105.198[.]28이 표시됩니다. 가 위험 점수 93점으로 1위에 올랐습니다(이 발견은 2019년 5월 6일에 이루어졌으며, 더 이상 악성 활동이 관찰되지 않으면 2019년 5월 17일에 위험 점수가 하락합니다). 이 조사에 따르면 이 IP 주소는 이전에 코발트 스트라이크 리버스 셸을 사용하는 메가코텍스 랜섬웨어 캠페인의 일부로 보고된 바 있습니다.
코발트 스트라이크는 전략적 사이버 LLC의 설립자인 라파엘 머지가 모의 침투 테스터를 위해 개발한 공격 시뮬레이션 플랫폼입니다. 메타스플로잇, NMAP, 파워쉘 엠파이어와 같은 다른 플랫폼과의 상호 운용성을 위해 설계되었으며, 처음에는 메타스플로잇용으로 Mudge에서 개발한 그래픽 사용자 인터페이스(GUI)인 Armitage를 사용하여 실행할 수 있습니다. 아미티지 및 코발트 스트라이크는 정보를 공유하고 잘 조율된 행동을 지시하고 실행할 수 있는 팀 서버를 중심으로 설계되었습니다.
고급 기능으로 잘 알려진 Cobalt Strike는 수많은 보안 전문가가 채택했으며 범죄 및 국가 기관에서 불법적으로 사용하기도 했습니다. MITRE는 "코발트 스트라이크의 대화형 사후 익스플로잇 기능은 모든 범위의 ATT&CK 전술을 포괄하며, 모두 단일 통합 시스템 내에서 실행됩니다."라고 설명했습니다. 이 프레임워크는 지난 3년 동안 범죄 그룹, 국가가 후원하는 공격자, 그리고 모의 침투 테스트 팀이 자주 사용하는 위협 환경의 주축이 되었습니다.
(Cobalt Strike use over time. (Source: 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달러를 제안한 것이 관찰되었습니다.
89.105.198[.]28에 대한 조사로 돌아갑니다, 이 IP 주소는 메가코텍스 사고 당시 피해 도메인 컨트롤러에서 코발트 스트라이크 리버스 셸의 명령 및 제어 서버로 사용되었습니다. 그런 다음 랜섬웨어는 PSExec을 통해 환경 전체에 배포되었습니다. 이 분석 시점에 메가코텍스 랜섬웨어 캠페인이 활성화되어 있었습니다. IP 주소에 대한 추가 조사 결과, 트래픽을 암호화하기 위해 코발트 스트라이크 서버의 기본 보안 인증서를 사용하는 것으로 나타났습니다.
89.105.198[.]28과 관련된 이 사례 레코디드 퓨처는 이 특정 코발트 스트라이크 활동을 조사하게 되었습니다. 이는 보안 회사 Fox-IT가 Cobalt Strike HTTP 응답에 포함된 비정상적인 공간과 기타 공개 탐지에 대한 발견을 계기로 대규모 Cobalt Strike 연구를 더욱 장려했으며, 여기에는 Cobalt Strike 서버에서 사전 구성된 표준 자체 서명 SSL/TLS 인증서를 일반적으로 사용하는 것이 포함되었습니다. 이 인증서를 배포하는 서버는 SHA256 해시 또는 인증서의 일련 번호로 Shodan 또는 Censys를 통해 감지할 수 있습니다.
코발트 스트라이크 팀 서버를 식별하는 공개 방법론
2019년 2월 19일, 코발트 스트라이크의 제작사인 Strategic Cyber LLC는 "코발트 스트라이크 팀 서버 인구 연구" 결과를 발표했습니다. 이 연구는 발견된 코발트 스트라이크 소프트웨어의 라이선스 현황을 파악하고 현재 사용 중인 소프트웨어 버전에 중대한 변경 사항이 있는지 파악하고 분석하기 위해 일부 수행되었습니다.
이 연구에서는 야생에서 코발트 스트라이크 서버를 식별하는 데 사용할 수 있는 여러 가지 방법을 확인했습니다:
코발트 스트라이크 서버는 관리자가 변경하지 않는 한 기본 보안 인증서와 함께 제공되며, 이 인증서를 사용하여 핑거프린팅할 수 있습니다.
SHA256: 87f2085c32b6a2cc709b365f55873e207a9caa10bffecf2fd16d3cf9d94d390c
일련 번호: 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 목록이 포함되어 있습니다.
마찬가지로 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개의 서버가 가동된 것을 확인했습니다.
앞서 언급했듯이, 이 두 가지 HTTP 탐지 방법은 모두 NanoHTTPD 내의 이상 징후를 기반으로 하며, 특히 코발트 스트라이크 시스템이 아닙니다. 이러한 방법을 사용하여 탐지된 모든 항목에 포트 50050이 열려 있는 것과 같은 확실한 데이터가 있는 것은 아닙니다. 서버 수 변경에는 다른 변수들도 관련되어 있습니다. 코발트 스트라이크 서버는 IP가 변경될 수 있으며 항상 장시간 가동되는 것은 아닙니다. 2019년 1월 이후 새로 발견된 코발트 스트라이크 서버는 감소했지만, 데이터에 따르면 여전히 HTTP 널 스페이스 이상 메서드로 탐지되는 서버가 다수 운영되고 있는 것으로 나타났습니다.
세 가지 탐지 결과를 조합하여 코발트 스트라이크를 호스팅하는 서버를 높은 신뢰도로 평가할 수 있었으며, 실제로 이러한 방식으로 확인된 6개의 서버는 모두 이전에 코발트 스트라이크를 호스팅하고 다양한 코발트 스트라이크 비콘과 통신하는 것으로 보고된 바 있습니다. 기본 코발트 스트라이크를 사용하는 것이 가장 좋은 탐지 방법이지만, NanoHTTPD와 오픈 포트 50050을 함께 사용하면 모니터링할 IP의 범위가 크게 좁아질 수 있습니다.
위협 분석
레코디드 퓨처는 Fox-IT의 방법론을 사용하여 접근 가능한 IP에서 표준 발급 코발트 스트라이크 TLS 인증서를 사용하는지 살펴본 결과, 전략적 사이버 LLC가 주요 탐지 메커니즘을 패치한 후 코발트 스트라이크 사용량을 프로파일링하려고 시도했습니다. 향후 방법론과 연구는 눈에 보이는 코발트 스트라이크 서버를 추적하며, 단순한 변경으로 탐지를 회피하는 코발트 스트라이크 서버는 설명할 수 없다는 점에 유의하시기 바랍니다.
이 연구에서 레코디드 퓨처는 폭스-IT의 연구 결과가 코발트 스트라이크의 도입을 최신 버전으로 전환할 것으로 예상했고, 실제로 어느 정도 실현되었습니다. 전략적 사이버 LLC가 이 탐지를 해결하기 위한 패치를 제공하고 HTTP 응답에 추가 공간이 있는 IP 주소를 공개했지만, 업데이트 이전의 코발트 스트라이크 배포는 업데이트되지 않은 것으로 보입니다. 프레임워크가 업데이트된 다음 달에는 Fox-IT의 탐지 방법론이 Rapid7의 데이터 세트에 적용되면서 새롭게 관찰된 코발트 스트라이크 서버가 가장 많이 증가했습니다. 이 서버들은 평균 70일 동안 온라인 상태를 유지했습니다.
그러나 이 방법은 2019년 2월 1일에만 활성화된 포트 1443에서 NanoHTTPD를 사용하여 AS 132839의 연속적인 CIDR 범위에서 248개의 디바이스를 발견했기 때문에 신뢰할 수 없는 것으로 판명되었습니다. 이 변칙을 제거한 후 데이터에 따르면 NanoHTTPD를 사용하는 새로운 코발트 스트라이크 호스트의 탐지가 현저히 감소한 것으로 나타났습니다. 이는 전체적으로 코발트 스트라이크의 신규 배포가 줄어들었기 때문일 수도 있지만, 사용 중인 업데이트된 소프트웨어가 반영된 것일 수도 있습니다.
2019년 4월에 마지막으로 확인된 데이터에 따르면 이전에 배포된 코발트 스트라이크 인스턴스가 제거되거나 업데이트되지 않은 것으로 나타났습니다. 또한 동일한 데이터 세트를 기준으로 서버가 온라인 상태를 유지한 시간도 데이터 세트의 평균 70일 근처에서 계속 감지된 서버에 눈에 띄는 변화가 없는 것으로 나타났습니다. 하지만 HTTP 헤더에 널 공백이 있는 새로운 코발트 스트라이크 서버가 발견되는 건수가 감소했습니다.
오래된 버전의 프레임워크(HTTP 헤더의 널 공백을 통해)와 기본 구성을 사용하는 Cobalt Strike 서버가 계속 식별되는 것은 많은 수의 Cobalt Strike 서버가 크랙 또는 도난 버전임을 나타낼 수 있습니다. 운영자가 보안 관련 자료를 읽지 않는 사례일 수도 있지만, 대부분의 표적 공격자가 코발트 스트라이크 서버를 검색하지 않을 가능성이 높고 페이로드가 여전히 효과적인데 왜 행동을 바꾸려고 할까 하는 단순한 이유일 수도 있습니다.
코발트 스트라이크 서버 샘플링
레코디드 퓨처는 2019년 4월에 활동이 확인된 IP 주소의 샘플링을 통해 주목할 만한 활동과 탐지 중복을 모두 조사했습니다. 이러한 서버는 확인된 코발트 스트라이크 활동, 다른 멀웨어와 연결된 코발트 스트라이크 서버, 알려진 위협 그룹에 연결된 코발트 스트라이크 서버, 위협 목록이나 보고에 아직 이름이 없는 보고되지 않은 코발트 스트라이크 서버 등 여러 범주에 속합니다.
사용된 연구 방법으로는 분석 대상 시스템의 라이선스 여부를 확인할 수 없었으며, 마찬가지로 서버가 승인된 보안 테스트를 수행하고 있는지 또는 불법적인 공격을 수행하고 있는지도 확인할 수 없었습니다.
코발트 스트라이크와 관련된 신호에서 중복되는 IP 주소가 다수 발견되었습니다. 세 곳 모두 기본 인증서를 사용했고, Cobalt Strike 컨트롤러 포트 50050이 열려 있었으며, 이전에 Cobalt Strike 비콘 또는 Meterpreter 리버스 프록시를 호스팅하는 것으로 확인되었습니다. 확증적인 탐지 방법을 사용할 때 더 높은 정확도의 탐지가 이루어진다는 점을 다시 한 번 강조합니다.
IP 주소 89.105.202.58은 표준 코발트 스트라이크 인증서를 사용했습니다. 이전 URLscan.io 결과에는 콘텐츠가 없고 일반 텍스트 콘텐츠 유형이 포함된 HTTP 404 찾을 수 없음 응답이 표시되며, Shodan 스캔 결과 포트 50050이 열려 있어 Cobalt Strike 컨트롤러를 호스팅할 수 있는 것으로 나타났습니다. 트위터 사용자 @Scumbots는 이전에 이 서버가 2019년 2월부터 페이스트빈에서 호스팅된 파워쉘 스크립트를 통해 접속한 미터프리터 리버스 프록시를 호스팅하는 것으로 확인했습니다.
199.189.108.71은 또한 기본 코발트 스트라이크 인증서를 사용했고, 포트 50050이 열려 있었으며, 이전에 트위터 사용자 @Scumbots가 실행을 난독화하기 위해 base64로 인코딩된 Powershell을 사용하는 미터프리터 리버스 프록시를 호스팅하는 것으로 확인된 적이 있습니다.
IP 31.220.43.11은 기준 코발트 스트라이크 인증서를 사용하여 식별되었으며, 서버에서 포트 50050이 열려 있는 것으로 확인되었습니다. 메타프리터 샘플이 명령 및 제어 기능으로 HTTP 트래픽을 IP로 전송하는 것이 관찰되었습니다. 쇼단 데이터에 따르면, 이 IP는 여러 포트가 열려 있고 여러 익스플로잇에 취약하며, 이는 호스트가 다른 멀웨어를 서비스하기 위해 손상되었음을 나타낼 수 있습니다. 이 IP는 분석 시점에 단일 도메인인 cob.ozersk[.]today를 호스트합니다.
다수의 IP가 표준 코발트 스트라이크 인증서를 사용했으며, 이전에 FIN6 활동과 연관된 적이 있는 랜섬웨어를 전달하고 POS 멀웨어를 배포하는 초기 공격 벡터로 사용했습니다. 이 분석 당시 이 두 코발트 스트라이크 팀 서버는 캠페인이 공개적으로 소각되었음에도 불구하고 모두 활성화되어 있었습니다. 이는 FIN6가 운영 후 정리할 필요가 없었다는 점과 운영이 중단된 속도가 빠르다는 점을 말해줍니다.
흥미롭게도 세 가지 방법 모두에서 서버 중 하나가 탐지되었지만, 서버 중 하나는 NanoHTTPD 추가 공간에 대한 패치가 적용되어 있어 표준 웹 서버가 재구성되었거나 공격자들이 업데이트된 버전의 Cobalt Strike를 사용했음을 의미합니다. 동일한 사고에 배포된 코발트 스트라이크 서버의 다양성을 보면 FIN6가 표준 코발트 스트라이크 프레임워크를 거의 수정하지 않고 사용한다는 것을 알 수 있습니다.
185.80.233.166의 서버는 기본 Cobalt Strike 보안 인증서를 사용합니다. 이 시스템에는 기본 코발트 스트라이크 팀 서버 포트 50050/TCP도 열려 있습니다. 이 시스템에는 mail.sexlove24[.]com의 MX 레코드가 있었습니다, 및 Talos 원격 측정 데이터에 따르면 2019년 4월 한 달 동안 이 시스템에서 이 시스템으로 오가는 메일이 관찰되지 않았습니다. 모피섹은 2019년 2월에 이 IP를 프레임워크POS를 사용하는 POS 시스템에 대한 조직적인 공격의 일부로 확인했습니다. 이 활동은 FIN6 그룹이 사용하는 TTP, 특히 측면 이동 및 권한 상승을 위해 WMI/PowerShell을 사용했습니다.
IP 176.126.85.207은 Fox-IT의 비정상적인 공간과 기본 코발트 스트라이크 인증서의 사용으로 탐지되었으며, 포트 50050이 열려 있는 것으로 데이터가 확인되었습니다. 이 IP는 FIN6의 락커고가 및 류크 전달과 함께 메타스플로잇 미터프리터 리버스 HTTP 페이로드를 전달하는 것이 관찰되었습니다.
두 개의 IP는 표준 코발트 스트라이크 인증서를 사용했으며, 코발트 스트라이크 반사 로더를 사용했습니다. 반사적 DLL(동적 로드 라이브러리) 로딩은 Windows DLL 로더를 우회하여 DLL을 디스크에 저장하지 않고 프로세스의 메모리에 DLL을 주입하는 방식입니다. 이러한 방식으로 주입된 DLL은 메모리에만 상주하기 때문에 탐지하기 어려울 수 있습니다. APT40( 템프페리스코프라고도 함)과 시든 튤립 캠페인에서 사용된 것으로 유명한 반사적 DLL 로딩은 코발트 스트라이크에만 국한된 것이 아니며 여러 공격자들이 다양한 수단을 통해 수행합니다. 반사 로더를 사용했다고 해서 해당 그룹이 해당 서버에서 활동했다는 증거는 아닙니다. 이 분석 시점에 도메인을 호스팅하는 IP 주소는 두 개 모두 없었습니다.
IP 89.105.198.18은 기본 코발트 스트라이크 인증서도 사용했습니다. Scumbots에 따르면 이 IP는 이전에 명령 및 제어 서버로 식별되어 HTTP를 통해 미터프리터 데이터를 수신했습니다. 쇼단의 이전 스캔 데이터는 코발트 스트라이크 컨트롤러 포트 50050이 열려 있어 IP 주소에 코발트 스트라이크 서버가 존재한다는 사실을 입증했습니다 . 레코디드 퓨처의 수집 결과 89.105.198.18 IP 주소로 접속한 파일 두 개가 확인되었습니다, 2019년 3월에 처음 관찰되었습니다. 이 페이로드는 VirusTotal에서 일관성 없이 탐지되었는데, 이는 적어도 첫 번째 파일이 UPX로 압축되었기 때문일 수 있습니다. 파일을 실행한 후 메모리 덤프를 검사한 결과 두 파일 모두 코발트 스트라이크 반사 로더인 것으로 나타났습니다.
3a143d038aae9e4253ed6656beaaae298795a3df20e874544c0122435ef79bc0
9668c17504a0d9471668dac64b3c5c2abfb3b186c25dc28d91afbe95ed341002
동일한 CIDR 범위의 또 다른 IP 주소인89.105.198.21도 기본 Cobalt Strike 인증서를 사용했습니다. 이 분석 당시 해당 IP 주소는 도메인을 호스팅하지 않았지만 이전 스캔 데이터를 통해 코발트 스트라이크 서버의 존재를 확인할 수 있었습니다.
IP 106.12.204.25는 Fox-IT의 비정상적인 공간과 기본 코발트 스트라이크 인증서 사용으로 모두 감지되었습니다. 또한 해당 IP는 포트 50050이 열려 있었고 위에서 언급한 것처럼 일반 텍스트 404 찾을 수 없음 응답을 받았습니다. 이 IP는 코발트 스트라이크 비콘과 함께 전달되는 것으로 보고되었으며, VirusTotal 사용자에 의해 APT40과 관련된 코발트 스트라이크 반사 로더로 탐지되기도 했습니다. 레코디드 퓨처는 APT40과 관련하여 작동하는 IP를 관찰하지 못했습니다.
코발트 스트라이크를 호스팅하는 것으로 확인된 또 다른 일반적인 범주의 IP는 다른 멀웨어나 의심스러운 활동과 관련이 없는 위협 활동을 보였지만 대부분 결정적이지 않은 결과를 낳았습니다.
IP 주소 91.152.8.14는 2019년 4월 중순에 표준 코발트 스트라이크 인증서를 사용했습니다. 일반 트로이 목마는 포트 433을 통해 HTTP 메서드를 통해 IP 주소와 통신하는 것으로 밝혀졌습니다. 분석 당시 이 IP는 도메인을 호스팅하지 않았지만 forum.happyhippos[.]org와 인증서를 공유했습니다. 인증서 발급자는 IP 주소의 상대적 지리적 위치가 동일한 핀란드 우시마의 에스포 출신이라고 주장했습니다. 91.152.8.173에서 비정상적인 HTTP 헤더 공간을 통해 동일한 CIDR 범위의 또 다른 IP 주소가 탐지되었습니다. 이 IP는 다른 인증서를 사용했지만 포트 443을 통한 이전 Shodan 스캔에서는 콘텐츠가 없고 일반 텍스트 콘텐츠 유형이 포함된 404 찾을 수 없음 응답이 표시되며, 이는 Cobalt Strike 서버의 신뢰도가 낮은 신호입니다. 추가 데이터가 없으면 레코디드 퓨처는 이러한 IP에 대한 결론을 내릴 수 없었습니다.
IP 99.81.122.12는 2019년 4월 말에 비정상적인 간격, 코발트 스트라이크 인증서 사용, 컨트롤러 포트 50050이 열려 있는 점 등을 통해 식별되었습니다. 이 서버는 현재 비활성 상태이지만 이전에는 HTTP를 통해 액세스되는 코발트 스트라이크 비콘으로 사용되었습니다. 분석 시점에 서버가 도메인을 호스팅하지 않았습니다.
IP 72.14.184.90도 일반적인 코발트 스트라이크 인증서를 사용했습니다. 이 IP 주소는 악성 파일에 의해 HTTP를 통해 URL hxxps://72.14.184[.]90/search/news/로 연결됩니다. 파일이 코발트 스트라이크 비콘으로 감지되었습니다. 이 IP 주소는 2019년 1월 말 스피어피싱 캠페인에 연루된 것으로도 연루된 바 있습니다. 쇼단 스캔 데이터에 따르면 해당 서버에는 여러 가지 취약점이 있으며, 이는 해당 서버가 펜 테스트용으로 임대된 서버가 아니라 코발트 스트라이크 서버를 호스팅하기 위해 손상되었을 가능성이 있음을 가리킵니다.
06f8004835c5851529403f73ad23168b1127315d02c68e0153e362a73f915c72
마지막으로, 위협 활동에 대한 보고는 제한적이지만 가까운 시일 내에 잠재적인 악성 활동이 발생할 수 있다는 징후가 있는 IP가 다수 있었습니다:
레코디드 퓨처 원격 측정에 따르면 IP 172.96.250.199는 기본 코발트 스트라이크 인증서를 사용했지만 이와 관련된 위협 활동은 없었습니다. 이후 이 IP 주소는 도메인 haqiu[.]cf에 연결된 인증서를 포함하여 한 쌍의 LetsEncrypt 인증서를 사용하도록 인증서를 교체했습니다. 이 분석 시점에 도메인은 이 IP에서 활성 상태도 아니었고 호스팅되지도 않았습니다. 이 IP는 의심스러운 도메인인 ssss.ppwu[.]xyz를 호스팅하는 것과 연관되어 있습니다, 이중 LetsEncrypt 인증서를 사용했습니다. 이러한 인증서는 90일 동안만 유효하며 그 이후에는 Cloudflare 서버로 순환됩니다. 이는 향후 적대적 팀 교전 또는 코발트 스트라이크를 사용한 향후 위협 활동을 나타낼 수 있습니다.
IP 139.162.18.83은 기본 코발트 스트라이크 SSL 인증서를 사용하여 식별되었지만, 이 IP 주소에서 위협 활동이나 기타 이상한 점은 관찰되지 않았습니다. 그러나 동일한 CIDR 범위에서 139.162.18.179가 HTTP 응답에 포함된 비정상적인 공간에서 식별되었으며, 기본 Cobalt Strike SSL 인증서를 사용하는 것으로 확인되었습니다. 현재 해당 서버와 관련된 위협 활동은 없지만 의심스러운 도메인이 여러 개 해당 IP에서 호스팅되고 있습니다.
IP 124.156.106.98은 기본 Cobalt Strike 인증서를 사용했으며, 포트 50050이 열려 있어 Cobalt Strike 컨트롤러 패널에 사용할 수 있습니다. 이 IP는 2019년 3월에 관측된 코발트 스트라이크 비콘의 명령 및 제어로 관찰되었습니다. 그러나 2019년 5월 2일 현재 해당 IP에 이상한 도메인인 kongbu.koubaogangjiao[.]xyz가 등록되어 호스팅되고 있습니다, 코발트 스트라이크 신호가 아직 살아있을 때입니다. 이 도메인은 향후 침투 테스트 또는 악의적인 감염에 사용될 수 있습니다.
전망
레코디드 퓨처는 알려진 위협의 신호를 클러스터링하여 위협 활동의 기준이 되고 보다 고유한 위협을 쉽게 식별할 수 있도록 하는 것이 중요하다고 생각합니다. 표준 코발트 스트라이크 인증서의 지속적인 목격과 3.13 이전 버전의 HTTP 응답에서 비정상적인 공간이 발견되는 것은 여러 서명을 공동으로 사용하는 것이 활성 코발트 스트라이크 서버를 식별하는 가장 좋은 방법이라는 것을 나타냅니다.
첩보 활동을 하는 플레이어는 개발 시간과 리소스를 많이 확보할 수 있는 반면, 군중 속에 섞일 수 있는 기득권이 있는 경우가 많습니다. 언어 장벽으로 인한 업데이트에 대한 지식 부족, 현재 설치된 버전의 운영 편의성, 업데이트 설치를 방해하는 기타 수정 사항 등 고의가 아닌 다른 장애물로 인해 코발트 스트라이크 서버에 패치가 적용되지 않을 수 있습니다. 크랙 버전의 Cobalt Strike를 사용하거나 표준 Cobalt Strike 인스턴스를 배포하면 위협이 혼합되어 어트리뷰션이 어려워집니다. 또한, 크랙 버전의 프레임워크를 실행하면 액터는 이전 버전의 코발트 스트라이크와 혼합하여 사용할 수 있습니다.
이러한 서버를 지속적으로 탐지하면 SOC 및 IR 팀이 경고 또는 차단 기능을 개발할 수 있는 규칙을 제공하고 이러한 서버와 통신하는 호스트에 대한 조사를 진행할 수 있습니다.
관련