Skip to main content

Cách sử dụng Nmap để scan Port trên Kali Linux

Port là gì ?

Có rất nhiều lớp trong mô hình mạng nói chung, lớp vận chuyển đóng vai trò cung cấp các thông tin liên lạc giữa các ứng dụng hệ thống với nhau, và lớp này thì được kết nối với Port (Cổng).

Một số điều lưu ý mà bạn cần biết về port

- Port là một số hiệu ID cho 1 ứng dụng nào đó.
- Mỗi ứng dụng chỉ có thể chạy trên một hoặc nhiều port và mang tính độc quyền, không có ứng dụng khác được chạy chung.
- Chính vì tính độc quyền nên các ứng dụng có thể chỉnh sửa để cho phép chạy với một port khác.
- Port cũng có phân chia làm Internal và External .
- Số hiệu từ 1->65535.

Một số thuật ngữ mà bạn cần nắm rõ


  • Port: Là một địa chỉ mạng thực hiện bên trong hệ điều hành giúp phân biệt các traffic khác nhau của từng ứng dụng riêng lẻ
  • Internet Sockets: Là một tập tin xác định địa chỉ IP gắn kết với port, nhằm để xử lý dữ liệu như các giao thức.
  • Binding: Là quá trình mà một ứng dụng hoặc dịch vụ (service) sử dụng Internet Sockets để xử lý nhập và xuất các dữ liệu
  • Listen: Ám chỉ việc "lắng nghe" đợi chờ khi bạn thực hiện Binding đến một port / giao thức / IP nào đó. Hiểu nôm na là chờ đời dữ liệu gửi về từ phía bên máy chủ
  • Port Scanning: Port Scanning là quá trình cố gắng để kết nối với một port để có thể thu thập thông tin về các port đang mở và những dịch vụ, ứng dụng, hệ điều hành phía sau nó

Cổng thì được xác định từ số 1 đến số thứ 65535. Trong đó 
  1. Những cổng từ 1->1024 được kết hợp với các dịch vụ của hệ điều hành Linux và Unix, những cổng này bạn cần phải có quyền Root để có thể khởi chạy dịch vụ
  2. Những cổng từ 1024 -> 49151 là những cổng bạn có thể 'đăng kí' đến IANA, việc đăng kí không mấy khó khăn, bạn có thể thoải mái sử dụng những cổng này khi đăng kí hoàn tất
  3. Những cổng từ 49152 -> 65535 là những cổng không thể 'đăng kí', và những cổng này chỉ sử dụng cho mục đích cá nhân mà thôi, không thể kết nối thành mạng lưới được

