Nmap - TryHackMe

2025. 10. 31. 16:11·

Labs


Task


Task 1: Deploy

Nhấn nút màu xanh lá để triển khai (deploy) máy!

Lưu ý: Máy này chỉ dùng cho mục đích quét. Bạn không cần đăng nhập vào máy hoặc khai thác lỗ hổng để truy cập.
Nếu bạn dùng TryHackMe AttackBox, bạn cần triển khai nó riêng. Nhấp nút Start AttackBox ở góc trên bên phải để khởi chạy.


Task 2: Introduction

Khi nói đến hacking, kiến thức là sức mạnh. Bạn biết càng nhiều về hệ thống hay mạng mục tiêu, bạn sẽ có càng nhiều phương án. Vì vậy, bắt buộc phải enumeration (thăm dò/ghi nhận thông tin) thật kỹ trước khi thử khai thác bất kỳ lỗ hổng nào.

Giả sử ta được giao một (hoặc nhiều) địa chỉ IP để audit bảo mật. Trước khi làm gì khác, ta cần hình dung “bức tranh tổng thể” của mục tiêu. Tức là phải xác định những dịch vụ nào đang chạy trên các máy đó. Ví dụ: có máy chạy webserver, máy khác là Windows Active Directory Domain Controller. Bước đầu để “vẽ bản đồ” tổng thể này gọi là quét cổng (port scanning). Khi một máy tính chạy dịch vụ mạng, nó mở một “cổng” (port) để nhận kết nối. Port là cần thiết để thực hiện nhiều yêu cầu mạng đồng thời hoặc cung cấp nhiều dịch vụ cùng lúc. Chẳng hạn, khi bạn mở nhiều trang web trong trình duyệt, chương trình phải phân biệt tab nào ứng với trang nào; việc này được xử lý bằng cách dùng các cổng khác nhau trên máy bạn để kết nối tới các webserver từ xa. Tương tự, nếu một server chạy nhiều dịch vụ (ví dụ vừa HTTP vừa HTTPS), cần có cách điều hướng lưu lượng tới đúng dịch vụ – và port chính là lời giải. Kết nối mạng được thiết lập giữa hai cổng: một cổng lắng nghe (open/listening) trên server và một cổng ngẫu nhiên trên máy của bạn. Ví dụ, khi truy cập một trang web, máy bạn có thể mở cổng 49534 để kết nối tới cổng 443 của server.

Như ví dụ trên, sơ đồ mô tả việc bạn kết nối đến nhiều website cùng lúc. Máy của bạn mở các cổng số lớn khác nhau (được chọn ngẫu nhiên) và dùng mỗi cổng đó để trao đổi với từng server tương ứng.

Mỗi máy tính có tổng cộng 65535 cổng. Nhiều cổng trong số này đã “chuẩn hoá” cho các dịch vụ thông dụng. Ví dụ: dịch vụ web HTTP gần như luôn ở cổng 80; HTTPS ở cổng 443; Windows NetBIOS ở cổng 139 và SMB ở cổng 445. Tuy nhiên, đặc biệt trong môi trường CTF, không lạ khi các port chuẩn bị thay đổi, vì vậy càng cần enumeration kỹ lưỡng trên mục tiêu.

Nếu không biết server nào đang mở những cổng nào, chúng ta không thể hy vọng tấn công thành công. Do đó, luôn bắt đầu bằng một lượt quét cổng. Có nhiều cách để làm việc này – thường dùng công cụ nmap, cũng là trọng tâm của phòng lab/room này. Nmap có thể thực hiện nhiều kiểu quét cổng khác nhau – những kiểu phổ biến sẽ được giới thiệu ở các bài tiếp theo. Về lý thuyết cơ bản: nmap sẽ lần lượt “bắt tay” với từng cổng của mục tiêu. Tuỳ phản hồi của cổng, nmap xác định cổng mở (open), đóng (closed), hoặc bị lọc (filtered) (thường do firewall). Khi đã biết cổng nào mở, ta tiếp tục enumerate dịch vụ chạy trên từng cổng – thủ công hoặc (phổ biến hơn) vẫn dùng nmap.

Vậy tại sao là nmap? Ngắn gọn: vì nó là tiêu chuẩn ngành – chưa có công cụ quét cổng nào sánh kịp về tính năng (dù một số công cụ mới có tốc độ ngang ngửa). Nmap cực kỳ mạnh, lại còn engine scripting cho phép quét lỗ hổng, thậm chí đôi khi có thể thực hiện khai thác trực tiếp! (Nội dung này sẽ bàn kỹ ở các bài kế tiếp.)

Hiện tại, điều quan trọng là bạn nắm: port scanning là gì, vì sao cần thiết, và nmap là công cụ số một cho giai đoạn initial enumeration.

Trả lời câu hỏi


Task 3: Nmap Switches

Giống như hầu hết các công cụ pentest, nmap được chạy từ terminal. Có bản cho cả Windows và Linux. Trong phòng lab này giả định bạn dùng Linux; tuy nhiên, các switch sẽ giống nhau. Nmap được cài sẵn trong Kali Linux và TryHackMe Attack Box.

Bạn truy cập nmap bằng cách gõ nmap trong dòng lệnh terminal, theo sau là các “switch” (các đối số lệnh bảo chương trình thực hiện những tác vụ khác nhau) sẽ được đề cập bên dưới.

Những gì bạn cần là trợ giúp của nmap (mở bằng nmap -h) và/hoặc trang man của nmap (mở bằng man nmap). Với mỗi câu trả lời, hãy bao gồm đầy đủ các phần của switch trừ khi có chỉ dẫn khác — bao gồm cả dấu gạch ngang đầu (-).

Trả lời câu hỏi


Task 4:  Overview

Khi quét cổng với Nmap, có ba kiểu quét cơ bản:

  • TCP Connect Scan (-sT)
  • SYN “Half-open” Scan (-sS)
  • UDP Scan (-sU)

Ngoài ra còn một số kiểu quét ít phổ biến hơn (sẽ đề cập ngắn gọn):

  • TCP Null Scan (-sN)
  • TCP FIN Scan (-sF)
  • TCP Xmas Scan (-sX)

Hầu hết các kiểu trên (trừ UDP) dùng cho mục đích khá giống nhau, nhưng cơ chế hoạt động khác nhau. Vì vậy tuy ba kiểu đầu thường là “mặc định” trong đa số tình huống, bạn nên nhớ là vẫn có các kiểu quét khác tồn tại.

Về quét mạng (không chỉ cổng), ta cũng sẽ lướt qua ICMP/ping scanning — thường dùng lệnh “ping sweep” với -sn (trước đây là -sP) để phát hiện host đang hoạt động.


Task 5:  TCP Connect Scans

Bắt tay 3 bước (three-way handshake)

  1. Client gửi gói SYN →
  2. Server trả SYN/ACK →
  3. Client gửi ACK để hoàn tất kết nối.

Nmap -sT làm gì?
Nmap thử kết nối thực sự tới từng cổng bằng cách thực hiện đủ 3 bước trên. Dựa vào phản hồi, Nmap kết luận trạng thái cổng:

  • Open: Server trả SYN/ACK → Nmap đánh dấu open và gửi ACK hoàn tất bắt tay.
  • Closed: Theo RFC 9293, nếu không có dịch vụ lắng nghe, server trả RST khi nhận SYN → Nmap đánh dấu closed.
  • Filtered: Firewall drop gói (không phản hồi) → Nmap không nhận gì, suy ra bị filtered (có tường lửa chặn).

Lưu ý: Firewall có thể cấu hình trả RST (ví dụ iptables:
iptables -I INPUT -p tcp --dport <port> -j REJECT --reject-with tcp-reset)
Khi đó nhìn từ Nmap sẽ giống closed, làm bạn khó phân biệt firewall hay dịch vụ thật sự đóng.

