pwndrop は、レッドチームのペイロード配信や、HTTPおよびWebDAVを介したプライベートファイルの安全な共有のための、自己展開型ファイルホスティングサービスです。
nginxやapacheのWebサーバーを素早くセットアップしてファイルをホストする必要があり、python -m SimpleHTTPServer の制限に不満を感じたことがあるなら、pwndrop は間違いなく最適です!
pwndrop を使えば、次のことが可能です:
主な目標は、ファイル共有を可能な限り簡単かつ直感的にしつつ、レッドチーム評価を支援する追加機能を実装することです。
pwndrop のフロントエンドは純粋なVue.js + Bootstrapで開発されており、npmやwebpackの依存関係はありません。バックエンドはREST APIを提供し、GO言語で動作するローカルデータベースを管理します。
pwndrop の使い方や、最近のリリースで実装された新機能について学びたい場合は、私のブログの投稿をぜひチェックしてください:
Luke Turvey (@TurvSec) による素晴らしいビデオをご覧ください。pwndrop の使い方を完全に解説しています。
まだデプロイ先のサーバーをお持ちでないなら、Digital Oceanを強くお勧めします。最安の$5/月のDebian 9サーバー(25GBのストレージ)で十分に動作します。こちらの紹介リンクを使うと、60日間無料でサーバーに使える$100が追加でもらえます。
ドメインを登録し、そのDNS AレコードをVPSのIPに向けてください。また、ドメインの ns1 および ns2 ネームサーバーを pwndrop インスタンスのIPに向けることもできます。そうすると、自動的に有効なDNS A応答を返します。
ドメインなしで pwndrop をセットアップしたい場合は、以下を確認してHTTPS証明書を自動生成しないローカルインスタンスをセットアップしてください。
pwndrop をインストールする前に、DNSやHTTP(S)サーバーが実行されていないことを確認してください。
スクリプトコードをダウンロードして確認する前にワンライナーを実行することはお勧めしませんが、本当に急いでいる場合は以下の通りです:
curl https://raw.githubusercontent.com/kgretzky/pwndrop/master/install_linux.sh | sudo bash
これにより、最新のamd64リリースバイナリがダウンロードされ、バックグラウンドで動作するデーモンが完全にインストールされます。
まず、https://github.com/kgretzky/pwndrop/releases から必要なリリースパッケージをダウンロードします。
次に、以下の手順を実行します(ワンライナーと同じ動作を行います):
tar zxvf pwndrop-linux-amd64.tar.gz
./pwndrop stop
./pwndrop install
./pwndrop start
./pwndrop status
まず、GOがバージョン 1.13 以上でインストールされていることを確認してください:https://golang.org/doc/install
次に、以下の手順を実行します:
sudo apt-get -y install git make
git clone https://github.com/kgretzky/pwndrop
cd pwndrop
make
make install
pwndrop が実行されていることを確認してください。
https://yourdomain.com/pwndrop(これがデフォルト値です。事前に設定したシークレットパスを使用してください)https://yourdomain.com/(ブラウザが認証されると、管理パネルのログインページが表示されます)/pwndrop 以外のものに変更してください。準備完了です!
pwndrop をデーモンとしてインストールする必要はなく、コンソールから直接実行できます。
usage: pwndrop [start|stop|install|remove|status] [-config <config_path>] [-debug] [-no-autocert] [-no-dns] [-h]
daemon management:
start : デーモンを起動
stop : デーモンを停止
install : 利用可能なシステムマネージャ(systemd、systemv、upstart対応)を使ってデーモンをインストール
remove : デーモンをアンインストール
status : インストール済みデーモンの状態を確認
parameters:
-config : 設定ファイルへのカスタムパスを指定(デフォルト: 実行ファイルと同じディレクトリの 'pwndrop.ini')
-debug : デバッグ出力を有効化
-no-autocert : LetsEncryptからの自動TLS証明書取得を無効化。IPやローカルネットワークで接続する場合に便利
-no-dns : UDPポート53でのDNSサーバーを起動しない。ネームサーバーとしてpwndropを使用したくない場合に使用
-h : 使用法のヘルプを表示
初回起動時に、pwndrop はデフォルトで実行ファイルと同じディレクトリに新しい設定ファイル pwndrop.ini を作成します。後で修正したり、独自のファイルを提供して、インストール前に pwndrop を事前設定し、ツールのデプロイをさらに自動化することができます。
以下は、利用可能なすべての設定変数とコメントを含む設定ファイルの例です:
[pwndrop]
listen_ip = "190.33.86.22" # pwndropインスタンスの外部IP(ネームサーバー機能を使用する場合に設定必須)
http_port = 80 # HTTPおよびWebDAVのリスニングポート
https_port = 443 # HTTPSのリスニングポート
data_dir = "./data" # データストレージが配置されるディレクトリパス(相対パスは実行ファイルのディレクトリからの相対)
admin_dir = "./admin" # 管理パネルファイルが配置されるディレクトリパス(相対パスは実行ファイルのディレクトリからの相対)
[setup] # オプション: pwndropを事前設定したい場合に記述(初回実行時に設定ファイルからこのセクションは削除されます)
username = "admin" # 管理者アカウントのユーザー名
password = "secretpassword" # 管理者アカウントのパスワード
redirect_url = "https://www.somedomain.com" # どの共有ファイルにも一致しないパスが指定された場合に、訪問者がリダイレクトされるURL(空白にすると404を返します)
secret_path = "/pwndrop" # シークレットURLパス。このパスにアクセスすると、ブラウザが管理パネルのログインページにアクセスできるようになります(デフォルト値を変更してください)
インストールスクリプトのいずれかを使用してデプロイ前に pwndrop インスタンスを事前設定したい場合は、設定ファイルを /usr/local/pwndrop/pwndrop.ini に配置してください。pwndrop デーモンが最初に実行されたときに解析されます。
@jaredhaight に多大な感謝を捧げます。彼の Faction C2 フレームワークのおかげでVueを学ぶきっかけを得ました。
また、プレリリースフィードバックを提供し、ツールに関する意見で支援してくれたすべての人々に感謝します!
pwndrop は Kuba Gretzky (@mrgretzky) によって作られ、GPL3ライセンスの下で公開されています。