12/08/2018, 13:22

Kiểm thử bảo mật - Penetration Testing

1. Penetration Testing là gì? Đó quá trình xác định các lỗ hổng bảo mật trong một ứng dụng bằng cách đánh giá hệ thống hoặc mạng với kỹ thuật độc hại khác nhau. Có thể hiểu một cách đơn giản nó chính là đánh giá độ an toàn bằng cách tấn công vào hệ thống để tìm ra các vẫn đề an ninh tiềm ...

1. Penetration Testing là gì?

secure_ssh.jpg

Đó quá trình xác định các lỗ hổng bảo mật trong một ứng dụng bằng cách đánh giá hệ thống hoặc mạng với kỹ thuật độc hại khác nhau. Có thể hiểu một cách đơn giản nó chính là đánh giá độ an toàn bằng cách tấn công vào hệ thống để tìm ra các vẫn đề an ninh tiềm tàng hoặc dò tìm các dấu vết khi hệ thống bị tổn thương. Mục đích của kiểm thử này là để đảm bảo dữ liệu quan trọng từ bên ngoài như hackers người có thể có quyền truy cập trái phép vào hệ thống. Một khi lỗ hổng được xác định nó sẽ được sử dụng để khai thác hệ thống để đạt được quyền truy cập vào các thông tin nhạy cảm.

Câu hỏi đặt ra là những lỗ hổng này xuất phát từ đâu

  • Lỗi thiết kế và phát triển phần mềm
  • Cấu hình hệ thống nghèo nàn
  • Lỗi của con người

Để hiểu rõ hơn về Pen-test, trước tiên chúng ta cần phải biết các khái niệm bảo mật cơ bản sau:

- Lỗ hỏng (Vulnerabilities)

Vulnerabilities là lỗ hổng bảo mật trong một phần của phần mềm, phần cứng hoặc hệ điều hành, cung cấp một góc tiềm năng để tấn công hệ thống. Một lỗ hổng có thể đơn giản như mật khẩu yếu hoặc phức tạp như lỗi tràn bộ đệm hoặc các lỗ hổng SQL injection.

- Khai thác (Exploits)

Để tận dụng lợi thế của một lỗ hổng, thường cần một sự khai thác, một chương trình máy tính nhỏ và chuyên môn cao mà lý do duy nhất là để tận dụng lợi thế của một lỗ hổng cụ thể và để cung cấp truy cập vào một hệ thống máy tính. Khai thác thường cung cấp một tải trọng (payloads) đến mục tiêu hệ thống và cung cấp cho kẻ tấn công truy cập vào hệ thống.

-Trọng tải (Payloads)

Tải trọng (payloads) là các thành phần của phần mềm cho phép kiểm soát một hệ thống máy tính sau khi nó đang được khai thác lỗ hổng ,thường gắn liền với vài giao khai thác (exploits).

2. Tại sao phải sử dụng Pen-test?

  • Xác định các mối đe dọa đối với tài sản thông tin của một tổ chức.
  • Giảm chi phí bảo mật của một tổ chức và đầu tư công nghệ bảo mật một cách tốt hơn bằng cách xác định và giải quyết các lỗ hổng và điểm yếu.
  • Tập trung vào các lỗ hổng có mức độ cao và nhấn mạnh các vấn đề bảo mật cấp độ ứng dụng cho các nhóm phát triển và quản lý.

Penetration-testing.jpg

Vậy câu hỏi đặt ra là cái gì sẽ được kiểm thử?

  • Phần mềm
  • Phần cứng
  • Network
  • Process

3. Các loại kiểm thử bảo mật

a. Social Engineering: Lỗi của con người là nguyên nhân chính của các lỗ hổng bảo mật. Hackers sử dụng sự ảnh hưởng và sự thuyết phục để đánh lừa người dùng nhằm khai thác các thông tin có lợi cho cuộc tấn công hoặc thuyết phục nạn nhân thực hiện một hành động nào đó. Các đặc điểm sau của con người dễ bị Hackers lợi dụng đệ tấn công:

  • Mong muốn trở nên hữu dụng.
  • Tin người.
  • Nỗi sợ gặp rắc rối.
  • Đơn giản đến mức cẩu thả.

Có hai loại Social Engineering:

  • Social engineering dựa trên con người liên quan đến sự tương tác giữa con người với con người để thu được thông tin mong muốn (nhân viên gián điệp/giả mạo, giả làm nhân viên hỗ trợ kỹ thuật ,...).
  • Social engineering dựa trên máy tính: liên quan đến việc sử dụng các phần mềm để cố gắng thu thập thông tin cần thiết (lừa đảo qua thư điện tử, điện thoại, pop-up windows, file đính kèm trong e-mail, phần mềm giả mạo,...).

b. Ứng dụng kiểm thử bảo mật: Sử dụng phương pháp phần mềm ai đó có thể xác minh nếu hệ thống được tiếp xúc với lỗ hổng bảo mật.

c. Kiểm thử bảo mật vật lý: Phương pháp bảo mật vật lý được áp dụng để bảo vệ dữ liệu nhạy cảm. Điều này nói chung là hữu ích trong các cơ sở quân sự và chính phủ. Tất cả các thiết bị mạng vật lý và các điểm truy cập được kiểm thử cho khả năng của bất kỳ vi phạm an ninh nào.

