Vulnerability Scanning
Vulnerability Scanning
Quét lỗ hổng với Nessus và Nmap — từ lý thuyết, cấu hình, phân tích kết quả đến kiểm tra có xác thực.
Nội dung của chương
Vulnerability Scanning Theory
Cách scanner hoạt động, loại hình quét và các yếu tố ảnh hưởng đến độ chính xác.
Vulnerability Scanning with Nessus
Cài đặt, cấu hình, quét thường, quét có xác thực, phân tích kết quả và plugin.
Vulnerability Scanning with Nmap
Sử dụng Nmap Scripting Engine để quét nhẹ và kiểm tra một CVE cụ thể.
Vulnerability scanning là gì?
- Là quá trình xác định attack surface của phần mềm, hệ thống hoặc mạng.
- Scanner có thể chỉ là một script kiểm tra một lỗ hổng hoặc một nền tảng thương mại kiểm tra nhiều nhóm lỗ hổng.
- Trong pentest, quét tự động giúp nhanh chóng thiết lập một baseline trước khi kiểm thử thủ công sâu hơn.
- Hai nhóm phổ biến được tài liệu nhắc đến là web application scanner và network vulnerability scanner.
Vai trò trong một security assessment
Mục tiêu học tập
- Hiểu quy trình cơ bản của vulnerability scanning.
- Phân biệt các loại vulnerability scan.
- Nhận diện các yếu tố cần cân nhắc khi lập kế hoạch và thực hiện scan.
Quy trình cơ bản của scanner
Host discovery và port scanning
Host discovery
Cho scanner biết mục tiêu có hoạt động và đang phản hồi hay không.
Port scanning
Xác định các cổng mở và bề mặt dịch vụ có thể truy cập từ xa.
Version detection
Thu thập phiên bản dịch vụ và thông tin hệ điều hành để phục vụ đối chiếu.
Đối chiếu với vulnerability database
- Scanner sử dụng thông tin đã thu thập để truy vấn cơ sở dữ liệu lỗ hổng.
- Hai ví dụ trong tài liệu: National Vulnerability Database (NVD) và chương trình Common Vulnerabilities and Exposures (CVE).
- Một số scanner thương mại còn thử xác minh bằng cách khai thác một phần hoặc toàn bộ lỗ hổng.
- Việc xác minh có thể giảm số lỗ hổng bị bỏ sót nhưng cũng có thể ảnh hưởng đến độ ổn định của dịch vụ hoặc hệ thống.
CVE và CVSS không phải một khái niệm
| Khái niệm | Mục đích | Thông tin cung cấp |
|---|---|---|
| CVE | Định danh một lỗ hổng đã được công bố. | Mã nhận diện; bản thân mã CVE không cho biết mức độ nghiêm trọng. |
| CVSS | Đánh giá đặc điểm và severity của lỗ hổng. | Điểm từ 0 đến 10 cùng nhãn severity. |
Dải điểm CVSS
- CVSS v2.0 và v3.0 dùng cùng thang điểm 0–10 nhưng cách gắn nhãn severity khác nhau.
- Có thể tra điểm CVSS trong vulnerability database hoặc sử dụng CVSS calculator khi chưa có CVE.
False positive
- Scanner báo có lỗ hổng nhưng mục tiêu thực tế không vulnerable.
- Nguyên nhân có thể là nhận diện sai dịch vụ hoặc phiên bản.
- Một cấu hình cụ thể có thể khiến lỗ hổng không thể khai thác.
- Bản vá có thể được backport vào phiên bản phần mềm cũ nhưng số phiên bản không đổi.
False negative
- Mục tiêu có lỗ hổng nhưng scanner không phát hiện.
- Có thể xảy ra khi dịch vụ/phiên bản bị nhận diện sai, host bị bỏ qua hoặc probe bị lọc/rate-limit.
- Một scanner không được cấu hình với đúng plugin hoặc loại kiểm tra cũng có thể bỏ sót lỗ hổng.
Manual scan và automated scan
| Phương pháp | Ưu điểm | Hạn chế |
|---|---|---|
| Manual | Có thể phát hiện lỗ hổng logic, phức tạp và phụ thuộc bối cảnh. | Tốn thời gian, nguồn lực; dễ bỏ sót chi tiết khi dữ liệu quá lớn. |
| Automated | Nhanh chóng phát hiện low-hanging fruit và mở rộng độ bao phủ trên mạng lớn. | Có false positive/negative; phụ thuộc cấu hình và khả năng của scanner. |
Tự kiểm tra khái niệm
Sai nền tảng
Scanner báo lỗ hổng Linux trên máy Windows. Đây là false positive.
Sai phiên bản
Scanner thấy phiên bản FTP không có lỗ hổng nhưng dịch vụ thật sự vulnerable. Đây là false negative.
Bốn loại scan cần phân biệt
External
Thực hiện từ internet hoặc góc nhìn bên ngoài perimeter.
Internal
Thực hiện khi có quyền truy cập mạng nội bộ hoặc qua VPN.
Unauthenticated
Không cung cấp credential; tập trung vào dịch vụ có thể truy cập từ xa.
Authenticated
Đăng nhập bằng credential hợp lệ để kiểm tra local package, patch và cấu hình.
External vulnerability scan
- Phân tích các hệ thống có thể truy cập từ internet.
- Mục tiêu thường là web application, hệ thống trong DMZ và public-facing service.
- Khách hàng có thể cung cấp danh sách IP hoặc yêu cầu tự lập bản đồ toàn bộ hạ tầng công khai.
- Scan bên ngoài đôi khi phát hiện các hệ thống nhạy cảm bị phơi bày mà tổ chức không biết.
Internal vulnerability scan
- Scanner có quyền truy cập một phần hoặc toàn bộ mạng nội bộ.
- Kết nối thường thông qua VPN hoặc thực hiện trực tiếp tại địa điểm khách hàng.
- Mục tiêu là đánh giá trạng thái bảo mật nội bộ và các vector attacker có thể dùng sau khi vượt perimeter.
- Vị trí đặt scanner trong mạng ảnh hưởng trực tiếp đến host và service có thể nhìn thấy.
Unauthenticated scan
- Không cung cấp thông tin đăng nhập.
- Lập bản đồ open port và dịch vụ có thể truy cập từ xa.
- Đối chiếu service/version với vulnerability database để hình thành attack surface.
- Không cung cấp đầy đủ thông tin về missing patch, phần mềm cũ hoặc local misconfiguration.
Authenticated scan
- Scanner đăng nhập vào mục tiêu bằng credential hợp lệ.
- Thường dùng tài khoản có quyền cao để tăng khả năng quan sát.
- Kiểm tra vulnerable package, missing patch và configuration vulnerability.
- Thường cho kết quả chi tiết hơn và giảm false positive so với scan không xác thực.
So sánh nhanh
| Câu hỏi | Lựa chọn phù hợp |
|---|---|
| Muốn biết perimeter công khai nhìn từ internet? | External + unauthenticated |
| Muốn biết attacker làm gì sau khi vào mạng nội bộ? | Internal scan |
| Muốn kiểm tra tất cả bản vá trên Linux? | Authenticated scan |
| Muốn kiểm tra public service mà không có credential? | Unauthenticated scan |
Scan duration
- Thời lượng phụ thuộc loại scan và số lượng mục tiêu.
- External scan qua internet thường lâu hơn do nhiều hop và intermediate system.
- Danh sách IP lớn cần được lập kế hoạch phù hợp với thời gian engagement.
- Bật UDP scanning, nhiều plugin hoặc nhiều target song song có thể làm thời lượng tăng mạnh.
Target visibility — external
- Không nên chỉ nhập IP và bấm Start mà chưa xác nhận khả năng truy cập.
- Firewall và cơ chế hạn chế truy cập có thể làm hệ thống hoặc dịch vụ không thể nhìn thấy.
- Ví dụ của tài liệu: hệ thống ở nhiều quốc gia chỉ cho phép IP trong cùng quốc gia truy cập; scanner ở vị trí hiện tại chỉ nhìn thấy một phần hạ tầng.
Target visibility — internal
- Vị trí của scanner trong mạng quyết định subnet và hệ thống có thể tiếp cận.
- Firewall, IPS, router và thiết bị trung gian có thể lọc hoặc thay đổi traffic.
- Nếu ICMP Host Discovery không được forward, scanner có thể đánh dấu mục tiêu là offline.
- Khi scan subnet khác, phải xác nhận routing, ACL và các cơ chế kiểm soát trung gian.
Rate limiting
- Rate limiting giới hạn throughput, packet count hoặc connection count.
- Khi vượt ngưỡng, khả năng mạng của máy scanner có thể bị hạn chế mạnh.
- Host discovery và service detection bị làm chậm có thể khiến scanner bỏ sót host hoặc service.
- Scanner thường cho phép điều chỉnh delay, timeout và số kết nối song song.
Tác động lên mạng và hệ thống
Network impact
Quét nhiều target song song có thể tạo lượng traffic lớn và làm mạng khó sử dụng.
System stability
Một số probe hoặc plugin có thể gây mất ổn định dịch vụ hoặc hệ thống.
Tuning
Giảm parallel scan, giảm tốc độ và chỉ bật các kiểm tra cần thiết.
Checklist trước khi scan
- Xác nhận scope, target list và vị trí scanner.
- Xác nhận VPN, routing, firewall rule và whitelist cần thiết.
- Ước lượng scan duration và khung thời gian được phép.
- Chọn TCP/UDP, port range, plugin và mức độ intrusive phù hợp.
- Giới hạn parallelism, timeout và tốc độ nếu môi trường nhạy cảm.
- Chuẩn bị cách tạm dừng hoặc dừng scan khi xuất hiện sự cố.
Mục tiêu học tập với Nessus
- Cài đặt Nessus.
- Hiểu các thành phần chính.
- Cấu hình và thực hiện vulnerability scan.
- Đọc và làm việc với kết quả.
- Cung cấp credential cho authenticated scan.
- Hiểu cơ bản về Nessus plugin.
Nessus Essentials và Professional
| Phiên bản | Đặc điểm trong tài liệu |
|---|---|
| Nessus Essentials | Miễn phí; giới hạn 16 địa chỉ IP; một số template và chức năng không có. |
| Nessus Professional | Phiên bản thương mại với nhiều khả năng và phạm vi sử dụng hơn. |
Yêu cầu và nền tảng
- Cài trên Kali Linux VM dùng để kết nối môi trường lab PEN-200.
- Cần internet và business email để tải xuống, đăng ký và kích hoạt.
- Tenable khuyến nghị tối thiểu 4 CPU core và 8 GB RAM.
- Đối với bài thực hành, tài liệu cho biết 2 CPU core và 4 GB RAM là đủ.
- Nessus không có trong Kali repository; phải cài thủ công từ file
.deb.
Tải Nessus cho Kali
- Chọn nền tảng Linux - Debian - amd64 cho Kali x64.
- Máy Apple dùng chip ARM có thể chọn installer Linux - Ubuntu - arch64 cho Kali VM.
Xác minh SHA256 checksum
Checksum và tên file phải khớp với phiên bản installer đã tải.
kali@kali:~$
cd ~/Downloads
kali@kali:~/Downloads$
echo "4987776fef98bb2a72515abc0529e90572778b1d7aeeb1939179ff1f4de1440d Nessus-10.5.0-debian10_amd64.deb" > sha256sum_nessus
kali@kali:~/Downloads$
sha256sum -c sha256sum_nessus
Nessus-10.5.0-debian10_amd64.deb: OKOK cho biết checksum khớp. Nếu dùng phiên bản Nessus mới hơn, phải cập nhật chuỗi checksum và filename.Cài đặt gói Nessus
Sử dụng apt install với đường dẫn đến file .deb.
kali@kali:~/Downloads$
sudo apt install ./Nessus-10.5.0-debian10_amd64.deb
...
Preparing to unpack .../Nessus-10.5.0-debian10_amd64.deb ...
Unpacking nessus (10.5.0) ...
Setting up nessus (10.5.0) ...
...
Unpacking Nessus Scanner Core Components...
-
You can start Nessus Scanner by typing /bin/systemctl start nessusd.service
-
Then go to https://kali:8834/ to configure your scannernessusd.service và cổng cấu hình HTTPS 8834.Khởi động Nessus service
Sau khi cài đặt hoàn tất, khởi động service bằng systemctl.
kali@kali:~/Downloads$
sudo systemctl start nessusd.servicehttps://127.0.0.1:8834.Cảnh báo chứng chỉ tự ký
- Cảnh báo “unknown certificate issuer” là dự kiến vì Nessus dùng self-signed certificate.
- Trong lab, chọn Advanced… rồi Accept the Risk and Continue.
Pre-installation settings
- Nhấn Continue để bắt đầu cài đặt với cấu hình mặc định.
Chọn Nessus Essentials
- Chọn Register for Nessus Essentials rồi tiếp tục.
- Tài liệu gốc đánh số Figure 4 hai lần.
Yêu cầu activation code
- Nhập thông tin được yêu cầu và nhấn Register.
Kích hoạt Nessus
- Activation code được hiển thị sau bước đăng ký.
Tạo tài khoản Nessus cục bộ
- Tài liệu dùng username
adminvà yêu cầu password mạnh. - Credential này dùng để đăng nhập và bảo vệ kết quả vulnerability scan.
Tải và biên dịch plugin
- Nessus tải và compile toàn bộ plugin.
- Quá trình này có thể mất nhiều thời gian.
Checklist hoàn tất cài đặt
- Installer đã được xác minh checksum.
- Package Nessus đã cài thành công.
nessusd.serviceđang chạy.- Truy cập được
https://127.0.0.1:8834. - Nessus Essentials đã kích hoạt.
- Tài khoản cục bộ đã tạo và plugin đã tải xong.
Settings và thông tin hệ thống
- Nessus Essentials có hai tab chính: Scans và Settings.
- Settings cho phép cấu hình SMTP, giao diện, hành vi scan/log, security và performance.
- About hiển thị phiên bản, license và số host còn được phép scan.
Policy và template
- Policy là tập hợp tùy chọn cấu hình đã định nghĩa trước cho một Nessus scan.
- Policy đã lưu có thể được dùng như template cho scan mới.
- Scan Templates được chia thành ba nhóm: Discovery, Vulnerabilities và Compliance.
- Compliance và Mobile Device Scan chỉ có trong phiên bản enterprise theo tài liệu.
Các Nessus scan template
- Discovery có Host Discovery để tạo danh sách live host và open port.
- Vulnerabilities có template cho nhóm lỗ hổng, critical vulnerability, web application test và malware scan.
Ba template tổng quát
| Template | Đặc điểm |
|---|---|
| Basic Network Scan | Phần lớn setting được định nghĩa sẵn; quét nhiều loại lỗ hổng; được Nessus khuyến nghị. |
| Advanced Scan | Không có setting định nghĩa sẵn; phù hợp khi cần tùy biến hoàn toàn. |
| Advanced Dynamic Scan | Không có setting/recommendation sẵn; dùng dynamic plugin filter thay vì chọn plugin thủ công. |
Nessus plugin và NASL
- Nessus plugin là chương trình viết bằng Nessus Attack Scripting Language (NASL).
- Plugin chứa thông tin và thuật toán để phát hiện lỗ hổng.
- Mỗi plugin thuộc một plugin family tương ứng với một nhóm use case.
- Dynamic plugin filter cho phép chọn plugin dựa trên CVE, family hoặc tiêu chí khác.
Workflow của Basic Network Scan
Tạo scan mới
- Trong tab Scans, nhấn New Scan.
Chọn Basic Network Scan
- Basic Network Scan đã có phần lớn setting được cấu hình sẵn.
- Setting mặc định vẫn phải được xem xét theo scope và môi trường.
Các nhóm setting
- Màn hình cấu hình gồm BASIC, DISCOVERY, ASSESSMENT, REPORT và ADVANCED.
Đặt tên và nhập target
- Hai trường bắt buộc: tên scan và danh sách target.
- Ví dụ trong tài liệu: POULTRY, JENKINS, WK01 và SAMBA.
Định dạng target được hỗ trợ
Một địa chỉ IP
Quét một host cụ thể.
IP range
Quét một dải địa chỉ IP.
FQDN
Có thể nhập FQDN phân tách bằng dấu phẩy.
IP list
Có thể cung cấp danh sách địa chỉ IP.
Chuyển Discovery sang Custom
- Setting mặc định quét một danh sách common port.
- Ví dụ chỉ cần TCP 80 và 443 nên phải chọn Custom.
Giới hạn port range
- Đặt Port scan range thành
80,443. - Bật Consider unscanned ports as closed vì không quan tâm các cổng khác.
UDP scanning không bật mặc định
- Basic Network Scan mặc định không quét UDP.
- Nếu cần UDP, phải bật thủ công.
- Không bật UDP có thể bỏ lỡ thông tin quan trọng về UDP service.
- Bật UDP làm scan lâu hơn nhiều vì khó phân biệt open và filtered port.
Tắt Host Discovery trong ví dụ
- Vì biết chắc host đang hoạt động, tài liệu tắt Ping the remote host.
- Mục tiêu là tiết kiệm thời gian và giảm độ ồn.
Scan này là unauthenticated
- Không cấu hình credential nên scan chạy ở chế độ unauthenticated.
- Không thay đổi setting ASSESSMENT mặc định nên Nessus không brute-force user credential.
- Dù không brute force, scan nhiều host vẫn tạo nhiều network traffic và rất dễ bị phát hiện.
Launch scan
- Nhấn mũi tên cạnh Save rồi chọn Launch.
Trạng thái Running
- Scan xuất hiện trong My Scans với trạng thái Running.
- Có thể pause hoặc stop khi cần.
Trạng thái Completed
- Khi scan kết thúc, trạng thái chuyển thành Completed.
Checklist cấu hình Basic Network Scan
- Tên scan và target list chính xác.
- Port range phù hợp với mục tiêu kiểm thử.
- Quyết định rõ có bật UDP hay không.
- Host Discovery phù hợp với visibility thực tế.
- Credential có hoặc không có được xác định rõ.
- Assessment option không vượt quá phạm vi được phép.
- Đã dự kiến network traffic và khả năng bị phát hiện.
Lưu ý trước khi so sánh kết quả
- VM group của phần này khác phần trước trong tài liệu lab.
- Nessus và plugin được cập nhật liên tục nên kết quả có thể khác nhẹ.
- Tên nhóm, số finding và thông tin hiển thị có thể thay đổi giữa các phiên bản.
Results dashboard
- Trang Hosts liệt kê tất cả host đã quét và trực quan hóa dữ liệu vulnerability.
- Có thể nhìn nhanh trạng thái bảo mật của từng hệ thống và phân bố finding toàn bộ target.
Xem finding theo host
- Ví dụ chọn host
192.168.50.124. - Cột Severity cho chỉ báo nhanh; Count cho biết số finding trong nhóm.
MIXED severity và grouping
- Nessus dùng severity MIXED khi một dòng đại diện cho nhóm finding.
- Cột Count cho biết nhóm đó có bao nhiêu finding.
- Nhấn vào nhóm để hiển thị từng finding bên trong.
- Family cho biết plugin family hoặc ngữ cảnh kiểm tra, ví dụ Web Servers.
Mở nhóm Apache Httpd
- Ví dụ nhóm Apache Httpd (Multiple Issues) chứa nhiều finding riêng biệt.
- Mở nhóm trước khi đánh giá severity và remediation.
Chi tiết một finding
- Ví dụ: Apache 2.4.49 < 2.4.51 Path Traversal Vulnerability.
- Trang chi tiết có thông tin vulnerability, plugin, risk, exploit status và reference.
Đọc một finding theo lớp
VPR Top Threats
- VPR Top Threats ưu tiên tối đa mười vulnerability quan trọng nhất của scan.
- Ví dụ chỉ có sáu vì scan không tìm thấy nhiều hơn với cấu hình đã dùng.
- Một số phiên bản có thể không hiển thị tab này, nhưng từng finding vẫn có VPR.
VPR và CVSS
| Chỉ số | Vai trò khi phân tích |
|---|---|
| CVSS | Đánh giá đặc điểm kỹ thuật và severity của vulnerability. |
| VPR | Tenable dùng để ưu tiên finding dựa trên dữ liệu và bối cảnh threat của sản phẩm. |
Remediations
- Plugin thường kèm remediation strategy hoặc thông tin giảm thiểu.
- Đọc remediation cùng bằng chứng và điều kiện ảnh hưởng, không chỉ sao chép nguyên văn.
History và Audit Trail
History
Liệt kê các lần scan sử dụng cùng cấu hình để xem hoặc so sánh kết quả trước đây.
Audit Trail
Giúp phân tích vì sao một plugin hành xử theo cách nhất định và hỗ trợ giảm false negative.
Export
Report dashboard cho phép đổi cấu hình, chạy lại scan, xuất dữ liệu và tạo report.
Tạo report
- Nhấn Report trong dashboard của scan.
Chọn report template và format
- Ví dụ dùng Detailed Vulnerabilities By Host.
- Chọn PDF và nhấn Generate Report.
- Có thể dùng Complete List of Vulnerabilities by Host để tạo bản tóm tắt.
Workflow phân tích sau scan
Vì sao dùng authenticated scan?
- Cung cấp thông tin chi tiết hơn về local package, missing patch và cấu hình.
- Giảm số false positive so với chỉ dựa trên service/version từ xa.
- Tạo nhiều network traffic và nhiều dấu vết trên host như log entry hoặc AV notification.
- Ví dụ của tài liệu thực hiện trên target DESKTOP.
Tạo scan mới
- Bắt đầu bằng New Scan.
Chọn Credentialed Patch Audit
- Template được cấu hình sẵn để chạy local security checks.
- Không thực hiện regular external vulnerability check như Basic Network Scan.
- Kiểm tra missing OS patch và outdated application có thể liên quan privilege escalation.
Đặt tên và target
- Cấu hình tên scan và đặt mục tiêu là DESKTOP.
SSH và sudo credential
- Credentials → Host → SSH; Authentication method: password.
- Lab example: username
offsec, passwordlab. - Elevate privileges with:
sudo; sudo userroot; passwordlab.
Authentication mechanism theo nền tảng
| Target | Cơ chế được tài liệu nêu |
|---|---|
| Linux / macOS | SSH |
| Windows | Thường dùng SMB và WMI; cũng có thể dùng SSH trong một số trường hợp. |
Điều kiện để có kết quả có ý nghĩa
- Firewall không được chặn kết nối từ scanner đến dịch vụ xác thực.
- AV có thể coi scan là malicious, ngắt kết nối hoặc làm kết quả vô dụng.
- Có thể cần thêm exception cho scanner hoặc tạm thời vô hiệu hóa AV theo thỏa thuận.
- Trên Windows, UAC có thể khiến credentialed check không có đủ quyền.
- Cần cấu hình UAC phù hợp hoặc tạm thời tắt theo hướng dẫn của Tenable và chính sách engagement.
Tắt grouping của kết quả
- Trong Vulnerabilities page, nhấn biểu tượng bánh răng và chọn Disable Groups.
Kết quả authenticated scan
- Sau khi tắt grouping, mỗi finding được liệt kê riêng.
- Authenticated scan hiển thị các local security check mà unauthenticated scan không thấy.
Plugin family trong local checks
- Plugin family nhóm các plugin kiểm tra cùng ngữ cảnh.
- Có family riêng cho database, firewall, web server và nhiều nền tảng khác.
- Ubuntu Local Security Checks chứa nhiều plugin kiểm tra local vulnerability và missing patch trên Ubuntu.
- Cột Name cung cấp Ubuntu version bị ảnh hưởng, mô tả ngắn và patch number.
Vulnerability của ứng dụng cục bộ
- Danh sách còn có dữ liệu về ứng dụng cài trên host như Firefox và cURL.
- Đây là loại visibility mà scan không xác thực thường không cung cấp.
Checklist authenticated scan
- Template phù hợp với mục tiêu local check.
- Credential hợp lệ và có mức quyền cần thiết.
- Cơ chế SSH/SMB/WMI hoạt động từ scanner.
- Firewall, AV và UAC đã được xử lý theo phê duyệt.
- Credentialed checks thành công; không chỉ “scan completed”.
- Finding được xem riêng và xác minh khi cần.
Khi nào cần chạy plugin có chọn lọc?
- Xác minh lại một finding đã có.
- Nhanh chóng tìm toàn bộ target có nguy cơ bởi một vulnerability cụ thể.
- Giảm thời lượng và độ ồn so với chạy một template rộng.
- Tập trung vào một CVE hoặc plugin family phù hợp với hệ điều hành.
Use case trong tài liệu
CVE-2021-3156
Lỗ hổng local privilege escalation.
Target DESKTOP
Kiểm tra có xác thực trên Ubuntu Linux.
Dynamic plugin filter
Lọc plugin theo CVE và Ubuntu Local Security Checks.
Tạo scan cho plugin filtering
- Bắt đầu lại với New Scan.
Chọn Advanced Dynamic Scan
- Template này dùng dynamic plugin filter thay vì bật/tắt plugin thủ công.
Cấu hình tên, target và credential
- Đặt tên và target.
- Cung cấp lại SSH và sudo credential như authenticated scan trước.
Lọc theo CVE
- Dynamic Plugins → chọn CVE.
- Nhập
CVE-2021-3156và nhấn Preview Plugins. - Quá trình preview có thể mất vài phút.
Xem plugin family phù hợp
- Preview Plugins trả về các plugin family bao phủ CVE đã chọn.
Thêm filter thứ hai
- Nhấn nút dấu cộng cạnh filter đầu tiên.
Kết hợp CVE và Plugin Family
- Filter 1: CVE =
CVE-2021-3156. - Filter 2: Plugin Family = Ubuntu Local Security Checks.
Khác biệt giữa phiên bản Nessus
- Một số phiên bản có thể không hiển thị giá trị trong dropdown Plugin Family.
- Nếu xảy ra, tài liệu hướng dẫn bỏ filter thứ hai và tiếp tục chỉ với CVE filter.
- Sau khi điều chỉnh, chạy lại Preview Plugins để xem danh sách thực tế.
Thông tin plugin cho CVE-2021-3156
- Nessus hiển thị Ubuntu version bị ảnh hưởng, mô tả, patch number và Plugin ID.
Chi tiết Plugin 145463
- Nhấn vào plugin để xem thông tin chi tiết trước khi chạy scan.
Finding của Advanced Dynamic Scan
- Kết quả có một finding severity HIGH từ plugin đã chọn.
Chi tiết finding đã lọc
- Finding xác nhận target được plugin đánh dấu vulnerable với CVE-2021-3156.
- Plugin output nói rõ Nessus chỉ dựa trên reported version và không khai thác để xác nhận.
Version-based finding phải được xác minh
- Plugin có thể chỉ so sánh reported version với dữ liệu vulnerability.
- Scanner có thể không kiểm tra điều kiện khai thác thực tế.
- Backporting, cấu hình hoặc mitigation có thể làm finding không exploitable.
- Trong assessment, phải xác minh finding quan trọng bằng phương pháp phù hợp và được phép.
Mục tiêu học tập với Nmap NSE
- Hiểu cơ bản về Nmap Scripting Engine (NSE).
- Thực hiện lightweight vulnerability scan bằng Nmap.
- Làm việc với custom NSE script.
NSE mở rộng Nmap như thế nào?
- Thêm chức năng cho vulnerability detection, brute forcing và network discovery.
- Mở rộng version detection và information gathering.
- Script được phân nhóm bằng category; một script có thể thuộc nhiều category.
- Phần này tập trung vào category
vuln.
Safe và intrusive
| Category | Ý nghĩa trong tài liệu |
|---|---|
| safe | Không có khả năng gây tác động đến độ ổn định. |
| intrusive | Có thể làm crash service hoặc system. |
| vuln | Nhóm script dùng để phát hiện vulnerability. |
Liệt kê script thuộc category vuln
NSE script nằm tại /usr/share/nmap/scripts/; script.db là index của các script hiện có.
kali@kali:~$
cd /usr/share/nmap/scripts/
kali@kali:/usr/share/nmap/scripts$
cat script.db | grep "\"vuln\""
Entry { filename = "afp-path-vuln.nse", categories = { "exploit", "intrusive", "vuln", } }
Entry { filename = "broadcast-avahi-dos.nse", categories = { "broadcast", "dos", "intrusive", "vuln", } }
Entry { filename = "clamav-exec.nse", categories = { "exploit", "vuln", } }
Entry { filename = "distcc-cve2004-2687.nse", categories = { "exploit", "intrusive", "vuln", } }
Entry { filename = "dns-update.nse", categories = { "intrusive", "vuln", } }
...Tham số --script
--scriptquyết định NSE script nào được thực thi.- Đối số có thể là category, Boolean expression hoặc danh sách category phân tách bằng dấu phẩy.
- Có thể dùng tên đầy đủ, wildcard của script trong
script.db, hoặc absolute path tới script cụ thể. - Script vulners thuộc các category
safe,vulnvàexternal.
Chạy toàn bộ category vuln trên port 443
Kết hợp -sV để nhận diện dịch vụ, -p 443 để giới hạn cổng và --script "vuln" để chạy category vuln.
kali@kali:~$
sudo nmap -sV -p 443 --script "vuln" 192.168.50.124192.168.50.124.Kết quả Nmap và vulners
kali@kali:~$
sudo nmap -sV -p 443 --script "vuln" 192.168.50.124
[sudo] password for kali:
Starting Nmap 7.92 ( https://nmap.org )
...
PORT STATE SERVICE VERSION
443/tcp open http Apache httpd 2.4.49 ((Unix))
...
|
vulners:
|
cpe:/a:apache:http_server:2.4.49:
...
https://vulners.com/githubexploit/DF57E8F1-FE21-5EB9-8FC7-5F2EA267B09D *EXPLOIT*
|
CVE-2021-41773 4.3 https://vulners.com/cve/CVE-2021-41773
...
|_http-server-header: Apache/2.4.49 (Unix)
MAC Address: 00:0C:29:C7:81:EA (VMware)Cách đọc output của vulners
- Nmap trước hết phải nhận diện thành công service và version.
- vulners dùng thông tin đó để cung cấp vulnerability data liên quan.
- Output có CVE, CVSS score và URL để xem thêm thông tin.
- Proof of Concept được đánh dấu bằng
*EXPLOIT*. - Nếu service detection thất bại, vulners sẽ không cung cấp kết quả.
Giới hạn của quét theo phiên bản
- Một phiên bản khớp CVE chưa chắc đã exploitable trong cấu hình thực tế.
- Backported patch có thể làm số phiên bản trông cũ nhưng đã được sửa.
- Kết quả từ vulners nên được dùng để tạo hypothesis và chọn bước xác minh tiếp theo.
- Không sử dụng liên kết PoC một cách tự động hoặc ngoài hệ thống được phép.
Vì sao cần script cho một CVE cụ thể?
- vulners có thể trả về lượng dữ liệu rất lớn cho một phiên bản.
- Khi cần tìm một vulnerability cụ thể trên nhiều host, dedicated script giúp thu hẹp kết quả.
- Nhiều vulnerability hiện đại yêu cầu tự tích hợp NSE script.
- Ví dụ của tài liệu tiếp tục với
CVE-2021-41773.
Tìm NSE script cho CVE cụ thể
- Tài liệu gợi ý tìm với từ khóa
CVE-2021-41773 nse. - Một kết quả GitHub cung cấp script kiểm tra vulnerability này.
Sao chép script và cập nhật script.db
Lưu script theo naming convention tại /usr/share/nmap/scripts/http-vuln-cve2021-41773.nse rồi cập nhật database.
kali@kali:~$
sudo cp /home/kali/Downloads/http-vuln-cve-2021-41773.nse /usr/share/nmap/scripts/http-vuln-cve2021-41773.nse
kali@kali:~$
sudo nmap --script-updatedb
[sudo] password for kali:
Starting Nmap 7.92 ( https://nmap.org )
NSE: Updating rule database.
NSE: Script Database updated successfully.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.54 secondsScript Database updated successfully xác nhận index đã được cập nhật.Chạy script CVE-2021-41773
kali@kali:~$
sudo nmap -sV -p 443 --script "http-vuln-cve2021-41773" 192.168.50.124
Starting Nmap 7.92 ( https://nmap.org )
Host is up (0.00069s latency).
PORT STATE SERVICE VERSION
443/tcp open http Apache httpd 2.4.49 ((Unix))
|
http-vuln-cve2021-41773:
| VULNERABLE:
| Path traversal and file disclosure vulnerability in Apache HTTP Server 2.4.49
|
State: VULNERABLE
| A flaw was found in a change made to path normalization in Apache HTTP Server 2.4.49. An attacker could use a path traversal attack to map URLs to files outside the expected document root. If files outside of the document root are not protected by "require all denied" these requests can succeed. Additionally this flaw could leak the source of interpreted files like CGI scripts. This issue is known to be exploited in the wild. This issue only affects Apache 2.4.49 and not earlier versions.
|
| Disclosure date: 2021-10-05
| Check results:
|
| Verify arbitrary file read: https://192.168.50.124:443/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
...
Nmap done: 1 IP address (1 host up) scanned in 6.86 secondsState: VULNERABLE và cung cấp URL dùng để kiểm tra arbitrary file read trong lab.Đọc kết quả dedicated script
- Service được nhận diện là Apache httpd 2.4.49 trên TCP 443.
- Script mô tả path traversal và file disclosure vulnerability.
- Output ghi rõ disclosure date và check result.
- URL xác minh trong listing là dữ liệu lab của tài liệu và chỉ dùng trong môi trường được phép.
An toàn khi dùng script bên thứ ba
- NSE category cho biết script safe hay intrusive nhưng không thay thế source review.
- Script tải từ Internet có thể chứa mã độc và trao quyền truy cập hệ thống cho attacker.
- Phải xác minh nguồn, đọc code và hiểu hành vi trước khi chạy.
- Chỉ cài script cần thiết và giữ lại bản gốc để phục vụ kiểm tra/audit.
Vai trò của Nmap trong vulnerability scanning
| Tình huống | Cách dùng Nmap NSE |
|---|---|
| Không có full-fledged scanner | Thực hiện lightweight vulnerability scan. |
| Cần kiểm tra nhanh một CVE | Chạy dedicated NSE script trên target/port phù hợp. |
| Cần xác minh finding từ công cụ khác | Dùng NSE như một nguồn bằng chứng bổ sung. |
| Cần quét rộng và báo cáo chuyên sâu | Nmap không thay thế hoàn toàn Nessus hoặc scanner chuyên dụng. |
Nessus và Nmap bổ trợ nhau
| Công cụ | Điểm mạnh trong chương | Điểm cần lưu ý |
|---|---|---|
| Nessus | Template, plugin rộng, authenticated scan, dashboard, remediation và report. | Cần tuning; tạo nhiều traffic/noise; finding vẫn cần xác minh. |
| Nmap NSE | Nhanh, linh hoạt, dùng category hoặc script cụ thể. | Không phải scanner truyền thống; phụ thuộc service detection và độ an toàn của script. |
Vulnerability scanning không kết thúc ở nút Scan
Khi nào cần quay lại enumeration?
- Giải thích bổ sung: Scanner báo rất ít finding nhưng host/service inventory chưa đầy đủ.
- Giải thích bổ sung: Kết quả khác biệt lớn giữa Nmap, Nessus và quan sát thủ công.
- Giải thích bổ sung: Host bị đánh dấu offline dù có dấu hiệu đang hoạt động.
- Giải thích bổ sung: Service detection không thành công nên vulners không có dữ liệu.
- Giải thích bổ sung: Rate limiting, firewall hoặc vị trí mạng làm giảm visibility.
Thông tin cần ghi vào notes
- Giải thích bổ sung: Thời gian scan, scanner IP, target list và vị trí mạng.
- Giải thích bổ sung: Template, port range, TCP/UDP, Host Discovery và credential mode.
- Giải thích bổ sung: Plugin/CVE filter, plugin ID và phiên bản plugin nếu có.
- Giải thích bổ sung: Finding, evidence, severity, VPR/CVSS và trạng thái xác minh.
- Giải thích bổ sung: False positive/negative đã phát hiện và nguyên nhân.
- Giải thích bổ sung: Mọi tác động, lỗi, timeout, rate limiting hoặc thay đổi cấu hình.
Sai lầm thường làm mất thời gian
Dùng setting mặc định
Không điều chỉnh theo scope, target và thời gian.
Tin tuyệt đối vào version
Không xem backporting, cấu hình và plugin output.
Bỏ qua visibility
Không kiểm tra firewall, VPN, routing hoặc Host Discovery.
Quét quá rộng
Bật UDP/plugin/parallelism không cần thiết.
Không xác minh
Đưa finding vào report trước khi kiểm tra evidence.
Chạy script lạ
Không review custom NSE script tải từ Internet.
Checklist tự đánh giá
- Tôi có thể mô tả bốn bước cơ bản của vulnerability scanner.
- Tôi phân biệt được external/internal và authenticated/unauthenticated scan.
- Tôi hiểu false positive, false negative và backporting.
- Tôi biết cấu hình Basic Network Scan và đọc dashboard Nessus.
- Tôi biết authenticated scan cần credential, firewall/AV/UAC phù hợp.
- Tôi có thể lọc Nessus plugin theo CVE.
- Tôi biết dùng NSE category, vulners và custom script an toàn.
- Tôi luôn xác minh finding trước khi kết luận.
Tổng kết Chương 7
- Vulnerability scanning giúp xây dựng baseline và mở rộng độ bao phủ của security assessment.
- Kết quả phụ thuộc vào visibility, cấu hình, plugin, credential và điều kiện mạng.
- Nessus cung cấp workflow đầy đủ từ scan đến report; Nmap NSE phù hợp cho kiểm tra nhẹ hoặc một CVE cụ thể.
- Mọi kết quả tự động đều cần phân tích và xác minh thủ công.
- Scanner có thể gây tác động đến mạng hoặc target; luôn thực hiện thận trọng trong phạm vi được phép.
Tiếp tục học PWK / OSCP bằng tiếng Việt
Sách, video và tài liệu tiếng Việt hỗ trợ học PWK / OSCP
Xem các tài nguyên học tập, bài giảng và nội dung bổ trợ được xây dựng cho quá trình học có hệ thống.
security365.vn/pwk-oscp/