# Kỹ năng phát hiện và xử lý webshell trên máy chủ web

> Kỹ năng thực chiến · Vai trò: SOC / Ứng cứu sự cố · Mức độ: Nâng cao · Thời gian ước tính: 60 phút
> Nguồn: https://news.huecybersec.xyz/cam-nang/phat-hien-xu-ly-webshell · Cập nhật: 2026-11-13

## 1. Mục tiêu

Săn webshell bằng cách đối chiếu tệp mới/bị sửa trong thư mục web, mẫu hàm nguy hiểm, nhật ký truy cập và cây tiến trình của máy chủ web; sau đó bảo toàn chứng cứ và vá điểm xâm nhập.

## 2. Khi nào áp dụng

Khi máy chủ web có lỗ hổng tải tệp/RCE vừa công bố, có tiến trình shell sinh ra từ nginx/apache/php-fpm/w3wp, hoặc lưu lượng POST bất thường tới tệp lạ.

## 3. Quy trình thực hiện

### 3.1. Săn tìm trên hệ thống tệp

- [ ] Liệt kê tệp script mới hoặc bị sửa trong 7 ngày trong thư mục web [1][2]
  ```
  sudo find /var/www -type f \( -name '*.php' -o -name '*.jsp' -o -name '*.phtml' \) -mtime -7 -ls
  ```
- [ ] Tìm mẫu hàm hay dùng trong webshell PHP (cần đánh giá thủ công vì có thể trùng mã hợp lệ) [1]
  ```
  sudo grep -RIlE 'eval\(|base64_decode\(|assert\(|shell_exec\(|passthru\(|system\(' /var/www --include=*.php
  ```
- [ ] So sánh với bản triển khai đã biết (Git) để phát hiện tệp lạ [1]
  ```
  git -C /var/www/app status --porcelain
  ```
- [ ] Máy chủ IIS: tìm tệp .aspx/.ashx/.asmx mới trong 7 ngày [1]
  ```
  Get-ChildItem C:\inetpub\wwwroot -Recurse -Include *.aspx,*.ashx,*.asmx -File | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-7)} | Select-Object FullName,LastWriteTime
  ```

### 3.2. Săn tìm trên nhật ký & tiến trình

- [ ] Thống kê yêu cầu POST theo đường dẫn — webshell thường là tệp ít người truy cập nhưng nhận nhiều POST [1]
  ```
  grep -E '"POST [^"]+\.(php|aspx|jsp)' /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
  ```
- [ ] **[BẮT BUỘC]** Kiểm tra tiến trình con của máy chủ web (sh, bash, cmd, powershell là dấu hiệu nguy hiểm) [1][2]
  ```
  ps -ef --forest | grep -B1 -A3 -E 'nginx|apache2|httpd|php-fpm'
  ```

### 3.3. Xử lý

- [ ] **[BẮT BUỘC]** Bảo toàn chứng cứ: sao chép tệp nghi ngờ ra vùng cách ly và tính mã băm trước khi xoá [1]
  ```
  sha256sum /path/to/suspicious.php
  ```
- [ ] **[BẮT BUỘC]** Xác định và vá lỗ hổng cho phép tải/ghi tệp (điểm xâm nhập ban đầu) [1][3]
- [ ] Đổi mật khẩu CSDL, khoá API và tài khoản mà mã nguồn web có quyền đọc [1]
- [ ] Chặn thực thi script trong thư mục upload và kiểm tra phần mở rộng/nội dung tệp tải lên [3]

## 4. Kho lệnh tham khảo

> Chạy trên hệ thống được phép, với quyền phù hợp; đọc kỹ lệnh trước khi chạy.

**Tệp PHP chứa chuỗi base64 rất dài (dấu hiệu làm rối mã)** (Linux)
```
sudo grep -RIlE '[A-Za-z0-9+/]{300,}={0,2}' /var/www --include=*.php
```

## 5. Tài liệu tham khảo

[1] NSA & ASD — Detect and Prevent Web Shell Malware (Cybersecurity Information Sheet). https://media.defense.gov/2020/Jun/09/2002313081/-1/-1/0/CSI-DETECT-AND-PREVENT-WEB-SHELL-MALWARE-20200422.PDF
[2] MITRE ATT&CK — Server Software Component: Web Shell (T1505.003). https://attack.mitre.org/techniques/T1505/003/
[3] OWASP — File Upload Cheat Sheet. https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html

---
Tài liệu do HueCA-CYBER tổng hợp. Ghi rõ nguồn khi sử dụng lại.