Wake On LANのマジックパケット(!UDP&&!Eth)
色んなマジックパケットを作って試してみた感じ、ペイロード*1の記述があれば、
受け取ったPCはマジックパケットとして認識してしまうみたい。
気になったものをメモ。
例1)不完全なイーサネットフレーム
*Ethernet?*
0x001CC0XXXXXX
0x05DD*ペイロード*
0xFFFFFFFFFFFF
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
一応起動確認。でも、ちょっと不安定。
例2)ICMPに埋め込む
nao@Xubuntu:~/tools$ hexdump WOL.bin
0000000 ffff ffff ffff 1c00 XXc0 XXXX 1c00 XXc0
0000010 XXXX 1c00 XXc0 XXXX 1c00 XXc0 XXXX 1c00
0000020 XXc0 XXXX 1c00 XXc0 XXXX 1c00 XXc0 XXXX
0000030 1c00 XXc0 XXXX 1c00 XXc0 XXXX 1c00 XXc0
0000040 XXXX 1c00 XXc0 XXXX 1c00 XXc0 XXXX 1c00
0000050 XXc0 XXXX 1c00 XXc0 XXXX 1c00 XXc0 XXXX
0000060 1c00 XXc0 XXXX 1c00 XXc0 XXXX
000006c
nao@Xubuntu:~/tools$ sudo hping3 10.0.1.255 -1 -c 1 -d 102 -E WOL.bin
起動確認。
今まで、ICMPのデータ部には大して意味のない文字列しか入れたことなかったんですが、
こうやってマジックパケットのペイロードとして認識されるのは、個人的に興味深かったです。
他のことにも応用できるのかも。
Wake On LANのマジックパケット(!UDP)
id:EijiYoshidaさんの
Windows版のNetcat(nc)を使ったwolのマジックパケットの送信方法
が面白くて、UDPではない方法を試してみました。
起動させたいPCのMACアドレスは0x001CC0XXXXXX、
実際に送信したデータはこんな感じで、起動も確認。
*Ethernet*
0xFFFFFFFFFFFF0x001CC0XXXXXX((送信元MACアドレスは見ていないと思うので、起動させたいPCと同じにしています。))
0xFFFF*ペイロード*
0xFFFFFFFFFFFF
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
0x001CC0XXXXXX
タイプフィールドは1501以上でなければ、という記述を見掛けたのですが、
0x0000(0)や0x05dc(1500)で試しても起動できたので、値はあまり関係ないのかも。
色々試すにはハード的な負担が大きそうな気がするので、このへんにしておきます。笑
追記(2010/02/04)
書き忘れていた脚注を追加。
ARPフォーマット
イーサネットではMACアドレスを用いて通信をし、
ARPはIPアドレスからそのMACアドレスを調べるためのプロトコル。
IPと同じネットワーク層で動作する。
フォーマット
Hardware Length
ハードウェアアドレス長。(バイト)
Protocol Length
プロトコルアドレス長。(バイト)
Sender Hardware Address
送信元のハードウェアアドレス。
(イーサネットの場合は48ビット、6オクテット)
Sender Protocol Address
送信元のプロトコルアドレス。
(IPの場合は32ビット、8オクテット)
Target Protocol Address
ターゲットとなるプロトコルアドレス。
(IPの場合は32ビット、8オクテット)
この値が自分のものであった場合、受信したノードはリプライを返す。
例)ARPリクエスト
- PC1
IPアドレス:10.0.0.100
MACアドレス:08:00:27:11:22:33
- PC2
IPアドレス:10.0.0.200
MACアドレス:??:??:??:??:??:??
PC1がPC2のMACアドレスを知りたい場合は
イーサネットフレームを先頭につけて、
FFFFFFFFFFFF
080027112233
08060001
0800
06
04
0001
080027112233
0a000064
000000000000
0a0000c8
となる。
rawframeを使用して実際に送信してみたもの。
PC2(10.0.0.200)から08:00:27:aa:bb:ccが返ってきている。
ネットワークなCTFっぽいもの〜01の楽しみ方
遅くなってしまいましたが、これの楽しみ方です。
まず、ざっと見た感じで気になるところ。
とりあえずファイルを抽出してみる。
にチェックが入っていれば、
Preferences>Protocols>HTTP>Reassemble HTTP bodies spanning multiple TCP segments
でファイルを抽出できる。
File>Export>Objects>HTTP
ファイルをチェック。
パスワードが要求されるので"joe"や"@&Hya+psL(!k+LlkNMp10}_ldo*^~^w@"を試してみる。
$ file file
file: RAR archive data, v1d, os: Win32
$ unrar e file
Extracting from file
Enter password (will not be echoed) for dum:
Enter password (will not be echoed) for text:
No files to extract
"@&Hya+psL(!k+LlkNMp10}_ldo*^~^w@"が通った。
$ unrar e fileExtracting from file
Enter password (will not be echoed) for dum:
Extracting dum OK
text - use current password ? [Y]es, [N]o, [A]ll yExtracting text OK
All OK
$ file *
dum: data
file: RAR archive data, v1d, os: Win32
text: Non-ISO extended-ASCII text, with CRLF line terminators$cat text
・・・・・・・・
文字化けして読めないので、手っとりばやくエディタでw
ん…?
$ gedit text &windowsのfsutilコマンドを使ってみました。
例)fsutil file createnew dum 1572864
なんだかオール0っぽい感じ。
$ hexdump -C dum | less
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00180000
ということで、このrarはフェイクでしたw
ではどこなのか。
ネットワークによく触れている人は違和感を感じていたかもしれないのですが、
VRRPのアドバタイズの間隔がデフォルトより長いんですよね。
VRRPとは(ざっくりと)
このネットワークではVRRPのアドバタイズがデフォルト1秒→約5秒に変更されている。
ということは、マスタールータが落ちたとバックアップルータが判断するまでに、
通常の(3秒+α)→(15秒+α)かかってしまう。
やっぱりちょっと変。
VRRPパケットのみ抽出してみる。
途中でマスタールータが変わっている。
変わった前後のパケットを見てみる。
プライオリティが変わっているわけでもなく、アドバタイズの間隔も変わっていない。
あれ?おかしくない?
送信元10.0.64.3のVRRPをじっくり見てみる。
No147だけAuth Typeが1になっていて、Authentication stringに値が入っている。
6e656b6f→neko
で、答えがnekoでした。
純粋にネットワークだけで作ろうと思っていて、途中のファイルも明らかにダミーと分かるようにしたのですが、
もうちょっとひねればよかったです。
実は99%が生のパケットなので、実際にネットワークを考えて組むのが楽しかったり、また大変だったりでした。
一応めげずに第二弾の案はあるのですが、中々思うようにpcapとして形にできないので、いつになることやら…
もしできたらまたお付き合いいただければと思います。
ありがとうございました。