핵심 사항
- REF2754 인트루전 세트는 여러 PE 로더, 백도어 및 PowerShell 러너를 활용합니다.
- 스펙트럴바이퍼는 이전에 공개되지 않았던 고도로 난독화된 x64 백도어로, PE 로딩 및 주입, 파일 업로드 및 다운로드, 파일 및 디렉토리 조작, 토큰 사칭 기능을 제공합니다.
- REF2754는 베트남 기반 침입 세트에 기인하며, 캔버스 사이클론/APT32/OceanLotus 위협 액터와 일치합니다.
서문
Elastic Security Labs는 몇 달 동안 베트남의 대형 공기업을 표적으로 하는 침입 세트인 REF2754를 추적해 왔습니다. 이 기간 동안 저희 팀은 국가와 연계된 공격자가 새로운 멀웨어를 사용하는 것을 발견했습니다.
이 연구에서는 이에 대해 설명합니다:
- 스펙트럴바이퍼 멀웨어
- P8LOADER 멀웨어 로더
- 파워실 멀웨어
- REF2754의 캠페인 및 침입 분석
실행 흐름
기록된 첫 번째 이벤트는 이전에 손상된 엔드포인트에서 SMB를 통해 드롭된 시스템 서비스에 의해 파일(C:\사용자\공개\라이브러리\dbg.config) 이 생성된 것입니다. 공격자는 실행 중인 프로세스에서 메모리 메타데이터를 수집하는 데 사용되는 SysInternals ProcDump 유틸리티의 이름을 변경하여 Windows 디버거 유틸리티( windbg.exe )로 가장했습니다. 공격자는 -md 플래그와 함께 이름이 변경된 ProcDump 애플리케이션을 사용하여 악성 코드가 포함된 서명되지 않은 DLL인 dbg.config를 로드했습니다.
ProcDump LOLBAS 기법은 인수에 유효한 프로세스가 있어야 하므로 winlogon.exe가 인수에 포함되어 있지만, 이는 유효한 프로세스이기 때문에 사용되는 것이지 ProcDump의 수집 대상이 되는 것이 아니라는 점에 유의해야 합니다.
서명되지 않은 DLL(dbg.config) 에는 도넛로더 셸코드가 포함되어 있으며, 이 셸코드는 Microsoft 원격 세션 메시지 서버인 sessionmsg.exe에 주입하려고 시도했습니다. 도넛로더는 스펙트럴바이퍼 백도어와 궁극적으로 상황에 따라 달라지는 P8LOADER 또는 POWERSEAL 멀웨어 제품군을 로드하도록 구성되었습니다. 다음은 REF2754 인트루전 세트의 실행 흐름입니다.
저희 팀도 위에서 설명한 것과 유사한 워크플로우를 관찰했지만, 악성 실행을 프록시하는 기법은 달랐습니다. 한 예는 인터넷 익스플로러 프로그램( ExtExport.exe )을 이용해 DLL을 로드하는 방식이었고, 다른 기법은 합법적인 애플리케이션( nslookup.exe )을 이용해 악성 DLL( dnsapi.dll )을 사이드로드하는 방식이었습니다.
이러한 기법과 멀웨어 제품군은 REF2754 침입 세트를 구성합니다.
스펙트럼바이퍼 코드 분석
Overview
조사 중에 이전에 발견되지 않은 백도어 멀웨어 제품군을 발견했으며, 이 제품군을 SPECTRALVIPER라고 명명했습니다. 스펙트럼바이퍼는 C++로 코딩된 64비트 Windows 백도어로, 고도로 난독화되어 있습니다. 두 가지 통신 모드로 작동하며, HTTP 또는 Windows 네임 파이프를 통해 메시지를 수신할 수 있습니다.
분석을 통해 다음과 같은 기능을 확인했습니다:
- PE 로딩/인젝션 : 스펙트럼바이퍼는 실행 파일을 로딩하고 인젝션할 수 있으며, x86 및 x64 아키텍처를 모두 지원합니다. 이 기능을 사용하면 합법적인 프로세스 내에서 악성 코드를 실행할 수 있습니다.
- 토큰 사칭 : 이 멀웨어는 보안 토큰을 사칭하여 높은 권한을 부여하고 특정 보안 조치를 우회할 수 있는 기능을 가지고 있습니다. 이를 통해 민감한 리소스에 대한 무단 액세스 및 조작이 가능합니다.
- 파일 다운로드/업로드 : 스펙트럴바이퍼는 감염된 시스템에서 파일을 다운로드하고 업로드할 수 있습니다. 이를 통해 공격자는 데이터를 유출하거나 감염된 시스템에 추가적인 악성 페이로드를 전달할 수 있습니다.
- 파일/디렉토리 조작 : 백도어는 감염된 시스템의 파일과 디렉토리를 조작할 수 있습니다. 여기에는 파일 또는 디렉토리의 생성, 삭제, 수정, 이동이 포함되며, 공격자는 피해자의 파일 시스템을 광범위하게 제어할 수 있게 됩니다.
실행 흐름
시작하기
스펙트럼바이퍼는 PE 실행 파일 또는 DLL 파일로 컴파일할 수 있습니다. 악성코드를 PE로 실행하는 방법은 .\spectralviper.exe를 실행하는 것입니다.
그러나 멀웨어가 DLL인 경우, 관찰된 샘플에서 sqlite3와 같은 알려진 내보내기를 사용하여 합법적인 라이브러리로 위장하려고 시도합니다.
스펙트럼바이퍼 엔트리포인트는 이러한 내보내기 내에 숨겨져 있습니다. 올바른 것을 찾기 위해 PowerShell과 rundll-ng를 사용하여 무차별 호출할 수 있습니다. 아래에 표시된 PowerShell 명령은 맬웨어 기능을 실행하는 것을 찾을 때까지 각 SPECTRALVIPER 내보내기를 for 루프에서 호출합니다.
for($i=0; $i -lt 20; $i++){.\rundll-ng\rundll64-ng.exe ".\7e35ba39c2c77775b0394712f89679308d1a4577b6e5d0387835ac6c06e556cb.dll" "#$i"}
실행 시 바이너리는 하드코딩된 구성에 따라 HTTP 모드 또는 파이프 모드 중 하나로 작동합니다.
파이프 모드
파이프 모드에서 SPECTRALVIPER는 하드코딩된 이름을 가진 명명된 파이프를 열고 들어오는 명령을 기다립니다(이 예제에서는 \.\pipe\raSeCIR4gg).
이 명명된 파이프에는 보안 속성이 없으므로 모든 사람이 액세스할 수 있습니다. 이는 보안되지 않은 네임드 파이프를 공동 상주하는 위협 행위자(스펙트럼바이퍼 운영자에게 알려지거나 알려지지 않은) 또는 방어팀이 이 실행 모드를 방해하는 방법으로 사용할 수 있기 때문에 흥미롭습니다.
그러나 이 파이프와 통신하려면 특정 프로토콜이 필요합니다. 스펙트럼바이퍼는 네임드 파이프를 통해 전송되는 명령을 암호화하고 복호화하는 데 필요한 키를 교환하기 위해 Diffie-Helman 키 교환 프로토콜을 구현하며, 이는 AES로 암호화되어 있습니다.
HTTP mode
HTTP 모드에서 멀웨어는 n초마다 C2에 비콘을 보내며, 그 간격은 10 ~ 99 초 범위에서 무작위로 생성됩니다.
디버거를 사용하면 바이너리에 하드코딩된 도메인이 포함된 경우 바이너리가 네임드 파이프 대신 HTTP 채널을 사용하도록 강제할 수 있습니다.
아래는 HTTP 요청 예시입니다.
요청에는 호스트에서 수집한 정보를 포함하는 쿠키 헤더인 ' euconsent-v2 '가 포함되어 있습니다. 이 정보는 RSA1024 비대칭 암호화를 사용하여 암호화되고 Base64를 사용하여 인코딩됩니다. 아래는 암호화 전 쿠키 콘텐츠의 예시입니다.
이 예제에서 첫 번째 값인 " H9mktfe2k0ukk64nZjw1ow== "는 통신 데이터를 암호화하기 위해 서버와 공유되는 무작위로 생성된 AES 키입니다.
명령
스펙트럼바이퍼 샘플을 분석하던 중 33 핸들러와 36 핸들러가 포함된 명령 핸들러 테이블을 발견했습니다.
아래는 식별된 명령을 나열한 표입니다.
ID | 이름 |
---|---|
2 | 다운로드파일 |
3 | 업로드 파일 |
5 | 설정 비콘 간격 |
8 | CreateRundll32ProcessAndHollow |
11 | InjectShellcodeInProcess |
12 | CreateProcessAndInjectShellcode |
13 | InjectPEInProcess |
14 | CreateProcessAndHollow |
20 | CreateRundll32ProcessWithArgumentAndInjectPE |
81 | StealProcessToken |
82 | 사용자 사칭 |
83 | RevertToSelf |
84 | AdjustPrivileges |
85 | GetCurrentUserName |
103 | 목록 파일 |
106 | 목록 실행 프로세스 |
108 | CopyFile |
109 | 파일 삭제 |
110 | CreateDirectory |
111 | 이동 파일 |
200 | RunDLLInOwnProcess |
스펙트럴바이퍼와 상호 작용하는 프로세스의 속도를 높이기 위해 통신 프로토콜을 우회하고 자체 백도어를 바이너리에 삽입했습니다. 이 백도어는 메시지를 수신하면 소켓을 열고 핸들러를 호출합니다.
조정 권한 명령이 실행되면 프로세스의 현재 권한 수준에 따라 악성 코드는 다음과 같은 권한 목록을 설정하려고 시도합니다.
방어 회피
코드 난독화
바이너리 코드는 각 함수를 초기 로직을 캡슐화하는 다단계 더미 함수로 분할하여 심하게 난독화합니다. 또한 이러한 함수의 제어 흐름은 제어 흐름 평탄화를 사용하여 난독화됩니다. 제어 흐름 평탄화는 깨끗한 프로그램 구조를 제거하고 프로그램의 흐름을 제어하기 위해 스위치 문이 있는 루프 내부에 블록을 나란히 배치하는 난독화 기법입니다.
아래는 함수의 복잡성에도 불구하고 강조 표시된 매개변수 p_a1만 반환되는 2단계 신원 함수의 예시입니다.
문자열 난독화
스펙트럼바이퍼의 문자열은 사용자 지정 구조와 AES 복호화를 사용하여 난독화됩니다. 키는 하드코딩되어 있으며 ( "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f " ) IV는 암호화된 문자열 구조 안에 포함되어 있습니다.
멀웨어를 계측하고 AES 복호화 함수를 호출하여 문자열을 복호화할 수 있습니다.
요약
SPECTRALVIPER는 Elastic Security Labs에서 침입 분석 중에 발견된 x64 백도어입니다. 일반적으로 알려진 바이너리 내보내기를 모방하는 실행 파일 또는 DLL로 컴파일할 수 있습니다.
프로세스 로딩/인젝션, 토큰 사칭, 파일 조작이 가능합니다. 암호화된 통신 채널(HTTP 및 네임드 파이프)과 AES 암호화 및 Diffie-Hellman 또는 RSA1024 키 교환을 사용합니다.
모든 샘플은 다양한 강도의 동일한 난독화기를 사용하여 강력하게 난독화됩니다.
정적 및 동적 분석을 통해 수집한 정보를 사용하여 VirusTotal에서 다른 여러 샘플을 식별할 수 있었습니다. 위에서 설명한 디버깅 프로세스를 사용하여 이러한 샘플에 대한 C2 인프라도 수집할 수 있었습니다.
P8LOADER
Overview
아래에 설명된 휴대용 실행 파일(PE)은 C++로 작성된 Windows x64 PE 로더로, 내보내기 기능 중 하나인 P8exit의 이름을 따서 P8LOADER라고 명명했습니다.
탐색
P8LOADER는 처음에 유효한 Windows 프로세스인 RuntimeBroker.exe의 실행으로 인해 백업되지 않은 셸코드 경고가 생성되었을 때 발견되었습니다. 백업되지 않은 실행 섹션 또는 플로팅 코드는 코드 섹션 유형이 디스크의 파일에 매핑된 경우와 같이 '이미지' 대신 '비공개'로 설정된 결과입니다. 이러한 유형의 메모리 영역에서 시작하는 스레드는 비정상적이며 악의적인 활동을 나타내는 좋은 지표입니다.
지원되지 않는 실행 가능 이벤트에 대해 자세히 알아보려면 Joe Desimone이 작성한 ' 메모리에서 사냥하기' 연구 자료를 확인하세요.
실행 흐름
로더는 파일 또는 메모리에서 자체 프로세스 메모리로 PE 바이너리를 로드하는 기능이 있는 두 가지 함수를 내보냅니다.
실행할 PE는 일반적인 PE 로딩 알고리즘(섹션 로드, 가져오기 확인, 재배치 적용)과 함께 VirtualAlloc 메서드를 사용하여 메모리에 로드됩니다.
그런 다음 PE의 진입점을 시작 주소로 하여 새 스레드가 할당됩니다.
마지막으로 로드된 PE의 STDOUT 핸들을 파이프로 대체하고 바이너리의 출력을 로더 로깅 시스템으로 리디렉션하는 방법으로 읽기 파이프 스레드를 생성합니다.
로더는 로드된 PE 출력을 리디렉션하는 것 외에도 API 차단 메커니즘을 사용하여 로드된 프로세스의 특정 API를 연결하고, 해당 호출을 기록하고, 이름이 지정된 파이프(임의로 생성된 UUID 문자열을 이름으로 사용)를 통해 데이터를 전송합니다.
PE의 가져오기 테이블 후킹은 가져오기 해결 시 원래 가져온 함수 주소를 자체 스텁으로 대체하여 수행됩니다.
방어 회피
문자열 난독화
P8LOADER는 C++ 템플릿 기반 난독화 기술을 사용하여 컴파일 시 무작위로 선택된 다양한 알고리즘 세트로 오류를 가리고 문자열을 디버그합니다.
이러한 문자열은 로더 기능 및 성능에 대한 중요한 정보를 제공하므로 분석을 방해하지 않도록 난독화되어 있습니다.
요약
P8LOADER는 파일 또는 메모리에서 PE를 실행하는 데 사용되는 새로 발견된 x64 Windows 로더입니다. 이 멀웨어는 로드된 PE 출력을 로깅 시스템으로 리디렉션하고 PE 가져오기를 연결하여 가져오기 호출을 기록할 수 있습니다.
파워실 코드 분석
Overview
이 침입 중에 임베디드 문자열을 기반으로 POWERSEAL이라고 부르는 경량 .NET PowerShell 런너가 관찰되었습니다. 스펙트럼바이퍼가 성공적으로 배포된 후에는 제공된 파워셸 스크립트 또는 명령을 실행하는 데 POWERSEAL 유틸리티가 사용됩니다. 이 멀웨어는 방어 솔루션(AMSI/ETW)을 회피하기 위해 시스템 호출( NtWriteVirtualMemory )을 활용합니다.
방어 회피
Windows용 이벤트 추적(ETW)은 사용자 모드 애플리케이션 및 커널 모드 드라이버에서 발생하는 이벤트를 추적하고 기록하는 메커니즘을 제공합니다. AMSI(안티 멀웨어 스캔 인터페이스)는 데이터, 애플리케이션 및 워크로드에 대한 향상된 멀웨어 보호 기능을 제공합니다. 파워실은 이러한 기술을 메모리에 패치하기 위해 잘 알려져 있고 공개적으로 사용 가능한 바이패스를 채택하고 있습니다. 이렇게 하면 성공 확률이 높아지는 동시에 탐지될 수 있는 발자국은 줄어듭니다.
예를 들어, 파워실은 Microsoft Defender의 서명을 우회하기 위해 AMSI를 해제하고 우회하는 일반적인 접근 방식을 사용합니다.
PowerShell 시작
POWERSEAL의 주요 기능은 PowerShell을 실행하는 것입니다. 다음 POWERSEAL의 소스 코드 그림에서 POWERSEAL이 PowerShell을 사용하여 스크립트와 인수( command )를 실행하는 것을 볼 수 있습니다. 스크립트와 인수는 위협 행위자가 제공한 것이며 환경에서 관찰되지 않았습니다.
요약
POWERSEAL은 다양한 오픈 소스 공격 보안 도구에서 자유롭게 차용하여 방어 회피 기능이 내장된 간소화된 패키지로 공격 기능을 제공하는 새롭고 특수 제작된 PowerShell 실행기입니다.
캠페인 및 적 모델링
Overview
REF2754는 베트남 내 국가적으로 중요한 대형 공기업을 대상으로 진행 중인 캠페인입니다. 이 캠페인의 멀웨어 실행 체인은 도넛로더로 시작되지만 이전에 보고되지 않은 툴을 활용합니다.
- PE 로딩 및 주입, 파일 업로드 및 다운로드, 파일 및 디렉터리 조작, 토큰 사칭, 네임드 파이프 및 HTTP 명령 및 제어를 제공하는 난독화된 x64 백도어인 SPECTRALVIPER.
- 공격자가 피해자 엔드포인트에서 일부 로깅을 최소화하고 난독화할 수 있는 난독화된 Windows PE 로더인 P8LOADER, 그리고
- 파워셸 도구 사용 시 방어 회피를 강화하기 위해 ETW 및 AMSI 바이패스가 내장된 파워셸 러너인 파워실(POWERSEAL)
엘라스틱 보안 연구소는 이 캠페인이 베트남 국가 관련 위협에 의해 실행되고 있다고 어느 정도 확신하고 있습니다.
피해자학
스펙트럼바이퍼 야라 시그니처를 사용하여 스펙트럼바이퍼 임플란트에 감염된 두 번째 환경에서 두 개의 엔드포인트를 확인했습니다. 이러한 환경은 REF4322를 설명하는 2022 의 Elastic 보안 연구소 연구에서 논의되었습니다.
REF4322 피해자는 베트남에 본사를 둔 금융 서비스 회사입니다. 엘라스틱 보안 연구소는 2022년에 이 피해자와 활동 그룹에 대해 처음 이야기했습니다.
REF2754 피해자는 베트남에 본사를 둔 대규모 농업 기업으로 확인되었습니다.
이 연구가 끝날 무렵에 이용 가능한 YARA 규칙을 역추적하여 얻은 바이러스토탈의 추가 타사 정보에 따르면 베트남에 기반을 둔 피해자가 더 있는 것으로 나타났습니다. 총 8번의 레트로헌트 히트가 있었습니다:
- 모두 수동으로 스펙트럼바이퍼로 확인되었습니다.
- 모든 샘플의 크기는 1.59MB에서 1.77MB 사이였습니다.
- 모든 VirusTotal 샘플은 처음에 베트남에서 제출되었습니다.
일부 샘플은 이전에 첫 번째 파티 컬렉션에서 확인된 샘플이고 일부는 새로 발견된 샘플입니다.
'VT 제출자'에 너무 많이 의존할 경우 분석의 한계가 있다는 점에 유의하세요. 이 제3자 보고 메커니즘은 순환 보고 문제나 사용된 GEO를 수정하는 VPN 사용, 의도치 않게 가설을 강화하는 등의 문제가 발생할 수 있습니다. 이 경우 베트남이 아닌 출처가 분명한 샘플을 찾으려는 시도로 사용되었지만 성공하지 못했습니다.
발표 시점에 알려진 피해자는 모두 베트남에 물리적으로 소재하고 있으며 주로 베트남 내에서 사업을 영위하는 대기업입니다.
캠페인 분석
REF4322 환경과 겹치는 시기는 2023년 4월 20일로 상당히 최근에 발생했습니다. 이 엔드포인트 중 하나는 이전에 PHOREAL 임플란트에 감염되었고, 다른 엔드포인트는 PIPEDANCE로 인해 손상되었습니다.
이러한 스펙트럼바이퍼 감염은 명명된 파이프( \.\pipe\ydZb0bIrT )를 통해 들어오는 연결을 기다리도록 설정된 하드코딩 도메인이 아닌 파이프 모드에서 구성되었습니다.
이 활동은 액세스 권한을 넘겨주거나 한 도구에서 다른 도구로 교체하는 것으로 보입니다.
PIPEDANCE 멀웨어에 대한 자세한 분석이 궁금하다면 이전 연구 결과를 확인하시고, 앞으로 더 많은 소식을 기대해 주세요.
그러나 익스플로잇 후 의도된 효과에 대한 수집은 제한적이었지만, 악성코드, 임플란트 및 기술 역량을 기반으로 한 동기 평가에 따르면 초기 액세스, 지속성 유지, 정보 수집 목적의 백도어로 작동하는 것으로 나타났습니다.
C2에 사용된 REF4322, REF2754 및 VirusTotal에서 수집한 샘플의 도메인은 모두 작년에 등록되었으며 가장 최근 등록은 2023년 4월 말입니다.
도메인: | 생성됨: |
---|---|
stablewindowsapp[.]com | 2022-02-10 |
webmanufacturers[.]com | 2022-06-10 |
toppaperservices[.]com | 2022-12-15 |
hosting-wordpress-services[.]com | 2023-03-15 |
appointmentmedia[.]com | 2023-04-26 |
이러한 도메인의 관련 IP에 대한 GEO는 전 세계에 분산되어 있으며, Sectigo, Rapid SSL 및 Let's Encrypt 인증서를 사용합니다. 추가 인프라 분석 결과 등록 날짜 외에 주목할 만한 사항은 발견되지 않았지만, 캠페인 타임박스를 확인할 수 있었습니다. 최근 약속미디어[.]닷컴의 등록을 보면, 이 캠페인은 앞으로도 새로운 도메인을 등록하여 침입을 시도할 가능성이 있습니다.
캠페인 연결
엘라스틱 보안 연구소는 REF4322와 REF2754 활동 그룹이 모두 베트남 국가 관련 위협이 계획하고 실행한 캠페인이라고 중간 정도의 확신을 가지고 결론지었습니다. 분석 결과, 이 활동 그룹은 이전에 보고된 캔버스 사이클론, APT32 및 OCEANLOTUS 위협 그룹과 겹치는 것으로 나타났습니다.
위와 이전 보고에서 언급했듯이 REF4322 피해자는 기업 인수 및 이전 국영 기업의 자본을 관리하는 금융 기관입니다.
REF2754 피해자는 베트남의 식품 생산 및 유통 공급망에서 체계적으로 중요한 역할을 하는 대규모 농업 기업입니다. 지속적인 도시화, 오염, 코로나19 팬데믹, 기후 변화는 베트남의 식량 안보에 큰 도전이 되고 있습니다. 참고로, 2023년 3월 베트남 총리는 2030년까지 베트남의 투명성, 책임성, 지속가능성을 향한 식품 시스템 전환에 관한 국가 행동 계획을 승인했습니다. 이 프로젝트의 전반적인 목표는 생산, 가공, 유통, 소비를 포함한 식품 시스템을 현지의 장점을 바탕으로 투명성, 책임감, 지속가능성으로 전환하고, 국가 식량 및 영양 안보 보장, 국민 소득 및 생활 수준 향상, 자연재해 및 전염병 예방 및 통제, 환경 보호 및 기후 변화 대응, 마지막으로 2030년까지 베트남 및 글로벌 지속 가능한 개발 목표의 이행에 기여하는 것입니다. 이 모든 것은 식량 안보가 베트남의 전략적 목표와 맞닿아 있기 때문에 위협 행위자들에게 매력적인 표적이 되고 있다는 점을 강조하며, 식량 안보가 국가 정책의 중점 사항이라는 점을 강조합니다.
피해자들은 REF4322와 REF2754의 국가적 전략적 이해관계와 더불어 두 침입에서 유사한 배포 기법, 임플란트 관리 및 명명 규칙을 사용하여 두 피해자 모두 도넛로더, P8로더, 파워실, 스펙트럴바이퍼 멀웨어 제품군에 감염되었습니다.
REF4322에서 제공되는 금융 거래 기록에 액세스할 수 있는 위협 그룹은 REF2754의 국가 전략 식품 안전 정책과 결합하여 규제 보고를 통해서는 알 수 없는 경영진의 역량, 부패, 외국 영향력 또는 가격 조작에 대한 통찰력을 제공할 수 있습니다.
다이아몬드 모델
Elastic Security는 다이아몬드 모델을 활용하여 침입의 공격자, 기능, 인프라, 피해자 간의 높은 수준의 관계를 설명합니다. 다이아몬드 모델은 단일 인시던트에 가장 일반적으로 사용되며, 인시던트 간의 관계를 생성하는 방법으로 활동 스레딩(섹션 8)을 활용하지만, 공격자 중심(섹션 7.1.4)으로도 사용할 수 있습니다. 접근 방식은 (어수선한) 단일 다이아몬드를 허용합니다.
관찰된 적의 전술 및 기법
Elastic은 MITRE ATT&CK 프레임워크를 사용하여 지능형 지속적 위협이 기업 네트워크에 대해 사용하는 일반적인 전술, 기술 및 절차를 문서화합니다.
전술
전술은 기술 또는 하위 기술의 이유를 나타냅니다. 이는 적의 전술적 목표, 즉 행동을 수행하는 이유입니다.
기술/하위 기술
기술 및 하위 기술은 적군이 행동을 수행하여 전술적 목표를 달성하는 방법을 나타냅니다.
- 호스트 정보 수집
- 피해자 네트워크 정보 수집
- 네트워크 공유 검색
- 원격 시스템 검색
- 파일 및 디렉터리 검색
- 프로세스 검색
- 시스템 서비스 검색
- 시스템 소유자/사용자 검색
- 프로세스 인젝션
- 가장무도회
- 애플리케이션 계층 프로토콜: 웹 프로토콜
- 토큰 조작에 액세스하기: 토큰 만들기 및 가장하기
탐지 로직
예방
이 연구 간행물에서 논의된 모든 멀웨어에는 Elastic Defend에 포함된 보호 기능이 있습니다.
YARA
Elastic Security는 이 활동을 식별하기 위해 YARA 규칙을 만들었습니다. 다음은 스펙트럴바이퍼, 파워실, P8로더를 식별하는 YARA 규칙입니다.
rule Windows_Trojan_SpectralViper_1 {
meta:
author = "Elastic Security"
creation_date = "2023-04-13"
last_modified = "2023-05-26"
os = "Windows"
arch = "x86"
category_type = "Trojan"
family = "SpectralViper"
threat_name = "Windows.Trojan.SpectralViper"
reference_sample = "7e35ba39c2c77775b0394712f89679308d1a4577b6e5d0387835ac6c06e556cb"
license = "Elastic License v2"
strings:
$a1 = { 13 00 8D 58 FF 0F AF D8 F6 C3 01 0F 94 44 24 26 83 FD 0A 0F 9C 44 24 27 4D 89 CE 4C 89 C7 48 89 D3 48 89 CE B8 }
$a2 = { 15 00 8D 58 FF 0F AF D8 F6 C3 01 0F 94 44 24 2E 83 FD 0A 0F 9C 44 24 2F 4D 89 CE 4C 89 C7 48 89 D3 48 89 CE B8 }
$a3 = { 00 8D 68 FF 0F AF E8 40 F6 C5 01 0F 94 44 24 2E 83 FA 0A 0F 9C 44 24 2F 4C 89 CE 4C 89 C7 48 89 CB B8 }
$a4 = { 00 48 89 C6 0F 29 30 0F 29 70 10 0F 29 70 20 0F 29 70 30 0F 29 70 40 0F 29 70 50 48 C7 40 60 00 00 00 00 48 89 C1 E8 }
$a5 = { 41 0F 45 C0 45 84 C9 41 0F 45 C0 EB BA 48 89 4C 24 08 89 D0 EB B1 48 8B 44 24 08 48 83 C4 10 C3 56 57 53 48 83 EC 30 8B 05 }
$a6 = { 00 8D 70 FF 0F AF F0 40 F6 C6 01 0F 94 44 24 25 83 FF 0A 0F 9C 44 24 26 89 D3 48 89 CF 48 }
$a7 = { 48 89 CE 48 89 11 4C 89 41 08 41 0F 10 01 41 0F 10 49 10 41 0F 10 51 20 0F 11 41 10 0F 11 49 20 0F 11 51 30 }
$a8 = { 00 8D 58 FF 0F AF D8 F6 C3 01 0F 94 44 24 22 83 FD 0A 0F 9C 44 24 23 48 89 D6 48 89 CF 4C 8D }
condition:
5 of them
}
rule Windows_Trojan_SpectralViper_2 {
meta:
author = "Elastic Security"
creation_date = "2023-05-10"
last_modified = "2023-05-10"
os = "Windows"
arch = "x86"
category_type = "Trojan"
family = "SpectralViper"
threat_name = "Windows.Trojan.SpectralViper"
reference_sample = "d1c32176b46ce171dbce46493eb3c5312db134b0a3cfa266071555c704e6cff8"
license = "Elastic License v2"
strings:
$a1 = { 18 48 89 4F D8 0F 10 40 20 0F 11 47 E0 0F 10 40 30 0F 11 47 F0 48 8D }
$a2 = { 24 27 48 83 C4 28 5B 5D 5F 5E C3 56 57 53 48 83 EC 20 48 89 CE 48 }
$a3 = { C7 84 C9 0F 45 C7 EB 86 48 8B 44 24 28 48 83 C4 30 5B 5F 5E C3 48 83 }
$s1 = { 40 53 48 83 EC 20 48 8B 01 48 8B D9 48 8B 51 10 48 8B 49 08 FF D0 48 89 43 18 B8 04 00 00 }
$s2 = { 40 53 48 83 EC 20 48 8B 01 48 8B D9 48 8B 49 08 FF D0 48 89 43 10 B8 04 00 00 00 48 83 C4 20 5B }
$s3 = { 48 83 EC 28 4C 8B 41 18 4C 8B C9 48 B8 AB AA AA AA AA AA AA AA 48 F7 61 10 48 8B 49 08 48 C1 EA }
condition:
2 of ($a*) or any of ($s*)
}
rule Windows_Trojan_PowerSeal_1 {
meta:
author = "Elastic Security"
creation_date = "2023-03-16"
last_modified = "2023-05-26"
os = "Windows"
arch = "x86"
category_type = "Trojan"
family = "PowerSeal"
threat_name = "Windows.Trojan.PowerSeal"
license = "Elastic License v2"
strings:
$a1 = "PowerSeal.dll" wide fullword
$a2 = "InvokePs" ascii fullword
$a3 = "amsiInitFailed" wide fullword
$a4 = "is64BitOperatingSystem" ascii fullword
condition:
all of them
}
rule Windows_Trojan_PowerSeal_2 {
meta:
author = "Elastic Security"
creation_date = "2023-05-10"
last_modified = "2023-05-10"
os = "Windows"
arch = "x86"
category_type = "Trojan"
family = "PowerSeal"
threat_name = "Windows.Trojan.PowerSeal"
license = "Elastic License v2"
strings:
$a1 = "[+] Loading PowerSeal"
$a2 = "[!] Failed to exec PowerSeal"
$a3 = "AppDomain: unable to get the name!"
condition:
2 of them
}
rule Windows_Trojan_P8Loader {
meta:
author = "Elastic Security"
creation_date = "2023-04-13"
last_modified = "2023-05-26"
os = "Windows"
arch = "x86"
category_type = "Trojan"
family = "P8Loader"
threat_name = "Windows.Trojan.P8Loader"
license = "Elastic License v2"
strings:
$a1 = "\t[+] Create pipe direct std success\n" fullword
$a2 = "\tPEAddress: %p\n" fullword
$a3 = "\tPESize: %ld\n" fullword
$a4 = "DynamicLoad(%s, %s) %d\n" fullword
$a5 = "LoadLibraryA(%s) FAILED in %s function, line %d" fullword
$a6 = "\t[+] No PE loaded on memory\n" wide fullword
$a7 = "\t[+] PE argument: %ws\n" wide fullword
$a8 = "LoadLibraryA(%s) FAILED in %s function, line %d" fullword
condition:
5 of them
}
참고 자료
위의 조사에서 참조한 내용은 다음과 같습니다:
- https://www.elastic.co/security-labs/hunting-memory
- https://www.elastic.co/security-labs/phoreal-malware-targets-the-southeast-asian-financial-sector
- https://www.elastic.co/security-labs/twice-around-the-dance-floor-with-pipedance
- https://www.microsoft.com/en-us/security/blog/2020/11/30/threat-actor-leverages-coin-miner-techniques-to-stay-under-the-radar-heres-how-to-spot-them/
- https://learn.microsoft.com/en-us/microsoft-365/security/intelligence/microsoft-threat-actor-naming
관찰
모든 관측값은 결합된 압축 파일 번들로 ECS 및 STIX 형식으로도 다운로드할 수 있습니다.
이 연구에서는 다음과 같은 관찰 가능성에 대해 논의했습니다.
Observable | 유형 | 이름 | 참조 |
---|---|---|---|
56d2d05988b6c23232b013b38c49b7a9143c6649d81321e542d19ae46f4a4204 | SHA-256 | - | 아래 1.dll 관련 스펙트럼바이퍼 |
d1c32176b46ce171dbce46493eb3c5312db134b0a3cfa266071555c704e6cff8 | SHA-256 | 1.dll | SPECTRALVIPER |
7e35ba39c2c77775b0394712f89679308d1a4577b6e5d0387835ac6c06e556cb | SHA-256 | asdgb.exe | SPECTRALVIPER |
4e3a88cf00e0b4718e7317a37297a185ff35003192e5832f5cf3020c4fc45966 | SHA-256 | Settings.db | SPECTRALVIPER |
7b5e56443812eed76a94077763c46949d1e49cd7de79cde029f1984e0d970644 | SHA-256 | Microsoft.MicrosoftEdge_8wekyb3d8bbwe.pkg | SPECTRALVIPER |
5191fe222010ba7eb589e2ff8771c3a75ea7c7ffc00f0ba3f7d716f12010dd96 | SHA-256 | UpdateConfig.json | SPECTRALVIPER |
4775fc861bc2685ff5ca43535ec346495549a69891f2bf45b1fcd85a0c1f57f7 | SHA-256 | Microsoft.OneDriveUpdatePackage.mca | SPECTRALVIPER |
2482c7ececb23225e090af08feabc8dec8d23fe993306cb1a1f84142b051b621 | SHA-256 | ms-certificates.sst | SPECTRALVIPER |
stablewindowsapp[.]com | 도메인 | 해당 없음 | C2 |
webmanufacturers[.]com | 도메인 | 해당 없음 | C2 |
toppaperservices[.]com | 도메인 | 해당 없음 | C2 |
hosting-wordpress-services[.]com | 도메인 | 해당 없음 | C2 |
appointmentmedia[.]com | 도메인 | 해당 없음 | C2 |