SOC Prime Bias: 중간

27 May 2026 15:40 UTC

피싱 캠페인, 자바스크립트 기반 PureLogs 변종 배포로 민감 데이터 탈취

Author Photo
SOC Prime Team linkedin icon 팔로우
피싱 캠페인, 자바스크립트 기반 PureLogs 변종 배포로 민감 데이터 탈취
shield icon

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 관련 행동을 포함시키는 것도 권장됩니다.

공격 흐름

이 부분은 계속 업데이트 중입니다. 알림을 받으려면 가입하세요

알림 받기

시뮬레이션 실행

전제 조건: Telemetry & Baseline Pre-flight Check가 통과해야 합니다.

이유: 이 섹션은 탐지 규칙을 작동시키기 위해 설계된 적군 기술 (TTP)의 정확한 실행을 자세히 설명합니다. 명령어와 서사는 식별된 TTP를 직접 반영하고 탐지 논리에 의해 예상되는 정확한 텔레메트리를 생성하는 데 목적이 있습니다.

  • 공격 설명 및 명령:

    1. 1단계 – JavaScript 드롭: 공격자는 악성 .js 페이로드 (인코딩된)를 피싱 이메일을 통해 전달합니다. 페이로드는 %TEMP% 에 저장되고 wscript.exe.
    2. 2단계 – PowerShell 실행기: JavaScript는 플래그 -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File와 함께 PowerShell을 시작합니다. 이는 프로세스 할로잉을 수행하는 2차 스크립트를 지시합니다.
    3. 3단계 – MsBuild를 통한 프로세스 할로잉: PowerShell 스크립트는 MsBuild.exe 을 유예 모드로 시작하고 악성 페이로드 (더미 DLL)를 주입하며 프로세스를 재개하여 합법적인 빌드 도구인 것처럼 실행을 달성합니다.
  • 회귀 테스트 스크립트: (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