브라우저 하이재킹: 세 가지 기술 분석
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
이 기사는 브라우저 하이재커가 Windows 사용자 브라우저를 조작하는 데 사용되는 세 가지 다른 기술을 탐구합니다. 브라우저 환경 설정 파일의 직접적인 변조, 브라우저 UI를 원격으로 구동하는 스크립트화된 키 입력 에뮬레이션, 악성 확장을 사이드로드하기 위한 크로미엄 명령줄 스위치의 오용 등을 다루고 있습니다. 각 방법마다 대표적인 아티팩트와 코드 예제가 함께 제공됩니다. 이러한 하이재킹의 주요 목표는 자격 증명 도용이나 직접적인 데이터 탈취보다는 광고 삽입과 무단 리디렉션입니다.
조사
연구자는 TamperedChef/BaoLoader 캠페인과 관련된 맬웨어를 검토하고 시스템 식별자를 수집하고 Firefox 및 Chrome 환경 설정 파일을 변경하는 데 활용된 네이티브 모듈 UtilityAddon.node를 식별했습니다. 두 번째 샘플은 주소 표시줄을 변경하고 새로운 탭을 생성하며 가짜 광고 클릭을 생성하기 위해 키보드 단축키를 가장하는 브라우저 원격 액세스 도구(BRAT)를 보여주었습니다. 세 번째 시나리오는 예약 작업을 설정하고, WMI를 통해 프로세스 생성을 모니터링하며, Chrome 업데이트를 비활성화하고 이제는 더 이상 지원되지 않는 크로미엄 명령줄 스위치를 통해 악성 확장을 로드하는 VBS/PowerShell 기반 하이재커를 포함합니다.
완화 조치
방어자는 UtilityAddon.node, 악성 .reg 항목, 그리고 의심스러운 PowerShell 스크립트와 같은 하이재커 구성 요소를 제거하거나 격리해야 합니다. 알 수 없거나 신뢰할 수 없는 스크립트를 호출하는 예약 작업을 비활성화하거나 삭제하세요. 신뢰할 수 있는 백업에서 브라우저 환경 설정 파일을 복원하고 엄격한 파일 권한을 적용하세요. 크로미엄의 –load-extension 스위치를 사용하는 시도를 모니터링하거나 차단하고 Chrome의 자동 업데이트 메커니즘이 여전히 활성화되어 있는지 확인하세요.
대응
탐지 시, 설명된 아티팩트를 찾고 브라우저 환경 설정 파일, 업데이트를 방해하는 레지스트리 값, 그리고 비정상적인 브라우저 명령줄 매개변수에 대한 변경 사항을 추적하세요. 영향을 받은 기계를 격리하고 데이터의 휘발성 증거를 캡처하며, 설치되고 활성화된 확장을 철저히 검토하세요. 자동 복구 스크립트를 사용하여 브라우저 설정을 안전한 기본값으로 재설정하고 업데이트 서비스를 다시 활성화하세요. 마지막으로, 명령 및 제어 활동을 신호로 할 수 있는 관련 네트워크 지표를 모니터링하세요.
g”graph TB %% 클래스 정의 classDef action fill:#99ccff %% 노드 정의 action_create_scheduled_task[“<b>행위</b> – <b>T1037 부팅 또는 로그온 초기화 스크립트</b><br />지속성을 위해 configuration.ps1을 사용하여 예약 작업 생성”] class action_create_scheduled_task action action_wmi_subscription[“<b>행위</b> – <b>T1546.003 WMI 이벤트 구독</b><br />chrome.exe 및 edge.exe 프로세스를 모니터링하는 WMI 이벤트 구독 설정”] class action_wmi_subscription action action_terminate_relaunch[“<b>행위</b> – <b>T1547.014 바로가기 수정 / T1176 브라우저 확장</b><br />브라우저를 종료한 후 악성 확장이 로드된 상태로 재실행”] class action_terminate_relaunch action action_load_extension[“<b>행위</b> – <b>T1176 브라우저 확장</b><br />u002du002dloadu2011extension 스위치를 통해 악성 확장 로드 (정책: DisableLoadExtensionCommandLineSwitch)”] class action_load_extension action action_disable_updates[“<b>행위</b> – <b>T1176 브라우저 확장</b><br />조작된 .reg 파일을 적용하여 Chrome 자동 업데이트 비활성화”] class action_disable_updates action action_gather_hmac[“<b>행위</b> – <b>T1548.006 구성 요소 개체 모델(COM) 하이재킹</b><br />UtilityAddon.node가 SID 및 볼륨 시리얼 번호를 수집하고 Secure Preferences용 HMAC 계산”] class action_gather_hmac action action_keypress_sim[“<b>행위</b> – <b>T1185 브라우저 내 중간자 공격(Man in the Browser)</b><br />BRAT 구성 요소가 키 입력을 시뮬레이션하여 브라우저를 제어”] class action_keypress_sim action action_ad_injection[“<b>행위</b> – <b>결과</b><br />주소 표시줄 조작, 광고 삽입 및 데이터 탈취”] class action_ad_injection action %% 연결 action_create_scheduled_task u002du002d>|활성화| action_wmi_subscription action_wmi_subscription u002du002d>|트리거| action_terminate_relaunch action_terminate_relaunch u002du002d>|사용| action_load_extension action_terminate_relaunch u002du002d>|사용| action_disable_updates action_create_scheduled_task u002du002d>|데이터 제공| action_gather_hmac action_gather_hmac u002du002d>|지원| action_keypress_sim action_keypress_sim u002du002d>|결과로 이어짐| action_ad_injection ”
공격 흐름
시뮬레이션 실행
전제 조건: Telemetry & Baseline Pre‑flight Check가 통과해야 합니다.
-
공격 설명 및 명령어:
공격자는 이전에 악성 PowerShell 스크립트인 configuration.ps1 을(를)%LOCALAPPDATA%DiagnosticNET에 떨어뜨렸습니다. 이 스크립트는 브라우저 프로세스(Chrome, Edge, Firefox)를 계속 모니터링하며 그들을 종료시킵니다. 사용자 브라우저가 다시 시작되게 하여 공격자가 이전에 사용자 프로파일에 놓은 악성 확장을 로드하도록 강요합니다. 탐지를 유발하려면 공격자는 직접적인 PowerShell 호출을 통해 스크립트를 실행합니다:- 숨겨진 폴더를 만들고 악성 스크립트를 떨어뜨립니다.
- 스크립트를
powershell.exe와 함께 실행하여 규칙 조건과 맞는 평문의 명령줄을 사용합니다. - 스크립트는 (데모 목적을 위해) 활동을 콘솔에 기록하고 대상 브라우저를 종료시킵니다.
-
회귀 테스트 스크립트:
# --------------------------------------------------------- # 회귀 스크립트 – 탐지 유발 활동을 재현 # --------------------------------------------------------- # 1. 숨겨진 디렉토리 준비 $targetDir = "$env:LOCALAPPDATADiagnosticNET" if (-not (Test-Path $targetDir)) { New-Item -Path $targetDir -ItemType Directory -Force | Out-Null # 디렉토리 숨기기 (Get-Item $targetDir).Attributes = 'Hidden','Directory' } # 2. 악성 configuration.ps1 드롭 $scriptPath = Join-Path $targetDir "configuration.ps1" @' # 악성 구성 스크립트 – 브라우저 종료 $browsers = @("chrome", "msedge", "firefox") foreach ($proc in $browsers) { Get-Process -Name $proc -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue } Write-Output "브라우저 프로세스 종료." '@ | Set-Content -Path $scriptPath -Encoding UTF8 # 3. PowerShell을 통해 스크립트 실행 – 이것이 Sigma 규칙을 활성화해야 합니다 $cmd = "$env:WINDIRSystem32WindowsPowerShellv1.0powershell.exe -ExecutionPolicy Bypass -File `"$scriptPath`"" Write-Host "악성 스크립트 실행:" $cmd & $env:WINDIRSystem32WindowsPowerShellv1.0powershell.exe -ExecutionPolicy Bypass -File $scriptPath -
정리 명령어:
# --------------------------------------------------------- # 정리 – 회귀 테스트가 생성한 아티팩트를 제거 # --------------------------------------------------------- # 종료된 모든 브라우저 프로세스 정지 # (필요 없음 – 브라우저는 수동으로 다시 시작할 수 있음) # 악성 스크립트와 숨겨진 폴더 제거 $targetDir = "$env:LOCALAPPDATADiagnosticNET" if (Test-Path $targetDir) { Remove-Item -Path $targetDir -Recurse -Force } # 선택적으로 PowerShell 명령줄 기록 지우기 Clear-History