Một số Port (cổng) thông dụng trong internet:

  1. Cổng 80: Khi một người sử dụng địa chỉ IP hay HostName của các bạn trong bộ duyệt, bộ duyệt sẽ quan sát địa chỉ IP trên cổng 80 theo mặc định cho những trang Web.
  2. Cổng 81: Khi một người sử dụng nhập địa chỉ IP hay HostName của các bạn trong bộ duyệt, bộ duyệt sẽ quan sát địa chỉ IP trên cổng 80. Nếu Cổng thì bị tắc nghẽn, Cổng 81 được sử dụng như một Cổng xen kẽ cho một website hosting nào đó.
  3. Cổng 20: Dùng để vận chuyển dữ liệu FPT
  4. Cổng 21: Khi người nào đó thử nối tới dịch vụ FTP của các bạn, khách hàng FTP sẽ cố gắng kết nối trên Cổng 21 theo mặc định. Thì cổng 21 mở cho những khách FTP đăng nhập và nối tới server của các bạn
  5. Cổng 22: Nếu bạn chạy một SSH Secure Shell, cổng này được yêu cầu cho Khách hàng SSH để nối tới người phục vụ của các bạn.
  6. Cổng 23 :Nếu bạn Telnet, cổng này được yêu cầu cho Khách hàng Telnet đến server. Telnet có thể được sử dụng cho những cổng khác để kiểm tra những công tác dịch vụ, nhưng để sử dụng telnet cho admin và đăng nhập từ xa thì cổng 23 phải mở.
  7. Cổng 25: Khi người nào đó gửi một thư từ thông báo tới server SMTP của bạn, thư từ sẽ đi tới server của bạn trên Cổng 25. Đây là tiêu chuẩn SMTP (thủ tục vận chuyển Thư từ)
  8. Cổng 2525: Khi người nào đó gửi một thư từ thông báo tới server SMTP của bạn, thư từ sẽ để đi vào tới server của các bạn trên Cổng 25. Cổng 2525 xen kẽ được dùng bởi TZO cho những công tác lưu trữ và truyền lại. Đây là một cổng không tiêu chuẩn, nhưng sẻ hữu ích nếu SMTP (thủ tục vận chuyển Thư từ) bị tắc nghẽn
  9. Cổng 43: Dùng để Whois tên miền
  10. Cổng 53: Dùng để DNS
  11. Cổng 67: Cổng của DHCP server
  12. Cổng 68: Cổng của DHCP client
  13. Cổng 110: Khi bạn chạy một máy tính, những người sử dụng sẽ vào theo đường POP3 (Nghi thức cơ quan bưu điện) hay IMAP4 (giao thức truy nhập Thông báo Internet) khôi phục thư từ của họ. POP3 là nghi thức tốt nhất để truy nhập những hòm thư
  14. Cổng 113: Dùng cho các mạng IRC
  15. Cổng 119: Khi bạn chạy một server Tin tức, điển hình những khách hàng Tin tức muốn nối tới người phục vụ. Tin tức của các bạn sẽ nối trên cổng 119. Cái này chuyển những nhu cầu để mở để chạy server tin tức.
  16. Cổng 143 : IMAP4 hay giao thức truy nhập Thông báo Internet đang trở nên phổ biến hơn và được sử dụng để khôi phục Thư Internet từ một server từ xa. Từ đó tất cả các thông báo đều được cất giữ trên server, Nó dùng để sử dụng trực tuyến, ngoại tuyến và offline
  17. Cổng 161: SNMP
  18. Cổng 194: IRC
  19. Cổng 389 : LDAP hay giao thức truy nhập Thư mục Lightweight đang trở nên phổ biến cho sự Truy nhập Thư mục
  20. Cổng 587: Cũng là cổng SMTP
  21. Cổng 631: Cổng CUPS printing daemon
  22. Cổng 666: Cổng riêng và duy nhất của game DOOM
  23. Cổng 443 : Cổng được dùng để kết nối các dịch vụ an toàn HTTPS
  24. Cổng 1503 & 1720 :MS NetMeeting và VOIP cho phép bạn kết nối tới host Internet nhằm phục vụ các cuộc họp trực tuyến. NetMeeting là một sản phẩm tự do mà bạn có thể tìm thấy trên Website Microsoft Tại địa chỉ http://www.microsoft.com/
  25. Cổng 3389: Cổng 3389 được sử dụng cho Windows. Nếu bạn muốn từ xa kết nối tới máy tính của bạn để điều khiển từ xa, thì yêu cầu cổng 3389 phải mở.
  26. Cổng 5590: Khi bạn chạy một Server VNC từ xa để kiểm soát PC của các bạn, nó sẽ sử dụng cổng 5900.
  27. Cổng 5631: Cổng này cũng được dùng để remote các máy tính từ xa

Để kiểm tra xem máy tính của bạn đang mở những port nào thì dùng lệnh sau:

netstat -plunt
 
 

Nmap là gì ?
  • Nmap (Network Mapper) là một công cụ quét, theo dõi và đánh giá bảo mật một hệ thống mạng được phát triển bởi Gordon Lyon.
  • Nmap được công bố lần đầu tiên vào tháng 9 năm 1997.
  • Nmap là phần mềm mã nguồn mở miễn phí, ban đầu chỉ được phát triển trên nền tảng Linux sau đó được phát triển trên nhiều nền tảng khác nhau như Windows, Solari, Mac OS… và phát triển thêm phiên bản giao diện người dùng (zenmap).

Các chức năng của nmap: 
  • Phát hiện host trong mạng.
  • Liệt kê các port đang mở trên một host.
  • Xác định các dịch vụ chạy trên các port đang mở cùng với phần mềm và phiên bản đang dùng.
  • Xác đinh hệ điều hành của thiết bị.
  • Chạy các script đặc biệt.

Hướng dẫn Scan port với NMap

Sử dụng nmap

+ Xác định mục tiêu

Việc đầu tiên khi sử dụng nmap là xác định mục tiêu cần quét, mục tiêu có thể là 1 domain, 1 IP, 1 dải địa chỉ IP, 1 danh sách (file) các IP và domain. Ví dụ:

Quét 1 IPnmap 192.168.0.1
Quét 1 dải IPnmap 192.168.0.1/24
Quét 1 domainnmap facebook.com
Quét 1 danh sách các mục tiêu từ 1 file với tùy chọn -iL: nmap -iL filelist.txt

Các lệnh phổ biến trong Nmap

1, Quét hệ điều hành của Server

nmap -O remote_host

Nếu server báo down , thì bạn sử dụng lệnh sau

nmap -PN remote_host

Sử dụng "-" hoặc "/24" để quét nhiều host / server cùng lúc

