SOC Prime Bias: 심각

07 5월 2026 18:43

악성 OpenClaw 스킬이 Remcos RAT 및 GhostLoader를 배포

Author Photo
Ruslan Mikhalov SOC Prime에서 위협 연구 책임자 linkedin icon 팔로우
악성 OpenClaw 스킬이 Remcos RAT 및 GhostLoader를 배포
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

위협 행위자는 인공지능 에이전트나 개발자를 속여 무기화된 MSI 설치 프로그램을 다운로드하게 하는 DeepSeek-Claw라는 악성 OpenClaw 기술을 배포했습니다. 실행 후, 이 설치 프로그램은 서명된 GoToMeeting 바이너리를 드롭하여 악성 DLL을 사이드 로딩하고, 이 DLL은 Remcos RAT을 로드합니다. 별도의 감염 경로는 강하게 난독화된 Node.js 페이로드를 제공하여 크로스 플랫폼 GhostLoader 스틸러를 설치합니다. 이 캠페인은 손상된 AI 워크플로우 플러그인이 지속적 원격 접근과 데이터 절도를 위한 공급망 벡터로 사용될 수 있음을 강조합니다.

조사

Zscaler ThreatLabz는 악성 스킬 마크다운 파일에서 MSI 다운로드로, GoToMeeting의 G2M.exe의 DLL 사이드로딩, ETW와 AMSI를 패치하는 메모리 로더까지 전체 감염 체인을 추적했습니다. 연구원들은 Remcos의 구성, 명령 및 제어 주소와 뮤텍스를 복구했으며 GhostLoader의 사용도 식별했습니다 npm macOS 및 Linux 환경에서의 스크립트와 Bash 기반 설치 프로그램. 보고서는 API 난독화, TEA 기반 복호화, 샌드박스 인식 체크를 포함한 여러 회피 기술을 추가로 문서화했습니다.

완화

방어자는 악성 MSI와 관련된 URL 접근을 차단하고, 합법적인 GoToMeeting 프로세스에 의해 로드되는 서명되지 않은 DLL을 모니터링하며, 사용 전에 OpenClaw 기술 콘텐츠의 엄격한 유효성 검사를 시행해야 합니다. 엔드포인트 보호는 ETW와 AMSI 패치 시도도 감지해야 하며, 비관리자 컨텍스트에서 PowerShell or msiexec 의 실행을 제한해야 합니다. 조직은 모든 바이너리의 코드 서명을 확인하고 AI 에이전트 및 플러그인 통합에 최소 권한 제어를 적용해야 합니다.

대응

이 활동이 감지되면 영향을 받은 엔드포인트를 즉시 격리하고, Remcos 또는 GhostLoader 프로세스를 종료하며 시스템에서 악성 DLL과 MSI 아티팩트를 제거하세요. 메모리 덤프를 수집하고, 포렌식 분석을 위해 Remcos 구성을 보존한 다음, 손상된 자격 증명을 재설정하고 영향을 받은 인증서 또는 비밀을 회전하세요. 보안 팀은 식별된 지표로 위협 인텔리전스 피드를 업데이트하고 AI 플러그인 사용에 대한 공급망 제어를 강화해야 합니다.

