なんでもセキュリティ Advent Calendar 2016 18日目の記事です。
読み返すとセキュリティあんまり関係なくなってますが、Burp Suiteの話ということでご容赦頂きたく。
本記事の対象者
以下に当てはまる人に関係ある話になります。
- Burp Suite Free Editionユーザ(今後Burp Suiteと書いた場合はFree Editionのつもりで書いてます)
- Macユーザ
- homebrewユーザ
概要
セキュリティ界隈の人(特にWeb系)であれば、Burp Suiteを使っている人は多いかと思います。
Burp Suiteは最近開発が盛んで更新が多いのですが、アップデートするためにはMacの場合、dmgファイルを落としてきて自分でインストールして...という手順が必要です。
面倒くさがりの自分には耐えられなかったので、homebrew-caskでインストールやアップデートできるようにしてみた、という内容です。
この記事をちゃんと読まなくても、Macの人は以下のコマンド打つとBurp Suiteがインストール可能になった、ということだけ知って頂ければ。
$ brew cask install burp-suite
経緯
どういう経緯だったかについてだらだらと書いておきます。Caskの作り方に興味ある人は見て下さい。
dmgファイルのインストールならhomebrew-caskが使えるのではないかと考えました。
そこでリポジトリを見たら既にBurp Suite用のCask(burp-suite.rb
)がありました。
https://github.com/caskroom/homebrew-cask/blob/83a77e125a9b0a6913556a4a8706be95407f1881/Casks/burp-suite.rb
これで楽になる!と思って早速使ってみました。
$ brew cask install burp-suite
==> Caveats
burp-suite requires Java. You can install the latest version with
brew cask install java
==> Downloading https://portswigger.net/Burp/Releases/Download?productId=100&version=1.7.06&type=MacOsx
######################################################################## 100.0%
==> Verifying checksum for Cask burp-suite
To complete the installation of Cask burp-suite, you must also
run the installer at
'/usr/local/Caskroom/burp-suite/1.7.06/Burp Suite Free Edition Installer.app'
🍺 burp-suite was successfully installed!
これはよく見ると、手動でインストーラを実行するように言われています。
つまり、以下の2つの手順のうち、1をやってくれているものになります。
- dmgファイルのダウンロード
- Installerの実行
確かにWebページへ行ってdmgを落とす面倒さからは解放されるものの、肝心のインストールの方の手間は省けていません。
そこでburp-suiteのCaskを読んでみました。
すると、以下の行でinstaller manual
と書いてあります。
https://github.com/caskroom/homebrew-cask/blob/83a77e125a9b0a6913556a4a8706be95407f1881/Casks/burp-suite.rb#L9
...
installer manual: 'Burp Suite Free Edition Installer.app'
uninstall delete: '/Applications/Burp Suite Free Edition.app'
...
これはどうやら、公式ドキュメントを読む限りインストールを手動で行うときに使う記法のようです。
https://github.com/caskroom/homebrew-cask/blob/master/doc/cask_language_reference/stanzas/installer.md#installer-manual
ここで諦めかけたのですが、他のアプリはどうしてるのかと調べてみました。
例えばSlackとかはどうなのかと調べたところ、app
という記法を使っていました。
https://github.com/caskroom/homebrew-cask/blob/c28d61f56d5e0630add9bd38806ab5b1cb3a7cfd/Casks/slack.rb#L14
...
app 'Slack.app'
uninstall quit: 'com.tinyspeck.slackmacgap'
...
これは単にappファイルを移動してくれるだけのもののようです。
https://github.com/caskroom/homebrew-cask/blob/master/doc/cask_language_reference/stanzas/app.md
dmgの中にappファイルが入ってる場合はapp
記法で良さそうですが、Installerが入っている場合は使えなさそうです。
いよいよ無理かな、と思ったのですが、一応他のCaskをもう少し眺めてみることにしました。
すると以下のようなCaskを見つけました。
installer script: 'XAMPP.app/Contents/MacOS/osx-intel',
args: ['--mode', 'unattended'],
sudo: true
これはXAMPPのCaskなのですが、installer script
という記法が使われています。
これは何だろうと思って調べたところ、Installerを実行してくれる仕組みのようで、まさに今欲しいものでした。
https://github.com/caskroom/homebrew-cask/blob/master/doc/cask_language_reference/stanzas/installer.md#installer-script
MacのInstallerの仕組みをよく知らなかったのですが、どうやらContensts/MacOS
の下にインストールスクリプトが置いてある場合があるようです。
そこでBurp Suiteについても調べてみると、実行ファイルが置いてありました。
$ file Burp\ Suite\ Free\ Edition\ Installer.app/Contents/MacOS/JavaApplicationStub
Burp Suite Free Edition Installer.app/Contents/MacOS/JavaApplicationStub: Mach-O 64-bit executable x86_64
しかし使い方が分からない...とりあえず-h
でも付けて実行してみるか!と思って適当に実行してみたら、ヘルプ出てきました。
$ Burp\ Suite\ Free\ Edition\ Installer.app/Contents/MacOS/JavaApplicationStub -h
2016-12-15 17:04:27.653 JavaApplicationStub[68638:19066191] NEW LAUNCHER
こんなのあるのか...と驚きつつオプションを見ると-q
というオプションがあります。
これを使ってCask作れそう、と思って色々検証したところ一応インストールできるようになりました。
PR出したらすぐにマージしてもらえました。
https://github.com/caskroom/homebrew-cask/pull/27295
$ brew cask install burp-suite
==> Caveats
burp-suite requires Java. You can install the latest version with
brew cask install java
==> Downloading https://portswigger.net/Burp/Releases/Download?productId=100&version=1.7.14&type=MacOsx
Already downloaded: /Users/teppei.fukuda/Library/Caches/Homebrew/Cask/burp-suite--1.7.14.14&type=MacOsx
==> Verifying checksum for Cask burp-suite
==> Running installer script Burp Suite Free Edition Installer.app/Contents/MacOS/JavaApplicationStub
==> 2016-12-15 17:17:15.707 JavaApplicationStub[47214:19196829] NEW LAUNCHER
==> The installation directory has been set to /Applications.
==> Extracting files ...
==> Finishing installation ...
🍺 burp-suite was successfully installed!
まとめ
Burp Suiteをhomebrew-caskでインストールまでしてくれるようにしました。
今後はコマンド1つで更新してくれるので自分は大分幸せになりました。
自分の検証した範囲では特に問題なかったですが、何か不具合あったらすみません。