nmap -PN xxx.xxx.xxx.xxx-yyy

2, Quét một mạng rộng hơn

nmap -sP network_address_range

3, Quét mà không tra cứu DNS (Điều này sẽ giúp bạn quét nhanh hơn)

nmap -n remote_host

4, Quét một port cụ thể thay vì quét chung các port thông dụng

nmap -p port_number remote_host

5, Quét kết nối TCP, Nmap sẽ thực hiện việc quét bắt tay 3 bước

nmap -sT remote_host

6, Quét kết nối UDP

nmap -sU remote_host

7, Quét TCP và UDP từng port (Khá lâu để hoàn tất)

nmap -n -PN -sT -sU -p- remote_host

8, Quét TCP SYN scan (-sS):

nmap -sS remote_host

9, Quét vời các cờ -sN, -sF, -sX

nmap -PN -p port_number -sN remote_host

10, Quét xác định phiên bản của dịch vụ đang chạy trên host

nmap -PN -p port_number -sV remote_host

Chi tiết về các kĩ thuật quét

TCP SYN scan (-sS): nmap gửi một gói tin TCP-SYN tới 1 port của mục tiêu. Nếu nhận được ACK_SYN thì port đó đang ở trạng thái open, nmap sẽ gửi gói tin RST để đóng kết nối thay vì gửi ACK để hoàn tất quá trình bắt tay 3 bước (vì thế kỹ thuật này còn được gọi là half open scan). Nếu nhận được RST thì port đó ở trạng thái close. Nếu sau 1 số lần gửi mà không nhận được trả lời hoặc nhận được ICMP type 3 (unreachable error) thì port đó ở trạng thái filtered (đã bị firewall chặn).

TCP connect scan (-sT): Kỹ thuật này cho kết quả tương tự như TCP SYN scan, nếu nhận được ACK-SYN nmap sẽ gửi gói tin ACK để hoàn tất quá trình bắt tay 3 bước. TCP connect scan được dùng khi user không có quyền truy cập raw packet để thực hiện SYN scan (thường thì với quyền root trên linux mới có thể sử dụng SYN scan). TCP connect scan sẽ sử dụng TCP stack của hệ điều hành để tạo ra 1 kết nối bình thường với mục tiêu, do thực hiện 1 kết nối đầy đủ nên kỹ thuật này dễ bị phát hiện bởi hệ thống log của mục tiêu do đó SYN scan thường được sử dụng nhiều hơn để tránh bị phát hiện.

UDP scan (-sU): nmap gửi gói tin UDP tới 1 port của mục tiêu nếu nhận được gói tin ICMP port unreachable error (type 3, code 3) thì port đó ở trạng thái close. Nếu nhận được ICMP unreachable errors (type 3, codes 1, 2, 9, 10, or 13) thì port đó ở trạng thái filtered. Nếu không nhận được gì thì port ở trạng thái open|filtered. Nếu nhận được gói tin UDP thì port đó ở trạng thái open

TCP NULL, FIN, and Xmas scans (-sN, -sF, -sX): đây là kỹ thuật sư dụng các gói tin TCP với không có cờ nào được bật cờ FIN được bật cờ FIN, PSH và URG được bật 3 kỹ thuật này được gộp chung vào 1 nhóm vì chúng cho kết quả giống nhau. Khi 3 loại gói tin này được gửi đi nếu nhận được RST thì port ở trạng thái close, nếu nhận được các loại gói tin ICMP (type 3, code 1, 2, 3, 9, 10, or 13) thì port ở trạng thái filtered, còn nếu không nhận được gói tin trả lời thì port ở trạng thái open|filtered

Ngoài ra nmap còn có 1 số tùy chọn với các kỹ thuật khác nâng cao (-sY,-sM, -sO, -sZ, -sI) có thể tham khảo thêm tại http://nmap.org/book/man-port-scanning-techniques.html

+ Lựa chọn port và thứ tự quét. Mặc định nmap sẽ quét 1000 port phổ biến nhất (xem tại file nmap-service) với thứ tụ ngẫu nhiên.

Tùy chọn –p : lựa chọn chính xác các port cần quét, nếu quét đồng thời nhiều giao thức thì thêm các chữ cái đứng trước số port

T: TCP, U: UDP, S: SCTP, or P: IP Protocol.

Trong trường hợp này nmap sẽ quét các port UDP 53 và 4000, quét các port TCP 444, từ 1 đến 100, từ 8000 đến 8010 bằng kỹ thuật SYN scan.

Tùy chon –F (Fast scan): nmap quét 100 port phổ biến nhất thay vì mặc định 1000 port.

Tùy chọn –top-ports : quét n port phổ biến nhất.

