Security Index

セキュリティやソフトウェアについてのあれこれ

Pwnagotchi 作ってみた!(Wi-Fi 脆弱性情報を収集する電子ペットキットの作り方)

Pwnagotchi(ポーナゴッチ)というWi-Fi 脆弱性情報を収集する電子ペットキットを作ってみましたのでその作り方のメモです。

 

f:id:security_index:20200726190448p:plain 

 

 

Pwnagotchiとは?

Pwnagotchi(ポーナゴッチ)は周囲のWi-Fi情報を傍受し、Wi-Fiの鍵を特定するのに必要なパケット情報を収集することができる電子ペットです。

 

PwnagotchiはRaspberry Pi Zero Wという通常のRaspberry Piよりも更に小型でかつWi-FiとBluetoothを搭載したものと電子ペーパーディスプレイで作成することができます。

 

以前、Gigazineでも取り上げられたことがあったようです。

 

gigazine.net

 

公式サイトもあります。

 

Pwnagotchi - Deep Reinforcement Learning instrumenting bettercap for WiFi pwning.

 

Pwnagotchiという名前の由来は、セキュリティでよく使われるpwnとたまごっちのgotchiを組み合わせてPwngotchiとなっているそうです。

 

そのため、たまごっちのように画面上にアスキーアートの顔が表示され、これが現在のPwnagotchiのステータス(情報収集中、アクセスポイントが無くて寝てるなど)を表しています。

 

f:id:security_index:20200722164512j:plain

 

Pwnagotchiは深層強化学習を使って効率よく情報収集するようになっているみたいです。

 

Pwnagotchiを作ってみる

必要なもの

Wが付いていないRaspberry Pi Zeroもありますが、こちらではWi-Fiが付いていないためPwnagotchiには使えません。

私はこの電子ペーパーディスプレーではなくスイッチサイエンスでInky pHATを購入しました。

Inky pHATもPwnagotchiに対応していますが公式でWaveshare B&W V2の方を推奨されていますのでWaveshareを私もお勧めします。

(私はスイッチサイエンスで他の商品とまとめて購入したかったためにInky pHATにしました)

品質と読み書き速度が早いものが良いそうです。

無くてももちろん大丈夫ですが、Pwnagotchiは持ち運んで情報収集を楽しむものなのであったほうがいいです。

Raspberry Pi Zero Wそのままのままでは基盤むき出しなのでケースがあると安心です。

 

f:id:security_index:20200802164218j:plain

 

その他、Pwnagotchiを作るためにUSBケーブル、microSDカードリーダー(PCで読み書きするため)が必要です。

 

より詳しくは公式のINSTALLATIONのRequired Hardwareで確認することができます。

 

セットアップ

microSDカードにPwnagotchiのイメージを書き込んでいきます。

 

1. Imageと書き込みソフトのダウンロード

GithubのリリースページよりImageをダウンロードします。

そのImageをmicroSDに書き込むためのソフト balenaEtcherをダウンロードします。

 

2. Imageの書き込み

balenaEtcherを使ってmicroSDに書き込みます。

microSDをSDカードリーダを使ってPCと繋ぎ、balenaEtcherを使って指示通りにダウンロードしたImageを選択し、microSDカードを選び、書き込む(Flash!)すれば大丈夫です。

 

f:id:security_index:20200802164951p:plain

 

Imageはzipのままでも大丈夫です。

 

3. 初期設定をする

Image書き込んだら終わりでなく、初期設定をする必要があります。

Flash後にmicroSDがPCから認識されていない場合には再度microSDを抜き差ししてPCに認識させます。

その後、/etc/pwnagotchi/config.tomlに以下のような設定を書きます。

 

f:id:security_index:20200802165923p:plain

 

whitelistとexcludeの部分は今回は無視し、注意点としては

ui.display.type = "waveshare_2"

の部分に自分の電子ペーパーディスプレイのタイプを指定する必要があります。

私はInky pHATを購入したのでinkyに変更して書き込みました。

 

その他の細かい設定に関しては公式のCONFIGURATIONで確認できます。

 

4. 起動

あとはRaspberry Pi Zero WにmicroSDを入れて起動させるだけです。

起動には少し時間がかかるので気長に待ちましょう。

いくら待っても画面が表示されない場合には再度Imageを書き込み直したり、設定を確認しましょう。

Raspberry Pi Zero Wに給電できれいればLEDランプが点滅しますのでそこが全く変わらない場合には電源の問題かもしれません。

 

初回起動時には気にしなくても良いと思いますが、2つのUSBポートは左側が電源ポート、右側がデータポートになっています。

 

f:id:security_index:20200802172107p:plain

 

以下のような画面が表示されれば成功です!

最初に鍵の生成が行われますのでまた終わるまでしばらく待ちましょう。

 

f:id:security_index:20200802172308j:plain

 

あとはPwnagotchiが自動でWi-Fiの情報を収集してくれます。

以下のような収集した結果のレポート画面(統計情報)を確認したい場合にはPwnagotchiとPCをデータポートで繋ぐことで確認できます。

公式のUSAGEにより詳しい情報が書かれています。

 

f:id:security_index:20200802172955j:plain

 

最後に

microSDやモバイルバッテリーがすでに家にある方は6,000円ほどで簡単にWi-Fiの情報収集ツールを自分で構築することができるので少しでも興味がある方は作ってみると面白いと思います。

(安いところで買えば5,000円もしないかもしれません)

 

WPA2の脆弱性「KRACKs」や新しいプロトコルのWPA3とその脆弱性DragonbloodなどWi-Fiに関するセキュリティの話題を目にする機会はあるとは思いますがあまり詳しくは理解していない、できないことが私はありました。

 

しかし、実際の環境などを考えるとWi-Fiに侵入されたらかなりヤバくない?と思うこともあります。

(社内のWi-Fiは基本的にWPA2-エンタープライズのため家庭のWi-Fi環境とは異なると思いますが)

 

Pwnagotchiを通してWi-Fi周りの知識が付けられればと思っています。

また、Pwnagotchiは深層強化学習のアルゴリズムを使っているので機械学習の勉強にももしかしたらなるのかもしれません。

 

Wi-Fi周りの知識はほぼゼロなのでネットワークがよくわかる教科書の「第6章 無線LANの基礎知識」やハッキング・ラボのつくりかたの「第6章 LANのハッキング」で勉強中。。。

 

 

Raspberry Pi Zero WH スターターセット

Interface(インターフェース) 2020年 09 月号 最新ラズパイ4のハード&OS大研究

ITエンジニアのための強化学習理論入門

 

Twitter (@security_index) | Twitter