Ưu / nhược điểm của -sT

  • Ưu:
    • Hoạt động không cần quyền root (dùng system call connect() của OS).
    • Ổn định, tương thích cao.
  • Nhược:
    • “Ồn” hơn, vì hoàn tất kết nối → dễ bị log trên server (so với -sS “half-open”).
    • Dễ bị firewall đánh lừa bằng RST như trên.

Ví dụ lệnh hay dùng

  • Quét TCP connect các cổng thường gặp:
    nmap -sT <IP>
  • Quét toàn bộ 1–65535:
    nmap -sT -p- <IP>
  • Tăng tốc, bớt DNS, chi tiết hơn:
    nmap -sT -p- -T4 -n -vv <IP>
  • Kết hợp phát hiện dịch vụ/phiên bản sau khi thấy cổng mở:
    nmap -sT -sV <IP>

So nhanh với -sS (SYN/half-open)

  • -sS cần root (gửi gói thô), không hoàn tất bắt tay → ít bị log hơn.
  • -sT không cần root, nhưng hoàn tất bắt tay → dễ bị phát hiện hơn.

Bạn chỉ cần nhớ: -sT = kết nối đầy đủ; SYN/ACK → open, RST → closed, im lặng → filtered.

Trả lời câu hỏi


Task 6: SYN Scans

Cũng như các lần quét TCP, các lần quét SYN (-sS) được dùng để quét dải cổng TCP của một (hoặc nhiều) mục tiêu; tuy nhiên, hai kiểu quét này hoạt động hơi khác nhau. Quét SYN đôi khi còn được gọi là quét “Half-open” (bán mở) hoặc quét “Stealth” (tàng hình).

Trong khi quét TCP thực hiện đầy đủ bắt tay ba bước với mục tiêu, quét SYN sẽ gửi lại một gói TCP RST sau khi nhận SYN/ACK từ máy chủ (việc này ngăn máy chủ tiếp tục cố gắng thiết lập kết nối). Nói cách khác, trình tự khi quét một cổng mở trông như sau:

[trình tự như mô tả ở trên – SYN → SYN/ACK → RST]

Điều này mang lại nhiều lợi thế cho chúng ta với tư cách là hacker:

  • Nó có thể được dùng để vượt qua các hệ thống phát hiện xâm nhập (IDS) cũ, vốn thường chỉ tìm dấu hiệu của bắt tay ba bước đầy đủ. Điều này thường không còn đúng với các giải pháp IDS hiện đại; vì lý do đó, quét SYN vẫn thường được gọi là quét “stealth”.
  • Quét SYN thường không bị các ứng dụng đang lắng nghe trên cổng mở ghi log, vì thông lệ là chỉ ghi log một kết nối sau khi nó được thiết lập hoàn toàn. Lần nữa, điều này củng cố ý niệm quét SYN là “tàng hình”.
  • Do không phải bận hoàn tất (và ngắt) bắt tay ba bước cho mọi cổng, quét SYN nhanh hơn đáng kể so với quét TCP Connect tiêu chuẩn.

Tuy vậy, quét SYN cũng có một vài nhược điểm:

  • Trên Linux, chúng cần quyền sudo[1] để hoạt động đúng. Lý do là quét SYN cần khả năng tạo gói thô (raw packets) (trái ngược với bắt tay TCP đầy đủ), và theo mặc định chỉ người dùng root mới có đặc quyền này.
  • Một số dịch vụ không ổn định đôi khi có thể bị sập bởi quét SYN, điều này có thể gây rắc rối nếu khách hàng cung cấp môi trường production để kiểm thử.

Tổng thể mà nói, lợi ích lớn hơn bất lợi.

Vì lý do này, quét SYN là kiểu quét mặc định của Nmap khi chạy với quyền sudo. Nếu chạy không có quyền sudo, Nmap sẽ mặc định quay lại quét TCP Connect mà chúng ta đã thấy ở bài trước.