Tùy chọn –r: thứ tự quét các port từ thấp lên cao thay vì mặc định là ngẫu nhiên.

+ Xác đinh dịch vụ, phiên bản, hệ điều hành. Mặc định sau khi quét các port, nmap sẽ xác định dịch vụ đang chạy trên các port dựa vào file nmap-services (các port mặc định của từng service) tuy nhiên một số server cấu hình các dịch vụ không chạy trên các cổng mặc định. Để xác định rõ port nào chạy dịch vụ nào nmap sử dụng tùy chọn –sV. Với tùy chọn này nmap sẽ xác định được dịch vụ và phiên bản phần mềm chạy trên từng port dựa vào banner khi kết nối với port đó

+ Nmap hỗ trợ chạy các script đặc biệt:

Nmap Scripting Engine (NSE) là một trong những chức năng linh hoạt và mạnh mẽ nhất của Nmap. Nó cho phép người dùng viêt và chia sẻ những đoạn script đơn giản để thực hiện những công việc khác nhau trong lĩnh vực networking một cách tự động. Những đoạn script có thể sử dụng để phát hiện các lỗ hổng, thậm chí khai thác các lỗ hổng. Các script (.nse file) nằm trong thư mục script khi cài đặt nmap, người dùng có thể tùy biến chỉnh sửa, thêm các scirpt khác. Để thực hiện chức năng này của nmap sử dụng tùy chọn

–script |||[,…]

+ Lưu lại kết quả quét

Cuối cùng Nmap cho phép người dùng có thể lưu lại kết quả quét của mình dưới dạng text hoặc xml (có thể dùng kết quả làm đầu vào cho một số công cụ khác) với các tùy chọn:

-oN (normal output)

-oX (xml output)

Trên đây là những kiến thức cơ bản về việc sử dụng công cụ Nmap trên Kali Linux. 
Mong các bạn thấy bài viết hữu ích !

Comments

Popular posts from this blog

Hướng dẫn cài đặt Python 3 trên Kali Linux - How to install Python 3 on Kali Linux

Xin chào tất cả mọi người, Python là một ngôn ngữ lập trình có thế nói là vô cùng "báo đạo" trong giới lập trình ngày nay. Với các phiên bản của Kali Linux mặc định sẽ là python 2.x.x. Tuy nhiên để đuổi kịp theo thời đại, thì Python đã nâng cấp lên phiên bản Python  3 cũng khá lâu rồi. Hôm nay mình xin hướng dẫn các bạn cài đặt Python 3 1 cách rất là simple trên Kali Linux. Ở đây mình hướng dẫn cài đặt Python 3.3.2. Bước 1 : Mở Terminal và copy đoạn mã sau: wget http://python.org/ftp/python/3.3.2/Python-3.3.2.tgz && tar -xvf Python-3.3.2.tgz Bước 2: Tiếp tục gõ: 2.a :  cd Python-3.3.2 2.b: ./configure 2.c: make 2.d: sudo make altinstall Sau khi cài đặt xong để có thể sử dụng bạn phải gõ python3 để chạy, còn không mặc định sẽ là phiên bản Python 2 cũ kia. Chỉ với các bước đơn giản như trên là bạn đã cài đặt thành công Python 3 trên Kali Linux. Quá đơn giản phải không nào. Chúc bạn thành công !

Hướng dẫn cài LibreOffice trên Kali Linux

Xin chào mọi người ! Một số bạn không biết cài bộ công cụ văn phòng nào cho máy tính cài HĐH Kali Linux. Hôm nay mình sẽ hướng dẫn cho các bạn cài  LibreOffice trên Kali Linux. Nó giống như bộ Office của Microsoft và trên thực tế thì không bằng Microsoft được đâu. Việc cài đặt bộ Office này khá là đơn giản. Đầu tiên để cài thì bạn hãy tải LibreOffice phù hợp với phiên bản của máy tính đang sử dụng. Như của mình hiện tại là phiên bản LibreOffice_5.2.4 + Link Download (Download) Hãy tải phiên bản mới nhất có đuôi *.deb cho dễ cài đặt. Sau khi tải xong có 2 cách để các bạn cài đặt nó: + Cách 1: Sử dụng phần mềm Gdebi để cài đặt các file *.deb một cách dễ dàng. Tuy nhiên rất hay bị lỗi và không cài đặt được. + Cách 2: (Nên theo cách này) 1- Giải nén file LibreOffice ra. 2- Mở Terminal ra gõ:   ~# cd Downloads Các bạn có thể dùng lệnh ls để biết chính xác tên thư mục của mình và copy paste cho chuẩn. Tiếp sau đó thì gõ:   ~# cd LibreOffice_5.2.4_Linux_x86_