"graph TB %% 클래스 정의 classDef 기술 fill:#cfe2f3 classDef 도구 fill:#e2efda classDef 악성코드 fill:#f9cb9c classDef 프로세스 fill:#ffd966 %% 기술 노드 tech_user_exec_copypaste["<b>기술</b> – <b>T1204.004 사용자 실행: 악성 복사 및 붙여넣기</b><br/><b>설명</b>: 사용자 또는 AI 에이전트를 속여 복사된 PowerShell 원라이너를 실행하게 합니다."] class tech_user_exec_copypaste 기술 tech_user_exec_link["<b>기술</b> – <b>T1204.001 사용자 실행: 악성 링크</b><br/><b>설명</b>: 피해자가 동일한 체인을 시작하는 악성 다운로드 링크를 클릭합니다."] class tech_user_exec_link 기술 tech_msiexec["<b>기술</b> – <b>T1218.007 시스템 바이너리 프록시 실행: Msiexec</b><br/><b>설명</b>: 원격 MSI 패키지를 조용히 다운로드하고 설치하기 위해 msiexec를 사용합니다."] class tech_msiexec 기술 tech_dll_hijack["<b>기술</b> – <b>T1574.001 실행 흐름 하이재크: DLL 사이드로딩</b><br/><b>설명</b>: 합법적인 실행 파일 옆에 악성 DLL을 배치하여 로드합니다."] class tech_dll_hijack 기술 tech_active_scanning["<b>기술</b> – <b>T1595 실시간 스캔</b><br/><b>설명</b>: 텔레메트리 및 안티멀웨어 스캔을 회피하기 위해 EtwEventWrite 및 AmsiScanBuffer를 패치합니다."] class tech_active_scanning 기술 tech_virt_user_check["<b>기술</b> – <b>T1497.002 가상화 회피: 사용자 활동 체크</b><br/><b>설명</b>: 샌드박스에서 실행되는지 여부를 결정하기 위해 사용자 주도 활동을 감지합니다."] class tech_virt_user_check 기술 tech_virt_time_check["<b>기술</b> – <b>T1497.003 가상화 회피: 시간 체크</b><br/><b>설명</b>: 분석을 방해하기 위해 지연과 시간 기반 지연을 도입합니다."] class tech_virt_time_check 기술 tech_obfusc_embedded["<b>기술</b> – <b>T1027.009 난독화된 파일 또는 정보: 내장 페이로드</b><br/><b>설명</b>: 최종 RAT 페이로드는 TEA-CBC로 암호화되어 메모리 내에서만 복호화됩니다."] class tech_obfusc_embedded 기술 tech_keylogging["<b>기술</b> – <b>T1056.001 입력 캡처: 키로깅</b><br/><b>설명</b>: 손상된 시스템에서 키 입력을 캡처합니다."] class tech_keylogging 기술 tech_clipboard["<b>기술</b> – <b>T1115 클립보드 데이터</b><br/><b>설명</b>: 탈출을 위해 클립보드 내용을 읽습니다."] class tech_clipboard 기술 tech_steal_cookie["<b>기술</b> – <b>T1539 웹 세션 쿠키 탈취</b><br/><b>설명</b>: 활동적인 브라우저 쿠키를 추출하여 MFA를 우회합니다."] class tech_steal_cookie 기술 tech_alt_auth["<b>기술</b> – <b>T1550.004 대체 인증 자료 사용: 웹 세션 쿠키</b><br/><b>설명</b>: 수확된 쿠키를 유효한 인증 토큰으로 재사용합니다."] class tech_alt_auth 기술 tech_forge_cookie["<b>기술</b> – <b>T1606.001 위조된 웹 자격증명: 웹 쿠키</b><br/><b>설명</b>: 도난당한 쿠키를 기반으로 위조된 웹 자격증명을 제작합니다."] class tech_forge_cookie 기술 tech_private_keys["<b>기술</b> – <b>T1552.004 비밀번호 저장소의 자격증명: 개인 키</b><br/><b>설명</b>: 파일 시스템에서 SSH 개인 키를 수확합니다."] class tech_private_keys 기술 tech_cred_files["<b>기술</b> – <b>T1552.001 파일 내 자격증명</b><br/><b>설명</b>: 평문 자격증명이 포함된 파일을 검색합니다."] class tech_cred_files 기술 tech_browser_creds["<b>기술</b> – <b>T1555.003 웹 브라우저의 자격증명</b><br/><b>설명</b>: 설치된 브라우저에서 저장된 비밀번호를 덤프합니다."] class tech_browser_creds 기술 tech_code_repo["<b>기술</b> – <b>T1213.003 정보 저장소의 데이터: 코드 저장소</b><br/><b>설명</b>: 암호화폐 지갑과 API 토큰을 소스 코드 파일에서 수집합니다."] class tech_code_repo 기술 tech_trusted_dev_util["<b>기술</b> – <b>T1127 신뢰할 수 있는 개발자 유틸리티 프록시 실행</b><br/><b>설명</b>: npm 생명 주기 스크립트와 macOS/Linux의 Node.js를 사용하여 악성 페이로드를 실행합니다."] class tech_trusted_dev_util 기술 tech_input_injection["<b>기술</b> – <b>T1674 입력 주입</b><br/><b>설명</b>: 기술에서 Markdown이 AI 에이전트가 구문 분석하고 실행하는 명령을 주입합니다."] class tech_input_injection 기술 %% 도구 / 악성코드 / 프로세스 노드 process_powershell["<b>프로세스</b> – 사용자 복사 붙여넣기에 의해 시작된 PowerShell 원라인 실행."] class process_powershell 프로세스 tool_msiexec["<b>도구</b> – Msiexec<br/><b>목적</b>: 악성 MSI의 조용한 설치."] class tool_msiexec 도구 tool_g2m_exe["<b>도구</b> – GoToMeeting 실행 파일 (합법적인 서명된 바이너리)."] class tool_g2m_exe 도구 tool_g2m_dll["<b>도구</b> – 사이드로딩을 통해 로드된 악성 g2m.dll."] class tool_g2m_dll 도구 malware_remcos["<b>악성코드</b> – Remcos RAT<br/><b>기능</b>: 원격 접근, 키로깅, 데이터 탈출."] class malware_remcos 악성코드 tool_npm["<b>도구</b> – npm 라이프사이클 스크립트"] class tool_npm 도구 tool_nodejs["<b>도구</b> – Node.js 런타임"] class tool_nodejs 도구 malware_ghostloader["<b>악성코드</b> – GhostLoader<br/><b>대상</b>: macOS/Linux"] class malware_ghostloader 악성코드 %% 연결 ‒ 주요 실행 경로 tech_user_exec_copypaste –>|트리거| process_powershell process_powershell –>|사용| tech_msiexec tech_msiexec –>|실행| tool_msiexec tool_msiexec –>|드롭하는 MSI 설치| tool_g2m_exe tool_msiexec –>|드롭하는 MSI 설치| tool_g2m_dll tool_g2m_exe –>|촉진| tech_dll_hijack tool_g2m_dll –>|로드됨| tech_dll_hijack tech_dll_hijack –>|이어짐| tech_active_scanning tech_active_scanning –>|결합됨| tech_virt_user_check tech_active_scanning –>|결합됨| tech_virt_time_check tech_virt_user_check –>|활성화| tech_virt_time_check tech_dll_hijack –>|전달| tech_obfusc_embedded tech_obfusc_embedded –>|복호화| malware_remcos malware_remcos –>|수행| tech_keylogging malware_remcos –>|수행| tech_clipboard malware_remcos –>|탈출| tech_steal_cookie tech_steal_cookie –>|활성화| tech_alt_auth tech_alt_auth –>|활성화| tech_forge_cookie malware_remcos –>|수확| tech_private_keys malware_remcos –>|수확| tech_cred_files malware_remcos –>|수확| tech_browser_creds malware_remcos –>|수집| tech_code_repo %% 대체 전달 경로 tool_npm –>|실행| tool_nodejs tool_nodejs –>|드롭| malware_ghostloader malware_ghostloader –>|사용| tech_trusted_dev_util %% 입력 주입 경로 tech_input_injection –>|개시| tech_user_exec_copypaste %% 악성 링크 경로 tech_user_exec_link –>|트리거| process_powershell "

