Trang chủ Security

Các máy chủ web bị thoả hiệp và Web Shell - Nhận biết và khắc phục sự cố

1. Dấu hiệu

Các máy chủ web bị thoả hiệp với các web shell độc hại đã được cài đặt.

2. Tổng quan

Cảnh báo này mô tả việc sử dụng thường xuyên các web shell như là một hướng khai thác. Các webshell có thể sử dụng để đạt được quyền truy cập trái phép và có thể dẫn tới mạng lưới rộng hơn bị thoả hiệp. Thông báo này nhằm chỉ ra mối đe dọa và cung cấp các chiến lược phòng ngừa, phát hiện và giảm thiểu tối đa thiệt hại.

Việc sử dụng web shell liên tục do Advanced Persistent Threat (APT) và các nhóm tội phạm đã dẫn đến các sự cố đáng kể trên mạng.

Sản phẩm này được phát triển bởi các đối tác US-CERT tại Vương quốc Anh, Úc, Canada và New Zealand, do dó sản phẩm phát triển dựa trên các hoạt động mục tiêu của chính các quốc gia này. Các biện pháp phát hiện và giảm nhẹ được nêu trong tài liệu này sẽ thể hiện sự đánh giá của tất cả các bên tham gia.

3. Mô tả (Description)

Mô tả Web Shell

Một Web Shell là một script có thể được tải lên một web server cho phép điều khiển và quản lý từ xa. Các web servers bị nhiễm độc hại có thể là mạng Internet hoặc mạng nội bộ, nơi mà các web shells được sử dụng để đi sâu hơn vào các host nội bộ.

Một Web Shell có thể được viết bằng bất kỳ ngôn ngữ nào mà web servers đích hỗ trợ. Các web shell phổ biến nhất được viết bằng những ngôn ngữ cũng phổ biến không kém, Ví dụ như ngôn ngữ PHP và ASP. Perl, Ruby, Python, và Unix shell script...

Sử dụng các công cụ thăm dò mạng, hacker có thể xác định các lỗ hổng có thể tấn công được và tiến hành cài đặt web shell. Ví dụ, những lỗ hổng này có thể tồn tại trong các hệ thống quản lý nội dung (CMS) hoặc phần mềm web server.

Sau khi đã tải lên thành công, hacker có thể sử dụng web shell để tận dụng các kỹ thuật khai thác khác nhằm nâng cao đặc quyền và ra lệnh từ xa. Các lệnh này liên quan trực tiếp đến các đặc quyền và chức năng sẵn có của web server, các lệnh đồng thời bao gồm khả năng thêm, xóa và thực thi các files cũng như các khả năng chạy các shell commands, các tệp thực thi, các scripts.

Làm thế nào và tại sao chúng lại được sử dụng bởi đối thủ?

Web shells thường được sử dụng trong sự thỏa hiệp, do sự kết hợp của truy cập từ xa và các chức năng. Thậm chí các web shell đơn giản vẫn có thể tạo ra một tác động đáng kể nhưng lại thường duy trì một sự hiện diện tối thiểu nhất.

Web shells được sử dụng cho các mục đích dưới đây:

- Thu thập và lọc các dữ liệu nhạy cảm, các thông tin quan trọng.

- Tải lên các phần mềm độc hại, VD: một lỗ hổng giúp gây nên sự lây lan ảnh hưởng và có khả năng scan các nạn nhân tiếp theo.

- Đóng vai trò như một điểm tựa để tạo ra các lệnh cho các hosts trong mạng mà không cần phải truy cập Internet trực tiếp.

- Có chức năng như một cơ sở hạ tầng điều khiển và kiểm soát, có khả năng  như một bot trong một mạng botnet hoặc trong sự hỗ trợ với các mạng bên ngoài. Điều này sẽ xảy ra nếu khi đối phương có ý định duy trì sự tồn tại lâu dài.

Mặc dù một web shell thường không được sử dụng cho các cuộc tấn công DoS (DoS), nhưng nó vẫn có thể hoạt động như một platform để tải lên các công cụ khác, bao gồm cả DoS.

4. Ví dụ

