Post

Xử lý máy chủ Linux bị nhiễm mã độc SSH Brute Force và Cron Malware

View:
Xử lý máy chủ Linux bị nhiễm mã độc SSH Brute Force và Cron Malware

Giới thiệu

Vào 1 ngày đẹp trời, khi đang ngồi check monitor các website thì Uptime Kuma báo các website bị down liên tục, ping đỏ lòm. Lọ mọ ssh vào server thì ôi thôi cũng chậm không kém, phải restart bằng tay mới được, nhưng mà cũng chỉ được khoảng 15 phút, các website và service trên con server này cũng lại disconnect. Xong, biết có chuyện chẳng lành, ngay lập tức check logs và cần xử lý ASAP. Trong bài viết này, mình sẽ chia sẻ quá trình xử lý sự cố máy chủ Linux bị nhiễm mã độc có dấu hiệu bị khai thác qua SSH brute force và cài cron job độc hại. Mục tiêu là ghi lại các bước điều tra, cô lập và bảo vệ lại hệ thống.

Dấu hiệu ban đầu

  • Lưu lượng mạng cao bất thường ngay cả khi không có tác vụ đang chạy (Lưu lượng mạng Upload và Download qua htop loanh quanh 300gb trong vòng 10 phút)
  • Tiến trình lạ sử dụng SSH (sshd) kết nối đến IP không xác định (ví dụ: 218.92.x.x, 59.153.x.x)
  • Cron job hoặc file lạ trong /etc/cron.*
  • Các kết nối từ IP bị nghi ngờ vẫn tồn tại sau khi block bằng firewall

Các bước xử lý

1. Kiểm tra kết nối hiện tại

1
2
sudo ss -tupn
sudo lsof -i -P -n | grep ESTABLISHED

2. Kiểm tra tiến trình và cron

1
2
3
4
ps auxf
sudo crontab -l
sudo ls -al /etc/cron.*
sudo cat /etc/crontab

Tìm các file cron lạ như brave-browser, update.sh,…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo ls -la /etc/cron*

/etc/cron.daily:
total 40
drwxr-xr-x.   2 root root    27 Feb 23 21:39 .
drwxr-xr-x. 135 root root  8192 Mar  4 16:20 ..
-rwxr-xr-x.   1 root root 25576 Feb 19 16:17 brave-browser

/etc/cron.hourly:
total 56
drwxr-xr-x.   2 root root 4096 Mar  4 16:01 .
drwxr-xr-x. 135 root root 8192 Mar  4 16:20 ..
-rwxr-xr-x.   1 root root  610 Dec 17 18:04 0anacron
-rwxr-xr-x.   1 root root  159 Mar  2 00:01 dcyrdqjjkk.sh
-rwxr-xr-x.   1 root root  159 Mar  1 20:01 ectitmuwwg.sh
-rwxr-xr-x.   1 root root  159 Mar  4 16:01 ltwgzytyjv.sh
-rwxr-xr-x.   1 root root  158 Mar  2 18:01 nhbbnevcc.sh
-rwxr-xr-x.   1 root root  157 Mar  1 22:01 ovdamfvd.sh
-rwxr-xr-x.   1 root root  160 Mar  3 19:01 phipuhyvtqi.sh
-rwxr-xr-x.   1 root root  159 Mar  1 19:01 uokfibmgfi.sh
-rwxr-xr-x.   1 root root  155 Mar  1 17:01 upnhpk.sh
-rwxr-xr-x.   1 root root  158 Feb 28 19:34 whntwvnpb.sh

Xuất hiện hàng loạt các file .sh có tên ngẫu nhiên

