위협 데이터베이스 멀웨어 VOID#GEIST 멀웨어

VOID#GEIST 멀웨어

사이버 보안 연구원들이 암호화된 원격 접속 트로이목마(RAT) 페이로드를 전달하기 위해 배치 스크립트를 사용하는 정교한 다단계 악성코드 캠페인을 발견했습니다. VOID#GEIST로 식별된 이 캠페인은 XWorm, AsyncRAT, Xeno RAT을 포함한 여러 RAT 계열을 배포합니다.

이 공격은 탐지를 회피하도록 설계된 일련의 작업을 시작하는 난독화된 배치 스크립트를 활용합니다. 이러한 작업에는 추가 배치 스크립트 실행, 정상적인 임베디드 Python 런타임 환경 구축, 암호화된 셸코드 페이로드 복호화 등이 포함됩니다. 셸코드는 Early Bird APC(Asynchronous Procedure Call) 인젝션 기법을 사용하여 Windows 프로세스 explorer.exe의 여러 인스턴스에 주입된 후 메모리에서 직접 실행됩니다.

스크립트 기반 악성코드 유포: 현대적인 위협 모델

현대의 위협 행위자들은 기존의 독립 실행형 악성코드를 버리고 합법적인 사용자 행동을 모방하는 계층화된 스크립트 기반 배포 프레임워크를 점점 더 선호하고 있습니다. 공격자들은 일반적인 PE(Portable Executable) 바이너리를 배포하는 대신, 여러 합법적인 기술과 스크립팅 환경을 결합한 다중 구성 요소 파이프라인을 구성합니다.

이러한 프레임워크에서 일반적으로 사용되는 구성 요소는 다음과 같습니다.

  • 감염 과정을 조율하는 데 사용되는 배치 스크립트.
  • 은밀한 페이로드 준비를 용이하게 하는 PowerShell 명령입니다.
  • 시스템 간 이식성을 보장하는 내장형 정품 런타임.
  • 지속성과 제어권을 유지하기 위해 메모리에서 직접 실행되는 원시 셸코드입니다.

이러한 파일 없는 실행 방식은 디스크 기반 탐지 가능성을 크게 줄입니다. 각 단계는 개별적으로 살펴보면 비교적 무해해 보이며, 일상적인 관리 활동과 유사한 경우가 많아 공격자가 즉각적인 보안 경고 없이 손상된 환경에서 활동할 수 있도록 합니다.

피싱 및 Cloudflare 인프라를 통한 초기 접근

공격은 피싱 이메일을 통해 전달되는 악성 배치 스크립트로 시작됩니다. 해당 스크립트는 TryCloudflare 도메인에 호스팅된 인프라에서 가져온 것입니다. 실행되면 스크립트는 의도적으로 권한 상승을 시도하지 않고 현재 로그인한 사용자의 권한 범위 내에서만 작동합니다.

이 전략을 통해 악성코드는 일반적인 사용자 수준의 작업에 섞여 들어가면서 초기 침투 경로를 확보할 수 있습니다. 관리자 권한이 필요한 작업을 피함으로써 보안 경고나 관리자 요청 메시지가 나타날 가능성을 줄입니다.

시각적 주의 분산 및 은밀한 실행 기법

악성코드가 실행되면 첫 번째 단계에서 피해자의 주의를 분산시키기 위해 가짜 문서를 표시합니다. Google Chrome이 전체 화면 모드로 열려 PDF 형식의 재무 문서 또는 청구서가 표시됩니다. 사용자가 문서에 집중하는 동안 악성 활동은 백그라운드에서 계속 진행됩니다.

동시에 PowerShell 명령이 실행되어 실행 매개변수를 숨긴 상태로 원래 배치 스크립트를 다시 실행합니다. `-WindowStyle Hidden` 매개변수를 사용하면 콘솔 창이 표시되지 않아 악성 행위가 사용자에게 드러나지 않습니다.

사용자 수준 시작 실행을 통한 지속성

시스템 재부팅 후에도 지속성을 유지하기 위해 악성 프로그램은 Windows 사용자 시작 디렉터리에 보조 배치 스크립트를 배포합니다. 이 위치는 피해자가 시스템에 로그인할 때마다 스크립트가 자동으로 실행되도록 합니다.

이 지속성 메커니즘은 의도적으로 교묘합니다. 시스템 레지스트리 키 수정, 예약 작업 생성 또는 서비스 설치와 같은 보다 침입적인 기술을 사용하는 대신, 악성 프로그램은 표준 사용자 수준의 시작 동작에만 의존합니다. 이 방식은 현재 사용자의 권한 범위 내에서만 작동하기 때문에 권한 상승 프롬프트가 발생하지 않고 레지스트리 모니터링 도구에 의한 탐지 가능성을 줄입니다.

페이로드 검색 및 복호화 프레임워크

감염 과정의 다음 단계에서 악성코드는 TryCloudflare 도메인에 접속하여 ZIP 압축 파일에 담긴 추가 페이로드 구성 요소를 다운로드합니다. 이 압축 파일에는 최종 악성코드 페이로드를 복호화하고 실행하는 데 필요한 모듈이 포함되어 있습니다.

다운로드한 압축 파일에는 일반적으로 다음과 같은 구성 요소가 포함되어 있습니다.

  • runn.py는 암호화된 셸코드 모듈을 복호화하고 메모리에 주입하는 역할을 하는 Python 기반 로더입니다.
  • new.bin – XWorm과 관련된 암호화된 셸코드 페이로드
  • xn.bin – Xeno RAT에 해당하는 암호화된 셸코드 페이로드
  • pul.bin – AsyncRAT에 해당하는 암호화된 셸코드 페이로드
  • a.json, n.json, 및 p.json은 Python 로더가 런타임 중에 셸코드 페이로드를 동적으로 복호화하는 데 사용하는 주요 파일입니다.

이 모듈식 설계는 공격자가 서로 다른 페이로드를 독립적으로 준비하고 필요할 때만 활성화할 수 있도록 해줍니다.

휴대성과 은밀성을 위한 임베디드 Python 런타임

압축 파일이 해제되면 악성 프로그램은 python.org에서 직접 가져온 정식 Python 런타임을 내장합니다. 정식 인터프리터를 내장함으로써 감염된 시스템에 이미 설치되어 있을 수 있는 Python에 의존하지 않게 됩니다.

공격자의 관점에서 볼 때, 이 단계는 여러 가지 전략적 이점을 제공합니다. 악성코드는 외부 종속성 없이도 페이로드를 복호화하고 주입할 수 있는 자체 실행 환경을 갖추게 됩니다. 이는 다양한 시스템에서의 이식성을 향상시키고, 신뢰성을 높이며, 합법적인 소프트웨어 구성 요소를 사용함으로써 운영상의 은밀성을 확보하는 데 기여합니다.

여러 RAT 페이로드의 메모리 내 실행

내장된 Python 런타임은 runn.py 로더 스크립트를 실행하는 데 사용됩니다. 로더는 XWorm과 관련된 셸코드를 복호화하고 Early Bird APC 인젝션을 사용하여 실행 중인 explorer.exe 인스턴스에 주입합니다.

Xeno RAT을 배포하기 위해 악성코드는 AppInstallerPythonRedirector.exe라는 마이크로소프트의 정식 바이너리를 이용합니다. 이 바이너리는 파이썬을 호출하고 필요한 구성 요소를 실행하는 데 사용됩니다. 동일한 주입 기법이 AsyncRAT을 배포하는 데에도 재사용되어 모든 페이로드가 디스크에 실행 파일 형태로 저장되지 않고 메모리에서만 실행되도록 합니다.

명령 및 제어 신호 체계와 모듈형 아키텍처

공격의 마지막 단계는 공격자가 제어하는 TryCloudflare의 명령 및 제어(C2) 인프라로 최소한의 HTTP 비콘을 전송하는 것입니다. 이 비콘은 시스템이 성공적으로 침해되었으며 추가 지시를 받을 준비가 되었음을 확인합니다.

이번 공격의 구체적인 목표는 아직 밝혀지지 않았지만, 감염 경로는 고도로 모듈화된 구조를 보여줍니다. 공격자들은 단일의 대규모 악성코드 페이로드를 배포하는 대신, 여러 단계에 걸쳐 구성 요소를 점진적으로 도입합니다. 이러한 설계는 운영 유연성과 복원력을 향상시킵니다.

탐지 관점에서 볼 때, 이번 공격 캠페인 전반에 걸쳐 주목할 만한 행동적 지표 하나가 나타납니다. 바로 짧은 시간 간격으로 explorer.exe에 반복적으로 프로세스 인젝션이 발생하는 것입니다. 이러한 패턴은 공격 수명주기의 여러 단계에 걸쳐 의심스러운 활동을 연관시키려는 방어자에게 강력한 신호가 될 수 있습니다.

트렌드

가장 많이 본

로드 중...