Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
skylift — ESP8266によるWiFi位置情報スプーフィング | Kitploit
ツール/GitHubGitHub/awesome-pentest-gadgets/skylift
組み込みシステムセキュリティWi-Fi監査エクスプロイトワイヤレスセキュリティハードウェアとIoTセキュリティレッドチーミング
GitHubawesome-pentest-gadgets/skylift

skylift

ESP8266によるWiFi位置情報スプーフィング

リポジトリを見る
836368年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

SkyLift V0.4

6月15日に公開予定

  • python3
  • click
  • より使いやすいCLIパーサーワークフロー
  • タイムスタンプの修正

SkyLift V0.3

SkyLiftは低コストの地理位置情報スプーフィングデバイスです。現在はESP8266を使用してWiFiビーコンフレームをブロードキャストし、WiFi地理位置情報サービスにおける長年にわたる(2008年の)脆弱性を悪用します。

この3番目のプロトタイプ版であるSkyLiftは、Akademie Schloss SolitudeとZKMでのウェブレジデンシー中にさらに開発されました。このプロジェクトについてのインタビューもお読みください。または、以下の手順で5ドル未満で自作することもできます。

アップデート

  • 2017年5月13日: ベルリンのGruener Salonでのジョン・キリアコー(CIA内部告発者)の講演からの新しいスキャンを追加

SkyLiftは元々、Surya Mattuとの共同開発により、!Mediengruppe Bitnikの2016年にナントのZoo Galerieで開催された「Welcome to Ecuador!」アサンジルーム展のために開発されました。この更新版V0.3の開発は2016年11月に始まり、シュロス・ゾリチュードでのウェブレジデンシーの支援を受けて2017年5月に正式にリリースされました。このバージョンは初期システム(SkyLift V0.1)から次のようないくつかの改良が加えられています:

  • 製造コストを50ドルから約5ドルに削減
  • 中核技術のセットアップ時間を数時間から約15分に短縮
  • ユーザー操作を改善(USB電源を供給するだけ)
  • チャネルホッピングによるパフォーマンス向上
  • パケット構造を改善(タイムスタンプ間隔バイトを追加)
  • 隠し(null)SSIDオプション「\x00」を追加
  • カスタムロケーション作成用のユーティリティスクリプトを追加
  • 技術を単一デバイスに統合
  • 表示用のオプションOLEDを追加

オリジナルのSkyLift(V0.1)の情報については、https://ahprojects.com/notebook/2016/skylift-geolocation/を参照してください。

SkyLiftは、Adam Harveyによってメンテナンスされているオープンソースプロジェクトで、消費者向けスマートフォンの地理位置情報サービスにおけるセキュリティ脆弱性と創造的な可能性を調査するものです。

完成済みですぐに使えるデバイスの入手に興味がある場合は、https://undisclosed.cc/のメーリングリストに登録してください。

クイックスタート

  • ESP8266 NodeMCU 12または12Eを購入 | eBay(安価)またはAmazon.com(迅速)
  • git clone https://github.com/adamhrv/skylift/
  • 「arduino/skylift_v03_embassy" からスケッチ "skylift_v03_embassy.ino" をアップロード
  • スマートフォンのWiFi地理位置情報サービスが有効になっていることを確認してください
  • ESP8266をスマートフォンから1〜2m以内(混雑したWiFiエリアでは0.25〜0.5m以内)に配置
  • 完全なセットアップとトラブルシューティングは以下を参照

セットアップ

必要なもの:

  • Arduino 1.6.12+
  • ESP8266 NodeMCU 12または12E | eBay、Amazon.com、Adafruit Huzzah
  • プログラミング用USBマイクロケーブル
  • 5V USBバッテリー(任意)

OLEDディスプレイを使用する場合(任意):

  • OLEDディスプレイ | eBay、Amazon.com
  • PCB 3x7cm(OLEDディスプレイを使用する場合のみ) | Amazon.com
  • はんだごて
  • OLEDライブラリ Adafruit_SSD1306 ライブラリ
  • ESP8266ライブラリ: "http://arduino.esp8266.com/stable/package_esp8266com_index.json"
  • はんだ付け後にヘッダーをトリミングするためのワイヤーカッター

