グレングレンウィルキンソンからの興味深い講演マスターを裏切った機械を見たところです。
彼は、あなたの電話はこれまでに接続したすべてのSSIDを常にブロードキャストしていると述べました。攻撃者はこれらのwifiリクエストをどのようにキャプチャできますか?
正直に言うとかなり簡単です。必要なことは、プローブ要求をリッスンすることだけです。それらをリッスンするようにBT5を備えたコンピューターをセットアップする方法について説明している素敵なブログがあります here 。
「モニターモード」をサポートするネットワークカードを使用すると、いわゆる「プローブリクエスト」を取得できます。ネットワークカードが監視モードになるように設定されたら、 aircrack 、 wireshark または hoover などを使用して、プローブ要求をキャプチャできます。
たとえば、ubuntuとWiresharkを使用する場合は、ネットワークカードを監視モードに設定します。
Sudo ifconfig wlan0 down
Sudo iwconfig wlan0 mode monitor
Sudo ifconfig wlan0 up
次に、wiresharkを起動し、「wlan.fc.type_subtype eq 4」のフィルターを設定します。
これで、すべてのSSIDが周囲でプローブされていることがわかります。
たとえば、すばらしいaircrack-ng、具体的には airodump-ng ユーティリティを使用します。探している情報は、下部セクションの「プローブ」の下に表示されます。
これはほとんどのLinuxで機能するはずです。
Sudo apt-get install aircrack-ng
Sudo airmon-ng start <card>
Sudo airodump-ng mon0
これは、すべてのデバイスが接続しようとしているもののリストを出力します。一部のデバイスは利用可能なネットワークのみをプローブしますが、ご想像のとおり、スマートフォンは、利用可能かどうかに関係なく、デバイスが認識しているすべてのネットワークをプローブします・
他の回答で述べたようにワイヤレスネットワークカードを監視モードにした後、次のような方法でMACアドレスとssidを出力できます。このコードはscapyライブラリ/ツールに依存しています。
#!/usr/bin/env python
from scapy.all import *
conf.iface = "mon0"
def handle_pkt(pkt):
if Dot11 in pkt and pkt[Dot11].type == 0 and pkt[Dot11].subtype == 4:
hwaddr = pkt[Dot11].addr2
ssid = pkt[Dot11Elt][0].info
print hwaddr, repr(ssid)
sniff(prn=handle_pkt)
ハッキングハッピー
Airmon-ngの代わりは、iwconfigを使用してカードをモニターモードに設定することです(それがサポートされている場合)-この方法の欠点は、生のワイヤレスパケットをスニッフィングしている間はアクセスポイントに関連付けられないことです。
ifconfig wlan0 down
iwconfig wlan0 mode Monitor
iwconfig wlan0 channel 1
ifconfig wlan0 up
これに対する私のアプローチは、OpenWRT(DDwrtまたは他の同様のプロジェクトで実行できます)デバイス(TPlink 3600)を使用し、tcpdumpと監視モード(airodumpではない)のみを使用することでした。 TCPdumpを使用すると、すべてのトラフィックを確認できます(エリアのアクティビティをプロファイルし、ビーコン/プローブを監視します)。専用デバイスを使用する利点は、安価で電力をほとんど使用せず、独立して動作する2つの無線を使用できることです。/media/drive1にマウントされたフラッシュドライブを使用してファイルを保持しました。以下のコマンドは、b/g/nバンドのチャネル11とa/nバンドのチャネル149を監視します。これは、ローカルのニーズに合わせて変更できます。起動時にこれを実行すると、デバイスを目的の領域に移動し、プラグを差し込んで待ってから取り外し、PCのフラッシュドライブからファイルを確認できます。このプラットフォームで考えられるワイヤレスセキュリティ監査シナリオは多数あります。
また、「電話はこれまでに接続したすべてのネットワークのSSIDをブロードキャストする」という元の論文を明確にするために、これは少し単純化しすぎています。ユーザーは過去にサインオンしたすべてのネットワークですが、このリストから未使用のエントリを簡単に削除して、デバイスから漏洩する情報を減らすことができます。 「ブロードキャストされたSSIDにのみ関連付け、プローブしない」のようなオプションが望ましいですが、悲しいかな、ほとんどのモバイルデバイスの他の問題と比較して、セキュリティに関してはこれは優先度が低いです。
/usr/sbin/iw phy phy0 interface add mon0 type monitor;
/sbin/ifconfig mon0 up;
/usr/sbin/iw mon0 set channel 11;
/usr/sbin/iw phy phy1 interface add mon1 type monitor;
/sbin/ifconfig mon1 up;
/usr/sbin/iw mon1 set channel 149;
capdir="/media/drive1/`date +%Y%m%d-%H%M`";
mkdir $capdir;
echo "starting with $capdir" >> /tmp/capstartup
/usr/sbin/tcpdump -i mon0 -C 50 -w $capdir/mon0.pcap &> /tmp/error.myprog0 &
/usr/sbin/tcpdump -i mon1 -C 50 -w $capdir/mon1.pcap &> /tmp/error.myprog1 &
デバイスが接続されているネットワークにプローブ要求を送信しているだけでなく(すでに接続されている場合を除く)、場合によっては、周囲にある別のデバイスのMACアドレスをスプーフィングしているときに(このデバイスはシャットダウンされているようです)ダウン)、それが接続されたことのないAPへの送信プローブ要求を複製し、同時に到達不能になる可能性もあります。少なくともこれは私の不可解な観察でした: 特定のMACアドレスをスプーフィングして、接続したことがないプローブ要求を送信できるようにする方法はありますか?