공격 흐름

시뮬레이션 실행

전제 조건: 텔레메트리 및 기준선 사전 비행 점검이 통과해야 합니다.

근거: 이 섹션은 탐지 규칙을 트리거하도록 설계된 적대적 기술의 정확한 실행을 자세히 설명합니다. 명령 및 설명은 식별된 TTP를 직접 반영해야 하며 탐지 논리에 의해 예상되는 정확한 텔레메트리를 생성해야 합니다. 추상적이거나 관련이 없는 예는 오진을 유발합니다.

  • 공격 설명 및 명령:

    1. 준비: 공격자는 악성 DLL 페이로드(예: RAT)를 얻고 이름을 변경합니다 g2m.dll 합법적인 라이브러리처럼 보이게 합니다.
    2. 위치: DLL은 합법적인 GoToMeeting 바이너리와 동일한 디렉토리에 복사됩니다 (C:Program FilesGoToMeeting). Windows는 DLL 검색 순서를 따르므로 (애플리케이션 디렉토리 우선), G2M.exe 이 로드됩니다 g2m.dll 기대한 라이브러리 대신.
    3. 실행: 공격자는 G2M.exe을(를) 실행합니다. 프로세스 생성 중에 Sysmon은 Image = *G2M.exe을 기록합니다. 곧 Sysmon은 ImageLoaded = *g2m.dll.

    이 로그를 남깁니다. 이 정확한 패턴은 Sigma 규칙의 조건을 충족시켜 (selection1 및 selection2), 경고를 촉발합니다.

  • 리그레션 테스트 스크립트: (PowerShell – 독립형)

    # -------------------------------------------------
    # GoToMeeting을 통한 DLL 사이드로딩 리그레션 스크립트
    # -------------------------------------------------
    $g2mPath = "C:Program FilesGoToMeeting"
    $exe    = Join-Path $g2mPath "G2M.exe"
    $malDll = Join-Path $g2mPath "g2m.dll"
    
    # 1. 합법적인 실행 파일이 존재하는지 확인
    if (-not (Test-Path $exe)) {
        Write-Error "G2M.exe가 $exe에 없습니다. 먼저 GoToMeeting을 설치하십시오."
        exit 1
    }
    
    # 2. 정상적 DLL을 대체 설치 (악성 페이로드를 시뮬레이트)
    #    여기에서는 이름만 올바른 파일을 복사하기 위해 기존 시스템 DLL을 복사합니다.
    $sourceDll = "$env:SystemRootSystem32kernel32.dll"
    Copy-Item -Path $sourceDll -Destination $malDll -Force
    
    Write-Host "[+] 악성 DLL을 $malDll으로 배치했습니다"
    
    # 3. 서명된 바이너리를 실행 – 사이드로드 트리거
    Write-Host "[+] DLL 로드를 트리거하기 위해 G2M.exe 실행 중..."
    $proc = Start-Process -FilePath $exe -PassThru
    
    # 4. ImageLoaded 이벤트가 기록될 때까지 짧은 시간 대기
    Start-Sleep -Seconds 5
    
    # 5. 정리 – 프로세스를 종료하고 DLL 제거
    if ($proc.HasExited -eq $false) {
        Stop-Process -Id $proc.Id -Force
        Write-Host "[+] G2M.exe (PID $($proc.Id)) 종료"
    }
    
    Remove-Item -Path $malDll -Force
    Write-Host "[+] 악성 DLL 정리 완료"
    # -------------------------------------------------
  • 정리 명령: (공격자가 아티팩트만 제거하고 싶을 때)

    # 악성 DLL이 여전히 존재하는 경우 제거
    $dllPath = "C:Program FilesGoToMeetingg2m.dll"
    if (Test-Path $dllPath) {
        Remove-Item -Path $dllPath -Force
        Write-Host "$dllPath 제거 완료"
    }
    
    # 필요한 경우 남아 있는 G2M.exe 프로세스 종료
    Get-Process -Name "G2M" -ErrorAction SilentlyContinue |
        Stop-Process -Force
    Write-Host "남아 있는 모든 G2M.exe 프로세스 종료"