Nimbus Manticore와 그들의 사이드로딩 감염 체인 탐지
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
Nimbus Manticore, UNC1549로도 추적되는 이 그룹은 가짜 채용 포털을 사용하여 다단계 .NET 악성 소프트웨어 체인을 전달하는 표적 피싱 캠페인을 수행했습니다. 공격은 합법적인 Microsoft Visual Studio 구성 요소와 AppDomain 하이재킹을 남용하여 사용자 정의 DLL을 로드하고, 이는 다시 2단계 DLL을 배포하고 예약 작업을 통해 지속성을 생성했습니다. 명령 및 제어 인프라는 Azure 기반 도메인에서 호스팅되었습니다. 이 캠페인은 주로 중동과 유럽의 항공우주 및 방위 조직을 대상으로 했습니다.
조사
연구자들은 LinkedIn 미끼로 시작하여 ZIP 아카이브, 변경된 setup.exe.config 파일, 그리고 암호화된 스테이저를 통해 감염 체인을 완전히 재구성했습니다. 그들의 분석은 명명된 ServiceHub.VSDetouredHost.exe에 대한 남용을 밝혀냈으며, TOTPGuard.dll 로더, AES 암호화된 PE 헤더, 및 BackupCheck이라는 로그온 트리거 예약 작업을 포함한 네트워크 지표도 Azure 호스팅 도메인을 명령 및 제어 통신에 사용했다고 합니다.
완화
조직은 채용 테마의 사회 공학을 탐지하도록 직원들을 교육하고, 새로 등록된 도메인을 차단하거나 면밀히 모니터링하며, 사용자 쓰기 가능 디렉토리에 AppLocker 또는 동등한 제어를 시행해야 합니다. 방어자는 또한 BackupCheck 라는 이름의 예약 작업을 주시하거나 doit 인수를 사용한 실행을 감시해야 합니다. .NET 애플리케이션에서 AppDomain 하이재킹 동작과 Azure 호스팅 된 명령 및 제어 도메인으로의 의심스러운 트래픽을 모니터링하는 것도 권장됩니다.
대응
관련 활동이 탐지될 경우, 감염된 엔드포인트를 격리하고 악성 바이너리와 예약 작업 정의를 수집하며 관련된 Azure 도메인 및 가짜 채용 포털을 차단해야 합니다. 조사관은 AppData2FAGuard 폴더를 법의학적으로 검토하고, 지속 작업을 제거하며, 동일한 YARA 서명을 사용하여 다른 시스템에서 유사한 활동을 찾습니다. 이후 감지 논리를 업데이트하여 새로 식별된 지표를 포함해야 합니다.
graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ccffcc classDef process fill:#ffdddd %% Nodes action_phishing[“<b>Action</b> – <b>T1566.002 스피어 피싱 링크</b><br/>피해자는 채용 담당자를 사칭한 LinkedIn 메시지를 받고 악성 링크가 포함된 가짜 채용 포털에 접속한다.”] class action_phishing action action_delivery[“<b>Action</b> – 악성 ZIP을 통한 배포<br/>가짜 포털은 Microsoft 바이너리를 위장한 파일과 숨겨진 파일이 포함된 ZIP 파일을 제공한다.”] class action_delivery action file_malicious_zip[“<b>File</b> – <b>Name</b>: payload.zip<br/><b>Contains</b>: setup.exe 및 추가 숨겨진 파일”] class file_malicious_zip file file_setup_exe[“<b>File</b> – <b>Name</b>: setup.exe (ServiceHub.VSDetouredHost.exe로 변경됨)<br/><b>Signature</b>: 유효한 Microsoft 코드 서명”] class file_setup_exe file action_execution_proxy[“<b>Action</b> – <b>T1218 시스템 바이너리 프록시 실행</b><br/>서명된 Microsoft 바이너리를 프록시로 사용하여 악성 코드를 실행한다.”] class action_execution_proxy action action_masquerade[“<b>Action</b> – <b>T1036.001 잘못된 코드 서명 위장</b><br/>정상 서명된 바이너리의 이름을 변경하여 정상처럼 보이게 하고 탐지를 회피한다.”] class action_masquerade action action_hijack_path[“<b>Action</b> – <b>T1574.008 검색 순서 하이재킹</b><br/>setup.exe.config를 조작하여 검색 순서를 변경하고 공격자가 제어하는 구성 요소를 로드한다.”] class action_hijack_path action action_hijack_appdomain[“<b>Action</b> – <b>T1574.014 AppDomainManager 하이재킹</b><br/>.NET 런타임이 TOTPGuard.dll을 AppDomainManager를 통해 강제로 로드하도록 한다.”] class action_hijack_appdomain action file_totpguard[“<b>File</b> – <b>Name</b>: TOTPGuard.dll<br/><b>Purpose</b>: 악성 페이로드에서 사용하는 사용자 정의 2FA 기능 제공”] class file_totpguard file action_ide_extension[“<b>Action</b> – <b>T1176.002 IDE 확장 악용</b><br/>Visual Studio IDE 호스트 컴포넌트를 악용하여 페이로드를 실행한다.”] class action_ide_extension action action_persistence[“<b>Action</b> – <b>T1037.001 예약 작업</b><br/>로그온 시 실행되는 \”BackupCheck\”라는 예약 작업을 생성한다.”] class action_persistence action action_env_keying[“<b>Action</b> – <b>T1480.001 환경 키잉</b><br/>AES로 암호화된 페이로드를 배포하며 MZ 헤더를 암호화하여 조건부 실행을 수행한다.”] class action_env_keying action action_virtual_instance[“<b>Action</b> – <b>T1564.006 가상 인스턴스 실행</b><br/>정상적인 2FA GUI를 포함하여 정상 작업처럼 위장하고 악성 활동을 숨긴다.”] class action_virtual_instance action %% Connections action_phishing –>|delivers| action_delivery action_delivery –>|provides| file_malicious_zip file_malicious_zip –>|contains| file_setup_exe file_setup_exe –>|used for| action_execution_proxy action_execution_proxy –>|combined with| action_masquerade action_masquerade –>|enables| action_hijack_path action_hijack_path –>|leads to| action_hijack_appdomain action_hijack_appdomain –>|loads| file_totpguard file_totpguard –>|enables| action_ide_extension action_ide_extension –>|supports| action_persistence action_persistence –>|establishes| action_env_keying action_env_keying –>|facilitates| action_virtual_instance
공격 흐름
탐지
드문 프로세스에 의해 연락 된 가능한 Azure 웹사이트 도메인 (DNS 쿼리 통해)
보기
의심스러운 예약 작업 (감사 통해)
보기
탐지: Nimbus Manticore 및 그들의 사이드로딩 감염 체인을 탐지하기 위한 IoC(HashSha256)
보기
탐지: Nimbus Manticore 및 그들의 사이드로딩 감염 체인을 탐지하기 위한 IoC(SourceIP)
보기
탐지: Nimbus Manticore 및 그들의 사이드로딩 감염 체인을 탐지하기 위한 IoC(DestinationIP)
보기
Azure 도메인을 통한 Nimbus Manticore C2 통신 탐지 [Windows 네트워크 연결]
보기
Nimbus Manticore 사이드로딩 감염 체인 탐지 [Windows 프로세스 생성]
보기
시뮬레이션 실행
전제 조건: 텔레메트리 및 기준선 사전 비행 검사가 통과해야 합니다.
합리적 근거: 이 섹션은 탐지 규칙을 트리거하도록 설계된 상대 기술(TTP)의 정밀한 실행을 설명합니다. 명령과 내러티브는 발견된 TTP를 직접 반영하고 탐지 논리에서 예상되는 정확한 텔레메트리를 생성하는 것을 목표로 해야 합니다.
-
공격 내러티브 및 명령:
공격자는 합법적인 Visual Studiosetup.exe바이너리를 얻어 이를setup.exe(이름 변경 없음)으로 이름을 변경하고 쓰기 가능한 디렉토리에 배치했습니다. 그들은TOTPGuard.dll라는 악성 DLL을 제작하여 페이로드를 포함시켰습니다. AppDomain을 하이재킹하기 위해, 그들은 문자열AppDomainInjection을 PDB 경로 인수에 삽입합니다. 그런 다음 공격자는 다음과 같은 명령줄을 사용하여 실행 파일을 실행합니다:C:Tempsetup.exe /install /doit /dll "C:TempTOTPGuard.dll" /pdb "C:TempAppDomainInjection.pdb"이 정확한 호출은 Sigma 규칙의 모든 세 가지
CommandLine|contains조건을 만족시켜 ProcessCreate 이벤트에서 규칙이 실행되도록 합니다. -
회귀 테스트 스크립트:
# ------------------------------------------------- # Nimbus Manticore 탐지를 트리거하기 위한 회귀 스크립트 # ------------------------------------------------- $exePath = "C:Tempsetup.exe" $dllPath = "C:TempTOTPGuard.dll" $pdbPath = "C:TempAppDomainInjection.pdb" # 파일이 존재하는지 확인 (테스트용 가짜 자리 표시자 생성) New-Item -ItemType File -Path $exePath -Force | Out-Null New-Item -ItemType File -Path $dllPath -Force | Out-Null New-Item -ItemType File -Path $pdbPath -Force | Out-Null # 악성 명령 줄 구성 $arguments = @( "/install" "/doit" "/dll `"$dllPath`"" "/pdb `"$pdbPath`"" ) -join " " Write-Host "악성 setup.exe를 다음과 같은 인수를 사용하여 실행합니다:" Write-Host $arguments # 프로세스 실행 (더미 exe는 아무것도 하지 않으므로 즉시 종료됨) Start-Process -FilePath $exePath -ArgumentList $arguments -PassThru | Out-Null -
정리 명령:
# ------------------------------------------------- # 회귀 테스트를 위해 생성된 아티팩트 정리 # ------------------------------------------------- $paths = @( "C:Tempsetup.exe", "C:TempTOTPGuard.dll", "C:TempAppDomainInjection.pdb" ) foreach ($p in $paths) { if (Test-Path $p) { Remove-Item -Path $p -Force Write-Host "Removed $p" } }