SOC Prime Bias: Critical

06 5월 2026 14:15

미디어 회사, Pheno 플러그인을 사용해 OTP 메시지를 도난할 가능성이 있는 CloudZ RAT

Author Photo
Ruslan Mikhalov SOC Prime에서 위협 연구 책임자 linkedin icon 팔로우
미디어 회사, Pheno 플러그인을 사용해 OTP 메시지를 도난할 가능성이 있는 CloudZ RAT
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

시스코 탈로스는 공격자가 Pheno라는 사용자 지정 플러그인과 함께 CloudZ 원격 액세스 트로이 목마를 배포한 침입을 식별했습니다. 이 활동은 모바일 장치와 동기화하기 위해 Microsoft Phone Link에 의존하는 Windows 10 및 11 시스템을 대상으로 합니다. 공격자는 워크스테이션에서 Phone Link 브리지를 악용하여 전화기에 직접 악성 코드를 설치하지 않고 SMS 콘텐츠 및 일회성 비밀번호 메시지에 접근할 수 있습니다. 감염 체인은 Rust 기반 드로퍼, .NET 로더, 예약 작업 지속성 및 여러 페이로드 배달 방법을 사용합니다.

조사

탈로스는 침입이 가짜 ScreenConnect 업데이트로 추적되어 Rust로 컴파일된 로더인 systemupdates.exe or Windows-interactive-update.exe를 전송했습니다. 해당 로더는 .NET 구성 요소를 해독하고 드롭한 후, 예약된 작업을 통해 regasm.exe를 시작하여 CloudZ RAT을 설치했습니다. 설치 후, CloudZ는 Pheno 플러그인을 스테이징 서버에서 검색하고 Phone Link SQLite 데이터베이스에 저장된 데이터에 접근하는 데 사용했습니다. 조사관들은 또한 IP 주소 185.196.10.136 을 포함하여 캠페인에 연결된 여러 악성 도메인을 식별했습니다.

완화

시스코 탈로스는 Win.Packed.Msilheracles and Win.Trojan.CloudZRAT과 같은 ClamAV 탐지를 통해 위협을 식별할 수 있다고 언급했습니다. 알려진 악성 도메인 및 IP 주소를 차단하고 66408–66410 and 301492와 같은 위치에서 서명되지 않은 바이너리 실행을 제한하면 로더 체인을 차단할 수 있습니다. 또한 조직은 Microsoft Phone Link를 비활성화하거나 면밀히 모니터링하고, 예약된 작업 생성 및 실행에 대한 최소 권한을 부여하여 노출을 줄일 수 있습니다. ProgramData, can help stop the loader chain. Organizations can also reduce exposure by disabling or closely monitoring Microsoft Phone Link and by enforcing least privilege over scheduled task creation and execution.

대응

이 활동이 감지되면 즉시 감염된 호스트를 격리하고 포렌식 분석을 위해 메모리 및 디스크 이미지를 수집해야 합니다. 조사관은 SystemWindowsApis 예약 작업과 CloudZ 관련 바이너리가 존재하는지 확인하고 시스템에서 제거해야 합니다. 식별된 C&C 인프라를 차단하고, 특히 OTP 기반 인증이 가로채졌을 가능성이 있는 경우 노출된 자격증명을 재설정해야 합니다. 더 광범위한 시스템 검토에서는 다른 지속성 방법을 조사하고 PowerShell and regasm.exe 활동을 감사하여 관련 남용을 검사해야 합니다.

