Deno 기반 프록시 및 RAT 내부 분석
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
공격자는 Deno JavaScript 런타임을 활용하여 모듈식 원격 액세스 트로이 목마(RAT) 및 프록시 프레임워크를 배포했습니다. 이 공격은 메일봄 및 Microsoft Teams 가장을 사용하여 악성 아카이브 다운로드를 용이하게 했습니다. 임플란트는 여러 모듈식 JavaScript 파일을 통해 작동하며, 특정 Deno 권한 플래그를 사용하여 C2 통신, 로컬 명령 실행 및 네트워크 피벗을 수행합니다.
조사
조사는 이메일 폭주와 Microsoft Teams를 통한 소셜 엔지니어링으로 구성된 초기 접근 단계를 밝혀냈습니다. 이 악성코드는 비전통적이며 모듈식으로 설계된 Deno 기반 시스템으로, app.js, back.js, helper.js, webui.js의 네 가지 스크립트로 분리되어 있습니다. 탐지는 초깃 실행이 아닌 사후 악용 정찰 활동 중에 발생했습니다.
대응 방법
조직은 사용자 쓰기 가능한 디렉터리에서 Deno와 같은 스크립팅 런타임의 실행을 모니터링하고 –allow-run 또는 –allow-net과 같은 의심스러운 권한 플래그에 대한 경고를 실행해야 합니다. 로컬 루프백 HTTP 서비스에 대한 모니터링과 이메일 이상 현상과의 Teams 가장 경고 상관 관계 구현을 권장합니다. 추가로 서명되지 않거나 승인되지 않은 런타임 실행의 제한은 공격 표면을 줄일 수 있습니다.
대응
탐지 시, 응답자는 영향을 받은 호스트를 격리하고 Teams 가장의 출처를 조사해야 합니다. 분석은 Deno 프로세스 계통과 루프백 포트 10021 또는 10022에 바인딩된 로컬 서비스에 집중해야 합니다. Microsoft 365 통합 감사 로그에서 TeamsImpersonationDetected 이벤트를 검토하는 것은 소셜 엔지니어링 캠페인의 범위를 결정하는 데 중요합니다.
공격 흐름
탐지
가능한 지속성 지점 [ASEPs – Software/NTUSER Hive] (registry_event을 통해)
보기
가능한 지속성 지점 [ASEPs – Software/NTUSER Hive] (cmdline을 통해)
보기
가능한 Deno 런타임 악용 시도 (process_creation을 통해)
보기
가능한 시스템 네트워크 구성 탐지 (cmdline을 통해)
보기
LOLBAS Conhost (cmdline을 통해)
보기
탐지할 IOC (HashSha256): Deno 기반 프록시 및 RAT의 해부학
보기
Deno 명령 쉘 커맨드 실행 탐지 [Windows Sysmon]
보기
의심스러운 권한 플래그로 Deno 기반 RAT 실행 탐지 [Windows Process Creation]
보기
시뮬레이션 실행
전제 조건: 추적 정보 및 기준선 사전 체크를 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 트리거하도록 설계된 구체적인 공격자의 기술 (TTP)의 실행을 상세히 설명합니다. 명령과 서술은 식별된 TTP를 직접 반영해야 하며, 탐지 논리에서 예상되는 정확한 추적 자료를 생성하는 것을 목표로 해야 합니다. 추상적이거나 관련 없는 예제는 오진을 초래할 수 있습니다.
-
공격 서사 및 명령: 공격자는 spearphishing 첨부 파일을 통해 피해자의 기계에 악성 Deno 기반 RAT를 성공적으로 전달했습니다. (T1566.004). 전통적인 서명 기반 AV를 피하기 위해 공격자는 Deno 이진 파일을 사용자의 로밍 프로필의 깊고 비표준적인 서브디렉터리 안에 숨겨둡니다:
C:Usersuser.nameAppDataRoamingDenoJSEnv. 공격자는 해당 이진 파일을 실행하며--allow-runand--allow-net플래그를 사용합니다. 이는 JavaScript 기반 악성코드가 시스템 탐지(T1082)를 위해 임의 쉘 명령을 실행하고 HTTPS를 통해 외부 C2 서버와 통신할 수 있도록 합니다(T1071.001). -
회귀 테스트 스크립트:
# 참고: 이 스크립트는 규칙 논리를 트리거하기 위해 디렉토리 및 이진 파일의 존재를 시뮬레이션합니다. 실제 테스트에서는 파일이 정확한 경로에 존재해야 합니다. $targetDir = "C:Usersuser.nameAppDataRoamingDenoJSEnv" $targetExe = "$targetDirdeno.exe" # 1. 탐지 규칙에 필요한 특정 디렉토리 구조 생성 if (!(Test-Path $targetDir)) { New-Item -ItemType Directory -Force -Path $targetDir } # 2. 'deno.exe'로 작용할 더미 파일 생성 # 실제 시뮬레이션에서는 실제 Deno 이진 파일일 것입니다. New-Item -ItemType File -Force -Path $targetExe # 3. '악성' 명령 실행 # 자식 프로세스로 나타나기 위해 Start-Process를 사용합니다. # 'deno.exe'가 더미이기 때문에 'cmd.exe'를 호출하지만, 논리와 일치하는 명령 문자열을 가장시킵니다. 규칙 검증을 목표로 실제 바이너리는 실제로 그 경로에 존재해야 합니다. Write-Host "[!] $targetExe의 악성 플래그로 실행을 시뮬레이션... Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo 규칙 트리거 시뮬레이션..." # 참고: 실제로 규칙을 트리거하기 위해서는 deno.exe가 존재해야 합니다. # 규칙이 이미지 경로를 직접적으로 찾고 있다면 바이너리가 반드시 존재해야 합니다. # 기능적 시뮬레이션 스크립트를 위해 경로를 호출합니다: # Start-Process -FilePath $targetExe -ArgumentList "--allow-run --allow-net" -
정리 명령:
# 시뮬레이션된 악성 디렉토리 및 파일 제거 Remove-Item -Path "C:Usersuser.nameAppDataRoamingDenoJSEnv" -Recurse -Force Write-Host "[+] 정리 완료."