nknskn ネタ置き場

IT使ってなんかやってる人間のたわごと

Burp Suite Private Collaborator Serverを立ててみた

Custom config書いてRoute 53でドメイン取ってEC2上でサーバを動かしてログを見た. そんだけ

Collaborator Serverについて

書いてあるブログはちょこちょこあるので概要はざっくりで.

  • HTTPレスポンスだけで判断するには難しい問題を検知するためのツールで、外部への通信が発生する系の問題を検出できる
  • サポートしているプロトコルは以下. 動作ポートは変更できるが, デフォルトを使用するのが基本的には良いはず
  • 検知できる脆弱性の例は以下

参考URLはこれ

タイトルとか URL
本家(EN) Burp Collaborator - PortSwigger
Deploying a private Burp Collaborator server - PortSwigger
WebAppSec(たぶん本家和訳) Burp Collaborator
プライベートBurp Collaboratorサーバの配備
個人ブログ Burp Collaboratorについてかいてみた①
Burp Collaboratorについてかいてみた②

モチベとClientについて

Collaboratorサーバってどんな感じで処理してるのか気になった. それだけ.

あとはCollaboratorサーバと連携して問題を検出できるのはProfessional or Enterpriseバージョンだけ. なので実際に試したい場合はProfessionalのライセンスを購入する必要あり(Black Fridayで安くなってたんだっけ?確認してない)

構築について

本家のHow to deployに従えばOK. DNSリクエストがどう飛んでくるかとか分かっていると構築はそんな手間取らない(手間取った).

準備したモノ、詰まったとこをまとめると、こう

準備、設定したモノ

  • EC2インスタンス
    • 検証用なのでmicroで良いと思う. ちゃんと運用しようと思ったらもうちょいスペック上げたほうが良いのかもしれない
    • セキュリティグループ、以下を開ける
      • tcp: 80, 443, 25, 465, 587
      • udp: 53
      • 53/tcpは開けなくても困ってない. DNSのクライアント次第の気もするのでtcpも開けといたほうが無難かも
    • Elastic IP
      • 必要に応じて. 検証したやつでは取ってない
  • Route 53でのドメイン
    • Route 53である必要はない. 一つ持っていたやつがあったので使いまわした. ここではexample.comとする
    • NSレコード - burpcollaborator.example.com: ns1.example.com,
    • Aレコード - ns1.example.com: 18.xxx.xxx.x
    • AAAAレコードは設定してないけど困ってない. 設定した方が良いとは思う
  • Collaborator config、最低限で簡単に作るなら以下の感じ、Domainは実際に使っているものからexample.comに変更している. IPアドレスは適当にマスク
{
  "serverDomain": "burpcollaborator.example.com",
  "workerThreads" : 10,
  "eventCapture": {
    "publicAddress" : "18.xxx.xxx.x",
    "ssl": {
      "hostname" : "burpcollaborator.example.com" # Self-signedで良い場合はこう、ちゃんと運用するなら証明書ペアを設定する
    }
  },
  "dns": {
    "interfaces" : [
      {
        "name": "ns1",
        "localAddress" : "172.31.xx.xx",
        "publicAddress" : "18.xxx.xxx.x"
      }
    ]
  }
  "logLevel" : "DEBUG"
} 

Server起動

BurpSuite Professionalをダウンロードして、同じディレクトリにconfig(mycollabo.config)を置いて...

こうじゃ!

sudo java -jar burpsuite_pro.jar --collaborator-server --collaborator-config=mycollabo.config

f:id:news-nknskn:20211129211301p:plain

ログはこんな感じ

f:id:news-nknskn:20211129212309p:plain

ふむ、fromとquery、要は[ ]で囲われたところを見ているわけですね. で、no interaction IDsってのはCollaboratorの例にあるランダムな値(f294gchg2la...r9gfとか)が入ってくるので、サーバはそこを使ってClientと会話している、と.

ということで、Collaboratorサーバを使ってあーだこーだやりたい場合はその辺を見ておけばOKってことですね.

詰まったこと

  • ConfigのNS設定
    • サンプルにもあるけどinterfacesは複数設定可能. サンプルに寄せてns2の設定をlocalAddressと同じ値にして起動したら、ns2の方の設定を起動するタイミングでdnsサービスのbindエラーが起きた. 当然ですね.
    • というわけでNWインターフェースの数に合わせてinterfacesの項目は設定すること
  • Route 53 ホストゾーンのNS設定
    • なにを血迷ったかホストゾーンを削除していて(覚えていない)、ホストゾーン自体のNSがドメインのものとズレていた. バッカじゃなかろか
    • 取得ドメインの方に書いてあるネームサーバをホストゾーンのものに変更して、ゾーン情報が更新されるのを待って、解決
    • ホストゾーンのNSを取得ドメインに書いてあるものに変更しようとしたけど、なんでかできなかった. 出来ないのは当然なのか?(勉強不足

所感

  • おかしなところで躓かなければ1時間かからずに構築できると思う. この手の検証用サーバを簡単に立てられるのは非常に嬉しい. Portswiggerには感謝
  • ドメインの更新をやめた時以外にRoute 53のホストゾーンを削除してはならない(戒め)
  • ぱぱーProfessionalかってー

以上