Khi dùng quét SYN để nhận diện các cổng đóng và bị lọc, các quy tắc y hệt như với quét TCP Connect.

Nếu một cổng đóng, máy chủ sẽ phản hồi bằng một gói TCP RST. Nếu cổng bị tường lửa lọc, gói TCP SYN sẽ bị drop (loại bỏ) hoặc bị “giả mạo” bằng một phản hồi TCP reset.

Về khía cạnh này, hai kiểu quét là giống nhau: khác biệt lớn nằm ở cách chúng xử lý các cổng mở.

[1] Quét SYN cũng có thể hoạt động bằng cách cấp cho Nmap các capability CAP_NET_RAW, CAP_NET_ADMIN và CAP_NET_BIND_SERVICE; tuy nhiên, cách này có thể khiến nhiều NSE scripts không chạy đúng.

Trả lời câu hỏi


Task 7:  UDP Scans

Khác với TCP, các kết nối UDP là không trạng thái (stateless). Điều này có nghĩa là, thay vì khởi tạo kết nối bằng một quá trình “bắt tay” qua lại, các kết nối UDP dựa vào việc gửi các gói tin tới cổng đích và về cơ bản là hy vọng chúng đến nơi. Điều này khiến UDP rất phù hợp cho các kết nối ưu tiên tốc độ hơn chất lượng (ví dụ: chia sẻ video), nhưng việc thiếu xác nhận khiến UDP khó quét hơn đáng kể (và chậm hơn nhiều). Tuỳ chọn để quét UDP bằng Nmap là -sU.

Khi một gói được gửi tới cổng UDP mở, thông thường sẽ không có phản hồi. Khi điều này xảy ra, Nmap coi cổng đó là open|filtered. Nói cách khác, Nmap nghi ngờ cổng đang mở, nhưng cũng có thể là bị tường lửa lọc. Nếu Nmap nhận được phản hồi UDP (điều này rất hiếm), thì cổng sẽ được đánh dấu là open. Phổ biến hơn là không có phản hồi; trong trường hợp đó, yêu cầu sẽ được gửi lại lần thứ hai để kiểm tra. Nếu vẫn không có phản hồi, cổng được đánh dấu open|filtered và Nmap tiếp tục.

Khi một gói được gửi tới cổng UDP đóng, máy đích sẽ phản hồi bằng một gói ICMP (ping) chứa thông báo rằng cổng không thể truy cập (port unreachable). Điều này giúp xác định rõ các cổng đóng, Nmap ghi nhận và chuyển sang bước tiếp theo.

Do khó khăn trong việc xác định liệu một cổng UDP thực sự mở hay không, quét UDP thường rất chậm so với các kiểu quét TCP (cỡ 20 phút để quét 1000 cổng đầu với kết nối tốt). Vì lý do này, thực hành tốt thường là chạy Nmap với tuỳ chọn --top-ports <number>. Ví dụ, quét bằng:

nmap -sU --top-ports20 <target>

sẽ quét 20 cổng UDP được dùng phổ biến nhất, giúp thời gian quét chấp nhận được hơn.

Khi quét các cổng UDP, Nmap thường gửi yêu cầu rỗng hoàn toàn — chỉ là gói UDP thô. Tuy vậy, với các cổng thường do dịch vụ nổi tiếng sử dụng, Nmap sẽ thay vào đó gửi payload đặc thù theo giao thức, có khả năng kích thích phản hồi cao hơn, từ đó cho kết quả chính xác hơn.

Trả lời câu hỏi


Task 8:  NULL, FIN and Xmas

