메모리 상 로더, ScreenConnect 배포
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
ThreatLabz는 가짜 Adobe Acrobat Reader 다운로드에서 시작하여 최종적으로 합법적인 원격 액세스 도구 ScreenConnect의 배포로 끝나는 다단계 공격 체인을 식별했습니다. 이 작전은 강력히 난독화된 VBScript 로더에 의존하여 PowerShell 명령어를 실행하고, Google Drive에서 C# 소스 코드를 가져와 메모리 내에서 직접 컴파일하고, 최종 페이로드를 디스크에 떨어뜨리지 않고 .NET 로더를 시작합니다. 그 후 이 로더는 프로세스 가장을 적용하고, PEB 구조를 변경하며, 자동으로 상승된 COM 객체를 악용하여 더 높은 권한을 획득한 후 피해자 호스트에 ScreenConnect를 설치합니다.
조사
연구원들은 VBScript가 Chr() 난독화를 통해 명령을 조립하는 방법을 설명했으며, PowerShell은 디스크 아티팩트를 최소화하기 위해 페이로드를 메모리에 완전히 컴파일한다고 설명했습니다. 메모리 내 .NET 로더는 비반사를 활용하여 임베디드 어셈블리를 실행합니다. 추가 분석에서는 맬웨어가 NtAllocateVirtualMemory를 호출하고, winhlp32.exe로 가장하기 위해 PEB 필드를 변경하며, 사용자 계정 제어를 우회하여 권한 상승 후 실행을 지속하기 위해 COM 자동 상승을 이용하는 것을 보여주었습니다.
완화
수비자는 악성 다운로드 도메인에 대한 접근을 차단해야 하며, PowerShell과 VBScript 실행에 엄격한 제어를 적용해야 합니다. 보안 팀은 또한 수상한 COM 객체 생성, 예상치 못한 PEB 조작 및 메모리 내 실행 남용의 다른 징후를 모니터링해야 합니다. ScreenConnect와 같은 합법적인 원격 관리 도구의 접근은 승인된 사용자와 신뢰할 수 있는 워크플로우로 엄격히 제한하여 비인가 설치의 위험을 줄여야 합니다.
대응
이 활동이 감지될 경우 즉시 영향을 받은 시스템을 격리하고, 악성 프로세스를 중지하고, 침입의 일환으로 설치된 ScreenConnect 구성 요소를 제거하십시오. 볼래타일 메모리 아티팩트를 중심으로 포렌식 분석을 수행하여 파일리스 실행 체인의 증거를 복구하십시오. 잠재적으로 노출된 자격 증명을 재설정하고, COM 자동 상승 남용에 대한 로그를 검토하며, 감지된 명령 줄 패턴, 로더 행동 및 관련 파일 명명 관행을 식별하도록 감지를 업데이트하십시오.
graph TB classDef action fill:#99ccff classDef builtin fill:#ffcc99 classDef file fill:#ccffcc action_user_exec[“<b>행동</b> – T1204.002 사용자 실행: 악성 파일<br/>가짜 Adobe 사이트에서 VBScript 다운로드”] class action_user_exec action file_vbscript[“<b>파일</b> – Acrobat_Reader_V112_6971.vbs”] class file_vbscript file action_vbscript_interpret[“<b>행동</b> – T1059.005 VBScript 실행”] class action_vbscript_interpret action tool_powershell[“<b>도구</b> – PowerShell”] class tool_powershell builtin action_powershell_exec[“<b>행동</b> – T1059.001 PowerShell 실행”] class action_powershell_exec action file_staging[“<b>파일</b> – Google Drive”] class file_staging file action_reflective_loading[“<b>행동</b> – T1620 리플렉티브 로딩”] class action_reflective_loading action action_process_injection[“<b>행동</b> – T1055.002 프로세스 주입”] class action_process_injection action action_masquerade[“<b>행동</b> – T1564.010 프로세스 위장”] class action_masquerade action action_appdomain_hijack[“<b>행동</b> – T1574.014 AppDomain 하이재킹”] class action_appdomain_hijack action action_rat_install[“<b>행동</b> – T1219 RAT 설치”] class action_rat_install action tool_screenconnect[“<b>도구</b> – ScreenConnect”] class tool_screenconnect builtin action_user_exec –>|downloads| file_vbscript file_vbscript –>|executes| action_vbscript_interpret action_vbscript_interpret –>|launches| tool_powershell tool_powershell –>|executes| action_powershell_exec action_powershell_exec –>|downloads| file_staging action_powershell_exec –>|compiles| action_reflective_loading action_reflective_loading –>|loads| action_process_injection action_process_injection –>|modifies| action_masquerade action_masquerade –>|enables| action_appdomain_hijack action_appdomain_hijack –>|facilitates| action_rat_install action_rat_install –>|installs| tool_screenconnect
공격 흐름
탐지
대체 원격 액세스/관리 소프트웨어 (시스템을 통해)
보기
가능한 PowerShell 난독화 지표 (powershell을 통해)
보기
Powershell 명령줄에서 수상한 .NET 클래스/메서드 호출 (프로세스 생성 통해)
보기
수상한 CURL 사용 (cmdline을 통해)
보기
가능한 데이터 침투/유출/C2 타사 서비스/도구를 통한 (cmdline을 통한)
보기
대체 원격 액세스/관리 소프트웨어 (감사를 통해)
보기
MsiInstaller를 사용한 RMM 소프트웨어 설치 시도 (애플리케이션 로그를 통해)
보기
LOLBAS WScript/CScript (프로세스 생성 통해)
보기
IOCs(HashMd5)를 통한 탐지: 인메모리 로더가 ScreenConnect를 내린다
보기
악성 다운로드와 함께 PowerShell ExecutionPolicy 우회 [Windows Powershell]
보기
msiexec와 shellExec를 통한 ScreenConnect 설치 [Windows 프로세스 생성]
보기
시뮬레이션 실행
전제 조건: Telemetry & Baseline Pre-flight Check가 통과했어야 합니다.
이유: 이 섹션은 탐지 규칙을 트리거하기 위해 설계된 적대 기술 실행을 자세히 설명합니다(TTP). 명령어 및 설명은 식별된 TTP를 직접 반영하고 탐지 논리에 의해 예상되는 정확한 테러메트리를 생성해야 합니다.
-
공격 내러티브 및 명령어:
적은 ScreenConnect MSI를 획득했으며 종종 피싱 첨부파일을 통해 제공합니다. 사용자 상호 작용을 피하기 위해, 신뢰할 수 있는msiexec.exe바이너리를 사용하여 무음 설치를 수행합니다. 그들은 또한 대안인ShellExec.exe프록시를 보여주는데, 이는 단순히 인수를msiexec로 전달합니다. 두 명령은 모두 ‘ScreenConnect’라는 문자열을 명령줄에 포함하여 규칙의 조건을 만족합니다.-
MSI를 피해자 호스트로 복사 (T1025를 시뮬레이션).
-
다음 명령을 통해 조용한 설치를 수행
msiexec:msiexec.exe /i "C:TempScreenConnect.msi" /quiet /norestart -
호스트에 존재할 경우, 동일한 설치를 진행하세요:
ShellExec.exe이러한 작업은 Windows Event 4688 엔트리를 생성하며, 해당 엔트리에서이러한 작업은 Windows Event 4688 엔트리를 생성하며, 해당 엔트리에서
These actions generate Windows Event 4688 entries where
이미지is*msiexec.exeor*ShellExec.exeand명령줄이 “ScreenConnect”를 포함하여 Sigma 규칙이 발동됩니다. -
-
회귀 테스트 스크립트:
#============================================================= # ScreenConnect 설치 시뮬레이션 – Sigma 규칙을 트리거합니다 #============================================================= $msiPath = "C:TempScreenConnect.msi" # MSI 존재 여부 확인 (자리 표시자 – 실제 테스트에서는 먼저 파일을 드롭) if (-Not (Test-Path $msiPath)) { Write-Error "ScreenConnect MSI를 $msiPath에서 찾을 수 없습니다." exit 1 } # 1. msiexec을 사용한 무음 설치 Write-Host "[*] msiexec를 통한 ScreenConnect 설치 중..." Start-Process -FilePath "$env:SystemRootSystem32msiexec.exe" ` -ArgumentList "/i `"$msiPath`" /quiet /norestart" ` -Wait -NoNewWindow # 2. ShellExec을 사용한 무음 설치 (존재 시) $shellExec = "$env:ProgramFilesScreenConnectShellExec.exe" if (Test-Path $shellExec) { Write-Host "[*] ShellExec를 통한 ScreenConnect 설치 중..." Start-Process -FilePath $shellExec ` -ArgumentList "/i `"$msiPath`" /quiet /norestart" ` -Wait -NoNewWindow } else { Write-Warning "ShellExec.exe를 찾을 수 없습니다. 두 번째 설치를 건너뜁니다." } Write-Host "[+] 시뮬레이션 완료. SIEM에서 경고를 확인하십시오." -
정리 명령어:
# ScreenConnect 제거 (등록된 제품 GUID 사용; 필요에 따라 조정) $productGuid = (Get-ItemProperty "HKLM:SoftwareMicrosoftWindowsCurrentVersionUninstall*" | Where-Object { $_.DisplayName -like "*ScreenConnect*" }).PSChildName if ($productGuid) { Write-Host "[*] ScreenConnect를 제거 중입니다 (GUID: $productGuid)..." & "$env:SystemRootSystem32msiexec.exe" /x $productGuid /quiet /norestart } else { Write-Warning "ScreenConnect 제품 GUID를 찾을 수 없습니다. 수동 정리가 필요할 수 있습니다." } # 복사된 MSI 파일 제거 Remove-Item -Path "C:TempScreenConnect.msi" -Force -ErrorAction SilentlyContinue Write-Host "[+] 정리 완료."