Các Web shells như China Chopper, WSO, C99 và B374K thường được các đối thủ lựa chọn; tuy nhiên đây chỉ là một số ít các web shell được sử dụng. (Bạn có thể tìm hiểu thêm thông tin liên quan đến IOCs và các quy tắc SNORT).

- China Chopper: Một web shell nhỏ chứa đựng kha khá các tính năng. Nó sở hữu một vài tính năng lệnh và kiểm soát bao gồm cả khả năng sử dụng mật khẩu brute force.

- WSO: Viết tắt của "web shell by orb" và có khả năng giả mạo như một trang lỗi có chứa một hình thức đăng nhập ẩn.

- C99: Một phiên bản của WSO shell với những chức năng bổ sung. Có thể hiển thị các biện pháp bảo mật của server và có chức năng tự xóa.

- B374K: Web shell dựa trên PHP với các tính năng phổ biến như xem các quy trình và thực hiện lệnh.

5. Chiến thuật phân phối (Delivery Tactics)

Web shells có thể được phân phối qua một số ứng dụng web hoặc các điểm yếu cấu hình bao gồm:

- Cross-Site Scripting

- SQL Injection

- Các lỗ hổng trong các ứng dụng/ dịch vụ (ví dụ: WordPress hoặc các ứng dụng CMS khác);

- Lỗ hổng xử lý tệp (VD: lọc tải lên hoặc những quyền được chỉ định)

- Lỗi hổng về Remote File Include (RFI) và Local File Include (LFI)

- Giao diện admin bị lộ (có thể là các khu vực có thể tìm thấy các lỗ hổng được đề cập ở trên).

Các chiến thuật trên luôn có thể xảy ra và có khả năng kết hợp với nhau một cách thường xuyên. Ví dụ: giao diện admin yêu cầu tùy chọn tải tệp lên hoặc phương pháp khai thác khác được đề cập ở trên nhằm mục đích cho việc phân phối thành công.

6. Ảnh hưởng (Impact)

Một Shell Script được tải lên thành công sẽ cho phép kẻ tấn công từ xa có khả năng vượt qua các giới hạn bảo mật và truy cập hệ thống một cách trái phép.

7. Giải pháp

Phòng ngừa và Giảm nhẹ

Việc cài đặt một web Shell thường được thực hiện thông qua các lỗ hổng của ứng dụng web hoặc các điểm yếu cấu hình. Do đó, việc xác định được các lỗ hổng và đóng cửa các lỗ hổng này đóng vai trò vô cùng quan trọng nhằm tránh những thỏa hiệp (compromise) có thể xảy ra. Hãy tham khảo những gợi ý giúp bảo mật dưới đây:

- Sử dụng các bản cập nhật thường xuyên cho các ứng dụng và các host OS nhằm chống lại các lỗ hổng phổ biến.

- Thực hiện chính sách ít quyền ưu tiên nhất trên web server, nhằm 2 mục đích sau:

Giảm khả năng leo thang đặc quyền của đối phương hoặc xoay vòng sang các máy chủ khác.

Kiểm soát việc tạo và thực thi các file trong các thư mục cụ thể.

- Nếu chưa có, hãy xem xét triển khai khu vực demilitarized zone (DMZ) giữa các hệ thống webfacing và mạng công ty. Hạn chế sự tương tác và hạn chế lưu lượng truy cập giữa chúng sẽ cung cấp một phương pháp để xác định được các hoạt động độc hại có thể xảy ra.

- Đảm bảo sự bảo mật của cấu hình các web severs. Tất cả các dịch vụ và các ports không cần thiết cần được tắt đi hoặc chặn lại. Còn đối với các dịch vụ và các port cần thiết cũng nên hạn chế bất kì lúc nào có thể. Điều này có thể bao gồm whitelist hoặc truy cập bên ngoài bị cấm tới các bảng điều hành và không sử dụng các thông tin đăng nhập mặc định.

- Sử dụng proxy đảo lại hoặc dịch vụ thay thế, chẳng hạn như mod_security, nhằm hạn chế các đường dẫn URL có thể truy cập tới những địa chỉ chính thống đã được biết trước đó.

- Thiết lập và sao lưu ngoại tuyến, một phiên bản tốt của server có liên quan và chính sách quản lý sự thay đổi thường xuyên, để giám sát các thay đổi đối với nội dung với một hệ thống toàn vẹn tệp tin.