Các kiểu quét TCP NULL, FIN và Xmas ít được dùng hơn so với các kiểu đã bàn trước đó, vì vậy chúng ta sẽ không đi quá sâu. Cả ba kiểu này có liên quan chặt chẽ với nhau và chủ yếu được sử dụng vì (tương đối mà nói) chúng còn “tàng hình” hơn cả quét SYN “stealth”. Bắt đầu với quét NULL:

  • Đúng như tên gọi, quét NULL (-sN) là khi yêu cầu TCP được gửi đi không đặt bất kỳ cờ (flag) nào. Theo RFC, máy chủ đích sẽ phản hồi bằng một gói TCP RST nếu cổng đóng.

  • Quét FIN (-sF) hoạt động gần như tương tự; tuy nhiên, thay vì gửi gói hoàn toàn trống, yêu cầu sẽ được gửi với cờ FIN (thường dùng để đóng một kết nối đang hoạt động một cách “êm ái”). Một lần nữa, Nmap kỳ vọng nhận RST nếu cổng đóng.

  • Giống như hai kiểu trong nhóm này, quét Xmas (-sX) gửi một gói TCP không hợp lệ (malformed) và kỳ vọng phản hồi RST với các cổng đóng. Nó được gọi là “xmas scan” vì các cờ được đặt (PSH, URG và FIN) khiến nó trông như một cây thông Noel nhấp nháy khi xem gói tin trong Wireshark.

Phản hồi kỳ vọng cho cổng mở ở các kiểu quét này cũng giống hệt nhau, và rất giống với quét UDP: nếu cổng mở thì không có phản hồi đối với gói “malformed”. Đáng tiếc là (cũng như với cổng UDP mở), đó cũng là hành vi kỳ vọng nếu cổng được tường lửa bảo vệ; vì vậy quét NULL, FIN và Xmas sẽ chỉ có thể xác định cổng ở một trong ba trạng thái: open|filtered (mở|được lọc), closed (đóng) hoặc filtered (bị lọc). Nếu một cổng được xác định là filtered với một trong các kiểu quét này thì thường là do mục tiêu phản hồi bằng một gói ICMP unreachable.

Cũng đáng lưu ý rằng, dù RFC 793 quy định các host mạng phải phản hồi với các gói “malformed” bằng một gói TCP RST nếu cổng đóng, và không phản hồi nếu cổng mở; nhưng trên thực tế không phải lúc nào cũng vậy. Đặc biệt là Microsoft Windows (và nhiều thiết bị mạng Cisco) được biết là sẽ phản hồi RST đối với mọi gói TCP “malformed” — bất kể cổng thực sự mở hay không. Điều này dẫn đến việc tất cả cổng đều hiện ra là closed.

Nói như vậy, mục tiêu ở đây dĩ nhiên là né tường lửa. Nhiều tường lửa được cấu hình drop các gói TCP vào những cổng bị chặn nếu gói có cờ SYN (tức chặn yêu cầu khởi tạo kết nối mới). Bằng cách gửi các yêu cầu không chứa cờ SYN, ta có thể vượt qua kiểu tường lửa này. Tuy nhiên, đó là về mặt lý thuyết; hầu hết các giải pháp IDS hiện đại đã “biết tỏng” các kiểu quét này, vì vậy đừng trông đợi chúng hiệu quả 100% khi làm việc với hệ thống hiện đại.

Trả lời câu hỏi


Task 9:  ICMP Network Scanning

Khi lần đầu kết nối vào một mạng mục tiêu trong bài tập black box, mục tiêu đầu tiên của chúng ta là có được một “bản đồ” của cấu trúc mạng — nói cách khác, chúng ta muốn thấy địa chỉ IP nào có host đang hoạt động và địa chỉ nào thì không.

Một cách để làm điều này là dùng Nmap thực hiện cái gọi là “ping sweep”. Đúng như tên gọi: Nmap gửi một gói ICMP tới từng địa chỉ IP có thể trong mạng đã chỉ định. Khi nhận được phản hồi, Nmap đánh dấu địa chỉ IP đã phản hồi là “đang sống”. Vì những lý do sẽ thấy ở một bài sau, cách này không phải lúc nào cũng chính xác; tuy nhiên, nó có thể cung cấp một mức cơ sở nên đáng để đề cập.

