BeEF网络攻击
介绍
使用JavaScript hack,可以通过一个挂钩的浏览器发起网络攻击。
获取内部IP地址
存在两个模块来检索僵尸浏览器的主机系统正在使用的IP地址。
通过这些IP地址,可以想象内部网络寻址计划并更有效地利用其他BeEF模块。
- Firefox和Chrome的“ 获取内部IP(WebRTC)”模块使用WebRTC检索每个网络接口的IP地址。
- 在获取内部IP地址(Java)的模块使用的Java小程序来获取IP地址。由于Java引入了点击播放功能,因此用户必须允许未签名的Java小程序运行。
- 请注意,现代Java(从Java 7u51开始)将完全拒绝执行未签名的Java小程序,并且还将拒绝自签名的Java小程序,除非将它们添加到例外列表中。
识别局域网子网
该识别局域网子网模块采用基于时间的XHR确定任何常用的局域网IP地址是否在僵尸的局域网络(一个或多个)上使用。
通过这些IP地址,可以想象内部寻址计划并更有效地利用其他BeEF模块。
此模块仅适用于Firefox和Chrome。
获取HTTP服务器
“ 获取HTTP服务器”模块从指定IP地址上的可预测路径(/favicon.ico、/favicon.png、/images/favicon.ico、/images/favicon.png)加载favicon图像,以检测僵尸网络上的Web服务器局域网。
通过这些IP地址,可以想象内部寻址计划并更有效地利用其他BeEF模块。
在Internet Explorer和Safari中,该模块对于用户应该是不可见的,但是对于其他浏览器,用户可能会注意到是否有任何扫描的主机弹出“ 401 Authentication Required”提示。
平扫
然后可以启动ping请求并识别网络上的活动主机。这些模块存在三个版本:
该ping扫描基于时间的模块使用JavaScript XHR请求,以确定活动的主机。此模块仅在Firefox中有效。
在平扫(FF)模块直接使用Java API发送请求和时间响应。该模块仅在安装Java的Firefox中有效。
在平扫(Java)的模块加载未签名的Java小程序。由于Java引入了点击播放功能,因此用户必须允许未签名的Java小程序运行。
- 请注意,Java(从Java 7u51开始)将完全拒绝执行未签名的Java小程序,并且还将拒绝自签名的Java小程序,除非将它们添加到列表中。
跨源扫描仪(CORS)
跨域扫描程序(CORS)模块将CORS请求发送到指定的IP范围,并为每个以允许的CORS策略标识的Web服务器返回IP地址、端口号、HTTP状态代码、页面标题和页面内容。
该模块应可在所有支持CORS的现代浏览器上使用。
跨源扫描仪(Flash)
跨域扫描器(Flash)模块使用Flash将请求发送到指定的IP范围,并为每个用许可的Flash跨域策略标识的Web服务器返回IP地址、端口、页面标题和页面内容。
该模块仅在安装了Flash的Firefox和Chrome中有效。
DNS枚举
通过使用计时器,可以使用Firefox和Chrome检测给定的主机名是否存在:
- 在第一种情况下,请求将花费更长的时间,因为将完成DNS解析,然后启动TCP连接(并且可能会失败)。
- 在第二种情况下,DNS请求将快速返回错误,因此浏览器能够检测到没有此类DNS条目。
端口扫描
既然我们知道了挂钩系统的IP地址和几个主机名,启动端口扫描将很有趣。几位安全研究人员发现,通过使用Firefox和Chrome将图像加载到浏览器中,可以使用相同的定时破解来扫描端口。
此攻击已包含在“ 端口扫描程序”模块中。
网络指纹
“ 网络指纹”模块使用默认图像的URL来对网络上使用的设备进行指纹识别。
它嵌入了Web服务器(Apache,IIS)和网络设备(Linksys NAS,打印机等)的默认图片列表,并检查是否有列出的图片可用。
该模块应该在所有浏览器中都可以使用。
请注意,用户可能会注意到是否有任何扫描的主机弹出“ 401 Authentication Required”提示。
远程CSRF
CSRF仍然是开发人员很少考虑的漏洞,尤其是考虑到通过利用CSRF所造成的影响有多严重。
BeEF包含许多CSRF模块,尤其是针对个人路线(Linksys,Dlink等)的模块。在上一步中对网络进行指纹识别时,我们仅检测到其中一个路由器。
大多数CSRF攻击都允许修改管理员密码,但是有几种可用于获得反向外壳或打开包装盒上的外部端口的攻击。
您可以在模块页面中查看CSRF模块的列表。
IRC NAT固定
通过模拟来自浏览器的IRC通信,可以欺骗用户的防火墙打开TCP端口。
这种黑客称为NAT锁定,它包含在BeEF IRC NAT锁定模块中。
管理界面
网络图
Network -> Map
管理员界面标签下的“网络地图” 显示了僵尸浏览器本地网络的动态地图。识别出的网络主机会自动添加到地图中。
网络地图使用HTML5画布,该画布允许您将地图另存为图像。
网络主机
键
- C:铬
- FF: Firefox
- S: Safari
- IE: Internet Explorer
发现
右键单击Network -> Hosts
网格中的任意位置,将提供一个上下文菜单,其中提供了用于主机发现的选项。
前两个菜单项(适用于Chrome和Firefox)尝试检测本地网络IP地址范围:
- 获取内部IP(WebRTC)(C,FF)
- 识别局域网子网(C,FF)
其余选项在用户指定的IP地址范围或常用LAN IP地址的预定义列表上执行主机发现:
- 发现路由器(S,FF)
- 发现Web服务器(所有)
- 指纹HTTP(C,FF,IE,S)
- 跨域CORS扫描(IE10 +,C,FF,S)
- 跨源闪存扫描(C,FF)
发现后
Network -> Hosts
面板中提供了已标识的网络主机。
右键单击网络主机,可以对主机或其本地子网中的所有主机执行各种操作,例如:
- 扫描HTTP服务器(全部)
- 指纹HTTP服务器(C,FF,IE,S)
- 跨源扫描以启用CORS的HTTP服务器(IE10 +,C,FF,S)
- 跨域扫描启用了Flash跨域HTTP服务器(C,FF)
- 扫描打开的TCP端口(C,FF)
网络服务
Network -> Services
面板中提供了已标识的网络服务。
右键单击网络服务,可以执行各种操作,例如:
- 指纹HTTP服务器
- 跨源扫描主机,用于启用了CORS的HTTP服务器
- 跨域扫描主机,用于启用Flash跨域HTTP服务器
- 扫描是否包含远程文件(反向shell)
- 扫描已知的易受攻击的Shell Shock CGI(反向Shell)
RESTful API
网络扩展RESTful API允许检索已标识的网络主机和服务。
# Returns the entire list of network hosts for all zombies
curl http://127.0.0.1:3000/api/network/hosts?token=[token]
# Returns the entire list of network services for all zombies
curl http://127.0.0.1:3000/api/network/services?token=[token]
# Returns all hosts given a specific hooked browser id
curl http://127.0.0.1:3000/api/network/hosts/[id]?token=[token]
# Returns all services given a specific hooked browser id
curl http://127.0.0.1:3000/api/network/services/[id]?token=[token]
# Returns a specific network host given its id
curl http://127.0.0.1:3000/api/network/host/[id]?token=[token]
# Returns a specific network service given its id
curl http://127.0.0.1:3000/api/network/service/[id]?token=[token]
推荐文章: