Trong bài viết này, mình sẽ hướng dẫn các bạn giải phòng Nmap Basic Port Scans. Bạn có thể truy cập vào phòng đó trên TryHackMe tại đây.
Chúng ta sẽ cùng nhau tìm hiểu cổng nào đang mở và đang nghe, cũng như cổng nào đang đóng.
- Host – Tương tự, chúng ta cần biết liệu “Chủ sở hữu” có ở nhà hay không vì chúng ta muốn biết nó là “Trực tuyến” hay “Ngoại tuyến”.
- Port – Khái niệm tương tự như việc “Cửa” mở hay đóng.
Nội dung chính của phòng này:
- Quét cổng kết nối TCP
- Quét cổng TCP SYN
- Quét cổng UDP
Giải phòng Nmap Basic Port Scans trên TryHackMe
[Câu hỏi 1.1] Khởi chạy AttackBox bằng cách sử dụng nút Start AttackBox. Bạn sẽ khởi chạy các kiểu quét khác nhau với máy ảo mục tiêu để có được kiến thức vững chắc về các kiểu quét cơ bản của Nmap.
Answer: Không cần câu trả lời.
Tương tự như cách địa chỉ IP xác định máy chủ lưu trữ trên mạng, cổng TCP hoặc UDP xác định dịch vụ mạng đang chạy trên máy chủ đó.
- Dịch vụ mạng được cung cấp bởi một máy chủ tuân theo một giao thức mạng nhất định. Một số ví dụ về tính năng chấm công, trả lời các câu hỏi DNS và phục vụ các trang web.
- Một cổng thường được liên kết với một dịch vụ bằng cách sử dụng số cổng.
- Theo mặc định, một máy chủ HTTP sẽ liên kết với cổng TCP 80; hơn nữa, nếu máy chủ HTTP hỗ trợ SSL/TLS, nó sẽ lắng nghe trên cổng TCP 443. (Cổng TCP 80 và 443 là cổng HTTP và HTTPS mặc định)
- Nếu cần, quản trị viên máy chủ web có thể chọn các số cổng khác nhau.
- Ngoài ra, không có nhiều hơn một dịch vụ có thể lắng nghe trên bất kỳ cổng TCP hoặc UDP nào cùng một lúc (trên cùng một địa chỉ IP).
Chúng ta có thể chia các cổng thành hai loại:
1) Một cổng mở có nghĩa là một dịch vụ đang lắng nghe trên cổng đó. 2) Một cổng đóng có nghĩa là không có dịch vụ nào đang nghe trên cổng đó.
Tuy nhiên, trong thực tế, chúng ta phải xem xét đến tác động của tường lửa.
Ví dụ, một cổng có thể đang mở, nhưng các gói tin có thể bị chặn bởi tường lửa. Do đó, Nmap tính đến sáu trạng thái sau:
- Open – cho biết rằng một dịch vụ đang lắng nghe trên cổng được chỉ định.
- Closed – không có dịch vụ nào đang lắng nghe trên cổng được chỉ định, mặc dù cổng đó có thể truy cập được và không bị chặn bởi tường lửa hoặc các thiết bị/chương trình bảo mật khác.
- Filtered – nghĩa là Nmap không thể xác định xem cổng đang mở hay đã đóng vì cổng KHÔNG thể truy cập được. Trạng thái này thường là do tường lửa ngăn Nmap quét cổng đó. Các gói tin của Nmap có thể bị chặn không đến được cổng; cách khác, các gói tin phản hồi bị chặn không thể tiếp cận máy chủ của Nmap.
- Unfiltered – điều này có nghĩa là Nmap không thể xác định xem cổng đang mở hay đang đóng, mặc dù cổng có thể truy cập được. Trạng thái này gặp phải khi sử dụng quét ACK -sA.
- Open|Filtered – Điều này có nghĩa là Nmap không thể xác định xem cổng đang mở hay được lọc (filtered).
- Closed|Filtered – Điều này có nghĩa là Nmap không thể quyết định xem một cổng được đóng hay được lọc (filtered).
[Câu hỏi 2.1] Dịch vụ nào sử dụng cổng UDP 53 theo mặc định?
Answer: DNS
[Câu hỏi 2.2] Dịch vụ nào sử dụng cổng TCP 22 theo mặc định?
Answer: ssh
[Câu hỏi 2.3] Nmap xem xét bao nhiêu trạng thái cổng?
Answer: 6
[Câu hỏi 2.4] Trạng thái cổng nào là thú vị nhất để khám phá khi là một pentester?
Answer: Open
Nmap hỗ trợ nhiều kiểu quét cổng TCP. Để hiểu sự khác biệt giữa các lần quét cổng này, chúng ta phải kiểm tra TCP header.
- 24 byte đầu tiên của một đoạn TCP là TCP header.
- TCP header như được định nghĩa trong RFC 793 được minh họa trong hình bên dưới.
Số cổng được cho là 16 bit, như chúng ta có thể thấy (2 byte). Số thứ tự và số xác nhận nằm ở hàng thứ hai và thứ ba. Mỗi hàng được cung cấp 32 bit (4 byte), với tổng số sáu hàng tổng cộng là 24 byte.
Chúng ta nên đặc biệt chú ý đến các cờ mà Nmap có thể đặt.
Các cờ TCP đã được đánh dấu bằng màu đỏ. Đặt một bit cờ thành 1 có nghĩa là thay đổi giá trị của nó.
Các cờ TCP header, từ trái sang phải:
- URG – Cờ khẩn cấp chỉ ra rằng con trỏ khẩn cấp được gửi là quan trọng. Con trỏ khẩn cấp chỉ ra rằng dữ liệu đến là khẩn cấp và một đoạn TCP với cờ URG sẽ được xử lý ngay lập tức mà không cần phải chờ đợi các đoạn TCP đã gửi trước đó.
- ACK – Cờ báo nhận chỉ ra rằng số xác nhận là quan trọng. Nó được sử dụng để xác nhận việc nhận một đoạn TCP.
- PSH – Cờ đẩy yêu cầu TCP chuyển dữ liệu đến ứng dụng kịp thời.
- RST – Cờ thiết lập lại được sử dụng để thiết lập lại kết nối. Một thiết bị khác, chẳng hạn như tường lửa, có thể gửi nó để phá vỡ kết nối TCP. Cờ này cũng được sử dụng khi dữ liệu được gửi đến máy chủ lưu trữ và không có dịch vụ nào trả lời.
- SYN – Cờ đồng bộ được sử dụng để bắt đầu 3-way handshake TCP và đồng bộ số thứ tự với máy chủ khác. Số thứ tự phải được đặt ngẫu nhiên trong quá trình thiết lập kết nối TCP.
- 6. FIN – Người gửi không còn dữ liệu để gửi.
[Câu hỏi 3.1] 3 chữ cái nào đại diện cho cờ Reset?
Answer: RST
[Câu hỏi 3.2] Cờ nào cần được đặt khi bạn bắt đầu kết nối TCP (gói đầu tiên của 3-way handshake TCP)?
Answer: SYN
TCP Connect Scan – Nó hoạt động đơn giản bằng cách thực hiện 3-way handshake TCP.
Về cơ bản, (1) máy khách gửi một gói TCP với cờ SYN và (2) máy chủ phản hồi bằng SYN/ACK nếu cổng đang mở; cuối cùng, máy khách (3) gửi một ACK để hoàn tất quá trình bắt tay 3 bước (3-way handshake).
Kết nối bị ngắt ngay sau khi trạng thái của nó được xác thực bằng cách gửi RST/ACK. Bạn có thể sử dụng -sT để quét kết nối TCP.
Điều quan trọng cần lưu ý là nếu bạn KHÔNG phải là người dùng có đặc quyền (root hoặc sudoer), thì cách DUY NHẤT để xác định các cổng TCP khả dụng là thực hiện quét kết nối TCP.
Trong ảnh chụp gói Wireshark bên dưới, chúng ta thấy Nmap đang gửi các gói TCP với cờ SYN thành một số cổng, bao gồm 256, 443 và 143.
Nmap sẽ cố gắng kết nối với 1000 cổng phổ biến nhất theo mặc định.
- Để báo hiệu rằng cổng không được mở, một cổng TCP đã đóng sẽ phản hồi gói SYN với cờ RST/ACK. Khi chúng ta cố gắng bắt đầu 3-way handshake TCP với các cổng đã đóng, mẫu này sẽ được lặp lại.
Bởi vì cổng 143 đang mở, nó phản hồi bằng SYN/ACK và Nmap đã hoàn thành quá trình 3-way handshake với ACK. (ảnh bên dưới)
Sơ đồ bên dưới minh họa tất cả các gói được gửi và nhận giữa máy chủ Nmap và cổng 143 của hệ thống đích. Ba gói đầu tiên đã hoàn thành quá trình bắt tay 3 chiều (3-way handshake) TCP. Đến gói thứ tư sẽ thất bại vì nó phản hồi bằng gói RST/ACK.
Ví dụ lệnh sau đây cung cấp một danh sách đầy đủ các cổng đang mở bằng cờ -sT (quét kết nối TCP).
1) Chúng ta có thể sử dụng -F để kích hoạt chế độ nhanh và giảm số lượng cổng được kiểm tra từ 1000 xuống 100 cổng được sử dụng phổ biến nhất.
2) Tùy chọn -r có thể được sử dụng để quét các cổng theo thứ tự tuần tự thay vì thứ tự ngẫu nhiên. Tùy chọn này rất quan trọng để xác minh xem các cổng có mở nhất quán hay không, chẳng hạn như khi mục tiêu khởi động.
[Câu hỏi 4.1] Khởi chạy VM. Mở AttackBox và thực thi lệnh nmap -sT MACHINE_IP
thông qua terminal. Một dịch vụ mới đã được cài đặt trên máy ảo này kể từ lần quét cuối cùng của mình. Số cổng nào đã bị đóng trong quá trình quét ở trên nhưng hiện đang mở trên máy ảo mục tiêu này?
Answer: 110
[Câu hỏi 4.2] Dự đoán của Nmap về dịch vụ mới được cài đặt là gì?
Answer: pop3
Để bắt đầu, quá trình quét này cần người dùng “Đặc quyền (root hoặc sudoer)” để thực thi.
TCP SYN Scan – Cần phải hiểu rằng nó KHÔNG CẦN HOÀN THÀNH 3-WAY-HANDSHAKE TCP và thay vào đó sẽ đóng kết nối khi nó nhận được phản hồi từ máy chủ.
- Bởi vì kết nối TCP không được thiết lập trong trường hợp này, số lần quét được ghi vào nhật ký được giảm thiểu.
Ảnh Wireshark sau đây minh họa quá trình quét TCP SYN. Trong trường hợp các cổng TCP bị đóng, nó tương tự như hoạt động quét kết nối TCP.
Xem qua hai ảnh chụp màn hình để hiểu rõ hơn sự khác biệt giữa hai lần quét.
- Chúng ta có thể nhận thấy lưu lượng kết nối TCP scan -sT ở nửa trên của hình sau. Nmap sẽ cần hoàn thành bắt tay 3 chiều TCP trước khi đóng bất kỳ cổng TCP nào đang mở.
- Phần dưới của hình ảnh sau đây cho thấy cách quét SYN -sS không yêu cầu hoàn thành bắt tay 3 chiều TCP; thay vào đó, Nmap gửi một gói tin RST ngay lập tức nhận được một gói SYN/ACK.
TCP SYN scan là chế độ quét mặc định khi sử dụng Nmap với tư cách là người dùng đặc quyền, chẳng hạn như root hoặc sudo, và nó là một tùy chọn rất đáng tin cậy.
- Nó phát hiện các cổng mở mà bạn đã phát hiện trước đó bằng cách quét kết nối TCP
- Không có kết nối TCP nào được hình thành với đích.
[Câu hỏi 5.1] Khởi chạy VM. Một số phần mềm máy chủ mới đã được cài đặt kể từ lần cuối chúng tôi quét nó. Trên AttackBox, sử dụng terminal để thực thi nmap -sS 10.10.48.181. Cổng mới mở là gì?
Answer: 6667
[Câu hỏi 5.2] Dự đoán của Nmap về tên dịch vụ là gì?
Answer: irc
nmap -sU -F -v MACHINE_IP
. Một dịch vụ mới đã được cài đặt kể từ lần quét cuối cùng. Cổng UDP hiện đang mở là gì?Cờ -F đã được thêm vào để tăng tốc độ quét (quét 100 phổ biến nhất thay vì 1000). -v để nhận các bản cập nhật khi quá trình quét diễn ra
Answer: 53
[Câu hỏi 6.2] Tên dịch vụ theo Nmap là gì?
Answer: domain
Thay vì 1000 cổng mặc định, bạn có thể chọn cổng nào để quét. Việc chỉ định các cổng giờ đây trở nên đơn giản hơn. Dưới đây là một số ví dụ:
port list: -p22,80,443 sẽ quét các cổng 22, 80 và 443. port range: -p1-1023 sẽ quét tất cả các cổng từ 1 đến 1023, trong khi -p20-25 sẽ quét các cổng từ 20 đến 25. Bạn có thể yêu cầu quét cổng bằng cách sử dụng -p-, sẽ quét tất cả 65535 cổng. Thêm -F để quét 100 cổng phổ biến nhất. Sử dụng --top-port 10 sẽ quét mười cổng được sử dụng phổ biến nhất.
Bạn có thể kiểm soát thời gian quét bằng -T<0-5>
.
-T0 là chậm nhất (paranoid ), trong khi -T5 là nhanh nhất. Theo trang hướng dẫn sử dụng Nmap, có sáu mẫu:
paranoid (0) sneaky (1) polite (2) normal (3) aggressive (4) insane (5)
Dưới đây là một số bản quét “T” cần chú ý:
- Bạn có thể sử dụng -T0 hoặc -T1 để tránh cảnh báo IDS.
- Ví dụ: -T0 tìm kiếm một cổng tại một thời điểm và đợi 5 phút giữa việc gửi mỗi đầu dò, vì vậy bạn có thể ước tính mất bao lâu để quét một mục tiêu.
- Nếu không xác định thời gian, Nmap sử dụng tiêu chuẩn -T3.
- Cần lưu ý rằng -T5 là mạnh nhất về tốc độ; tuy nhiên, do khả năng mất gói lớn hơn, điều này có thể ảnh hưởng đến độ chính xác của kết quả quét.
- Cần lưu ý rằng -T4 thường được sử dụng trong CTF và khi học cách quét các mục tiêu thực hành.
- -T1 thường được sử dụng trong các hoạt động hack thế giới thực, nơi mà khả năng tàng hình là quan trọng nhất.
Ngoài ra, bạn có thể chọn kiểm soát tốc độ gói tin bằng cách sử dụng --min-rate và --max-rate. • Ví dụ, --max-rate 10 hoặc --max-rate = 10 đảm bảo rằng máy quét của bạn không gửi nhiều hơn mười gói mỗi giây.
Hơn nữa, bạn có thể kiểm soát song song thăm dò bằng cách sử dụng --min-parallelism <numprobes>
và --max-parallelism <numprobes>
.
Nmap thăm dò các mục tiêu để phát hiện ra máy chủ nào đang hoạt động và cổng nào đang mở; song song thăm dò chỉ định số lượng các đầu dò có thể chạy song song. Ví dụ, --min-parallelism=512
yêu cầu Nmap duy trì ít nhất 512 đầu dò song song; 512 đầu dò này liên quan đến việc khám phá máy chủ và mở các cổng.
[Câu hỏi 7.1] Tùy chọn nào để quét tất cả các cổng TCP trong khoảng từ 5000 đến 5500?
Answer: -p5000–5500
[Câu hỏi 7.2] Làm thế nào bạn có thể đảm bảo rằng Nmap sẽ chạy song song ít nhất 64 đầu dò?
Answer: — min-parallelism 64
--min-parallelism 64
Answer: -T0
[Câu hỏi 8.1] Đảm bảo bạn đã ghi chú tất cả các tùy chọn quét có trong phòng này. Đã đến lúc học các kỹ thuật quét cổng nâng cao hơn bằng cách tham gia phòng Nmap Advanced Port Scans.
Answer: No answer is needed.
Kết luận
Theo ý kiến của mình, mục tiêu chính cơ bản của tất cả các lần quét này là có hiểu biết cơ bản về cách thức hoạt động của TCP, chẳng hạn như hiểu về bắt tay 3 bước, điều này rất quan trọng vì nó cho phép chúng ta hiểu cách hệ thống hoạt động và tại sao nó chạy.
Tuy nhiên, phòng này có đầy đủ thông tin vì nó cung cấp một cái nhìn mới mẻ về cách hoạt động của mỗi lần quét cổng và cách nó xuất hiện trong Wireshark, cung cấp một minh họa rõ hơn về cách nó chạy ở backend.
Ngoài ra, bạn cũng có thể xem Các Tool Hack được sử dụng nhiều nhất năm 2022 tại đây.