Để thực hiện ping sweep, ta dùng tuỳ chọn -sn kết hợp với phạm vi IP, có thể chỉ định bằng dấu gạch ngang (-) hoặc theo CIDR. Ví dụ, ta có thể quét mạng 192.168.0.x bằng:

nmap -sn 192.168.0.1-254

hoặc

nmap -sn 192.168.0.0/24

Tuỳ chọn -sn bảo Nmap không quét cổng nào — buộc nó chủ yếu dựa vào các gói ICMP echo (hoặc ARP requests trên mạng nội bộ nếu chạy với sudo hoặc trực tiếp dưới quyền root) để nhận diện mục tiêu. Bên cạnh ICMP echo request, -sn cũng khiến Nmap gửi một gói TCP SYN tới cổng 443 của mục tiêu, cũng như một gói TCP ACK (hoặc TCP SYN nếu không chạy với quyền root) tới cổng 80 của mục tiêu.

Trả lời câu hỏi


Task 10:  Overview

Công cụ Nmap Scripting Engine (NSE) là một phần mở rộng cực kỳ mạnh mẽ của Nmap, giúp mở rộng đáng kể chức năng của nó. Các script NSE được viết bằng ngôn ngữ Lua, và có thể dùng cho nhiều việc: từ quét lỗ hổng cho tới tự động hóa khai thác. NSE đặc biệt hữu ích cho trinh sát (reconnaissance); tuy vậy, cũng đáng ghi nhớ rằng thư viện script của nó rất phong phú.

Có nhiều hạng mục (category) sẵn có. Một số hạng mục hữu ích gồm:

  • safe: Không ảnh hưởng tới mục tiêu
  • intrusive: Không an toàn; có khả năng ảnh hưởng tới mục tiêu
  • vuln: Quét tìm lỗ hổng
  • exploit: Cố gắng khai thác một lỗ hổng
  • auth: Cố gắng vượt qua bước xác thực của dịch vụ đang chạy (ví dụ: đăng nhập ẩn danh vào máy chủ FTP)
  • brute: Cố gắng bruteforce thông tin đăng nhập cho các dịch vụ đang chạy
  • discovery: Cố gắng truy vấn các dịch vụ đang chạy để lấy thêm thông tin về mạng (ví dụ: truy vấn một máy chủ SNMP)

Bạn có thể tìm danh sách đầy đủ hơn ở đây.

Trong bài tiếp theo, chúng ta sẽ xem cách tương tác với NSE và sử dụng các script trong các hạng mục này.

Trả lời câu hỏi


Task 11:  Working with the NSE

Trong Nhiệm vụ 3, chúng ta đã lướt rất nhanh qua tùy chọn --script để kích hoạt các script NSE thuộc hạng mục vuln bằng --script=vuln. Không có gì ngạc nhiên khi các hạng mục khác hoạt động y hệt. Nếu chạy lệnh --script=safe, thì mọi script safe phù hợp sẽ được chạy trên mục tiêu (Lưu ý: chỉ những script nhắm vào dịch vụ đang hoạt động mới được kích hoạt).

Để chạy một script cụ thể, chúng ta dùng --script=<tên-script>, ví dụ: --script=http-fileupload-exploiter.

Có thể chạy nhiều script cùng lúc theo cách này bằng cách ngăn cách bằng dấu phẩy, ví dụ:
--script=smb-enum-users,smb-enum-shares.

Một số script cần tham số (chẳng hạn thông tin đăng nhập nếu đang khai thác lỗ hổng yêu cầu xác thực). Các tham số này được cung cấp bằng tùy chọn --script-args của Nmap. Ví dụ với script http-put (dùng để upload tệp qua phương thức PUT). Script này nhận hai tham số: URL để tải tệp lên và đường dẫn tệp trên đĩa. Ví dụ:

nmap -p 80 --script http-put --script-args http-put.url='/dav/shell.php',http-put.file='./shell.php'

Lưu ý rằng các tham số được phân tách bằng dấu phẩy, và được gắn với đúng script bằng dấu chấm (tức là <tên-script>.<tên-tham-số>).

