Phần lớn (hơn 70%) các website dễ dàng bị tấn công và ngay cả các quản trị viên cũng không biết trang web mình đã bị tổn thương hay nắm các phương pháp kiểm tra, dò quét thích hợp nhằm tìm ra các điểm yếu bảo mật, những lỗ hổng để có thể vá lại. Nhiều lỗi đã tồn tại lâu dài đến cả chục năm vẫn chưa được vá. Điển hình các vụ như các trang web của Bộ Giáo Dục bị hacker thay bằng hình ảnh trái phép, hoặc trang web unikey bị tấn công chèn mã độc hại vào bộ gõ, hoặc hacker tấn công dữ liệu mạng Đại học Y Dược Cần Thơ, Hacker tấn công vào website sân bay Tân Sơn Nhất, hoặc ngay cả Website Bkav bị hack và tấn công DDoS năm 2012... Ngày càng nhiều trang web bị hacker tấn công thay đổi nội dung (deface), chèn mã độc hay upload shell … làm ảnh hưởng đến uy tín , hình ảnh của doanh nghiệp.
Avast File Server Security phát hiện các mã độc ngăn cản upload shell lên WebServer.
(Nguồn: Virustotal https://goo.gl/tkMYWW và https://goo.gl/BlcAc8)
Những rủi ro bảo mật web nào phổ biến? Làm thế nào để biết website của mình đang bị tấn công? Các biện pháp phòng chống hack website? và làm gì khi phát hiện website bị tấn công, bị chèn mã độc?
NHỮNG RỦI RO BẢO MẬT WEBSITE VÀ CSDL
1. Injection: Sai sót trong nhập liệu, chẳng hạn như SQL injection, OS injection hay LDAP injection… Điều này xảy ra khi các thông tin sai lệch được đưa vào cùng với các biến dữ liệu đầu vào như 1 phần của lệnh hay câu truy vấn. Kẻ tấn công có thể lợi dụng sơ hở này để thực hiện các lệnh không mong muốn hay truy cập các dữ liệu bất hợp pháp.
2. Broken Authentication and Session Management: Xác thực hay quản lý phiên thiếu chính xác. Sơ hở này cho phép kẻ tấn công có thể lợi dụng để đạt được mật khẩu, khóa hay phiên làm việc, từ đó mạo danh phiên làm việc và danh tính của người dùng thông thường.
3. Cross-Site Scripting (XSS): Sai sót trong kiểm duyệt nội dung đầu vào cũng dẫn đến rủi ro này. Các dữ liệu bất hợp pháp được gửi đến trình duyệt web mà ko cần sự xác nhận thông thường. Nó cho phép kẻ tấn công thực thi các kịch bản trên trình duyệt web của nạn nhân làm thay đổi nội dung trang web, chuyển hướng nạn nhân hay đánh cắp phiên làm việc được lưu trên trình duyệt.
4. Insecure Direct Object References: Điều này xảy ra thì nhà phát triển cho thấy có các tham chiếu trực tiếp đến một đối tượng nội bộ hay của người dùng khác, ví dụ như một tập tin, thư mục, hay cơ sở dữ liệu quan trọng, mà ko có sự kiểm tra hay bảo vệ an toàn cần thiết. Điều này cho phép kẻ tấn công có thể truy cập các tài liệu này một cách trái phép.
6. Security Misconfiguration: Một hệ thống bảo mât tốt là hệ thống triển khai cho khung ứng dụng, máy chủ ứng dụng, máy chủ cơ sở dữ liệu, nền tảng… các phương phảp bảo mật cần thiết, thống nhất và liên kết với nhau. Điều này nhằm tránh những nguy cơ bị khai thác vào ứng dụng, ví dụ để lộ ra những thông tin quan trọng khi trao đổi các gói tin.
6. Sensitive Data Exposure: Các dữ liệu nhạy cảm không được lưu trữ và bảo vệ cẩn thận, dẫn đến khi bị kẻ tấn công khai thác gây ra những ảnh hưởng to lớn cho hệ thống máy chủ, doanh nghiệp, khách hàng. Ví dụ như việc lưu trữ thẻ tín dụng mà ko thông qua các khâu mã hóa, hay các gói tin TLS bị bẻ khóa và nghe lén thông qua lỗ hổng CRIME.
7. Missing Function Level Access Control: Thiếu các điều khoản trong việc phân quyền quản trị các mức, dẫn đến việc kẻ tấn công có thể lợi dụng và truy ra các điểm yếu trên hệ thống, hay lợi dụng để leo thang đặc quyền.
8. Cross-Site Request Forgery (CSRF): Lợi dụng sơ hở của nạn nhân, kẻ tấn công có thể lừa nạn nhân thực hiện các hành động nguy hiểm mà nạn nhân không hề hay biết, ví dụ như chuyển tiền từ tài khoản nạn nhân sáng tài khoản kẻ tấn công, thông qua các lỗ hổng XSS.
9. Using Known Vulnerable Components: Sử dụng các thư viện, plugin, module… có chứa các lỗ hổng đã được công khai, dễ dàng dẫn đến việc bị kẻ tấn công lợi dụng để tấn công vào hệ thống một cách nhanh chóng.
10. Unvalidated Redirects and Forwards: Chuyển hướng không an toàn người dùng đến một đường dẫn bên ngoài có thể bị kẻ tấn công lợi dụng để chuyển hướng nạn nhân đến một trang đích được chuẩn bị sẵn của kẻ tấn công.
DẤU HIỆU NHẬN BIẾT WEBSITE BỊ HACK
1. Giao diện Website bị thay đổi: Trang chủ hoặc một đường dẫn tới một trang con của website bị tin tặc thay đổi giao diện. Xuất hiện nhiều dòng chữ được hacker chèn vào website, kiểu như: “hacked by …”, “God verify…”, “security is low”… Điều đó chứng cho website của bạn đã bị tin tặc hack thành công và chiếm hoàn toàn quyền điều khiển. Một mẹo nhỏ để phát hiện các đường dẫn mà tin tặc gửi lên là bạn có thể tìm kiếm trên Google theo cú pháp như sau: “site.com hacked” (với site.com là tên miền website của bạn).
Trang Web https://www.logicarts.com.br bị hacker viếng thăm và chèn link hackhttp://logicarts.com.br/emkt
Một Website khác bị hacker xâm nhập và để lại công cụ crack hệ thống và up file.
Giao diện một website bị hack hoàn toàn bởi hacker
2. Website bị chèn link tới các website khác: Website của bạn bị chèn các đường dẫn tới các website khác mà bạn không biết, chèn các đoạn mã HTML để tăng truy cập cho các website khác, tồn tại nhiều đường dẫn tới các website chứa nội dung đồi trụy… Nên thường xuyên và định kỳ kiểm tra các backlink (đường dẫn tới website khác) trên website của mình hoặc thực hiện viewsource của website (Ấn chuột phải trên trang web / chọn viewpage source / Rà soát nội dung nguồn HTML của website để phát hiện đường dẫn lạ).
3. Website bị chèn các đường dẫn giả mạo các website danh tiếng khác: Website bị chèn các đường dẫn giả mạo các website danh tiếng khác (giả mạo website của ngân hàng, giả mạo website giao dịch trực tuyến, giả mạo website Facebook, Gmail…). Các đường dẫn này được sử dụng để lửa đảo và chiếm tài khoản của người dùng.
4. Trang web của bạn bị tự động đăng các tin tức Spam, các tin tức trái phép lên website.
5. Các hệ thống hay các module giám sát thông báo rằng nhiều tệp tin trên website đã bị thay đổi nội dung.
6. Phát hiện website của mình thường xuyên gửi các yêu cầu HTTP đến các website khác…
7. Phát hiện các tệp tin, đoạn mã độc hại trên website, các tệp tin có chữ nhiều đoạn mã đã được mã hóa.
CÁC BIỆN PHÁP PHÒNG CHỐNG HACK WEBSITE
1. Cập nhật phiên bản ứng dụng thường xuyên để chống hack website: Đây là công việc quan trọng giúp website trở nên an toàn. Biện pháp này được áp dụng trên cả hệ điều hành máy chủ hoặc bất cứ ứng dụng nào đang chạy trên website, ví dụ như một hệ quản trị nội dung (CMS) hay một diễn đàn. Khi một lỗ hổng bảo mật được tìm thấy trong ứng dụng, tin tặc luôn biết cách để lợi dụng triệt để chúng. Đây là một mối lo mà bất kỳ quản trị viên nào cũng phải đối mặt.
Nếu bạn sử dụng hosting mà website của bạn không được cập nhật thường xuyên, bạn phải nhanh chóng yêu cầu nhà cung cấp dịch vụ để thực hiện.
2. Chống tấn công SQL Injection: Tấn công SQL Injection xảy ra khi tin tặc khai thác điểm yếu trong các điểm đầu vào trên website, một tham số trong URL để tấn công và chiếm quyền truy cập, khai thác cơ sở dữ liệu của website. Tin tặc có thể chèn các đoạn Shellcode độc hại nhằm thay đổi, lấy thông tin hoặc xóa dữ liệu trên website. Biện pháp đơn giản để ngăn chặn kiểu tấn công này là kiểm duyệt chặt chẽ các tham số đầu vào.
3. Chống tấn công XSS: Tấn công Cross site scripting xảy ra khi tin tặc cố gắng đưa các mã độc JavaScript, VBscript, Flash… hoặc những đoạn mã độc khác trang web nhằm thực thi mã độc với người dùng truy cập website.
Để chống hack website cần chắc chắn rằng ứng dụng web đã được kiểm duyệt chặt chẽ các tham số đầu vào cũng như ứng dụng web kiểm soát được các dữ liệu hiển thị trên trình duyệt web.
4. Hạn chế tối đa các thông báo lỗi: Thận trọng với các thông tin trả về của website, đặc biệt là các thông báo lỗi, nó có thể chứa các thông tin nhạy cảm về đường dẫn, dữ liệu RAM, tài khoản…. Ví dụ nếu có một form đăng nhập trên website, người quản trị nên nghĩ về việc sử dụng ngôn ngữ giao tiếp với người dùng trong trường hợp đăng nhập thất bại thay vì hiển thị các thông báo lỗi mặc định.
5. Kiểm duyệt phía máy chủ, kiểm duyệt form nhập: Kiểm duyệt dữ liệu đầu vào luôn phải được hoàn thành ngay trên trình duyệt và cả phía máy chủ. Trình duyệt web có thể bắt những lỗi đơn giản như để trống trường bắt buộc hay nhập kí tự chữ cái vào trường số điện thoại. Tuy nhiên, tin tặc hoàn toàn có thể qua mặt được các thao tác kiểm duyệt này, cần đảm bảo chắc chắn rằng webiste đã kiểm duyệt được các dữ liệu đầu vào được gửi đến từ người dùng website.
6. Sử dụng Mật khẩu an toàn: Mọi người đều biết nên sử dụng mật khẩu phức tạp, nhưng không phải ai cũng làm điều đó. Quản trị website nên sử dụng mật khẩu mạnh cho máy chủ và khu vực quản trị website, kể cả những tài khoản người dùng cũng nên dùng tài khoản mạnh mẽ. Nếu một máy chủ đặt mật khẩu yếu, máy chủ đó có thể dễ dàng bị hack chỉ “5 phút” .
7. Bảo vệ các form File Upload: Các form này cho phép người dùng tải lên các tệp tin, đây có thể là một rủi ro an ninh rất lớn, nếu các form này không được kiểm duyệt, kiểm soát chặt chẽ, tin tặc có thể vượt qua để tài lên các tệp tin độc hại. Đây sẽ là các điểm yếu chết người trên website.
Nếu website có một form upload thì form này phải được kiểm duyệt chặt chẽ và kết hợp nhiều yếu tố trước khi ghi file vào ổ cứng của máy chủ. Bao gồm: tên file, phần mở rộng, MIME TYPE, kích thước… Ngoài ra bạn có thể đảm bảo an toàn bằng cách không cho phép thực thi tệp tin trong các thư mục chứa tài liệu upload. Một vài lựa chọn có thể dùng là đổi tên file đã được tải lên nhằm đảm bảo đúng phần mở rộng, hoặc thay đổi quyền của tệp tin. Để chống hack website, giải pháp được khuyến cáo khác là ngăn sự sự truy cập trực tiếp đến các file được tải lên. Theo cách này, bất cứ file nào tải lên website đều được lưu trữ trong một thư mục ngoài webroot hoặc trong cơ sở dữ liệu dưới dạng blob. Nếu tệp tin của bạn không thể truy cập trực tiếp, bạn cần tạo ra một script lấy file từ thư mục riêng (hoặc một HTTP xử lý trong .NET) và chuyển chúng đến trình duyệt.
Ngoài ra, nếu có thể hãy đặt cơ sở dữ liệu ở máy chủ khác máy chủ web. Máy chủ cơ sở dữ liệu sẽ không thể truy cập trực tiếp từ bên ngoài, chỉ máy chủ web mới có thể truy cập được nó, giảm thiểu rủi ro rò rỉ dữ liệu.
Cuối cùng, đừng quên cách li truy cập vật lí đến máy chủ.
8. Triển khai HTTPs: SSL là một giao thức cung cấp chuẩn an ninh thông qua Internet để mã hóa các dữ liệu được gửi trên đường truyền và chống hack website.
9. Kiểm thử an toàn cho website, máy chủ: Nếu website của bạn đã đảm bảo được 9 yếu tố trên, website của bạn chưa hẳn đã an toàn. Để chống bị hack website bạn nên thực hiện việc kiểm thử độ an toàn website, tìm kiếm các lỗ hổng khác của website. Cách hiệu quả nhất là thông qua một số dịch vụ, các chuyên gia về An toàn thông tin có thể hỗ trợ bạn tìm kiếm các lỗ hổng, hỗ trợ khắc phục và ứng cứu khi có sự cố xảy ra. Tại Việt Nam hiện nay có khá nhiều đơn vị cung cấp các dịch vụ về Kiểm tra, đánh giá bảo mật cho website, máy chủ với giá tiền hợp lý, các dịch vụ này sẽ giúp bạn đảm bảo an toàn tuyệt đối cho website của mình.
LÀM GÌ KHI PHÁT HIỆN WEBSITE BỊ TẤN CÔNG , BỊ CHÈN MÃ ĐỘC
1. Khôi phục lại hoạt động của website bị tấn công
Trước tiên bạn cần sao lưu lại toàn bộ trạng thái của thư mục web để phục vụ cho việc kiểm tra sau này. Thay đổi các tài khoản của hệ thống, các tài khoản có thể cho phép tin tặc tiếp tục truy cập vào hệ thống của bạn: Tài khoản SSH, tài khoản Remote desktop, tài khoản quản trị của website, tài khoản kết nối CSDL, phpmyadmin… Trong trường hợp bạn có bản sao lưu của mã nguồn hoàn chỉnh, có thể tải bản mới lên bản mã nguồn mới cho website của bạn, trong trường hợp không có bạn cần thực hiện xóa bỏ các dấu hiệu mà hacker đã để lại, tìm và xóa các trang web lừa đảo mà hacker đã để lại.
2. Tìm và loại bỏ các mã độc, backup, webshell đang tồn tại trên hệ thống
Hacker thường để lại mã độc trên website của bạn theo 3 hình thức sau
- Chèn code mã độc vào các tệp tin trên website của bạn.
- Tải các tệp tin webshell, backdoor lên website để có thể kiểm soát website của bạn thông qua backdoor này.
- Cài đặt chương trình độc hại chạy ngầm, mở cổng để hacker truy cập vào trong lần sau.
Để phát hiện các webshell, backdoor bạn cần tìm và quét toàn bộ thư mục web của mình để phát hiện. Bạn có thể sử dụng một số công cụ tìm kiếm: FileSeek, Everything, Webshell Detector… bạn có thể theo dõi thêm bài viết: Kinh nghiệm tìm kiếm WebShell trong mã nguồn để được hướng dẫn chi tiết về cách thực hiện công việc này.
Để phát hiện các mã độc hại được nhúng và mã nguồn website, bận cần tìm và kiểm tra tất cả các tệp tin có ngày thay đổi (date modified) xung quanh thời điểm tấn công. Rất có thể hacker đã chèn các mã độc vào các tệp tin “sạch” của bạn.
Ngoài ra bạn có thể đọc trong Log access để biết các backdoor mà hacker đã truy cập vào trước thời gian mà website của bạn bị tấn công.
Với các tiến trình mã độc trên website, bạn cần thực hiện một cuộc điều tra về các tiến trình đang hoạt động, các tiến trình cho phép khởi động cùng hệ điều hành, các tiến trình được cài đặt để chạy theo lịch trong Crontab. Từ đó phát hiện ra các tiến trình độc hại trên máy chủ của bạn.
Trước tiên bạn cần biết ai là người đã tấn công bạn. hacker đã tấn công bạn như thế nào, hacker đã làm gì trên website của bạn, hacker còn cài đặt, ẩn giấu mã độc gì trên website của bạn?
3. Tìm nguyên nhân mà website của bạn bị tấn công, ai là người đã tấn công website của bạn?
Để biết được ai là người đã tấn công và nguy nhân của cuộc tấn công, nếu website không có các hệ thống giám sát an ninh mạng để thu thập dữ liệu log trên máy chủ thì cách duy nhất là cần tận dụng các dữ liệu log trên website.
Bạn có thể tìm kiếm các truy cập vào tệp tin mã độc để xác định đối tượng tấn công, đọc log access trong thời gian tệp tin mã độc được tạo hoặc các tệp tin khác bị thay đổi hoặc tạo mới để tìm được cách mà hacker đã thực hiện để tấn công bạn, lọc toàn bộ các yêu cầu được gửi trong log từ địa chỉ IP của đối tượng tấn công.
Bạn cũng có thể đọc thêm các dữ liệu log audit, log secure, history… để biết được hacker đã làm gì với website của bạn.
4. Vá các lỗ hổng mà hacker đã khai thác
Sau khi đã biết được cách mà hacker đã khai thác, tấn công website bạn cần vá lại các lỗ hổng mà hacker đã khai thác, cập nhật các bản vá mới cho phần mềm, cấu hình phân quyền cho website.
(Nguồn: Tổng hợp)