MENU

Windows環境でBusKill(のようなもの)を自作してみる【セキュリティ】

本記事はあくまでセキュリティとプライバシーの向上のための参考記事であり、悪用を推奨する記事ではありません。

海外の仮想通貨トレーダーのOPSECに関して調べている際にフォーラムで掲載されていて興味を持ったため紹介します。

内容に間違いがある場合は@Minimal_MiraiまでDMを頂けますと幸いです。

 

BusKillとは?

ノートPCのUSBポートを使い、切断された際には強制的にシャットダウンを行う手法です。

以下により詳しい情報が掲載されています。気になる方は御覧ください。

 

Introducing BusKill: A Kill Cord for your Laptop

https://tech.michaelaltfield.net/2020/01/02/buskill-laptop-kill-cord-dead-man-switch/

https://cdn-ak.f.st-hatena.com/images/fotolife/M/Minimal_Mirai/20220428/20220428214214.png

 

jp.techcrunch.com

 

またその性質上、Tailsと組み合わせて運用されるケースがあるそうです。

以下に詳しい情報が掲載されています。

www.buskill.in

また公式らしきリポジトリPythonスクリプトが配布されていますが今回は使用しません。

 

想定読者

仮想通貨等の資産を扱う人

外部に漏洩するとリスクを伴う情報をPCに保存している人

出張や出先でよくPCを使う人

 

前提

・ある程度自前で設定できること、また今回はあえてWindows環境を想定して構築します

・VeraCryptやBitLocker等でディスクを暗号化していること

・適当なUSBメモリ等 x1

・トイレに行くだけで全ブッチされるので出先でのみの使用を推奨します

 

設定手順

Windowsイベントビュアーを起動し、USBのログを有効化します。

 

%SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-DriverFrameworks-UserMode%4Operational.evtx

 

アプリケーションとサービス ログ -> Microsoft -> Windows -> DriverFrameworks-UserMode -> Operational

左クリックで「ログの有効化」を選択します。

ここまで完了したらUSBメモリを刺し、一度抜いて下さい。

ログが有効化されている場合、日付と時刻に現在時刻が表示されます。

※ 再読み込みが必要になる場合があります。

 

また以下のPowerShellコマンドでUSBを抜いた場合のログが取得できます。

Get-WinEvent -LogName Microsoft-Windows-DriverFrameworks-UserMode/Operational -FilterXPath '*[UserData/UMDFHostDeviceRequest/RequestMinorCode="23"] and *[System[(EventID=2102)]]'

 

イベントID 2102のログに対してイベントビューアーからタスクスケージューラでタスクを設定します。

2102のログを選択し、イベントビューアーでインスタンスIDを確認します。



下記コード内のインスタンスIDを自分のインスタンスIDに差し替えます。

<QueryList>
  <Query Id="0" Path="Microsoft-Windows-DriverFrameworks-UserMode/Operational">
    <Select Path="Microsoft-Windows-DriverFrameworks-UserMode/Operational">
            *[System[(EventID=2102)]]
            and
            *[UserData/UMDFHostDeviceRequest/InstanceId="ここに自分のインスタンスID"]
            and
            *[UserData/UMDFHostDeviceRequest/RequestMinorCode="23"]
        </Select>
  </Query>
</QueryList>

 

タスクスケジューラにて「タスクの作成」を選択し、トリガー設定を変更します。

タスクの開始->イベント時->カスタム->イベントフィルターの編集 で表示された

プログラムを設定 にて手動でクエリを編集する を有効にしてから先程書いたXMLファイルをコピペします。

上記の内容で問題なければOKを選択します。

 

続いてタスクスケジューラのタブを「操作」に移動し、

1. C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe をプログラムに設定

2. Stop-Computer -Confirm を引数の追加に入力

以上の設定で保存します。またPowerShell.exeの保存ディレクトリは$PSHOMEで表示することが可能です。

 

一般的にPowerShellの保存ディレクトリは C:\Windows\System32\WindowsPowerShell\v1.0 以下、32bit版はPATHが変わります。

 

実際にUSBを抜いてみて、PowerShellが起動されれば動作テスト完了です。

2. 引数の追加 にて入力した引数を Stop-Computer -Force に書き換えると強制的にシャットダウンされます。

 

注意点

間違った対象に対してタスクを設定するとUSBメモリを挿しても抜いても両方がトリガーとなりPowerShellが起動されたため注意が必要です。

またテストする場合の引数はシャットダウンの確認を行う Stop-Computer -Confirm にしましょう。

でないと一々シャットダウンされるため面倒です。

タスクの設定を追加する際は以前設定したタスクを無効化してから追加することをおすすめします。

 

更に利便性を高めるには

マグネット式のBusKillコードがクラウドファンディングで提供されています。

www.crowdsupply.com

 

Windowsにはそもそもスマホを接続して一定距離まで離れるとロックする動的ロック機能がついているため、このような手法にどの程度需要があるかは不明ですが少なくともBluetoothを経由する必要もなく物理的にマシンを落とせるというのは楽です。