I. Bối cảnh
Trong bối cảnh an ninh mạng ngày càng trở thành yếu tố sống còn đối với mọi tổ chức, việc đánh giá và nâng cao khả năng phòng thủ trước các cuộc tấn công mạng trở nên vô cùng cần thiết. Kiểm thử xâm nhập (penetration testing) là một trong những phương pháp hiệu quả nhất giúp đánh giá mức độ bảo mật của hệ thống, từ đó phát hiện và khắc phục kịp thời các lỗ hổng tiềm ẩn. Tuy nhiên, để đảm bảo quá trình kiểm thử được thực hiện một cách bài bản, nhất quán và có tính chuyên nghiệp cao, việc áp dụng các tiêu chuẩn và quy trình chuẩn là điều không thể thiếu.
Tiêu chuẩn Thực thi Kiểm thử Xâm nhập (Penetration Testing Execution Standard - PTES) được xây dựng nhằm cung cấp một khung tham chiếu toàn diện, bao gồm các bước từ khâu chuẩn bị, thu thập thông tin, phân tích nguy cơ, đến khai thác và báo cáo kết quả. Tiêu chuẩn này không chỉ giúp chuẩn hóa quy trình kiểm thử mà còn đảm bảo kết quả mang lại giá trị thực tiễn, phù hợp với nhu cầu và đặc thù của từng tổ chức.
Ở bài viết này, mình sẽ giới thiệu và phân tích nhanh về các bước của PTES, đồng thời đánh giá tầm quan trọng và ứng dụng thực tiễn của tiêu chuẩn trong công tác bảo mật thông tin hiện nay.
II. Giới thiệu
PTES bao gồm 7 bước chính. Các bước này bao quát toàn bộ một cuộc kiểm thử xâm nhập — từ giai đoạn lấy thông tin ban đầu cho đến giai đoạn cuối cùng là báo cáo, ghi lại toàn bộ quá trình một cách có ý nghĩa với khách hàng và mang lại giá trị cao nhất cho họ.
Sau đây là các phần chính được tiêu chuẩn định nghĩa làm cơ sở cho việc thực thi kiểm thử xâm nhập:
Bước | Thực hiện | Mô tả |
---|---|---|
1 | Pre-engagement Interactions | Tương tác trước khi thực hiện |
2 | Intelligence Gathering | Thu thập thông tin tình báo |
3 | Threat Modeling | Mô hình hóa mối đe dọa |
4 | Vulnerability Analysis | Phân tích lỗ hổng |
5 | Exploitation | Khai thác |
6 | Post Exploitation | Hậu khai thác |
7 | Reporting | Báo cáo |
III. Quy trình thực hiện chi tiết
1. Pre-engagement Interactions - Tương tác trước khi thực hiện
Mục tiêu
Mục tiêu của Pre-engagement Interactions trong tiêu chuẩn PTES là trình bày và giải thích các công cụ và kỹ thuật hỗ trợ cho bước tương tác trước kiểm thử (pre-engagement) một cách hiệu quả. Nội dung trong phần này là kết quả từ nhiều năm kinh nghiệm tổng hợp của một số chuyên gia kiểm thử xâm nhập hàng đầu thế giới.
Giới thiệu về phạm vi kiểm thử
Việc xác định phạm vi là một trong những thành phần quan trọng nhất của kiểm thử xâm nhập, nhưng lại thường bị xem nhẹ. Trong khi có rất nhiều tài liệu viết về các công cụ và kỹ thuật xâm nhập mạng, thì rất ít nói về bước chuẩn bị trước kiểm thử. Việc không thực hiện đúng các bước pre-engagement có thể dẫn đến các vấn đề như phạm vi bị mở rộng ngoài kiểm soát (scope creep), khách hàng không hài lòng, hoặc thậm chí là rắc rối pháp lý.
Phạm vi dự án xác định rõ ràng những gì sẽ được kiểm thử. Cách thức tiến hành từng phần kiểm thử sẽ được trình bày trong phần Quy tắc thực hiện kiểm thử (Rules of Engagement). Nhất là trong những cuộc kiểm thử tấn công (Red Team), việc đặt ra RoE là điều cần thiết, đảm bảo thống nhất giữa cả 2 bên, tránh những rủi ro không đáng có trong quá trình thực hiện.
Không hiếm gặp trường hợp khách hàng không biết chính xác họ muốn kiểm thử gì, hoặc không thể diễn đạt rõ ràng kỳ vọng. Do đó, trong giai đoạn pre-engagement, pentester cần đóng vai trò như một người hướng dẫn, giúp khách hàng đi qua những nội dung có thể còn mơ hồ. Pentester cần phân biệt giữa kiểm thử một ứng dụng duy nhất với cường độ cao và kiểm thử một dải IP rộng chỉ nhằm tìm một điểm xâm nhập.
-
Xác nhận phạm vi IP và các tài sản cần kiểm thử. Không nên để pentester tự phát hiện ra hạ tầng mục tiêu – điều này có thể dẫn đến rủi ro pháp lý. Phải xác nhận rõ rằng phạm vi có thể tác động: DNS, email, phần cứng, firewall/IDS/IPS, v.v...
-
Ngoài ra, cần xác định rõ hệ thống vận hành ở quốc gia hay khu vực nào. Luật pháp từng nơi khác nhau, có thể ảnh hưởng đến cách thực hiện kiểm thử – ví dụ như kiểm thử kỹ thuật xã hội tại EU sẽ phải tuân theo luật bảo vệ dữ liệu cá nhân nghiêm ngặt hơn.
Ước lượng thời gian kiểm thử
Việc ước lượng thời gian kiểm thử dựa trên kinh nghiệm thực tế. Với những phần kiểm thử đã quen thuộc, người kiểm thử có thể ước lượng thời gian gần đúng. Với phần chưa quen, có thể xem lại log và email từ các dự án trước để ước tính. Sau khi có ước lượng, nên cộng thêm 20% thời gian như một phần đệm (padding) – hay gọi là chi phí phụ trội của tư vấn. Phần này dùng để phòng ngừa sự cố như mạng bị mất kết nối, hoặc phải tổ chức nhiều cuộc họp để xử lý một lỗ hổng nghiêm trọng.
Có thể quy đổi dựa theo một số đề xuất sau:
- 8 api - 1 manday
- 10 request - 1 manday
- 3 chức năng (function) - 1 manday
- 1 màn hình nhiều chức năng (screen) - 1 manday
Việc đặt ra tiêu chuẩn sẽ tính được khối lượng công việc, từ đó sắp xếp resource thích hợp phục vụ công tác kiểm thử.
Mỗi dự án yêu cầu ngày kết thúc rõ ràng.
Bảng câu hỏi
Tuỳ thuộc vào loại kiểm thử, thực hiện xây dựng bảng câu hỏi thích hợp. Cần phải chủ động xây dựng bảng câu hỏi nhằm chủ động trong các công tác và phát hiện những rủi ro có thể xảy ra, hạn chế những rủi ro không đáng có.
Phương thức kiểm thử
Việc thực hiện kiểm thử được phân loại theo 3 phương thức, phụ thuộc vào thông tin đầu vào được cung cấp:
Phương thức | Mức độ hiểu biết của kiểm thử viên | Ưu điểm | Nhược điểm | Mục đích chính |
---|---|---|---|---|
Blackbox | Không có thông tin | - Mô phỏng hacker bên ngoài - Tập trung phát hiện lỗ hổng có thể khai thác từ bên ngoài |
- Khó phát hiện lỗ hổng sâu - Thời gian kiểm thử lâu hơn do phải thu thập thông tin |
Kiểm thử bảo mật ngoại vi, hệ thống từ góc nhìn kẻ tấn công bên ngoài |
Greybox | Có một phần thông tin hạn chế | - Hiệu quả hơn Blackbox - Tập trung kiểm thử trọng điểm dựa trên thông tin |
- Không mô phỏng hoàn toàn hacker bên ngoài - Có thể bỏ sót nếu thông tin không đầy đủ |
Kiểm thử tập trung, cân bằng giữa hiệu quả và thời gian |
Whitebox | Có đầy đủ thông tin | - Kiểm thử sâu, toàn diện - Phát hiện lỗi cấu hình, mã nguồn |
- Tốn thời gian và công sức - Không mô phỏng hacker bên ngoài |
Kiểm thử nội bộ chi tiết, đánh giá code và kiến trúc hệ thống |
Thực hiện kiểm thử whitebox (review source code) là phương thức có thể phát hiện tối đa các lỗ hổng trong hệ thống. Tuy nhiên, việc cung cấp source code ra ngoài tiềm ẩn nhiều rủi ro. Khách hàng thường lựa chọn phương án kiểm thử greybox để trung hoà giữa các yếu tố. Đây cũng là phương thức thường được lựa chọn trong thời điểm hiện tại.
2. Intelligence Gathering - Thu thập thông tin tình báo
Hoạt động Thu thập Thông tin Tình báo là các hoạt động thu thập thông tin tình báo trong một cuộc kiểm thử xâm nhập (penetration test).
Các mức độ (Levels) là một khái niệm quan trọng trong toàn bộ tiêu chuẩn PTES, giống như một mô hình đánh giá mức độ trưởng thành cho pentesting. Việc định nghĩa các mức giúp làm rõ kết quả mong đợi và các hoạt động trong những giới hạn thực tế như thời gian, nỗ lực, khả năng tiếp cận thông tin, v.v...
Các mức độ thu thập thông tin tình báo
Hiện nay, các mức độ thu thập thông tin tình báo được chia thành ba loại.Mức 1: Thu thập Thông tin Cơ bản
(Think: Tuân thủ quy định)
Đây là quá trình thu thập thông tin bằng các công cụ tự động. Đây là mức tối thiểu để nói rằng bạn đã thực hiện thu thập thông tin cho một cuộc kiểm thử.
Ví dụ: Công ty A cần tuân thủ PCI / FISMA / HIPAA. Một nỗ lực thu thập thông tin mức 1 sẽ phù hợp để đáp ứng yêu cầu tuân thủ này.
Công Cụ Intelligence Gathering Level 1 (Click-Button, Automated Tools) có thể kể tới như
Nhóm Mục Tiêu | Tên Công Cụ | Chức Năng Chính |
---|---|---|
Tên miền & DNS | Whois | Truy vấn thông tin đăng ký tên miền |
dig / nslookup |
Truy vấn DNS record | |
DNSDumpster | Thu thập thông tin DNS, bản đồ mạng | |
Amass | Liệt kê subdomain tự động (passive/some semi-passive) | |
Thông tin IP/ASN | Shodan | Tìm kiếm thiết bị & dịch vụ công khai qua banner |
Censys | Tìm kiếm máy chủ, chứng chỉ SSL, IP | |
Hunter.io | Tìm email liên quan tới tên miền | |
Lưu vết lịch sử | Wayback Machine | Xem lại các phiên bản cũ của trang web |
BuiltWith | Xác định công nghệ đang được sử dụng bởi website | |
Phân tích trang web | WhatWeb | Xác định phần mềm & công nghệ đang chạy trên website |
Wappalyzer | Add-on trình duyệt, nhận dạng công nghệ web | |
Tìm kiếm mã nguồn | GitHub Dorks | Tìm kiếm thông tin nhạy cảm rò rỉ trên GitHub |
Google Dorks | Dorking tìm file config, admin panel... | |
Tự động hóa OSINT | theHarvester | Thu thập email, subdomain, host, cổng mạng, v.v... |
Maltego CE | Đồ họa hóa mối quan hệ (dùng Community Edition cho Level 1) | |
SpiderFoot | Framework OSINT tự động (có chế độ passively run) | |
Metadata | ExifTool | Trích xuất metadata từ ảnh, tài liệu (nếu file công khai có sẵn) |
Lưu ý: Các công cụ trên tập trung vào thu thập thông tin công khai, không gây chú ý tới mục tiêu, và phù hợp với các bài kiểm thử tuân thủ tiêu chuẩn (PCI, HIPAA, FISMA...).
Mức 2: Thu thập Thông tin Nâng cao
(Think: Thực hành tốt nhất)
Ở mức 2, ngoài việc sử dụng các công cụ tự động từ mức 1, còn có thêm phân tích thủ công. Người thực hiện có sự hiểu biết tốt về doanh nghiệp, bao gồm thông tin như vị trí thực tế, các mối quan hệ kinh doanh, sơ đồ tổ chức, v.v.
Ví dụ: Widgets Inc cần tuân thủ PCI, nhưng quan tâm đến chiến lược an ninh lâu dài và đang mua lại một số nhà sản xuất nhỏ hơn. Một nỗ lực thu thập thông tin mức 2 sẽ phù hợp với nhu cầu này.
Công Cụ Intelligence Gathering Level 2 (Best Practice – Semi-passive & Manual Analysis) có thể kể tới như:
Nhóm Mục Tiêu | Tên Công Cụ / Kỹ Thuật | Chức Năng / Mục Tiêu |
---|---|---|
Phân tích tổ chức | LinkedIn, Crunchbase | Tìm hiểu cơ cấu tổ chức, nhân sự, lịch sử công ty |
OpenCorporates, Bloomberg | Tra cứu hồ sơ doanh nghiệp, mối quan hệ pháp lý, chi nhánh | |
Google / Bing Advanced Search | Tìm email, tài liệu, thông tin nội bộ (dorking nâng cao) | |
Social Media Profiling | Twitter, Facebook, GitHub, Reddit | Xác định nhân sự, kỹ sư, quản trị viên, hoạt động xã hội |
Social Searcher | Theo dõi hoạt động mạng xã hội theo từ khóa hoặc tên | |
Phân tích hạ tầng | Recon-ng | Framework thu thập thông tin tự động & mở rộng |
dig , host , dnsenum , dnstrails |
Truy vấn sâu hơn về DNS, zone transfers, historical DNS data | |
FOCA | Phân tích metadata tài liệu public (PDF, DOCX...) | |
Thư viện mã và leaks | GitRob | Tìm repo Git chứa thông tin nhạy cảm của tổ chức |
Gitleaks | Quét secret, API key, token trong Git repos | |
Tài nguyên nội bộ | Google Groups, Pastebin, Archive.org | Tìm thảo luận công khai, thông tin nội bộ, rò rỉ |
Job Boards (Indeed, Glassdoor) | Thu thập công nghệ nội bộ từ mô tả tuyển dụng | |
Bản đồ hóa kỹ thuật số | SpiderFoot HX | Bản đồ mối quan hệ kỹ thuật & social |
Maltego (Community) | Phân tích mối quan hệ giữa email, IP, domain, person, tổ chức | |
Tập trung mục tiêu | SecurityTrails | Phân tích domain, IP, DNS history, reverse WHOIS |
GreyNoise | Phân loại lưu lượng có thể gây nhiễu |
Mức 3: Thu thập Thông tin Toàn diện
(Think: Tài trợ Nhà nước) Đây là quá trình kiểm thử nâng cao, dạng Red Team hoặc kiểm thử toàn diện, bao gồm tất cả thông tin từ mức 1 và 2 cùng với nhiều phân tích thủ công sâu rộng. Ví dụ như xây dựng quan hệ trên mạng xã hội, phân tích kỹ càng các mối quan hệ kinh doanh, và rất nhiều giờ làm việc để thu thập và tổng hợp thông tin.
Ví dụ: Một Red Team Quân đội được giao nhiệm vụ phân tích và tấn công một phân đoạn mạng của quân đội tại nước ngoài để tìm điểm yếu có thể bị khai thác. Một nỗ lực thu thập thông tin mức 3 sẽ phù hợp trong trường hợp này.
Công Cụ Intelligence Gathering Level 3 (Red Team – Full Scope, Manual Deep Recon) có thể kể tới như:
Nhóm Mục Tiêu | Tên Công Cụ / Kỹ Thuật | Chức Năng / Mục Tiêu |
---|---|---|
Xây dựng chân dung mục tiêu | Fake persona + SocNet | Tạo tài khoản giả để tiếp cận mục tiêu, kết nối mạng xã hội |
Mitaka | Tra cứu nhanh IoC qua trình duyệt | |
Intel Techniques Toolkit | Nền tảng tìm kiếm nâng cao thông tin cá nhân, số điện thoại, email | |
Lập bản đồ toàn diện | [SpiderFoot HX (Pro)] | Bản đồ hóa toàn diện về tên miền, subdomain, liên kết mạng, tổ chức phụ |
PassiveTotal | Phân tích ngược lịch sử tên miền, IP, mối liên kết | |
DNSDB | Truy vấn DNS lịch sử, phục hồi subdomain đã xóa | |
Thăm dò kỹ thuật cao | Shodan API | Tự động hóa thăm dò dịch vụ exposed kết hợp truy vết người dùng liên quan |
Certificate Transparency Logs (crt.sh, censys.io) | Trích xuất tên miền phụ từ chứng chỉ TLS | |
Nmap NSE Scripts | Khám phá dịch vụ sâu rộng + script tùy chỉnh | |
OSINT con người chuyên sâu | Pipl | Truy tìm người liên quan qua email, số điện thoại, username |
PeopleDataLabs | Phân tích big data thông tin cá nhân, mạng lưới xã hội | |
Tích hợp & kịch bản hóa | ReconDog | Công cụ tổng hợp OSINT đơn giản cho script tự động |
Custom scripts / Python automation | Tạo công cụ tùy chỉnh cho mục tiêu cụ thể, ví dụ crawler mã hóa, mô phỏng hành vi... | |
Chiến dịch kéo dài | Lập lịch OSINT dài hạn | Thu thập thông tin theo thời gian dài, monitor sự thay đổi domain, nhân sự, leak... |
Combine với Phishing / Payload Delivery | OSINT phục vụ trực tiếp cho social engineering & khai thác sau đó |
Mục đích Thu thập Thông tin Tình báo
Thu thập thông tin tình báo (Intelligence Gathering) là việc thực hiện công tác trinh sát nhằm thu thập càng nhiều thông tin càng tốt về mục tiêu để sử dụng trong các giai đoạn đánh giá lỗ hổng và khai thác sau đó. Thông tin càng nhiều, càng có nhiều điểm tấn công (vectors) để khai thác trong tương lai.
Open Source Intelligence (OSINT) là một hình thức thu thập thông tin từ các nguồn công khai, chọn lọc và phân tích để tạo ra thông tin có thể hành động được. Chúng ta thực hiện thu thập OSINT để xác định các điểm vào (entry points) của một tổ chức, có thể là vật lý, điện tử hoặc con người. Nhiều công ty thường không chú ý đến việc họ cung cấp những thông tin gì ra bên ngoài và thông tin đó có thể bị kẻ tấn công lợi dụng như thế nào. Tương tự, nhiều nhân viên cũng không ý thức được việc chia sẻ thông tin cá nhân trên mạng xã hội có thể khiến họ hoặc tổ chức bị tấn công.
Những điều không phải là thu thập thông tin tình báo
- Thông tin OSINT có thể không chính xác hoặc đã lỗi thời, có thể bị thao túng cố ý hoặc vô tình.
- Việc lục lọi thùng rác hay thu thập thông tin vật lý từ hiện trường.
Chọn Mục Tiêu (Target Selection)
Xác định và Đặt Tên Mục Tiêu
Khi tiếp cận một tổ chức mục tiêu, điều quan trọng là phải hiểu rằng một công ty có thể sở hữu nhiều Tên Miền Cấp Cao (Top Level Domains - TLDs) và các doanh nghiệp phụ trợ khác nhau. Mặc dù những thông tin này nên được xác định trong giai đoạn xác định phạm vi (scoping phase), nhưng việc phát hiện thêm các máy chủ, tên miền hoặc công ty con không nằm trong phạm vi ban đầu là điều không hiếm.
Ví dụ: một công ty có TLD chính là .com
, nhưng họ cũng có thể sở hữu các TLD .net
, .co
hoặc .xxx
. Những tên miền này có thể cần được đưa vào phạm vi điều chỉnh lại hoặc có thể bị giới hạn không được tấn công. Pentester luôn cần được khách hàng đồng ý trước khi bắt đầu kiểm thử.
-
Xác định Các Giới Hạn trong Quy Tắc Tham Gia (Rules of Engagement - RoE): Cần xác định rõ phạm vi thực hiện và các yêu cầu đã được thống nhất và đề ra, thường đã được thông tin rõ ở RoE. Đôi khi, pentester bị cuốn vào các phát hiện và khả năng tấn công mà quên mất những IP, tên miền, mạng nào được phép tấn công. Luôn luôn tham khảo Rules of Engagement để giữ cho phạm vi kiểm thử được tập trung đúng hướng. Việc này không chỉ quan trọng về mặt pháp lý mà còn giúp hạn chế việc mở rộng phạm vi kiểm thử không cần thiết (scope creep), tránh lãng phí thời gian và chi phí cho công ty.
-
Xác định Thời Gian Dành cho Kiểm Thử: Thời gian dành cho toàn bộ cuộc kiểm thử ảnh hưởng trực tiếp đến khối lượng công việc thu thập thông tin tình báo. Tuân thủ thời gian quy định và hoàn thành đầy đủ các công việc được giao.
-
Xác định Mục Tiêu Cuối Cùng của Cuộc Kiểm Thử: Mỗi cuộc kiểm thử đều có một mục tiêu cuối cùng. Giữ sự tập trung vào các tài sản quan trọng sẽ giúp giảm ưu tiên các thông tin ít liên quan, từ đó không làm gián đoạn quá trình phân tích.
OSINT (Open Source Intelligence)
OSINT gồm ba dạng: Passive (thụ động), Semi-passive (bán thụ động) và Active (chủ động).
-
Passive Information Gathering (Thu thập Thông tin Thụ động): Phương pháp này chỉ hữu ích khi yêu cầu thu thập thông tin phải không bị phát hiện bởi mục tiêu. Kỹ thuật này rất khó thực hiện vì bạn không gửi bất kỳ lưu lượng mạng nào đến tổ chức mục tiêu, không từ host của bạn hay từ các host “ẩn danh” trên Internet. Bạn chỉ có thể sử dụng thông tin được lưu trữ hoặc đã được thu thập trước đó từ bên thứ ba. Do vậy, thông tin có thể đã lỗi thời hoặc không chính xác.
-
Semi-passive Information Gathering (Thu thập Thông tin Bán Thụ động): Mục tiêu của hình thức này là thu thập dữ liệu sao cho hành vi của bạn trông giống như lưu lượng truy cập Internet bình thường. Bạn chỉ truy vấn các máy chủ DNS đã được công bố mà không thực hiện các cuộc tra cứu ngược sâu hoặc tấn công brute-force DNS. Bạn không quét cổng mạng hay dùng crawler mạng mà chỉ xem xét metadata trong các tài liệu và file công khai, không tìm kiếm nội dung ẩn. Mục đích là không gây chú ý, để khi có phân tích lại, mục tiêu có thể biết bạn đã thu thập thông tin, nhưng không thể truy ngược về người thực hiện.
-
Active Information Gathering (Thu thập Thông tin Chủ động): Ở bước này, hoạt động của bạn có thể bị phát hiện và bị xem là đáng ngờ hoặc có hại. Bạn chủ động quét hạ tầng mạng, thu thập thông tin chi tiết hoặc scan tìm lỗ hổng trên các dịch vụ mở, tìm kiếm thư mục, file hoặc máy chủ chưa được công bố. Đây là hoạt động trinh sát và quét mạng điển hình trong một cuộc pentest tiêu chuẩn.
Tiếp tục với PTES #2