"graph TB %% Class definitions classDef technique fill:#ffe699 %% Node definitions step1_user_exec["<b>기술</b> – <b>T1204.002 사용자 실행: 악성 파일</b><br/><b>설명</b>: 사용자에게 가짜 ScreenConnect 업데이트로 가장한 악성 실행 파일을 실행하도록 속입니다."] class step1_user_exec technique step2_persistence["<b>기술</b> – <b>T1218.009 시스템 바이너리 프록시 실행: Regsvcs/Regasm</b><br/><b>설명</b>: 신뢰할 수 있는 .NET 바이너리를 활용하여 예약된 작업을 통해 regsvcs 또는 regasm을 통해 악성 코드를 실행합니다."] class step2_persistence technique step3_obfuscation["<b>기술</b> – <b>T1027 흐릿한 파일 또는 정보</b><br/><b>설명</b>: 페이로드는 ConfuserEx와 XOR로 암호화되어 진정한 기능을 숨깁니다."] class step3_obfuscation technique step4_dynamic_api["<b>기술</b> – <b>T1027.007 동적 API 해결</b><br/><b>설명</b>: 실행 시간에 악성 코드는 필요한 API를 해결하고 정적 탐지를 피하기 위해 분석 도구를 확인합니다."] class step4_dynamic_api technique step5_indicator_removal["<b>기술</b> – <b>T1027.005 도구로부터의 표시 제거</b><br/><b>설명</b>: 보안 유틸리티가 감지되면 코드가 실행을 중단하고 관찰 가능한 지표를 제거합니다."] class step5_indicator_removal technique step6_reflective_load["<b>기술</b> – <b>T1620 반사적 코드 로딩</b><br/><b>설명</b>: .NET 페이로드는 메모리 내에 직접 반사적으로 로딩되어 디스크에 파일이 남지 않습니다."] class step6_reflective_load technique step7_process_discovery["<b>기술</b> – <b>T1057 프로세스 발견</b><br/><b>설명</b>: 악성 코드는 실행 중인 프로세스를 열거하여 보안 도구를 찾고 비활성화할 수 있습니다."] class step7_process_discovery technique step8_browser_creds["<b>기술</b> – <b>T1555.003 웹 브라우저에서 자격 증명 추출</b><br/><b>설명</b>: 저장된 브라우저 비밀번호가 추출되어 유출을 준비합니다."] class step8_browser_creds technique step9_steal_cookie["<b>기술</b> – <b>T1539 웹 세션 쿠키 훔치기</b><br/><b>설명</b>: 활성 웹 세션 쿠키가 브라우저에서 캡쳐됩니다."] class step9_steal_cookie technique step10_use_cookie["<b>기술</b> – <b>T1550.004 대체 인증 자료 사용: 웹 세션 쿠키</b><br/><b>설명</b>: 훔쳐진 쿠키는 대상 웹 서비스에 인증하기 위해 재사용됩니다."] class step10_use_cookie technique step11_browser_info["<b>기술</b> – <b>T1217 브라우저 정보 발견</b><br/><b>설명</b>: 추가적인 브라우저 데이터와 OTP 메시지가 추가 남용을 위해 수집됩니다."] class step11_browser_info technique step12_bits_jobs["<b>기술</b> – <b>T1197 BITS 작업</b><br/><b>설명</b>: BITS 작업은 bitsadmin, curl 또는 PowerShell을 사용하여 추가 악성 플러그인을 다운로드합니다."] class step12_bits_jobs technique step13_exfil_encrypted["<b>기술</b> – <b>T1048.002 비대칭 암호화된 Non-C2 프로토콜을 통한 유출</b><br/><b>설명</b>: 수집된 데이터가 표준 C2 채널 일부가 아닌 암호화된 TCP 소켓을 통해 발송됩니다."] class step13_exfil_encrypted technique step14_c2_web["<b>기술</b> – <b>T1071.001 애플리케이션 레이어 프로토콜: 웹 프로토콜</b><br/><b>설명</b>: 명령 및 제어 트래픽은 회전하는 사용자 에이전트와 안티 캐싱 헤더를 사용하는 HTTP/S를 통해 사용됩니다."] class step14_c2_web technique %% Connections step1_user_exec –>|leads_to| step2_persistence step2_persistence –>|leads_to| step3_obfuscation step3_obfuscation –>|leads_to| step4_dynamic_api step4_dynamic_api –>|leads_to| step5_indicator_removal step5_indicator_removal –>|leads_to| step6_reflective_load step6_reflective_load –>|leads_to| step7_process_discovery step7_process_discovery –>|leads_to| step8_browser_creds step8_browser_creds –>|leads_to| step9_steal_cookie step9_steal_cookie –>|leads_to| step10_use_cookie step10_use_cookie –>|leads_to| step11_browser_info step11_browser_info –>|leads_to| step12_bits_jobs step12_bits_jobs –>|leads_to| step13_exfil_encrypted step13_exfil_encrypted –>|leads_to| step14_c2_web "

공격 흐름

시뮬레이션 실행

전제 조건: 원격 측정 및 기준선 사전 점검이 통과해야 합니다.

이유: 이 섹션에서는 탐지 규칙을 촉발하도록 설계된 적의 기술(TTP)의 정확한 실행을 자세히 설명합니다. 명령 및 서사는 식별된 TTP를 직접 반영해야 하며 탐지 논리에 의해 예상되는 정확한 원격 측정을 생성해야 합니다.

  • 공격 내러티브 및 명령:
    공격자는 권한이 낮은 사용자 계정을 손상시켰으며 CloudZ .NET 로더가 활성화되었는지 확인하면서 지속성을 확립하려고 합니다. 그들은:

    1. 예약 작업을 생성합니다 PowerShell 스크립트를 실행하는 (C:Tempcloudz.ps1).
    2. 작업을 즉시 실행합니다 와 함께 schtasks /run 명령을 통해 스크립트가 실행되도록 보장합니다.
    3. 스크립트 내부에서, 모든 프로세스를 열거합니다 를 사용하여 Get‑CimInstance Win32_Process .NET 로더 존재 여부를 테스트합니다.
    4. 이 PowerShell 프로세스와 schtasks 명령은 모두 룰에서 감시하는 정확한 문자열을 포함한 Sysmon EventID 1 기록을 생성하여 경고를 촉발합니다. CommandLine 필드를 포함합니다.
  • 회귀 테스트 스크립트:

    #-------------------------------------------------
    # CloudZ 스타일 지속성 및 검증 스크립트
    #-------------------------------------------------
    $taskName = "CloudZ_Persistence"
    $scriptPath = "C:Tempcloudz.ps1"
    
    # 1️⃣ 프로세스 나열을 위한 PowerShell 페이로드 작성
    @"
    # CloudZ 페이로드 – 프로세스 열거
    Get-CimInstance Win32_Process | Out-Null
    "@ | Set-Content -Path $scriptPath -Encoding ASCII
    
    # 2️⃣ 페이로드를 실행하는 예약 작업 등록
    $action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-NoProfile -ExecutionPolicy Bypass -File `"$scriptPath`""
    $trigger = New-ScheduledTaskTrigger -AtLogOn
    Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -Force
    
    # 3️⃣ 작업을 즉시 실행 (schtasks /run 생성)
    schtasks /run /tn "$taskName"
    
    # 4️⃣ 로깅을 위한 짧은 대기
    Start-Sleep -Seconds 5
  • 정리 명령:

    # 예약 작업 제거
    Unregister-ScheduledTask -TaskName "CloudZ_Persistence" -Confirm:$false
    
    # 페이로드 스크립트 삭제
    Remove-Item -Path "C:Tempcloudz.ps1" -Force
    
    # 필요 시 Sysmon 중지 (원래 구성 복원)
    # & "$env:ProgramFilesSysinternalsSysmon.exe" -u