Penetration Testing – 6 điều tối thiểu bạn cần biết

Sau một thời gian la liếm với Kali Linux và nhiều lần đề cập về Penetration Testing (ví dụ nội dung Giải ngố Kali Linux – Phần 1: Kali Linux là gì?) tôi chợt nhận ra một thiếu sót nghiêm trọng là tôi chưa từng giới thiệu về cái khái niệm Pentest này.

Do vậy, kỳ này tôi xin tạm gác lại các nội dung demo để chém gió về vấn đề Penetration Testing. Dù nội dung này là hoàn toàn lý thuyết nên dễ gây ức chế cho người đọc nhưng tôi nghĩ việc nắm rõ các vấn đề như mục đích và phương pháp triển khai Penetration Testing là rất cần thiết trước khi cắm đầu vô cuộc binh đao, đâm chém bằng Kali Linux hoặc các công cụ hỗ trợ khác.

#1. Vì sao cần Penetration Testing?

Việc đầu tiên (và quan trọng nhất) là xác định lý do để thực hiện Penetration Testing. Nếu bạn quyết định kệ mịa nó khỏi cần quan tâm đến Pentest (hoặc các phương án khác có cùng mục đích như Pentest) thì có làm sao không?

Câu trả lời là “” và vấn đề “” sớm hay muộn thì tùy thuộc vào giá trị khai thác cũng như mức độ bảo mật của hệ thống đang xem xét.

Nếu hệ thống có giá trị khai thác cao (ví dụ liên quan đến banking) nhưng vấn đề bảo mật lại được thả trôi nổi mặc đời xô đẩy thì khả năng sẽ sớm có “người khác làm giùm mà bạn không biết”. Nếu may mắn, bạn có thể nhận được thông tin cảnh báo để khắc phục trước khi có tổn thất, nặng hơn thì mất mát một phần và nhọ nhất là banh cả hệ thống, không ngốc đầu lên được nữa.

Do vậy, để hạn chế hậu quả từ các vị khách không mời mà đến, bạn cần có một giải pháp như Penetration Testing để chủ động phát hiện trước các Vulnerabilities (tạm dịch là “Lỗ hổng”) trong hệ thống cũng như các giải pháp bảo mật hiện hữu. Nói dông dài, các mục tiêu có thể có của Penetration Testing bao gồm:

  • Nhận diện Threats (tạm dịch là “Mối đe dọa”, nhưng tôi sẽ dùng từ Threats cho nhanh gọn) và Vulnerabilities trong hệ thống;
  • Đánh giá chi tiết các chính sách, quy trình, thiết kế và kiến trúc trên phương diện bảo mật;
  • Xác định các tổn thất có thể có (bao gồm các thông tin/ dữ liệu có thể bị mất và tác động khi bị khai thác dựa trên các các thông tin/ dữ liệu này);
  • Kiểm tra xác nhận hiệu quả của các giải pháp bảo mật hiện hữu và các giải pháp bổ sung/ cập nhật (nếu cần).

#2. Vậy Penetration Testing là gì?

Penetration Testing là quá trình Hacking vào hệ thống của mục tiêu (tôi gọi tắt là Target cho nhanh) khi đã được cho phép (bởi chủ của Target) để đánh giá mức độ bảo mật và xác định các giải pháp cần thiết. Cha nào thực hiện Penetration Testing thì được gọi ngắn gọn là Pentester.

Hacking là từ hay được dùng như mô tả chung cho cả quá trình dùng để tăng độ “ngầu”. Thực tế, để có thể có mấy đoạn cao trào ngồi gõ phím đầy kịch tính như phim Mẽo thì mấy ông Hacker có thể phải đày ải thân xác đào bới thông tin (cái này hiểu theo nghĩa đen cũng đúng, như dạng Dumpster diving attack), tung ra hết mưu hèn kế bẩn (ví dụ theo dạng Social Engineering) để lượm lặt thông tin. Sau đó ngồi đến thâm cả đít để phân tích, đánh giá, lên kế hoạch trước khi tung đòn tấn công vào hệ thống.