OLEDディスプレイとESP8266 NodeMCUはどちらも、配達に1〜2週間待てるのであれば、eBayで約半額で購入できます。ESP8266は3ドルまで安くなることもあります。

テストスクリプト

WiFiテスト

  • 最新バージョンのArduinoを使用していることを確認してください(ビルドには1.6.12を使用)
  • ESP8266ボードがインストールされていることを確認してください。[環境設定] > [追加のボードマネージャURL] に "http://arduino.esp8266.com/stable/package_esp8266com_index.json" を追加
  • [ツール] > [ボード] で "NodeMCU 0.9 (ESP12 Module)" または12Eを選択
  • Arduino/test_single_beacon_frame スケッチでテスト
  • WiFiネットワークを確認してください。Network1 という名前がチャンネル1で表示されるはずです。

OLEDスクリーンテスト

  • PCBの裏側でOLEDをESP8266に配線
  • 低プロファイル化のためヘッダーの黒いプラスチックを除去
  • ESP8266ピンD2 -> OLEDピンSDAを接続
  • ESP8266ピンD3 -> OLEDピンSCLを接続
  • PWR(3.3V)を接続
  • GNDを接続
  • Arduino/test_oled_screen スケッチをアップロード
  • "Scrolling Text Demo 123 456" というテキストが画面にスクロール表示されるはずです

エクアドル大使館

エクアドル大使館のロケーションでSkyLiftをテスト

  • Arduino/skylift_v03_embassy スケッチをアップロード
  • スマートフォンでWiFi位置情報サービスを有効にしていることを確認
  • アクティブなデータ接続があることを確認(セルラーまたはWiFi。IPアドレスは関係ありません)
  • お好みのマッピングアプリケーション(または位置情報を使用する任意のアプリ)を開く
  • 動作しない場合、いくつかの理由が考えられます。最も可能性が高いのは、周囲のルーターが多すぎてWiFi地理位置情報APIが返す信頼度スコアに干渉していることです。
  • -60〜-40dBのネットワークが複数ある場合、SkyLiftが新しい地理位置情報を返す可能性は低いです

パフォーマンス向上のためのヒント:

  • 周囲のWiFi信号を-80dB未満の5ネットワーク未満に減らす
  • 信号強度が-80dB未満であれば、10以上のネットワークでも動作するはずです
  • NetSpot(無料トライアル版)を使用して周囲のネットワークを監視し、可能であれば既存のWiFiルーターから離れる
  • 衛星GPS信号が強い窓際から離れる
  • スマートフォンをESP8266の近くに配置(混雑したWiFiゾーンでは理想的には0.1〜1m、中密度のWiFiゾーンでは1〜2m、低密度のWiFiゾーンでは最大10m)。また、近くのルーターからは遠ざけること。
  • 10mを超える距離の場合、PCBトレースアンテナを切断してSMAコネクタをはんだ付けし、+7dBアンテナまたはWiFiアンプを追加できます。より簡単には、複数のSkyLiftデバイスをリピーターとして追加します
  • 金属製の屋根や構造物は周囲のWiFi信号を減衰させます
  • 石膏ボード、木材、コンクリートはWiFiを通すため、信号を著しく減衰させることはありません
  • 約65%が水分の人体は天然のWiFi吸収体であり(2.4GHzは水の共振周波数)、混雑した環境では周囲のWiFi信号を減衰させる働きをするため、混雑したエリアでの地理位置情報スプーフィングのパフォーマンスが向上します
  • 最適なパフォーマンスが得られる推奨場所は、バンカーやバーなど、GPS、セルラー、WiFi信号が減衰しているエリアです。ただし、どこでも自由に実験してください。
  • これまでの最良の結果は、La Gaîté Lyriqueの地下室、コンサート会場、そして(もちろん)管理されたテスト環境で達成されています。
  • 注記: SkyLiftは確実に動作するソリューションではありません。周囲に競合するWiFi信号が多すぎる場合、位置情報サービスAPIは低い信頼度スコアを返し、セルラー三角測量または衛星GPSにフォールバックします。

他のWiFiルーターのない屋内にいるのにSkyLiftが動作しない場合は、できるだけ多くの詳細情報を含めて問題レポートを提出してください:

  • NetSpotまたは他のアプリのスキャン結果
  • ESP8266で使用しているチャンネル
  • SkyLiftからスマートフォンまでの距離
  • スマートフォンにアクティブなデータ接続があるかどうか
  • 利用可能なデータ接続(LTE、4G、3G、EDGE、GPRS)
  • iOSまたはAndroid、そして差し支えなければスマートフォンのモデル

カスタムロケーション

iOS、OSX、またはWigle.net APIを使用して、独自のSkyLiftロケーションデータを作成できます。(AndroidとLinuxの手順はまだ文書化されていません)。

1A) OSXでWiFiネットワークをスキャン

python utils/osx_scan_to_json.py -o data/json/my_osx_scan.json

1B) iOSでWiFiネットワークをスキャン

無料のAirPort Utilityアプリを使用し、[設定] > [AirPort Utility] で「Wi-Fiスキャナ」を有効にします。WiFiスキャンを実行し、同期されたメモに保存するか、自分宛てにメールで送信します。CSVデータの前に2行あることを確認してください。例:

# Make your notes or add title her (saved as your_scan.txt))
SSID, BSS, RSSI, Channel, Time
"", "11:11:11:11:11:11", "-61", "44", "13:17:34"
"", "11:11:11:11:11:11", "-61", "44", "13:17:44"
"freewificonnect", "22:22:22:22:22:22", "-80", "11", "13:17:32"
"freewificonnect", "22:22:22:22:22:22", "-80", "11", "13:17:41"

ファイルを「data/ios/your_scan.txt」に保存し、次を実行します:

python utils/ios_to_json.py -i data/ios/your_scan.txt -o data/json/your_scan.json

1C) Wigle APIを使用

https://wigle.net に登録してAPIキーとAPIトークンを取得します(現在は無料です)。Wigleでの結果は変動するか、動作しない可能性があります。彼らのデータはクラウドソースであり、検証されておらず、古くなっている可能性があります。最良の結果を得るには、現地で独自のWiFiスキャンを作成してください。

python utils/wigle_to_json.py --lat 37.484581 --lon -122.147921 --radius 3 -o data/json/wigle_test.json

2) iOS(csv)をJSONに変換

python utils/ios_to_json.py -i data/ios/your_scan.txt -o data/json/your_scan.json

3) Arduinoスケッチ用に(任意の)JSONを変換

python utils/json_to_arduino.py -i data/ios/your_scan.json -o data/ino/your_scan.txt

出力テキストは次のようになります:

#define nn 2

char* ssids_str[nn] = {
	"74:46:A0:33:00:01",
	"74:46:A0:33:00:02"
};

byte bssids[nn][6] = {
	{0x74, 0x46, 0xA0, 0x33, 0x00, 0x12},
	{0x74, 0x46, 0xA0, 0x33, 0x00, 0x12}
};

char* ssids[nn] = {
	"wifi_ssid",
	"another_wifi_ssid"
};

#ifdef USE_SCREEN
byte channels[nn] = {6, 6};
#else
byte channels[nn] = {10, 11};
#endif


次に、「skylift_v03_embassy」のコピーを作成し、既存のWiFiデータをカスタムデータに置き換えます。

実験的: チャンネルの2つのオプションに注目してください。スタンドアロンモード(スクリーンなし)でスケッチを使用する場合、チャンネルを変更したいと思うかもしれません。大きな部屋でSkyLiftを使用する場合、複数のリピーターユニットをランダムなチャンネルで使用し、スクリーン版をチャンネル1、6、11で使用する方がうまくいくようです。デバイスを1台だけ使用する場合は、チャンネル1、6、11をすべてまとめて使用することが、これまでのところ最良の結果をもたらしています。


WiFi地理位置情報サービスについて

地理位置情報サービス は、スマートフォンの地理的な位置を特定するために使用される技術群を指す広い用語です。地理位置情報サービスに使用される4つの主要技術は、(1)GPS、(2)セルラー三角測量、(3)Bluetooth、(4)WiFi測位です。利用可能な4つの信号のうちどれかに応じて、スマートフォンは最も高い精度と最短の待ち時間で地理的な位置を特定しようとします。

ツールをダウンロード