Check thử xem trong các file này chứa nội dung gì:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[hoang@localhost ~]$ sudo cat /etc/cron.hourly/*.sh
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
cp "/usr/bin/dcyrdqjjkk" "/usr/bin/vjytyzgwtl"
"/usr/bin/vjytyzgwtl"#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
cp "/usr/bin/ectitmuwwg" "/usr/bin/kkjjqdrycd"
"/usr/bin/kkjjqdrycd"#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
cp "/usr/bin/ltwgzytyjv" "/usr/bin/agnfyubcna"
"/usr/bin/agnfyubcna"#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
cp "/usr/bin/nhbbnevcc" "/usr/bin/ryfjnorxfq"
"/usr/bin/ryfjnorxfq"#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
cp "/usr/bin/ovdamfvd" "/usr/bin/cpbksqhmhy"
"/usr/bin/cpbksqhmhy"#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
cp "/usr/bin/phipuhyvtqi" "/usr/bin/opxhwoukbz"
"/usr/bin/opxhwoukbz"#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
cp "/usr/bin/uokfibmgfi" "/usr/bin/gwwumtitce"
"/usr/bin/gwwumtitce"#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
cp "/usr/bin/upnhpk" "/usr/bin/ifgmbifkou"
"/usr/bin/ifgmbifkou"#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
cp "/usr/bin/whntwvnpb" "/usr/bin/mspezfpbjy"
"/usr/bin/mspezfpbjy"[hoang@localhost ~]$

Tới đây chắc chắn đang bị malware/backdoor:

  • Các script chạy mỗi giờ (cron.hourly)

    • Mỗi script đang tạo ra một file nhị phân mới trong /usr/bin/
    • Tên file được tạo ngẫu nhiên (dcyrdqjjkk, vjytyzgwtl, ltwgzytyjv…)
    • Chạy file này ngay sau khi tạo (/usr/bin/…)
  • Khả năng đây là một “persistence malware”

    • Cứ mỗi lần xóa file, nó có thể tự tạo lại
    • Nó có thể đang kết nối tới một server bên ngoài và tải xuống mã độc

🔥 Bước 1: Dừng tiến trình đang chạy

Chạy lệnh:

1
ps aux | grep -E "dcyrdqjjkk|vjytyzgwtl|ltwgzytyjv|nhbbnevcc|ovdamfvd|phipuhyvtqi|uokfibmgfi|upnhpk|whntwvnpb"

Tìm các tiến trình liên quan, dừng ngay bằng:

1
sudo kill -9 <PID>

(Xóa <PID> và thay bằng số PID của từng tiến trình)


🗑 Bước 2: Xóa tất cả script cron

Xóa tất cả file .sh đáng ngờ trong /etc/cron.hourly/:

1
sudo rm -f /etc/cron.hourly/*.sh

Kiểm tra các folder /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.d/:

1
sudo ls -la /etc/cron.* /etc/cron.d/

Nếu thấy file nào lạ, hãy xóa ngay.


🔎 Bước 3: Xóa các file nhị phân độc hại

Chạy lệnh sau để kiểm tra danh sách file malware đã tạo:

1
ls -la /usr/bin/ | grep -E "dcyrdqjjkk|vjytyzgwtl|ltwgzytyjv|nhbbnevcc|ovdamfvd|phipuhyvtqi|uokfibmgfi|upnhpk|whntwvnpb"

Nếu có, hãy xóa toàn bộ:

1
sudo rm -f /usr/bin/dcyrdqjjkk /usr/bin/vjytyzgwtl /usr/bin/ltwgzytyjv /usr/bin/nhbbnevcc /usr/bin/ovdamfvd /usr/bin/phipuhyvtqi /usr/bin/uokfibmgfi /usr/bin/upnhpk /usr/bin/whntwvnpb

🛡 Bước 4: Kiểm tra lại crontab user root

Chạy lệnh:

1
sudo crontab -l

Nếu thấy lệnh tải file lạ hoặc thực thi /usr/bin/..., hãy xóa bằng:

1
sudo crontab -r

🔥 Bước 5: Kiểm tra file startup (persistence)

Một số malware sẽ tự chạy lại sau khi reboot. Kiểm tra:

1
2
3
4
ls -la /etc/systemd/system/
ls -la /etc/init.d/
ls -la ~/.bashrc
ls -la ~/.profile

Nếu thấy file nào lạ, hãy xóa.


🔍 Bước 6: Kiểm tra user nào đã tạo file này

Chạy lệnh:

1
ls -lt /usr/bin/

Nó sẽ hiển thị thời gian file được tạo. Kiểm tra log hệ thống:

1
sudo journalctl --since "1 hour ago"

Nếu thấy dòng nào tải xuống file lạ, hãy chặn ngay user đó.


3. Chặn IP lạ

Dùng firewall-cmd:

1
2
sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='218.92.0.0/16' drop"
sudo firewall-cmd --reload

Kết hợp iptables nếu cần:

1
sudo iptables -A INPUT -s 218.92.0.0/16 -j DROP

4. Cấu hình lại SSH

  • Tắt đăng nhập root:
1
2
sudo vi /etc/ssh/sshd_config
# PermitRootLogin no
  • Đổi port SSH (tùy chọn):
1
Port 3222
  • Chỉ cho phép login qua SSH key:
1
2
PasswordAuthentication no
PubkeyAuthentication yes
  • Khởi động lại SSH:
1
sudo systemctl restart sshd

5. Tạo SSH key mới

1
ssh-keygen -t rsa -b 4096

Copy ~/.ssh/id_rsa.pub vào file ~/.ssh/authorized_keys trên máy chủ.

6. Gỡ cron malware và tiến trình lạ

Xóa cron:

1
sudo rm /etc/cron.daily/brave-browser

Kiểm tra kỹ lại toàn bộ /etc/cron.*/var/spool/cron.

Kill tiến trình lạ:

1
sudo kill -9 <PID>

Xóa file thực thi nếu cần.

7. Đổi mật khẩu root và người dùng

1
2
sudo passwd root
sudo passwd user

8. Tăng cường bảo mật hệ thống

  • Cài đặt fail2ban:
1
2
sudo dnf install fail2ban
sudo systemctl enable --now fail2ban
  • Giới hạn địa chỉ IP có thể SSH vào server
  • Giám sát kết nối định kỳ qua ss, netstat, journalctl -u sshd

9. Phân tích hậu sự cố & ngăn chặn tái diễn

  • Đổi mật khẩu tất cả tài khoản root/admin

  • Vô hiệu hoá các dịch vụ không cần thiết (vncserver, telnet, ftp, …)

  • Đặt cảnh báo khi có IP đăng nhập nhiều lần thất bại (dùng fail2ban, logwatch)

  • Sao lưu định kỳ cấu hình và dữ liệu quan trọng

  • Giám sát lưu lượng và hành vi hệ thống bằng Prometheus, Grafana


Tổng kết

Bài viết ghi lại quy trình xử lý một trường hợp thực tế khi máy chủ bị tấn công qua SSH brute force. Việc giám sát kết nối mạng, cấu hình SSH đúng chuẩn và kiểm tra định kỳ hệ thống là điều cần thiết để tránh các nguy cơ tương tự.

This post is licensed under CC BY 4.0 by the author.