Lưu ý: Chữ Hacker dùng trong bối cảnh Penetration Testing ở trên tương ứng với White Hat Hacker, hay gọi là Pentester cũng được, khác với Black Hat Hacker – đối tượng tiến hành các phi vụ Hacking khi chưa/ không được cho phép. Ngoài ra, còn có 1 đối tượng thứ 3 là Gray Hat Hacker với phương châm sống “gió chiều nào phất chiều đó”, ảo diệu khôn lường, có thể đổi trắng thay đen từ White Hat sang Black Hat (và ngược lại) tùy tình hình thực tế.

#3. Penetration Testing có mấy dạng?

Thông thường, Penetration Testing hay được phân thành 3 dạng:

  • Black Box: Đây là dạng blind testing – chơi kiểu “mù sa mưa”, tức là bạn không được cung cấp bất kỳ thông tin gì về Target, muốn biết thì tự mà đi tìm. Như vậy hình thức này mô phỏng việc tấn công của Black Hat Hacker theo phương diện khả năng tiếp cận thông tin, tuy nhiên bạn có thể bị ràng buộc về phạm vi và mức độ tấn công;
  • Gray Box: Dạng này bạn sẽ có một ít thông tin về Target (ví dụ địa chỉ IP, hệ điều hành,…). Hình thức này có thể dùng mô phỏng một Insider – đối tượng trong nội bộ tổ chức – có biết một phần về Target;
  • White Box: Dạng này thì Pentester biết toàn bộ ngóc ngách, hang cùng ngõ cụt về Target, có thể tương ứng việc nhóm bảo mật (hoặc kiểm tra bảo mật) nội bộ thực hiện Penetration Testing.

Ba màu Black/Gray/White ở đây vẫn đang gói gọn trong phạm vi Penetration Testing (thực hiện bởi White Hat HackerHacking trong khuôn khổ cho phép của mấy ông chủ Target) chứ không phải tương ứng với ba dạng Black/Gray/White Hat Hacker.

#4. Penetration Testing, Security Audits và Vulnerability Assessement

Ngoài Penetration Testing, bạn cũng sẽ có thể gặp 2 thằng đệ của nó là Security AuditsVulnerability Assessment. Về cơ bản, 2 thằng này sẽ không thực sự chọc ngoáy vào hệ thống như Penetration Testing mà tập trung vào các điểm ưu tiên cụ thể như sau:

  • Security Audits: Thiên về đánh giá tuân thủ theo chính sách/quy trình/thủ tục (ví dụ dựa theo ISO 27001 – Information Security Management) mà không đi sâu vào phân tích ThreatsVulnerabilities;
  • Vulnerability Assessment: Phân tích, đánh giá ThreatsVulnerabilities có thể bị khai thác và gây ra hậu quả lên hệ thống (đánh giá xong rồi nghỉ chứ không đâm thọc vào hệ thống).
Penetration Testing, Security Audits and Vulnerability Assessment
Penetration Testing, Security Audits and Vulnerability Assessment

Nguồn: EC-Council Certified Ethical Hacker Complete Training Guide

Như vậy, Penetration Testing sẽ cung cấp nhiều thông tin hơn (vì phải nay lưng ra mà chứng minh khả năng khai thác Vulnerabilities trong thực tế chứ không chỉ nói mồm là xong). Tuy nhiên, việc can thiệp, tấn công vào hệ thống có thể gây ra các tác động, nên bạn cần lưu ý vấn đề này trong quá trình triển khai Penetration Testing, đặc biệt đối với các hệ thống đòi hỏi tính sẵn sàng cao như Industrial Control System – Hệ thống điều khiển công nghiệp.

#5. Penetration Testing vs Ethical Hacking

