2012年11月12日月曜日

SECCON CTF in NAIST Misc パジャマでおじゃま

問題はパケットチャプチャ形式のファイルで、その中身は以下のようになっています。
ご覧の通り192.168.96.128と192.168.96.129のICMPを利用したpingのパケットが並んでます。
また、データ部も、OSに付属するpingコマンドが付加するシーケンシャルに大きさが増加するバイトが代入されています。
ただ、最初はそうですが、途中からすこし異なってくるようです。
例えばid=0x21dc、seq=26のicmp requestにたいして、同じid、seqとなるicmp replyは3つ返ってくることがわかります。またパケット長も不揃いになってきました。72 ~ 500まで変動しています。さらにパケット長が500のパケットのデータ部は明らかに通常のpingと異なるメッセージになっています。
図の165番のパケットの場合、データ部にLast login Suc Oct 7 15: とか明らかにログイン後に出てくるメッセージなのでicmp replyのデータ部が怪しいと分かります。

各icmp replyのデータ部を眺めているとこんなことに気づきました。

  • パケットの0x44バイト目はシーケンシャルに増加している
  • パケットの0x45バイト目は必ず0x21である
だからid=0x21dcのicmp replyの0x44バイト目を基準にパケットをソートし直して、重複を取り除きました。
すると以下のようになりました。

ログインコマンドが9600,9600なのかは不明ですが、ログイン先のOSがDebian GNU/Linux 5.0でホスト名がsrcみたいです。
ユーザ名はctf、パスワードもctfでログインに成功しました。
若干見づらいですがその後cat key.txtを実行しており、そこでkey.txtの中身が現れ、これが答えとなります。
その後exitしてlogoutに成功しました。
こうした一連のやり取りがpingを通じて行なわれていたことがわかりました。

しかし驚くのはここから、こうしてパケットを縦に並べてみると0x45バイト目の0x21、つまり'!'が縦に並んでいることがわかります。
'!'を境にして左側は通常のpingに付加されるデータ、右側がログイン時の通信というふうにして2つの意味を成していたことがわかりました。

マニアックな通信の仕方ですね。まるでマルウェアみたい笑。




0 件のコメント:

コメントを投稿