캐슬 RAT 클라이언트 멀웨어: 전술, 기법 및 거래기법
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
CastleRAT는 처음 2025년 3월에 관찰된 원격 액세스 트로이 목마로, Python 및 컴파일된 C 변형으로 제공됩니다. 시스템 메타데이터, 키 입력 기록, 클립보드 내용, 스크린샷 및 미디어 장치 세부 정보를 수집한 후 RC4 암호화를 사용하여 이 정보를 C2 서버로 유출합니다. 이 맬웨어는 추가적인 페이로드를 가져와서 rundll32를 통해 실행하고 예약된 작업 및 UAC 우회 방법을 통해 지속성을 구축할 수 있습니다.
조사
Splunk 위협 연구팀은 Python 및 C 구현을 리버스 엔지니어링하여 시스템 탐색, 키로깅, 화면 캡처, 오디오/비디오 장치 열거, 데드 드랍 리졸버 및 권한 상승을 위한 핸들 중복 등 MITRE ATT&CK 기술에 그들의 행동을 매핑했습니다. 이 연구는 CastleRAT이 정식 Windows 바이너리(rundll32 및 ComputerDefaults.exe)에 의존하며, 공용 IP 주소를 얻기 위해 www.ip-api.com을 사용한다는 점에 중점을 두었습니다.
완화
방어자는 알 수 없는 도메인으로의 의심스러운 외부 연결, RC4로 암호화된 트래픽 패턴 및 ordinal 기반 DLL 로드를 사용하는 rundll32 실행을 탐지해야 합니다. CastleRAT을 시작하기 위해 생성된 예약된 작업, ComputerDefaults.exe를 활용한 UAC 우회 시도 및 뮤트된 오디오 브라우저 플래그로 시작된 프로세스를 모니터링합니다. 악용된 Steam 커뮤니티 페이지를 포함하여 알려진 데드 드랍 리졸버 위치에 대한 접근을 차단합니다.
대응
CastleRAT 활동이 식별되면, 영향을 받은 호스트를 격리하고 악성 프로세스를 종료하며 관련된 모든 예약 작업이나 지속성 아티팩트를 제거합니다. 프로세스 계층, 명령줄 인수, 레지스트리 변경과 같은 포렌식 증거를 수집합니다. 추가 DLL 플러그인 및 C2 채널을 포괄적으로 추적한 후, 넓은 환경에 대한 복구 및 강화 조치를 전개합니다.
graph TB %% 클래스 정의 classDef technique fill:#e6f7ff %% 노드 정의 t1016_001[“<b>기법</b> – T1016.001 시스템 네트워크 구성 탐지<br />컴퓨터 이름, 사용자 이름, 머신 GUID, OS 버전 및 공용 IP 주소와 같은 시스템 정보를 수집하여 C2로 전송”] class t1016_001 technique t1115[“<b>기법</b> – T1115 클립보드 데이터<br />Windows 클립보드에서 데이터를 수집하고, 시뮬레이션된 붙여넣기 동작을 통해 외부로 전송”] class t1115 technique t1036[“<b>기법</b> – T1036 위장<br />드롭된 파일과 환경 변수를 합법적인 Python 또는 Java 구성 요소처럼 이름 지정”] class t1036 technique t1056_001[“<b>기법</b> – T1056.001 입력 캡처: 키로깅<br />키 입력을 가로채 로컬 파일에 기록하고, RC4로 암호화 후 공격자에게 전송”] class t1056_001 technique t1559[“<b>기법</b> – T1559 프로세스 간 통신<br />표준 스트림을 익명 파이프로 리디렉션한 숨김 셸 프로세스를 생성하여 콘솔 노출 없이 원격 명령 실행”] class t1559 technique t1123[“<b>기법</b> – T1123 오디오 캡처<br />Media Foundation을 통해 미디어 캡처 장치 열거”] class t1123 technique t1125[“<b>기법</b> – T1125 비디오 캡처<br />Media Foundation을 통해 미디어 캡처 장치 열거”] class t1125 technique t1218_011[“<b>기법</b> – T1218.011 시스템 바이너리 프록시 실행: Rundll32<br />DLL 내보내기 함수를 순서 번호로 로드”] class t1218_011 technique t1055_001[“<b>기법</b> – T1055.001 프로세스 주입: DLL 주입<br />rundll32.exe를 사용하여 악성 DLL 로드”] class t1055_001 technique t1547_010[“<b>기법</b> – T1547.010 부팅 또는 로그인 자동 실행: 포트 모니터<br />C2에서 추가 DLL 플러그인을 다운로드하고 RC4로 복호화하여 로드”] class t1547_010 technique t1053[“<b>기법</b> – T1053 예약 작업/잡<br />시작 시 악성코드 실행을 위해 예약 작업 생성”] class t1053 technique t1113[“<b>기법</b> – T1113 화면 캡처<br />주기적으로 스크린샷을 캡처하고 외부로 전송”] class t1113 technique t1102_001[“<b>기법</b> – T1102.001 웹 서비스: Dead Drop Resolver<br />정상 외부 웹사이트에서 구성 또는 페이로드 수신”] class t1102_001 technique t1127[“<b>기법</b> – T1127 신뢰된 개발자 유틸리티 프록시 실행<br />ComputerDefaults.exe와 핸들 복제를 사용하여 UAC 우회 및 권한 상승 코드 실행”] class t1127 technique t1027[“<b>기법</b> – T1027 난독화된 파일 또는 정보<br />명령과 데이터 페이로드에 RC4 암호화 사용”] class t1027 technique t1048_001[“<b>기법</b> – T1048.001 대체 프로토콜을 통한 유출: 대칭 암호화된 비 C2 프로토콜<br />암호화된 데이터를 C2로 전송”] class t1048_001 technique t1132_001[“<b>기법</b> – T1132.001 데이터 인코딩: 표준 인코딩<br />전송 전에 데이터를 인코딩”] class t1132_001 technique %% 공격 흐름 연결 t1016_001 u002du002d>|이후 단계| t1115 t1115 u002du002d>|이후 단계| t1036 t1036 u002du002d>|이후 단계| t1056_001 t1056_001 u002du002d>|이후 단계| t1559 t1559 u002du002d>|이후 단계| t1123 t1123 u002du002d>|이후 단계| t1125 t1125 u002du002d>|이후 단계| t1218_011 t1218_011 u002du002d>|이후 단계| t1055_001 t1055_001 u002du002d>|이후 단계| t1547_010 t1547_010 u002du002d>|이후 단계| t1053 t1053 u002du002d>|이후 단계| t1113 t1113 u002du002d>|이후 단계| t1102_001 t1102_001 u002du002d>|이후 단계| t1127 t1127 u002du002d>|이후 단계| t1027 t1027 u002du002d>|이후 단계| t1048_001 t1048_001 u002du002d>|이후 단계| t1132_001
공격 흐름
탐지
스케줄된 작업 활동에 의한 PowerShell을 통한 실행 가능 (via powershell)
보기
의심스러운 프로세스에 의해 수행된 Steam 커뮤니티 DNS 요청 (via dns_query)
보기
Castle RAT 클라이언트 맬웨어의 기술 및 전술 탐색: 방어를 위한 IOC(HashSha256)
보기
스케줄된 작업 활동에 의한 PowerShell을 통한 실행 가능 (via powershell)
보기
의심스러운 프로세스에 의해 수행된 Steam 커뮤니티 DNS 요청 (via dns_query)
보기
시뮬레이션 실행
필수 조건: 원격 시스템 베이스라인 사전 점검이 성공해야 합니다.
합리성: 이 섹션은 탐지 규칙을 트리거하도록 설계된 적 기법(TTP)의 정확한 실행을 자세히 설명합니다. 명령어와 내러티브는 식별된 TTP를 직접 반영하고 탐지 논리가 예상하는 정확한 텔레메트리를 생성해야 합니다. 추상적이거나 관련 없는 예는 오진으로 이어질 수 있습니다.
-
공격 내러티브 및 명령어:
- 단계 1 – CastleRAT 바이너리 배포: 공격자가
CastleRAT.exe를 피해자의%APPDATA%디렉토리에 복사하여 사용자 데이터와 조화시킵니다. - 단계 2 – 키로깅 실행: 작은 C# 메모리 내 로더를 사용하여 공격자는
SetWindowsHookEx를 호출하여 낮은 수준의 키보드 훅을 설치하며, 이는 Sysmon이 프로세스 생성 이벤트의 CallTrace에 API를 기록하도록 만듭니다. - 단계 3 – 권한 상승: 같은 로더가
DuplicateHandle을 호출하여 권한이 높은 시스템 프로세스(예:lsass.exe)로부터 핸들을 중복하여 맬웨어가 SYSTEM 권한으로 실행되도록 합니다. 두 API 호출은 동일한 Sysmon CallTrace에 나타나며, 탐지 규칙의 기준을 충족합니다.
- 단계 1 – CastleRAT 바이너리 배포: 공격자가
-
회기 테스트 스크립트:
# ------------------------------------------------- # CastleRAT 시뮬레이션 – SetWindowsHookEx 및 DuplicateHandle 트리거 # ------------------------------------------------- $castlePath = "$env:APPDATACastleRAT.exe" # 1. 실제 페이로드를 로드하는 최소한의 스텁 드롭(여기서는 시뮬레이션됨) $payload = @" using System; using System.Runtime.InteropServices; public class Loader { [DllImport("user32.dll")] public static extern IntPtr SetWindowsHookEx(int idHook, IntPtr lpfn, IntPtr hMod, uint dwThreadId); [DllImport("kernel32.dll", SetLastError = true)] public static extern bool DuplicateHandle(IntPtr hSourceProcessHandle, IntPtr hSourceHandle, IntPtr hTargetProcessHandle, out IntPtr lpTargetHandle, uint dwDesiredAccess, bool bInheritHandle, uint dwOptions); public static void Execute() { // Install a low‑level keyboard hook (WH_KEYBOARD_LL = 13) SetWindowsHookEx(13, IntPtr.Zero, IntPtr.Zero, 0); // Duplicate a handle from the current process (simulated) IntPtr dupHandle; DuplicateHandle((IntPtr)-1, (IntPtr)0x1234, (IntPtr)-1, out dupHandle, 0, false, 0); } }
“@
# Compile the C# code on‑the‑fly
Add-Type -TypeDefinition $payload -Language CSharp
# Copy the current PowerShell process (acts as CastleRAT.exe) to the target path
Copy-Item -Path $PSCommandPath -Destination $castlePath -Force
# Execute the malicious payload
[Loader]::Execute()
# Keep the process alive briefly to ensure Sysmon logs the call stack
Start-Sleep -Seconds 5
-
정리 명령어:
# 가상 CastleRAT 바이너리 제거 Remove-Item -Path "$env:APPDATACastleRAT.exe" -Force # 모든 훅 언로드 (필요 없지만 포괄성을 위해 포함) # 위에서 사용한 NULL 콜백과 함께 설정된 SetWindowsHookEx 호출에 대한 명시적 언로드가 필요 없음.