Penetration Testing là một thuật ngữ có mối liên hệ chặt chẽ với Ethical Hacking (tôi tạm dịch là “Hack có đạo đức” – nghe nản quá nên tôi dùng từ tiếng Anh vậy). Thực tế tôi nghĩ, 2 khái niệm này khá tương đồng. Ethical Hacking mang hàm ý nói chung và Penetration Testing nhấn mạnh yếu tố “công việc làm ăn chuyên nghiệp”. Tuy nhiên, điểm mấu chốt ở đây là phải đảm bảo “có đạo đức” – tức là không nhằm gây hại cho Target và cần được cấp phép bởi chủ Target. Nếu bạn tự ý ra tay sau đó mới báo cho chủ Target về các Vulnerabilities để khắc phục thì dù có ý tốt (tức vẫn “có đạo đức”), nhưng xét về lý, bạn vẫn tội lỗi ngập đầu. Lúc này, việc chủ Target quyết định khen thưởng hay cho bạn ăn hành cũng khó nói trước được lắm.

Để dễ hình dung và xem xét sự tương đồng với Penetration Testing trong Mục 6, tôi xin tóm lược các giai đoạn Ethical Hacking của EC-Council theo kiểu kiểu mì ăn liền như sau:

  • Footprinting & Reconnaissance – Thu thập thông tin về Target cần tấn công;
  • Scanning – Sử dụng công cụ rà quét thăm dò phản hồi từ Target và phân tích Vulnerabilities (tạm dịch là Lỗ hổng);
  • Enumeration – Kết nối đến Target để thu thập thêm thông tin về hệ thống (ví dụ SNMP, DNS, User, Network);
  • System Hacking – Tấn công Target (nói ngắn gọn có mấy chữ thôi chứ làm thì vã mồ hôi);
  • Escalation of Privileges – Leo thang đặc quyền để thực hiện các mưu đồ thâm độc hơn;
  • Covering Tracks – Che đậy dấu vết (như event log, error message) để gây khó khăn cho quá trình phát hiện.

#6. Các giai đoạn của Penetration Testing

Như tôi nói trên, bạn sẽ thấy sự tương đồng về các giai đoạn của Penetration Testing Ethical Hacking. Cụ thể, với ông SANS, quá trình Penetration Testing sẽ bao gồm các bước:

  • Planning and Preparation – Lên kế hoạch và chuẩn bị;
  • Information Gathering and Analysis – Thu thập thông tin và phân tin;
  • Vulnerability Detection – Xác định Vulnerabilities;
  • Penetration Attempt – Tấn công;
  • Analysis and Reporting – Phân tích và báo cáo;
  • Cleaning Up – Thu dọn chiến trường.

Với ông Offensive Security, quá trình Penetration Testing cũng trải qua các giai đoạn tương tự như sau:

Offensive Security Pentest
Offensive Security Pentest

Nguồn: Offensive Security

Tuy nhiên ở đây có một số điểm cần nhấn mạnh:

  • Trước khi tấn công Target thật, nên tiến hành thử nghiệm các phương tấn công trên môi trường giả lập, ví dụ xài Virtual Machine như tôi đề cập trong nội dung Giải ngố Virtualization – Phần 1: Bước chân vào thế giới ảo;
  • Quá trình Gather Information, dù có về không “ngầu” bằng đoạn Penetration, nhưng đóng vai trò rất lớn vào khả năng thành bại của các bước tiếp theo;
  • Thông tin thu thập sau khi tiến hành việc Penetration sơ bộ có thể được dùng để lập lại đoạn Gather Information, với mức độ chi tiết (và thâm độc) hơn.

Ngoài ra, bạn cũng nên xem xét tận dụng Industry-leading Penetration Testing Methodologies – các phương pháp luận “chuẩn cmn mực” để hỗ trợ quá trình Penetration Testing với các gương mặt sáng giá bao gồm:

  • Open Web Application Security Project (OWASP)
  • Open Source Security Testing Methodology Manual (OSSTMM)
  • Information Systems Security Assessment Framework (ISAF)
  • EC-Council Licensed Penetration Tester (LPT) Methodology

Rồi, đến đây tôi xin kết thúc chương trình chém gió về Penetration Testing.

3 thoughts on “Penetration Testing – 6 điều tối thiểu bạn cần biết”

    1. Pentest là viết tắt của Penetration Testing, có thể tạm dịch là kiểm tra xâm nhập nhé bạn.

Leave a Reply

Your email address will not be published. Required fields are marked *