- Sử dụng sự xác nhận hợp lệ input của user để hạn chế các lỗ hổng trong gói tin cục bộ và các gói tin từ xa.

- Thường xuyên thực hiện quét lỗ hổng của hệ thống và ứng dụng để xác định các khu vực có nguy cơ bị xâm hại. Mặc dù phương pháp này không giúp chống lại được các cuộc tấn công zero day, nhưng nó sẽ giúp làm nổi bật các khu vực có nguy cơ và cần được quan tâm.

- Triển khai firewall của các ứng dụng web và tiến hành kiểm tra thường xuyên các chữ ký virus, ứng dụng fuzzing, code review và phân tích mạng máy chủ.

Phát hiện

Do sự đơn giản và dễ dàng sửa đổi của web shell mà chúng ta gặp khá nhiều khó khăn trong việc phát hiện ra web shell. VD: các sản phẩm chống vius đôi khi tạo không phát hiện ra được web shell.

Sau đây là những dấu hiệu cho biết hệ thống của bạn đã bị nhiễm web shell. Lưu ý: những dấu hiệu sau chỉ phổ biến đối với các file chính thống. Bất kỳ tệp tin nào bị nghi ngờ độc hại cũng đều cần được xem xét trong các chỉ số khác và cần được phân loại để đưa ra quyết định cuối cùng rằng, có cần phải tiến hành kiểm tra hoặc xác nhận thêm nữa không.

- Thời điểm bất thường trong việc sử dụng website của người dùng (do các hoạt động upload và download).

- Các tệp có timestamp (dấu thời gian) khác thường.

- Các tệp đáng ngờ ở các vị trí có thể truy cập Internet (web root).

- Các tệp có sự liên quan với các từ khoá đáng ngờ, như cmd.exe hoặc eval.

- Những kết nối không mong muốn trong log. 

Ví dụ:

Loại tệp tạo lưu lượng truy cập mạng không mong muốn hoặc bất thường (VD: tệp JPG yêu cầu với các tham số POST);

Các login đáng ngờ, bắt nguồn từ các mạng con nội bộ tới các server DMZ và ngược lại.

- Bất kỳ bằng chứng đáng ngờ nào về shell command, VD: traversal thư mục bằng tiến trình của web server.

Để có thể điều tra được nhiều loại shell, hãy đừng quên cân nhắc đến search engine. Thông thường, web shell sẽ được sử dụng để lây lan malware lên server và các công cụ tìm kiếm có thể phát hiện ra chúng. Tuy nhiên, khá nhiều web shells lại có khả năng kiểm tra User-Agent, và từ đó, chúng sẽ ưu tiên hiển thị khác nhau với mỗi search engine spider (một chương trình thu thập dữ liệu thông qua các liên kết trên Internet, lấy nội dung từ các trang web và thêm các nội dung ấy vào chỉ mục của search engine) hơn là hiển thị khác nhau cho một user thường xuyên. Để tìm shell, bạn cần thay đổi User-Agent của mình thành một trong số các công cụ tìm kiếm. Một số trình duyệt có plugin cho phép bạn thao tác dễ dàng trong việc chuyển đổi một User-Agent. Khi shell bị phát hiện, rất đơn giản, bạn chỉ cần xóa các tập tin từ server.

Các đặc tính của client cũng góp phần cho biết về các hoạt động của web shell. VD: một client độc hại thường có xu hướng chỉ truy cập vào chỉ một URL, nơi mà web shell được tạo, trong khi đó, một user tiêu chuẩn luôn tải trang web từ trang/ liên kết liên quan hoặc tải các nội dung/ tài nguyên bổ sung. 

Vì vậy, việc thực hiện phân tích tần suất trên các log truy cập web có thể chỉ ra vị trí của một web shell. Hầu hết các truy cập URL hợp pháp sẽ chứa các user-agents khác nhau, trong khi một web shell thường chỉ được truy cập bởi người cha đẻ của chúng, là nguyên dẫn đến các biến thể của user-agent giới hạn.

Dịch từ: Compromised Web Servers and Web Shells - Threat Awareness and Guidance

Có thể bạn muốn xem thêm: Quét Virus, Trojan và Malware trên VPS Linux với ClamAV