Danh sách đầy đủ các script và các tham số tương ứng (kèm ví dụ sử dụng) có thể tìm tại đây.

Các script Nmap có menu trợ giúp tích hợp, truy cập bằng:
nmap --script-help <tên-script>. Phần trợ giúp này thường không chi tiết bằng liên kết ở trên, tuy nhiên vẫn hữu ích khi làm việc cục bộ.

Trả lời câu hỏi


Task 12:  Searching for Scripts

Ok, vậy là chúng ta biết cách dùng các script trong Nmap, nhưng vẫn chưa biết cách tìm các script này.

Chúng ta có hai lựa chọn, lý tưởng nhất là dùng kết hợp cả hai. Thứ nhất là trang trên website Nmap (đã nhắc ở nhiệm vụ trước) liệt kê toàn bộ các script chính thức. Thứ hai là kho lưu trữ cục bộ trên máy tấn công của bạn. Nmap lưu script trên Linux tại /usr/share/nmap/scripts. Tất cả các script NSE được lưu mặc định trong thư mục này — đây là nơi Nmap tìm script khi bạn chỉ định.

Có hai cách để tìm các script đã cài. Một là dùng tệp /usr/share/nmap/scripts/script.db. Bất chấp phần mở rộng, đây không hẳn là “cơ sở dữ liệu” mà là một tệp văn bản có định dạng, chứa tên tệp và hạng mục (category) cho mỗi script sẵn có.

Nmap dùng tệp này để theo dõi (và sử dụng) các script cho Scripting Engine; tuy nhiên, chúng ta cũng có thể grep để tìm script. Ví dụ:

Cách thứ hai để tìm script đơn giản là dùng lệnh ls. Ví dụ, chúng ta có thể nhận kết quả tương tự như ảnh chụp màn hình trước đó bằng:

Lưu ý việc dùng dấu * (asterisk) ở hai đầu của từ khóa tìm kiếm.

Các kỹ thuật tương tự cũng có thể dùng để tìm theo hạng mục script. Ví dụ:

Cài đặt Script Mới

Chúng ta đã nói trước đó rằng website Nmap có danh sách script, vậy nếu một script trong số này thiếu ở thư mục scripts cục bộ thì sao? Chạy chuẩn:

sudo apt update&& sudo apt install nmap

thường sẽ khắc phục; tuy nhiên, cũng có thể cài thủ công bằng cách tải script từ Nmap:

sudo wget -O/usr/share/nmap/scripts/<script-name>.nse https://svn.nmap.org/nmap/scripts/<script-name>.nse

Sau đó bắt buộc phải chạy:

nmap --script-updatedb

để cập nhật tệp script.db nhằm đưa script mới tải vào danh mục.

Cũng đáng lưu ý rằng bạn sẽ cần lệnh “updatedb” tương tự nếu tự viết NSE script của mình rồi thêm vào Nmap — một nhiệm vụ hoàn toàn có thể quản lý được nếu bạn có kiến thức cơ bản về Lua!

Trả lời câu hỏi


Task 13: Firewall Evasion

Chúng ta đã thấy một số kỹ thuật để vượt tường lửa (hãy nhớ các quét kiểu stealth, cùng với NULL, FIN và Xmas); tuy nhiên, còn một cấu hình tường lửa rất phổ biến khác mà chúng ta bắt buộc phải biết cách vượt qua.

Một máy Windows điển hình, với tường lửa mặc định, sẽ chặn mọi gói ICMP. Điều này gây vấn đề: không chỉ chúng ta thường dùng ping để kiểm tra thủ công xem mục tiêu có hoạt động hay không, mà Nmap cũng làm điều tương tự theo mặc định. Nghĩa là Nmap sẽ ghi nhận một host có cấu hình tường lửa như vậy là đã chết và không thèm quét nó.

