SOC Prime Bias: 치명적

27 May 2026 15:32 UTC

GitHub과 SourceForge의 가짜 소프트웨어로 배포되는 Deno RAT by 가브리엘레 오리니

Author Photo
SOC Prime Team linkedin icon 팔로우
GitHub과 SourceForge의 가짜 소프트웨어로 배포되는 Deno RAT by 가브리엘레 오리니
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

위협 행위자들은 GitHub 및 SourceForge를 통해 널리 사용되는 소프트웨어의 가짜 설치 프로그램 및 플러그인을 배포하여 DinDoor로 알려진 Deno 기반 백도어를 전달하고 있습니다. 이 악성 코드는 Scoop 또는 WinGet을 통해 Deno 런타임을 설치한 후 데이터를 훔치고, 원격 명령을 실행하며, P2P 비디오 스트리밍을 가능케 하는 JavaScript RAT를 실행합니다. 감염 체인은 악성 MSI 패키지와 PowerShell 스크립트를 사용하여 시작되며, 명령 및 제어 트래픽은 HTTP 또는 WebSocket을 통해 이루어집니다. 이 캠페인은 또한 피해자를 악성 리포지토리로 유도하기 위해 해킹된 YouTube 채널을 악용합니다.

조사

연구자들은 전체 감염 시퀀스를 재구성했습니다, 시작은 curl 명령어들로, MSI 파일을 다운로드하고 Scoop, WinGet, Deno를 배포한 후 DinDoor JavaScript 로더를 실행하는 설치 스크립트를 실행했습니다. 그들의 분석은 시스템 정찰, 브라우저 및 암호화폐 지갑 도난, WebSocket을 통한 VNC, 그리고 Edge 기반의 P2P 스트리밍을 포함한 RAT의 능력을 문서화했습니다. 팀은 또한 탐지와 위협 헌팅을 지원하기 위한 도메인, URL, IP 주소, 명령줄 아티팩트 등의 지표를 추출했습니다.

완화

조직은 소프트웨어를 공식 공급업체 웹사이트에서만 다운로드하고 설치 프로그램을 실행하기 전에 디지털 서명을 확인해야 합니다. 보안 팀은 Deno를 설치하기 위해 Scoop 및 WinGet을 비정상적으로 사용하는 경우와 예기치 않은 MSI 기반 소프트웨어 배포를 모니터링해야 합니다. 확인된 악성 도메인 및 IP 주소로의 아웃바운드 트래픽은 차단되어야 하며, PowerShell 또는 curl 믿을 수 없는 소스에서 파일을 다운로드하고 실행하는 활동은 철저히 검사되어야 합니다.

대응

방어자는 경고를 설정해야 합니다. msiexec 파일을 실행하거나 의심스러운 GitHub 또는 SourceForge URL로부터 발생한 파일을 실행하는 Run 레지스트리 키에서 deno.exe를 시작하고, 알려진 명령 및 제어 인프라와의 네트워크 통신을 감시해야 합니다. 영향을 받은 호스트는 드롭된 스크립트, Deno 런타임, 그리고 지속성 메커니즘을 찾기 위해 포렌식 검토를 받아야 하며, 타협된 시스템은 즉시 격리하고 모든 비인가된 Deno 설치는 제거해야 합니다.

공격 흐름

시뮬레이션 실행

전제조건: 텔레메트리 및 기준점 프리플라이트 체크가 통과해야 합니다.

근거: 이 섹션은 탐지 규칙을 작동시키기 위한 적의 기법(TTP)의 정확한 실행을 상세히 다룹니다. 명령 및 설명은 식별된 TTP와 직접적으로 연관되어야 하며, 탐지 논리에서 기대되는 바로 그 텔레메트리를 생성하도록 설계되어야 합니다.

  • 공격 서사 및 명령:
    공격자는 피싱 첨부파일을 통해 악성 CMD 스크립트로 초기 발판을 얻었습니다. 은밀함을 유지하기 위해, 스크립트는 숨겨진 창으로 PowerShell을 실행하고, 실행 정책을 비활성화하며, base64로 인코딩된 페이로드를 다운로드 및 실행합니다. 정확한 명령줄은 규칙의 세 가지 플래그 된 부분 문자열과 일치하여 탐지를 보장합니다.

    1. 1단계 – CMD 실행기 (테스터에 의해 시뮬레이션됨):

       @echo off
       start "" powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -EncodedCommand %payload%
    2. 2단계 – PowerShell 페이로드 (base64로 인코딩되며, 테스트를 위한 무해한 것):

       $cmd = 'Write-Output "Malicious simulation executed"'
       $bytes = [System.Text.Encoding]::Unicode.GetBytes($cmd)
       $b64 = [Convert]::ToBase64String($bytes)
       echo $b64   # 이 값을 배치 파일에서 %payload%로 삽입
  • 회귀 테스트 스크립트: 아래 스크립트는 전체 프로세스를 자동화하여 인코딩된 명령어를 생성하고 필요한 플래그가 설정된 상태에서 PowerShell을 실행한 후, SIEM이 이벤트를 수집할 수 있도록 잠시 멈춥니다.

    # -------------------------------------------------
    # 회귀 테스트 – PowerShell 숨김 + Bypass EP
    # -------------------------------------------------
    # 1) 무해한 페이로드 생성 (Write-Output)
    $payload = 'Write-Output "Malicious simulation executed"'
    
    # 2) base64로 페이로드 인코딩 (PowerShell에서 예상되는 Unicode 인코딩)
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($payload)
    $b64   = [Convert]::ToBase64String($bytes)
    
    # 3) Sigma 규칙에 필요한 정확한 플래그 세트로 PowerShell 실행
    $psCmd = @(
        'powershell.exe',
        '-NoProfile',
        '-ExecutionPolicy', 'Bypass',
        '-WindowStyle', 'Hidden',
        '-EncodedCommand', $b64
    ) -join ' '
    
    Write-Host "Executing:`n$psCmd"
    Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile","-ExecutionPolicy","Bypass","-WindowStyle","Hidden","-EncodedCommand",$b64 -WindowStyle Hidden
    
    # 4) 로깅 전파 대기 (필요에 따라 조정)
    Start-Sleep -Seconds 10
    Write-Host "Simulation complete – check SIEM for detection."
  • 정리 명령: 임시 파일이 없는지(여기서는 생성되지 않음)를 제거하고 남아 있는 PowerShell 프로세스가 없도록 합니다.

    # 테스트에서 생성된 불필요한 PowerShell 프로세스를 종료(현재 세션 제외)
    Get-Process -Name powershell | Where-Object { $_.Id -ne $PID } | Stop-Process -Force
    Write-Host "Cleanup complete."