OpenBullet2入門 (1.導入~Config確認)
自分の所有していないサービス、自分のテストする権利のないサービスに対しこのツールを利用することは違法行為となるため実行してはいけません。ここで紹介するソフトの不適切な利用についてこの文書の著者は如何なる責任も負いません。
OpenBullet2とは
OpenBullet は target となるwebsiceに対して様々なリクエストを送ることができ、同時にその結果を解析することでサイトの安全性を確認することができるオープンソースのペネトレーションツールです。自身の管理するWebサーバのセキュリティ調査、各種自動化に利用できる便利なツールです。
その一方、OBの高機能を悪用することで、
- brute force によるATO(account takeover: 乗っ取り)
- Credential stuffingによるATO(流出したアカウント情報による攻撃)
- 持続的な標的型攻撃(Advanced Persistent Threat)
- DoS攻撃
といったことも可能となります。cyber-securityの分野において、blue team/red teamを問わず、OpenBulletはその便利さゆえに最も重用されるツールの一つとなっているようです。
- もともとはBlackBulletという有償ソフトのOSS版であり、C#で開発されソースはgithubで公開されておりupdateも頻繁になされています。
- OpenBulletはWindowsプラットフォームのソフトであったが、現在ではWebUIで操作できWindows, Linux, MacOSで動作が可能なOpenBullet2が利用できる。現在はOpenBullet2にメインの開発が移行しているようです。
- コミュニティはhttps://discourse.openbullet.dev/
OpenBulletとOpenBullet2
OpenBulletには現在3つのVersionがあります。
- OB1 Windowsマシン向けに作られていて、すでに開発をストップ
- OB2 WebはWeb Interfaceを備えたCross-platform
- OP2 NativeはOpenBullet1と同様なI/Fを持つので、OB1に慣れたユーザ向けになる。 ただしOSはWindowsのみのサポートになる。
Configファイルとは
- 自動化ファイルのことである。攻撃対象にサイトに応じてカスタマイズでき、ユーザコミュニティで作製された拡張機能を”Plugins”として追加することができる。
- loliというスクリプト言語で書かれている。
- loli-scriptのドキュメントについてはこちら。
- bot検出で使われるreCaptcaの回避(reCaptcha bypass)がビルトインされていて、Seleniumと連携して人間の動きを模したりjavascriptの実行が可能である。
インストール
インストールはWIndows_Linux_/MacOSで実行可能です。性質上仮想マシン上で実行すると思います。 実行環境: Kali linux 2021.1 ARM64
dockerを用いた場合
OpenBullet2はC#で書かれておりLinuxで実行するには別途Dotnetのインストールがあり若干煩わしい。最も簡単に開始できるのはDockerである。
Dockerをすでにインストールしていなければ下記のようにdocker.ioパッケージをインストールする。newgroupコマンドで一時的にdockerグループに追加し、sudoなしでコンテナを実行できるようにする。 コンテナ内で共有されるUserDataディレクトリを用意し、openbullet/openbullet2:latestというコンテナを下記のように起動する。
# docker install apt install docker.io # temporarily join docker group newgrp docker # sharing UserData with the container mkdir UserData # run openbullet2:latest docker run --name openbullet2 --rm -p 5000:5000 -v ${PWD}/UserData:/app/UserData/ -it openbullet/openbullet2:latest
binaryによるインストール
binaryのインストールでは,まず、[ここから](https://github.com/openbullet/OpenBullet2/releases/latest)OpenBullet2.zipとPatch.zipをダウンロードします。
次に、ここからaspnetcore-runtcme-5.x.xx-linux-xxx.tar.gz をダウンロードします。(xxxは最新のバージョンです。)OpenBulletはdotnet Core で作られているのでLinuxで実行するにはランタイムライブラリが必要です。
適当なデリレクトリ(OpenBullet2)を作り、そこにOpenBullet2.zipを含め下記の3つを同じ場所に格納してください。 このようにしないと解凍でファイルが散らかってしまいます。
- OpenBullet2.zip
- Patch.zip
- aspnetcore-runtome-5.x.xx-linux-xxx.tar.gz
最初にOpenBullet2.zipを解凍してください。 次にPatch.zipを解凍し全てのファイルを全て上書きしてください。 最後にdotnetランタイムライブラリを解凍して下さい。
$ gunzip OpenBullet2.zip && gunzip -f Patch.zip && tar xvzf aspnetcore-runtome-5.x.xx-linux-xxx.tar.gz
以上です。実行するには下記のコマンドでWeb Interfaceが立ち上がります。
OpenBullet2の起動
次のコマンドでOpenBullet2のサーバを立ち上げます。
$ dotnet ./OpenBullet2.dll
デフォルトでは5000ポートを使用します。ブラウザにてlocalhost:5000 にアクセスすると下記画面が確認できると思います。
以上でインストールは終了です。
OpenBullet2の実行
Proxyの設定
ProxyはOpenBulletにとってとても重要です。 通常サーバは単一のIPアドレスから大量のアクセスを受けた場合、そのIPアドレスからのログインを禁止することで、サーバへのBrute Force Attackを防ぎます。これはサーバのセキュリティ検証テストの際に問題があります。
OpenBullet2はProxyリストを使用し、毎回異なるIPアドレスを用いてログインを試みることができます。このためサーバはBrute Force Attackに気づくことを困難にします。
OpenBullet2では一般的なProxyのプロトコル(HTTP, Socks4, Socks4a, and Socks5)をサポートしています。 proxyのリストはインターネットから購入するか、検索により入手します。ここでは無料のプロキシリストを例えばこちらからtxtファイルをダウンロードします。 このサイトはファイルだけでなくAPIによるファイルリストの取得が可能です。
- ファイルの登録 左メニューよりProxiesを選び、右側、緑のAdd Groupボタンを押します。 まずProxies リスト毎に指定する(任意の)Group名を指定します。
次に緑のImport Proxiesボタンから先ほどDLしたproxyリストを読込ます。
すると下のように読み込んだproxyサーバのリストが表示されます。 以上で読込は完了ですが、これらのproxyが利用可能かどうかというチェックは別途必要です。
ファイルをダウンロード後に登録する方法でしたが、APIを利用してProxiesリストをサイトから直接取り寄せる方法(例)も可能です。
メニュー -> Proxies -> Import Proxies -> URL というタブを指定します。 そこに先のサイトから取得したAPIエンドポイント(URL)を指定することで最新のリストを取込むことができます。
Proxy Check
メニューからJobsを選択します。デフォルトのジョブとしてProxy Checkがあるので、それを選択すると下記のような表示が出ます。Botsはスレッドのの数で複数のproxyがある場合はこれを増やすことで並列化できます。 TImeoutはデフォルト10000millsec つまり10secですが短くても良いでしょう。Create Jobを押します。
Create Jobを押すと、Startボタンを押し、Proxyのチェックが開始します。 アクセス可能なproxyが見つかればWorkingにカウントされます。
Wordlists
Wordlists はBrute Force に使うCredential (username:passwordのペア)やEmail等を記載したリストファイルを読み込むための機能です。 ファイル名、ファイルのタイプがあります。 デフォルトで定義されているタイプは
* Default
* Emails
* Credentials
* Numeric
* URLs
があります。Defaultのファイルタイプは、一行一行をひとつのワードとして読込みます。Credentialsは各行にusername:passwdが記載されている場合に使用します。ユーザ名とパスワードの間をコンマ”:”でセパレートしています。Numeric,URLs,Emailsタイプは文字通り、それぞれ数字、URL,Eメールアドレスが各行に記載されているものです。
Wordlistの設定ファイルはUserData/Environment.iniにあります。このファイルには以上で紹介したファイルタイプが記載されています。 このファイルに新たなタイプを追加することで、必要なタイプを追加することも可能です。
下ではrockyou.txt を指定しました。
この状態で、+addを押せば読込は完了です。
Configの作成
OpenBulletで最も重要なのはConfigです。Configは特定のサイトを攻撃する場合にそのサイト専用にカスタマイズしたプログラムのモージュールや、自動アクセスやサイトを巡回するモジュールを実行することができます。 これらモジュールはConfigと呼ばれgithub等のインターネット上に公開されたり、ハッキングサイト経由での掲示板での販売、次のようなサイトでOpenBullet Configs Shopにて販売されています。
[注意]インターネットや上記のようなサイトで入手したConfigファイルを実行前に必ず内部コード(特にC#, loli code)の動作を確認してください
ここでは最も簡単なモジュールを作成してみます。 まずはメタデータを登録し、Configの名前や製作者、アイコンを指定し空のConfigファイルを作成してみます。
Configha作成すると下記のアイコンに変わります。プログラムを作成するためアイコンをダブルクリックします。
すると左側にエディタが表示されます。まだ何もありませんので、下記の+アイコンからAddを押して機能を追加します。
Addボタンを押すと機能毎の大項目が表示されます。 それぞれの項目名に関連した機能が用意されていますのでそこからGUIにて機能を選び、プログラムを構成する仕組みになっています。
まずはHello world
メニューからLoliCodeを選択しエディタを表示します。 printに相当する関数はLOGになります。 下記のように LOG “hello world”と記載し、右の緑のStartボタンを押すと、Logにメッセージが表示できます。 ちょっと簡単すぎですかね。
freeで手に入るConfigファイルを参考に、もう少し具体的な利用例を見ていきます。
Config
コンフィグファイルの保存フォルダ [UserData/Configs]
Openbullet2を起動したフォルダ(Openbullet2.dllがあるフォルダ)に,UserDataというフォルダがあると思います。このフォルダがGUIで作成した各種ファイルが保存されています。 先ほど作成したConfigファイルが拡張子”.opk”で保存されていることが確認できると思います。
OPKファイルの中身
OPKファイルは複数のファイルのアーカイブになっていてzipフォーマットで圧縮されています。 Linuxではunzip等のコマンドが利用できます。またWindows等ではopkの拡張子をzipに書き換え解凍ソフトで解凍する事が出来ます。
解凍すると主に4つのファイルが確認できると思います。
このうちmetadata.json はファイルのサムネイル等を含むメタ情報です。script.loliはloliScriptで書かれたメインスクリプト、script.csはC#のコードです。
ネットからDownloadしたCofigファイルもこのフォルダにコピーするだけで利用することができます。Web インターフェイスからConfigを開くと次のように追加したConfigファイルのアイコンが表示されます。
次回
コンフィグファイルの作成について見ていきます。
参考文献
https://www.coursehero.com/file/103358120/Openbullet-Guidepdf/
Trend Micro : How Cybercriminals Abuse OpenBullet for Credential Stuffing