Vì vậy, ta cần một cách để vượt qua cấu hình này. May mắn là Nmap cung cấp tùy chọn -Pn, bảo Nmap không ping host trước khi quét. Điều này khiến Nmap luôn coi host mục tiêu là đang hoạt động, qua đó vượt được việc chặn ICMP; tuy nhiên, cái giá phải trả là thời gian quét có thể rất lâu (nếu host thực sự chết thì Nmap vẫn sẽ kiểm tra, kiểm tra lại mọi cổng được chỉ định).

Cũng đáng lưu ý: nếu bạn đang ở cùng mạng nội bộ, Nmap cũng có thể dùng ARP requests để xác định hoạt động của host.

Có nhiều tùy chọn khác mà Nmap xem là hữu ích cho việc né tường lửa. Chúng ta sẽ không đi chi tiết, nhưng có thể tìm thấy tại đây.

Các tùy chọn dưới đây đặc biệt đáng chú ý:

  • -f: Dùng để phân mảnh gói tin (tức là chia nhỏ thành nhiều mảnh), khiến tường lửa/IDS khó phát hiện hơn.
  • --mtu <number>: Là phương án thay thế cho -f nhưng cho phép kiểm soát kích thước gói tốt hơn; nhận giá trị MTU dùng cho các gói gửi đi. Phải là bội số của 8.
  • --scan-delay <time>ms: Thêm độ trễ giữa các gói gửi. Rất hữu ích nếu mạng không ổn định, đồng thời để né các trigger theo thời gian của firewall/IDS nếu có.
  • --badsum: Tạo checksum không hợp lệ cho gói. Bất kỳ TCP/IP stack “thật” nào cũng sẽ drop gói này; tuy nhiên, tường lửa có thể tự động phản hồi mà không kiểm tra checksum. Do đó, tùy chọn này có thể dùng để xác định sự hiện diện của firewall/IDS.


Task 14: Practical


Task 15: Conclusion

Bạn đã hoàn thành phòng học Further Nmap — hy vọng bạn thấy thú vị và học thêm được điều mới!

Có rất nhiều tài nguyên hay để bạn tự học thêm về Nmap. Nổi bật nhất là tài liệu chính thức của Nmap (rất đồ sộ), vốn đã được nhắc đến nhiều lần trong phòng này. Đây là nguồn tham khảo tuyệt vời; bạn không cần đọc thuộc lòng từng dòng, nhưng rất nên dùng chúng làm điểm đối chiếu khi cần.

'Labs > Vulnerability Scanning' 카테고리의 다른 글

Nessus - TryHackMe  (0) 2025.10.30
'Labs/Vulnerability Scanning' Other posts in category
  • Nessus - TryHackMe
longhd
longhd
Longhd's Blog
  • longhd
    Ha Duy Long - InfosecPTIT
    longhd
  • Total
    Today
    Yesterday
  • About me

    • Hello I'm Duy Long 👋🏻
    • View all categories (117)
      • Certificates (4)
      • CTF (3)
      • WriteUp (94)
        • Forensics (44)
        • Steganography (5)
        • RE (9)
        • OSINT (8)
        • Web (17)
        • MISC (6)
        • Crypto (3)
        • Pwn (2)
      • Love Story (0)
      • Labs (15)
        • Information Gathering (10)
        • Vulnerability Scanning (2)
        • Introduction to Web Applica.. (1)
        • Common Web Application Atta.. (1)
        • SQL Injection Attacks (1)
  • Blog Menu

    • Home
    • Tag
    • GuestBook
  • Popular Posts

  • Tags

    POCCTF2025
    Dreamhack
    CTF
    htb
    V1tCTF2025
    EnigmaXplore3.0
    writeup
    THM
    Web
    Steganography
    Re
    SunshineCTF2025
    BuckeyeCTF2025
    PTITCTF2025
    misc
    Forensics
    picoCTF
    OSINT
    CSCV2025
    CHH
  • Recent Comments

  • Recent Posts

  • hELLO· Designed ByLong.v4.10.4
longhd
Nmap - TryHackMe
Go to Top

티스토리툴바