Các kỹ thuật kiểm thử bảo mật

  • Kiểm thử bảo mật thủ công
  • Sử dụng các công cụ kiểm thử tự động
  • Kết hợp của cả hai quá trình thủ công và tự động

4. Công cụ kiểm thử bảo mật.

a. Công cụ kiểm thử tự động:

Công cụ tự động có thể được sử dụng để xác định một số lỗ hổng tiêu chuẩn hiện tại trong một ứng dụng. Công cụ kiểm thử bảo mật quét mã hiện nay dùng để kiểm tra xem có mã độc hay không có thể dẫn đến vi phạm an inh tiềm tàng. Công cụ kiểm thử bảo mật không thể xác minh lỗ hổng bảo mật hiện tại trong hệ thống như các kỹ thuận mã hóa dữ liệu và các giá trị mã cứng giống như username và password.

Các tiêu chí để chọn công cụ kiểm thử bảo mật tốt nhất:

  • Nó sẽ dễ dàng được triển khai, cấu hình và sử dụng
  • Nó sẽ quét được hệ thống một cách dễ dàng
  • Nó có thể phân loại lỗ hổng dựa trên mức độ nghiêm trọng cần sửa chữa ngay lập tức.
  • Có khả năng tự động xác minh các lỗ hổng.
  • Có thể xác minh lại những khai thác mà đã được tìm thấy trước đó.
  • Nó sẽ tạo ra các báo cáo và các bản ghi chi tiết về lỗ hổng.

Một khi bạn biết những kiểm thử bạn cần phải được hiện bạn có thể tự đào tạo nguồn kiểm thử nội bộ của mình hoặc thuê chuyên gia lành nghề và giàu kinh nghiệm để thực hiện các kiểm tra.

Một vài ví dụ về các công cụ kiểm thử.

  • Công cụ miễn phí có thể download: Nmap, Nessus, Metasploit, Wireshark, OpenSSL, Cain & Abel, THC Hydra, w3af
  • Công cụ phải trả phí: Pure Hacking, Torrid Networks, SecPoint,Veracode.

Giới hạn của công cụ kiểm thử tự động: Đôi khi những công cụ này có thể có sai số tích cực đầu ra mà kết quả là phải mất nhiêu thời gian thêm để phat triển về việc phân tích các lỗ hổng như vậy.

b. Kiểm thử bằng tay.

Khó để tìm thấy tất cả các lỗ hổng bằng việc sử dụng công cụ tự động. Có một số lỗ hổng chỉ có thể xác định bằng tay. Người kiểm thử thâm nhập có thể thực hiện các cuộc tất công tốt hơn trên ứng dụng dựa trên kỹ năng và hiểu biết của họ về hệ thống đang được thâm nhập. Các phương thức giống như Socical engineering chỉ có thể thực hiện được bởi con người. Kiểm tra bằng tay bao gồm design, business logic cũng như xác minh mã nguồn.

Quá trình kiểm thử thâm nhập:

  • Xác định các lỗ hổng có trong hệ thống là bước quan trọng đầu tiên trong quá trình
  • Hoạt động sửa chữa được thực hiện trên những lỗ hổng này.
  • Kiểm tra thâm nhập tương tự sẽ được lặp lại cho đến khi hệ thống từ chối tất cả các cuộc kiểm tra.

Chúng ta có thể phân loại các quá trình này theo các phương pháp sau đây:

  • Thu thập dữ liệu: Các phương pháp khác nhau bao gồm tìm kiếm Google được sử dụng để có được dữ liệu hệ thống. Một trong các phương pháp này cũng có thể sử dụng kỹ thuật phân tích trang mã nguồn web để có thêm thông tin về hệ thống, phiên bản phần mềm và plugin. Có rất nhiều công cụ miễn phí và dịch vụ có sẵn trên thị trường mà có thể cung cấp cho bạn các thông tin như cơ sở dữ liệu hoặc bảng tên, phiên bản DB, các phiên bản phần mềm, phần cứng và sử dụng plugin của bên thứ 3 trong hệ thống mục tiêu.

  • Đánh giá tính chất dễ bị tổn thương của hệ thống: Dựa trên các dữ liệu thu thập được trong thước đầu tiên người ta có thể tìm thấy những điểm yếu bảo mật trong các hệ thống mục tiêu. Điều này giúp nhân viên kiểm thử bảo mật khởi động các cuộc tấn bằng việc sử dụng các đường xâm nhập đã được xác định vào hệ thống.

  • Khai thác thực tế: Đây là một bước cực kỳ quan trọng. Nó đòi hỏi kỹ năng và kỹ thuật đặc biệt để khởi động cuộc tấn công và hệ thống mục tiêu. Những kinh nghiệm về bảo mật của nhân viên kiểm thử có thể sử dụng kỹ năng của họ để khởi động cuộc tấn công vào hệ thống.

  • Phân tích kết quả và chuẩn bị báo cáo: Sau khi hoàn thành kiểm thử thâm nhập báo cáo chi tiết được chuẩn bị cho những hoạt động khắc phục lỗi. Tất cả các lỗ hổng được xác định và các phương pháp khắc phục được liệt kê trong bản báo cáo. Bạn có thể tùy chỉnh định dạng báo cáo lỗ hổng (HTML, XML, MS Word hoặc PDF) theo như yêu cầu của tổ chức.

0