피싱 캠페인, 자바스크립트 기반 PureLogs 변종 배포로 민감 데이터 탈취
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
피싱 캠페인은 악성 JavaScript 첨부 파일을 사용하여 PowerShell 스크립트를 해독 및 실행하고 있습니다. 그 후 스크립트는 프로세스 할로잉을 수행하여 신뢰할 수 있는 MsBuild.exe 프로세스에 .NET 다운로더를 주입합니다. 다운로더는 명령 및 제어 서버에 연결하여 PureLogs 플러그인을 검색하며, 이는 자격 증명, 브라우저 데이터, 암호 화폐 지갑 정보 및 기타 민감한 자산을 탈취합니다. 이 공격 체인은 매우 교묘하며, 레이어드 암호화와 파일리스 실행 기술을 사용하여 탐지를 줄입니다.
조사
FortiGuard Labs는 이메일 첨부 파일, 난독화된 JavaScript, 드롭된 PowerShell 스크립트 및 공격 동안 사용된 메모리 내 .NET 구성 요소를 조사했습니다. 분석 중 연구원들은 비어 있는 MsBuild.exe 프로세스를 생성하고, 다운로더 DLL를 로드하며, PureLogs 플러그인을 실행하여 브라우저, Discord, 암호 화폐 지갑 및 기타 애플리케이션에서 데이터를 수확하는 과정이 관찰되었습니다. 캡처된 네트워크 트래픽은 단일 명령 및 제어 서버와의 암호화된 GET 및 POST 통신을 보여주었습니다.
대응책
보고서는 강력한 이메일 필터링 강제, 스크립트 실행을 가능한 한 제한, 및 MsBuild.exe관련 프로세스 할로잉과 수상한 PowerShell 활동 모니터링을 권장합니다. 또한 메모리 내 .NET 어셈블리를 식별할 수 있는 엔드포인트 탐지 및 대응 도구 사용을 권장합니다.
대응
이 활동이 탐지된 경우, 감염된 엔드포인트를 격리하고 악성 MsBuild.exe 프로세스를 종료하며 명령 및 제어 IP 주소를 차단하십시오. 그런 다음 조사는 포렌식 분석을 수행하여 자격 증명이나 민감한 데이터가 도난당했는지 확인하고 필요한 경우 노출된 계정을 재설정해야 합니다. 탐지 내용을 업데이트하여 PowerShell 남용, 프로세스 할로잉 및 PureLogs 관련 행동을 포함시키는 것도 권장됩니다.
공격 흐름
이 부분은 계속 업데이트 중입니다.
탐지
숨겨진 PowerShell 명령줄을 통한 실행 가능성 (cmdline을 통해)
의심스러운 디렉토리에서 Bypass Execution Policy를 사용하여 파일을 실행 중인 Powershell (cmdline을 통해)
LOLBAS WScript/CScript (프로세스 생성 통해)
탐지를 위한 IOCs (HashSha256): FortiGuard Labs의 피싱 캠페인 조사에서 JavaScript-기반 PureLogs 변종 배포를 사용해 민감한 데이터를 탈취
탐지를 위한 IOCs (SourceIP): FortiGuard Labs의 피싱 캠페인 조사에서 JavaScript-기반 PureLogs 변종 배포를 사용해 민감한 데이터를 탈취
탐지를 위한 IOCs (DestinationIP): FortiGuard Labs의 피싱 캠페인 조사에서 JavaScript-기반 PureLogs 변종 배포를 사용해 민감한 데이터를 탈취
파일리스 PowerShell 스크립트 및 .NET 어셈블리를 통한 프로세스 할로잉 실행 [Windows PowerShell]
JavaScript-기반 PureLogs 변종 배포 탐지: PowerShell 및 프로세스 할로잉을 통해 [Windows 프로세스 생성]
시뮬레이션 실행
전제 조건: Telemetry & Baseline Pre-flight Check가 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 작동시키기 위해 설계된 적군 기술 (TTP)의 정확한 실행을 자세히 설명합니다. 명령어와 서사는 식별된 TTP를 직접 반영하고 탐지 논리에 의해 예상되는 정확한 텔레메트리를 생성하는 데 목적이 있습니다.
-
공격 설명 및 명령:
- 1단계 – JavaScript 드롭: 공격자는 악성
.js페이로드 (인코딩된)를 피싱 이메일을 통해 전달합니다. 페이로드는%TEMP%에 저장되고wscript.exe. - 2단계 – PowerShell 실행기: JavaScript는 플래그
-ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File와 함께 PowerShell을 시작합니다. 이는 프로세스 할로잉을 수행하는 2차 스크립트를 지시합니다. - 3단계 – MsBuild를 통한 프로세스 할로잉: PowerShell 스크립트는
MsBuild.exe을 유예 모드로 시작하고 악성 페이로드 (더미 DLL)를 주입하며 프로세스를 재개하여 합법적인 빌드 도구인 것처럼 실행을 달성합니다.
- 1단계 – JavaScript 드롭: 공격자는 악성
-
회귀 테스트 스크립트: (PowerShell – 일반 사용자로 실행, 외부 파일 필요 없음)
# -------------------------------------------------------------- # PureLogs 변종 시뮬레이션 – JavaScript → PowerShell → MsBuild # -------------------------------------------------------------- # 1. 악성 JavaScript 생성 (난독화 역할을 모방하기 위해 base64로 인코딩) $jsPayload = @" // 악성 JS: PowerShell을 우회 플래그로 시작 var shell = new ActiveXObject("WScript.Shell"); var psCmd = "powershell.exe -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File ""%TEMP%launch.ps1"""; shell.Run(psCmd, 0, false); "@ $jsPath = "$env:TEMPmalicious.js" $jsPayload | Set-Content -Path $jsPath -Encoding ASCII # 2. PowerShell 페이로드 생성, MsBuild로 프로세스 할로잉 수행 $psPayload = @" # 유예 모드로 MsBuild 시작 $msbuildPath = (Get-Command MsBuild.exe).Source $si = New-Object System.Diagnostics.ProcessStartInfo $si.FileName = $msbuildPath $si.UseShellExecute = $false $si.CreateNoWindow = $true $si.Arguments = "/t:Compile" $proc = [System.Diagnostics.Process]::Start($si) Start-Sleep -Milliseconds 500 # 생성 시간 부여 # 더미 파일을 프로세스의 메모리 공간에 작성하여 할로잉 시뮬레이션 # (실제 할로잉에서는 Windows API 호출 사용; 여기서는 프로세스만 유지) Write-Host "Process hollowing simulated – MsBuild running" "@ $psPath = "$env:TEMPlaunch.ps1" $psPayload | Set-Content -Path $psPath -Encoding ASCII # 3. JavaScript 실행 – 이는 규칙이 감시하는 진입점입니다 wscript.exe $jsPath # 로그가 생성되는 시간을 주기 위해 짧은 시간 대기 Start-Sleep -Seconds 10 -
정리 명령:
# 시뮬레이션에 의해 시작된 모든 MsBuild 프로세스를 종료 Get-Process MsBuild -ErrorAction SilentlyContinue | Stop-Process -Force # 아티팩트 제거 Remove-Item "$env:TEMPmalicious.js" -ErrorAction SilentlyContinue Remove-Item "$env:TEMPlaunch.ps1" -ErrorAction SilentlyContinue