復習 followme

SECCONの復習。
ネットワーク・Webの100点問題です。

パケットの内容予測

問題ページ開くとfollowme.capというpcapなファイルがありました。
パケットキャプチャの問題です。

開いてぱーっと眺めてみると、
src <-> dst で
・10.0.5.105 <-> 10.0.5.103間でtelnet
・10.0.5.103 <-> グローバル間で31337番ポートの通信
という2つの通信が主に目立ちました。
その他の通信はよくあるブロードキャストだったりDropBoxのやつだったりなノイズでした。

telnetは平文通信なので一旦置いといて、31337番ポートの通信って怪しいな、って思ったのでとりあえずこのグローバルIPに対してポートスキャンしかけました。
すると31337番はsshが動いていることを確認。

ここで、
・10.0.5.103に対してtelnetで入り
・グローバルに対してsshをしている
っていうことで予測立て。

「なんでtelnetしてsshしてんだろう」ってのは思いましたけど、暗号通信だと全く内容分からなくて答えゲットできないからかな?とかくらいしか思いつきません。

telnetの通信を確認

telnetについてのパケットでFollow TCP Streamしてみます。
予測はあたっていて、sshしているのが分かります。
しかし最初から意味不明なことに
[bash]
$ nslookup 133.0xf2.010357
[/bash]
とかしてます。見つけられなかったみたいですけど…。

下の画像は上の画像の続きです。
flag.txtとかいうまさしくそれっぽいファイルがあります。
sshでログインして、flag.txtを出力したらフラグをゲットできるのだろう、というところまではきました。

telnetが平文なためパスワードもしっかり見えてるので、この通りやれば良さそうです。
なるほど、「followme.cap」ってそういう意味だったんですね。

画像の赤くハイライトされた部分は自分が打ち込んだ部分で、青くハイライトされた部分はサーバからの応答を表示しています。

ssh

実際にsshしてみます。
画像の通りに入力してみると下の通りになります。
[bash]
$ ssh -p 311.37.37 follow .me@133.0xf2.010357
[/bash]

wiresharkのFollow TCP Streamではプリントできない文字は".“として表示されるようです。
BSなどの制御文字も”.“とて表示されてしまうため上のような表示になります。
「Non-printable characters will be replaced by dots.」
参照

Follow TCP StreamがRAWな状態でパケットを見ても分からないので、HexDumpします。

HexDumpした内容を見ると、0x7fであることが確認できます。
0x2Eが”.“を表すので、これはNon-Printableな文字、制御文字っぽいです。

ASCII Charactersのページを見ると
「\177 127 DEL \x7F ^? (Delete) (see: UNIX keyboard CTRL)」
とあるので削除の制御文字を送っています。

Hex Dumpの結果に従ってみると、実際は以下のようにsshしていることが分かります。
[bash]
$ ssh -p 31337 followme@133.0xf2.010357
[/bash]

「sshのIP部って16進数表記とかできたんですね…。」
って思ってやってみたけど、できず。
「ええいまどろっこしい」ってことで普通にIP打ちました。

その後学科のサーバ等で確認したんですが、一応16進数でいけました。
10.0.0×02.5とか10.0.2.0005みたいなのがいけた感じです。

パスワード入力

次はパスワード入力です。
[bash]
ls -l.followme$ whoami.ls-l… -l…
[/bash]
この”.“はほとんど制御文字でした。
左から順にHexを書いていくと、以下の通りでした。
0x15, 0x17, 0x7f, 0x7f, 0x2e, 0x2e, 0x02, 0x7f

先ほどのasciiのページを見てみると
0x15 = NAK ^U
0x17 = ETB ^W
0x7f = DEL ^?
0x2e = .
0x02 = STX ^B
となっていました。

ので、この通り入力しました。
まさにfollow me。

ls -l^Ufollowme$ whoami^Wls-l^?^?. -l.^B^?
^?はバックスペースを押しました。
followme$ ls. -.
がパスワードだったみたいですね。
見事ログイン成功。

あとはflag.txtをcatして終わり。
鍵は
Interesting_IPv4_address

この問題に確か2時間ほどかかりましたw