Thực tế từ Production ENV: Phát hiện script độc realtime bằng inotifywait (đơn giản mà hữu ích thực sự)

Thứ 6 ngày 13 không mê tín mà thấy cũng đen (cũng thêm kinh nghiệm), đúng kiểu thời đại các lỗ hổng zero-day và script tự động lộng hành khắp nơi, nọ nghe mấy Web to to bị redirect sang web cá độ, hay trong j2team có ông share test code có file .sh… và cũng không ít hệ thống bị “đi xuyên tường lửa” mà không để lại log gì rõ ràng. Hôm trước gặp rồi mới thấy là những điều nhỏ nhặt không cần cao siêu cũng hữu ích thực sự. Nay viết bài này để mọi người thêm góc nhìn thực tế nhé.

Tình huống: server tự sinh script lạ

Thứ 6 tuần trước (Thứ 6 ngày 13 haha), một trong các Production server Nginx của hệ thống Microservice của công ty mình bắt đầu bị redirect ngẫu nhiên sang cái trang quảng cáo của bọn Tây – hoặc của mấy thằng đảo lừa cùng màu da :))) kiểu giống giống anh em khi vào web Pỏn nó redirect, chỉ vài phút rồi dừng, rất khó tái hiện. hệ thống monitor mình thấy nên cũng check ngay:

  • Access log bình thường
  • Không có process lạ khi chạy ps aux
  • Không có service mới trong systemctl
  • Cron và SSH login không bất thường

Như thể “có ai đó chạm tay vào rồi rút đi”…

Nghi ngờ: file tự xuất hiện

Mình check thì lướt qua có thấy trong /var/www/html/, một file .tmp.sh xuất hiện rồi biến mất. Mình kiểm tra lại:

ls -lah --time=ctime /var/www/html/

Đúng là có lúc có file lạ a.sh, tmp.tmp, hoặc k.php, thời gian xuất hiện khoảng vài giây rồi bị xoá.

Rõ ràng có quá trình nào đó tạo – thực thi – xoá file rất nhanh, không để lại dấu vết.

Vào cuộc với inotifywait

Thật ra đúng là anh em mạnh linux mới điều tra được một cách nhanh chóng còn học kiểu nhảy ngang sang thiếu kiến thức hệ thống thì cũng hơi khó đấy, lúc đó mình không nghĩ nhiều dùng luôn inotifywait để theo dõi thư mục một cách real-time.

Tạo script giám sát đơn giản thôi:

#!/bin/bash
inotifywait -m -r /var/www/html/ -e create -e delete -e modify -e move |
while read path action file; do
    echo "$(date) $action $file in $path" >> /root/inotify-log.txt
done

Chạy ngầm bằng screen (hoặc nohup cũng được nhé).

Bắt được kẻ giấu mặt

Sau một lúc Log thu được mình check thấy:

Fri Jun 13 08:01:12 UTC 2025 CREATE  .hidden.php in /var/www/html/tmp/
Fri Jun 13 08:01:13 UTC 2025 MODIFY  .hidden.php in /var/www/html/tmp/
Fri Jun 13 08:01:14 UTC 2025 DELETE  .hidden.php in /var/www/html/tmp/

Lần theo thời gian, so sánh auth.lognginx access.log, mình check ra:

  • Script này được tạo bởi quá trình php-fpm
  • Nội dung script được inject qua HTTP POST (exploit upload lỗ hổng plugin cũ – nghĩ mấy thằng soi cũng ghê thật)
  • Script được ghi ra đĩa, thực thi từ PHP bằng shell_exec(), rồi tự xoá

Diệt và phòng ngừa

  1. Tạm block plugin bị lỗi: chắc chắn rồi rút điện là giải pháp nhanh nhất – anh Quảng dạy :)))
  2. Giới hạn quyền ghi thư mục tmp/
  3. Chạy PHP-FPM trong chroot jail
  4. Tạo giám sát inotify dài hạn, gửi cảnh báo nếu có file .sh, .php, .py được ghi vào vùng không được phép:

    if [[ "$file" =~ \.(php|sh|py)$ ]]; then
            curl -X POST https://hooks.slack.com/... -d "File $file appeared in $path"
    fi

Bài học

  • Mọi người đừng đánh giá thấp việc ghi nhận hành vi của file trên hệ thống real-time phải có công cụ theo dõi chi tiết
  • inotifywait nhẹ, dễ dùng, không cần cài agent
  • Không thay thế IDS/IPS, nhưng cực hữu ích với các hệ thống cần giám sát directory quan trọng (upload dir, config folder, cron.d…)

Kết nhé

Trong khi antivirus, SELinux hay auditd vẫn chưa phát hiện gì, thì “những điều nho nhỏ” inotifywait đơn giản lại Túm cổ được script lỏ bằng chính dấu vết mà attacker không ngờ sẽ bị quan sát.

Nếu mọi người làm DevOps, quản trị hệ thống nên có sẵn bộ script inotify theo dõi các vùng nhạy cảm như:

  • /etc/
  • /var/www/
  • /tmp/
  • /home/*/.ssh/

Và hơn thế tùy doanh nghiệp và dự án của mọi người nhé chứ làm gì có chuẩn. Vì rất có thể, kẻ tấn công sẽ không lộ diện qua log, mà qua những gì chúng chạm vào.

Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận