
無線ネットワークを難読化するPythonスクリプト
ワイヤレスネットワークを難読化するpythonスクリプト
'''
警告: 私は本職のプログラマーではなく、自分がプログラマーだとも思っていません。
一般的なSSIDリストは https://wigle.net/gps/gps/Stat から取得しました。 OUIベンダーリストは http://standards.ieee.org/develop/regauth/oui/oui.txt から、 既知のベンダー(netgear, cisco, linksys, d-link, atheros, ralink, apple)向けに解析しました。
このアイデアは、Black AlchemyのFakeAP http://www.blackalchemy.to/project/fakeap/ と Pettingerのairraid http://www.pettingers.org/code/airraid.html に基づいて作成されました。 パケットから必要な情報を解析するためのロジックの一部は、Leandro Meiners ([email protected])(Core Security TechnologyのPower-Saving DoSスクリプト)から借用しました。
これらの実装間の主な違いは、ハードウェア要件と、 偽アクセスポイントの生成方法です。
FakeAPは、iwとifconfigを使用してアクセスポイントを作成し、 PRISMベースのワイヤレスカードで偽アクセスポイントを生成します。問題は、PRISMドライバーがほとんどの 現代のディストリビューションで非推奨になっていることです。動作するドライバーとPRISMカードがあっても、 FakeAPをそのまま動作させることができませんでした。
AirRaidはFakeAPの動作とほぼ同じです。ただし、Atherosベースのカード向けに調整されており、 madwifiドライバーとユーティリティを利用して偽アクセスポイントを作成します。 Madwifiプロジェクトはath5/9kドライバーに取って代わられ、ほとんど衰退しているようです。 AirRaidはそのままでは、私のAtherosカードでは動作しなくなりました。
これらの実装のもう一つの問題は速度でした。各偽アクセスポイントが 作成されるたびに、ワイヤレスデバイスを停止・起動して再設定する必要がありました。
この実装はいくつかの点で異なります。FakeAPやAirRaidのように 完全にハードウェア固有ではありません。ワイヤレスアダプタの設定を変更してデバイスをリセット・再設定することで偽アクセスポイントを作成する代わりに、 パケットインジェクションをサポートするワイヤレスカードを 利用します。
これにはいくつかの利点があります。はるかに多くのアダプタと、パケットインジェクションとモニターモードをサポートする 多くの最新ドライバー(rtl8187、ath5k、ath9k、 ほとんどのralinkなど)をサポートします。要するに、airmon-ngを介してアダプタをモニターモードで実行できるドライバーを持つ デバイスなら、これを使用できます。実際にアクセスポイントを作成する代わりにパケットインジェクションを利用するため、 実際のアクセスポイントからのように見えるパケットを 注入します。
これは私の最初のpythonプロジェクトなので、欠陥や非効率、 どのAPが偽物かを検出する可能性などがおそらくあるでしょう。問題が見つかり、機能拡張が要求されるにつれて、 時間をかけて改善していく予定です。
このツールを動作させるのに必要なものはこれらより少ないかもしれませんが、確認済みの構成は 以下のとおりです:
ath5kとath9kを使用するAtherosベースのカード Realtek 8187チップセット(例:Alfa AWUS 036H) ほとんどのRalinkチップセット
これはpython 2.7とScapy 2.2.0でコーディングされました。Scapyについてしっかりと理解しているわけではありません。 ドキュメントがかなり薄いためです。何か間違ったことをしていたら、教えてください。 パケットインジェクションを可能にするモニターインターフェースの作成にはairmon-ngを使用しました。
また、この説明が実際のコードよりも長いことには気づいています。
実行するには:
必要なもの:python 2.7、Scapy 2.2.0、パケットインジェクションをサポートするドライバーを持つワイヤレスカード
#####初期バージョン警告#####
現時点ではscapyをよく理解していないため、これは実質的にロギングがありません。 そして、ビーコンフレームとプローブレスポンスを送信すると、ターミナルに"Sent 1 packets"と表示されます。 毎秒複数のパケットを送信していると、"Sent 1 packets"が画面に大量に表示されます。 現在、これを回避し、より有用なロギングを提供する方法を模索中です。
パケットインジェクション対応のモニターモードにあるワイヤレスNICを用意してください。これには aircrack-ngスイートのairmon-ngを使用しています:
airmon-ng start <interface>
これにより、作成された新しい仮想モニタリングインターフェースが表示されます(例: mon 0)
FuzzAP.pyは4つの必須引数を取ります。最初の引数は使用するインターフェース、2番目は 生成する偽アクセスポイントの数、3番目はOUIファイル、 4番目はSSIDファイルです。
sudo python fuzzap.py <interface> <number of APs> <OUI file> <ssid file>
このリポジトリから直接実行する場合:
sudo python fuzzap.py <interface> <number of APs> common.txt ssid.txt
クライアント側から見た様子:http://imgur.com/QsoFP1a
このソフトウェアは、著作権所有者および貢献者によって"AS IS"で提供され、明示または黙示のいかなる保証(商品性および特定目的への適合性の黙示的保証を含みますが、これらに限定されません)も否認されます。いかなる場合も、このソフトウェアの使用から生じるいかなる直接的、間接的、偶発的、特別、典型的、または結果的損害(代替商品またはサービスの調達、使用、データ、または利益の喪失、または事業の中断を含みますが、これらに限定されません)についても、その原因が何であれ、また契約、厳格責任、または不法行為(過失を含む)のいずれの責任理論に基づくかにかかわらず、たとえそのような損害の可能性が通知されていたとしても、責任を負わないものとします。
'''
TODO: