Giao thức HTTP “BẢO MẬT” đến mức nào

Thảo luận trong 'Hacking - Bảo mật' bắt đầu bởi Nguyễn Thành Đạt It, 4/10/16.

  1. Nguyễn Thành Đạt It

    Nguyễn Thành Đạt It Guest Registered

    Tham gia ngày:
    28/9/16
    Bài viết:
    435
    Đã được thích:
    4
    Điểm thành tích:
    18
    Giới tính:
    Nam
    Nghề nghiệp:
    N/A
    Nơi ở:
    N/A
    Web:
    N/A

    hacker-chuyennghiep.jpg
    Nguồn: techtalk.vn
    Sau một khoảng thời gian vật vã thì mình cũng hoàn thành bài đầu tiên trong series Bảo Mật Nhập Môn. Bài viết này sẽ bàn về sự “bảo mật” của giao thức HTTP.

    Website của Lazada và Ngân hàng ACB sẽ bị lôi ra làm ví dụ. Vì bài viết khá dài nên các bạn cứ từ từ đọc nhé.

    Ôn lại về HTTP

    HTTP là một giao thức dùng để truyền nhận dữ liệu (Xem thêm ở đây). Hiện tại, phần lớn dữ liệu trên Internet đều được truyền thông qua giao thức HTTP. Các ứng dụng Web hoặc Mobile cũng gọi Restful API thông qua giao thức HTTP.

    Tuy nhiên, nhược điểm của HTTP là dữ liệu được truyền dưới dạng plain text, không hề được mã hoá hay bảo mật. Điều này dẫn đến việc hacker có thể dễ dàng nghe lén, lấy trộm và chỉnh sửa dữ liệu. Người ta gọi kiểu tấn công này là Man-in-the-middle attack, viết tắt là MITM.

    Sơ lược về Man-in-the-middle attack

    Hãy tưởng tượng bạn đang tán tỉnh một em gái dễ thương mặt cute ngực to dáng đẹp tên L. Để tăng tính lãng mạn, bạn không nhắn tin mà trực tiếp viết thư gửi cho nàng.

    Lúc này, bạn là client, bé L. là server, việc gửi thư là giao thức HTTP. Đương nhiên, hoa đẹp thì lắm ruồi bu. Có một thằng hacker xấu xa tìm cách phá rối bạn, ta tạm gọi thằng này là Chiến.

    gril-ten-linh.jpg

    Search L. phát nó ra con bé Linh lộ clip 18+ luôn….

    Thằng Chiến có thể phá rối bạn bằng những cách sau:

    1. Sniff packet để đọc lén dữ liệu
    Bạn hí hửng bỏ thư vào hòm thư, chờ bức thư bay đến chỗ Linh. Thư đang trên đường tới, thằng Chiến bắt được, mở bức thư ra xem, biết được hết những lời tâm tình ủ ê mà bạn dốc cạn tấm lòng ra viết.

    Trong thực tế, khi bạn gửi username, password qua HTTP, hacker có thể dễ dàng lấy username, password này bằng cách đọc lén các packet trong mạng. (Bạn gửi clip 18+ thì nó cũng chôm được nốt).

    2. Sửa đổi packet

    Không chỉ đọc trộm, thằng Chiến kia còn có thể sửa thư của bạn. Bạn khen Linh đẹp như Maria Ozawa thì nó sửa thành Happy Polla. Linh reply lại, hẹn bạn đi nhà nghỉ lúc 5h thì nó sửa thành 5h15.

    Bạn vẫn không hay biết thư đã bị tráo gì cả. Đến lúc đọc xong, 5h15 ra nhà nghỉ thì đã thấy thằng Chiến và Linh tay trong tay dắt nhau ra. (Thằng C yếu sinh lý nên 15p là xong, các bạn nên thông cảm cho nó).

    Trong thực tế, hacker có thể thay đổi nội dung bạn nhận được từ server, làm thay đổi thông tin hiển thị trên máy bạn. Cả 2 trường hợp này đều khá nguy hiểm vì bạn không hề biết mình bị tấn công.

    hacker-chuyennghiep1.png
    Kiến thức này thuộc dạng vô cùng cơ bản, nhiều người đã nói rồi nên mình sẽ không giải thích kĩ về khía cạnh kĩ thuật. Các bạn có thể tự tìm hiểu thêm về MITM Attack ở đây:

    Cách phòng chống

    Các giải pháp chống MAIM trong mạng LAN thường do SysAdmin hoặc các bạn chuyên bảo mật lo, thông qua việc cài đặt thiết lập hệ thống. Là developer, cách phòng chống cơ bản nhất chúng ta có thể làm là sử dụng giao thức HTTPS cho ứng dụng, bằng cách thêm SSL Certificate.

    Dữ liệu giao tiếp qua HTTPS đã được mã hoá nên người ngoài không thể đọc trộm hay chỉnh sửa được. Cách này tương tự như việc bạn và Linh viết mail cho nhau bằng teencode, thằng Chiến có đọc trộm mail cũng không hiểu hay sửa thư được.

    Tuy độ bảo mật của HTTPS vẫn chưa phải là tuyệt đối, nó vẫn cao hơn nhiều so với chỉ dùng HTTP thuần. Trong phạm vi bài viết, mình không tìm hiểu thêm về những lỗi bảo mật của HTTPS, mong các pro vào góp ý.

    khoa-1.gif

    Ngoài ra, nếu trang web của bạn chưa thể tích hợp https, bạn có thể tích hợp chức năng đăng nhập thông qua Facebook, Google. Tuy hacker vẫn có thể lấy cookie của người dùng, nhưng ít ra họ không bị lộ username và password.

    Lưu ý

    Hiện tại nhiều trang web vẫn sử dụng “https giả cầy” – chỉ sử dụng https ở những trang log-in và những trang có dữ liệu nhạy cảm. Cách làm này vẫn tồn tại khá nhiều nguy hiểm.

    Cảnh báo trước: Hiện tại, mình sử dụng Fiddler để demo ở local. Tuy nhiên, hacker có thể làm các trò này khi dùng chung LAN/WLAN với bạn. Do đó, cần hết sức cẩn thận khi dùng wifi chùa/wifi công cộng nhé.

    1. Mình sẽ lấy Lazada ra làm ví dụ về sự “giả cầy” này.
    Phần đăng nhập của trang này dùng https, do vậy mình không thể sniff được username, password.

    username-password-1.png

    username-password-2.png

    Dữ liệu truyền qua SSL đã bị mã hoá nên không thể “đọc lén” được
    Tuy nhiên, các trang khác của lazada vẫn dùng http. Khi người dùng vào các trang này mình có thể lấy được cookie, sử dụng cookie này để đăng nhập như thường.

    hacker-chuyennghiep2.png
    Dùng Fiddler đọc lén cookie

    Fiddler-1.png
    Dùng EditThisCookie để dump cookie và đăng nhập như thường


    EditThisCookie-1.png
    Ngày xưa, khi Facebook chưa dùng https, tụi mình cũng dùng cách này để sniff và đăng nhập account facebook của người khác.

    2. Lần này mình sẽ lấy trang web của Ngân hàng ACB ra làm ví dụ. Trang này có sử dụng HTTPS cho trang giao dịch, nhưng trang chủ vẫn là HTTP.

    nganhang-1.jpg Link ngân hàng trực tuyến dẫn đến online.acb.com.vn

    Mình có thể sửa packet để dẫn người dùng tới trang lừa đảo.

    hacker-chuyennghiep3.jpg

    Đoạn code này đổi nội dung HTML mà client nhận được

    nganhang-2.jpg Đường link đã bị đánh tráo mà client không hay biết gì
    Một số trường hợp khác, trang web dùng HTTPS nhưng vẫn tải hình ảnh, javascript, css qua http. Hacker vẫn có thể dễ dàng sửa nội dung javascript, lấy trộm cookie như thường. Do đó, Google khuyến cáo sử dụng https cho toàn bộ các trang và các link chứ đừng để kiểu giả cầy như thế này nhé.

    Kết
    Hiện tại Chrome cũng đang có kế hoạch thị các trang HTTP là không an toàn để cảnh báo cho người dùng. Ở những phiên bản sau, bạn sẽ thấy chữ “Not secure” trên thanh địa chỉ nếu trang web chỉ sử dụng HTTP.
    http-1.jpg
    Hai điều quan trọng nhất về HTTP rút ra từ bài viết:

    HTTP không an toàn hay bảo mật. Tuyệt đối không bao giờ submit thông tin quan trọng (mật khẩu, số thẻ ngân hàng) qua HTTP!Sử dụng http để duyệt web cũng giống như giải bài toán mà không cần suy nghĩ.
    Nguồn: techtalk.vn
     

    Bình Luận Bằng Facebook

    data-href="https://cnttqn.com/threads/giao-thuc-http-bao-mat-den-muc-nao.2726.html"