Series Bảo Mật Nhập Môn – Ẩn giấu thông tin hệ thống – Tránh con mắt người đời và kẻ xấu

Trong bài viết hôm nay, mình sẽ giới thiệu một phương pháp bảo mật vô cùng đơn giản, hiệu quả nhưng lại được ít người biết và áp dụng. Đó là phương pháp: Giấu thông tin hệ thống.

Thông tin hệ thống là gì?

Có thể tạm hiểu thông tin hệ thống là những thông tin về cấu tạo và hoạt động của hệ thống đó.

Lấy lottecinema ra làm ví dụ. Thông tin về hoạt động là file log, error page hiển thị khi bị lỗi. Thông tin về cấu tạo của trang này như sau (Lí do làm sao mình biết được thì các bạn theo dõi phần sau):

  • Trang chính sử dụng KenticoCMS. Phiên bản sử dụng là ASP.NET WebForm 2.0
  • Theo dự đoán thì do dùng ASP.NET nên database sẽ là MS SQL Server
  • Trang web có sử dụng jQuery và jQueryUI
  • Trang web được deploy trên Server ISS7

Chắc bạn đang tự hỏi: Ủa, nếu hệ thống của mình không làm gì mờ ám thì sao phải giấu? Ừ nhỉ! Hãy tưởng tượng nhà bạn là tiệm vàng có rất nhiều tiền và vàng bạc. Liệu bạn có treo biển “Góc dưới hàng rào có lỗ hổng, két sắt nhà tao để ở lầu 3, két hiệu Việt Tiến, mật khẩu 4 chữ số” không?

Dĩ nhiên, bạn không bao giờ để thông tin nhà cửa hớ hênh cho ăn trộm biết. Điều này giống như mời trộm vào nhà vậy. Tuy nhiên, đa phần chúng ta lại để “hớ hênh” thông tin hệ thống cho hacker thấy. Thế có khác gì mời hacker tấn công không cơ chứ!!

thief2

Chúng ta để thông tin hệ thống “hớ hênh” như thế nào?

Chúng ta thường để lộ thông tin hệ thống một cách rất “hớ hênh”, không thua gì cách em Linh Miu khoe thân trong mấy bộ đồ thiếu vải (Điển hình là vụ lộ vếu nổi đình nổi đám gần đây). Dưới đây là một số kiểu lộ thông tin thường thấy:

ss1
Hiển thị chình ình trên trang sợ người khác không nhìn thấy

 

screen-shot-2016-10-16-at-2-39-01-pm
Hiển thị rõ phiên bản .NET, Exception khi bị lỗi. Đây là mồi ngon cho tấn công SQL Injection

 

ss5
Để trong header trả về từ server

 

ss3
Để “hớ hênh” trong code

Tất cả những thông tin này đều có thể dễ dàng truy ra bằng buildwith. Trang này hoạt động trên nguyên lý đọc các header trả về từ server, xem HTML include các thư viện nào.

Những hậu quả của việc “lộ hàng”

Những thông tin “vô hại” này cũng vô tình “giúp đỡ” hacker tấn công hệ thống của bạn dễ dàng hơn bằng những cách sau:

  • Biết được phiên bản thư viện/framework sử dụng, phiên bản server, phiên bản database,… hacker có thể tìm ra lỗ hổng bảo mật (CVE) của hệ thống.
  • Việc tra cứu rất dễ dàng, chỉ cần vào nvd.nist.gov. Dựa theo phiên bản framework/server/database, hacker có thể thấy được những lỗ hổng bảo mật của các phiên bản này. Từ các lỗ hổng này, hacker có thể tìm cách tấn công hệ thống.
  • Ví dụ như trong bài viết này, bạn Juno_okyo đã hack vietdesigner và kenhsinhvien vì 2 trang này đã lộ thông tin, cho hacker biết được plugin chúng đang sử dụng. Juno_okyo tiếp tục đọc code (open source) để tìm ra lỗ hổng của plug-in và tấn công 2 trang này.
  • Ngoài ra, khi biết được framework đang sử dụng, hacker có thể mò ra đường dẫn tới trang admin (Với wordpress là /wp-admin, với joomla là /administrator, với phpmyadmin là /phpmyadmin). Tiếp theo, hacker có thể thử nhập username/password admin mặc định để đăng nhập vào hệ thống. Đáng sợ chưa??
  • Với mobile app hoặc phần mềm, hacker có thể decompile để chôm API hoặc security key. Chẳng giấu gì các bạn, mình cũng từng decompile file API của Simsimi để lấy Key và API miễn phí gắn vào chat bot facebook ấy…

hacker

“Giấu hàng” như thế nào cho đúng?

Cảnh giới cao nhất của việc giấu hàng là hacker không thể biết được hệ thống của bạn được viết ngôn ngữ/framework gì, dùng database gì, deploy ở đâu. Điều này làm công việc của hacker trở nên khó khăn hơn rất nhiều.

Thật ra, việc giấu thông tin hệ thống cũng không quá khó khăn hay mất thời gian. Chỉ cần bạn để ý và cẩn trọng là được. Một số phương pháp “giấu thông tin” hay dùng:

  • Config server hoặc viết code để loại bỏ những HTTP header dư thừa.
  • Khi deploy, ta obfustace hoặc uglify code để code trở nên khó đọc. Để tránh việc hacker biết các thư viện JS sử dụng thì ta có thể bundle toàn bộ thư viện và code thành 1 file luôn.
  • Khi hệ thống bị thống, hiển thị custom Error Page. Lỗi trong trang này nên giải thích rõ ràng cho người dùng hiểu. Nhưng tuyệt đối không hiển thị trực tiếp error/exception để tránh hacker tấn công.
  • Thường xuyên cập nhật/nâng cấp framework lên phiên bản mới nhất để vá các lỗ hỗng, tránh việc hacker lợi dụng những lỗ hổng đã phát hiện ở phiên bản cũ.

Bạn nào có kinh nghiệm giấu thông tin hệ thống, hoặc từng tấn công hệ thống dựa theo thông tin của nó, hãy comment chia sẻ vào bài viết nhé :D.

2 thoughts on “Series Bảo Mật Nhập Môn – Ẩn giấu thông tin hệ thống – Tránh con mắt người đời và kẻ xấu”

Leave a comment