2014年1月28日火曜日

SECCON2013 online writeup - Find the key! ネットワーク・Web 200

SECCON2013 online の writeup です。
ネットワーク・Webの200点問題、Find the key! です。
問題は seccon_q1_pcap.pcap というキャプチャファイルを渡されてフラッグをゲットせよというもの。

pcap ファイルなのでまずは wireshark で開いてみる。すると ICMP のパケットのみが表示されている。上から順番に眺めているとパケットサイズが異なるパケットがあり、特に No.41 のパケットにはデータ部分に HTTP 、kagi.png の文字がある。



この時点で、ping tunnel を使って icmp パケットのデータ部分に http 通信を埋め込んでいることがわかる。また kagi.png という名前が示す通り、この画像ファイルに答えが記載されている可能性が高いので、画像ファイルを復元する。

該当するパケットのデータ部分から Export Selected Packert Bytes を実施する。



実際に詳しく見ると、No.41 は相手からの通信で、No.42 と No.43 はその応答で、実際の HTTP 通信は No.44 からになる。HTTP 1.1 200 OK とあるので実際の画像データはそのあとになる。
png ファイルのマジックナンバーは 89 50 4E 47 0D 0A 1A 0A なので、No44 で検索してみる。



また、同様にして png ファイルの終端は IEND という文字列になるので検索すると No.48 のパケットにその文字が現れる。

No.44 の HTTP ヘッダーを取り除いたものに、No.48 までのパケットを追加していき png ファイルを作成する。
なお、抜き出したデータの先頭部分は関係のない(たぶんトンネルに使用するデータ)が入っているので、そこは各データから削除して連結する必要がある(全部同じヘッダ情報が含まれている)。



完成した kagi.png を開くと答えが書いてある。














2014年1月27日月曜日

SECCON2013 online writeup - Encode me. その他 200

SECCON2013 online の writeup です。
その他の200点問題、Encode meです。
encode_me_91 というファイルが渡され、パスワードを答えよという問題。

まずはファイルの情報を調べてみる。

other200# file encode_me_91 
encode_me_91: AmigaOS bitmap font

AmigaOS bitmap font と書かれているので調査してみると AmigaOS というものがあり PworePC で動作するとか書いてある。
これはその他の問題で題名からして encode と書いてあるので違うのでは?ということになり、次にファイル名にある 91 を手掛かりにして探してみると basE91 というエンコード方法があることが分かった。

basE91 からページにエンコード/デコード用のソフトがダウンロードできるため、それを使ってデコードする。

other200/base91-0.6.0-linux-i386/bin# ./base91 ../../encode_me_91 
PASSWORD/IS/WHICH+ENCODING+DO+YOU+LIKE
other200/base91-0.6.0-linux-i386/bin# 

答えは上記の WHICH+ENCODING+DO+YOU+LIKE になる。

SECCON2013 online writeup - ここはどこ? フォレンジックス 100

SECCON2013 online の writeup です。
フォレンジックの100点問題、ここはどこ?です。
問題はForensicist.datというファイルを渡されて解答せよというもの。「ここはどこ?」と聞かれているので場所を特定して回答するものと仮定しフォレンジックを進めます。

まずは渡されたファイルの種類を調べるため file コマンドで調べます。

forensics100# file Forensicist.dat 
Forensicist.dat: RFC 822 mail text

中身は mail なのでテキストとして表示させます。


「答:○○○○○○ ○○○」とあり、panda.tif というファイルが添付されています。そこで、添付ファイルを取り出してみます。
まず base64 でエンコードされている部分をテキストファイルとして抜き出します(SUkから最後の=まで)
そのファイルをバイナリデータへデコードします。今回はこのサイトを使ってデコードしました。デコードされたファイルがダウンロードされるのでそのファイルを調べます。

forensics100# file base64.bin 
base64.bin: TIFF image data, little-endian

画像ファイルのようです。ファイルを確認します。


パンダでした。
このままではわからないので Google の画像検索か Exif だろうと見当をつけて調べると、Exif 情報にGPS情報がありました。画像 Viewer のプロパティか exiftool コマンドで確認できます。

forensics100# exiftool base64.tiff 
ExifTool Version Number         : 7.89
File Name                       : base64.tiff
Directory                       : .
File Size                       : 132 kB
File Modification Date/Time     : 2014:01:27 16:13:53+09:00
File Type                       : TIFF
MIME Type                       : image/tiff
Exif Byte Order                 : Little-endian (Intel, II)
Subfile Type                    : Full-resolution Image
Image Width                     : 229
Image Height                    : 172
Bits Per Sample                 : 8 8 8 8
Compression                     : LZW
Photometric Interpretation      : RGB
Make                            : Apple
Camera Model Name               : iPhone 4S
Strip Offsets                   : (Binary data 80 bytes, use -b option to extract)
Orientation                     : Horizontal (normal)
Samples Per Pixel               : 4
Rows Per Strip                  : 13
Strip Byte Counts               : (Binary data 69 bytes, use -b option to extract)
X Resolution                    : 96.012
Y Resolution                    : 96.012
Planar Configuration            : Chunky
Resolution Unit                 : inches
Software                        : 5.0.1
Modify Date                     : 2012:02:02 02:02:02
Predictor                       : Horizontal differencing
Extra Samples                   : 2
Y Cb Cr Positioning             : Centered
About                           : uuid:faf5bdd5-ba3d-11da-ad31-d33d75182f1b
Creator Tool                    : 5.0.1
Exposure Time                   : 1/120
F Number                        : 2.4
Sub Sec Time Original           : 00
Sub Sec Time Digitized          : 00
Exposure Program                : Program AE
GPS Latitude Ref                : North
GPS Longitude Ref               : East
GPS Altitude Ref                : Above Sea Level
GPS Img Direction Ref           : True North
GPS Img Direction               : 45.17590361
ISO                             : 64
Exif Version                    : 0221
Date/Time Original              : 2012:02:02 02:02:02
Create Date                     : 2012:02:02 02:02:02
Components Configuration        : Y, Cb, Cr, -
Shutter Speed Value             : 1/120
Aperture Value                  : 2.4
Brightness Value                : 5.861211392
Metering Mode                   : Multi-segment
Flash                           : Off, Did not fire
Focal Length                    : 4.3 mm
Subject Area                    : 1631 1223 881 881
Flashpix Version                : 0100
Color Space                     : sRGB
Exif Image Width                : 3264
Exif Image Height               : 2448
Sensing Method                  : One-chip color area
Exposure Mode                   : Auto
White Balance                   : Auto
Digital Zoom Ratio              : 4.366263794
Focal Length In 35mm Format     : 35 mm
Scene Capture Type              : Standard
Sharpness                       : Normal
Padding                         : (Binary data 2060 bytes, use -b option to extract)
Aperture                        : 2.4
GPS Altitude                    : 23 m Above Sea Level
GPS Latitude                    : 24 deg 59' 55.00" N
GPS Longitude                   : 121 deg 34' 52.00" E
GPS Position                    : 24 deg 59' 55.00" N, 121 deg 34' 52.00" E
Image Size                      : 229x172
Scale Factor To 35 mm Equivalent: 8.2
Shutter Speed                   : 1/120
Create Date                     : 2012:02:02 02:02:02.00
Date/Time Original              : 2012:02:02 02:02:02.00
Circle Of Confusion             : 0.004 mm
Field Of View                   : 54.4 deg
Focal Length                    : 4.3 mm (35 mm equivalent: 35.0 mm)
Hyperfocal Distance             : 2.08 m
Light Value                     : 10.1

これで緯度が 24 deg 59' 55 経度が 121 deg 34' 52 とわかりました。これを Google マップで調べればいいのですが、10進法表記しか対応しておらず度分秒のままでは使えません。そのため Google の提供しているヘルプサイトを使って変換してやります。


これで10進法表記の座標が 24.998611, 121.581111 とわかりました。ただ実際には百分率表記 = 度 + (分/60) + (秒/3600)という計算式を使ってもう少し正確にだしたほうがよさそうです。この場合は

緯度 24.99861111
経度 121.5811111

となります。これをもとに Google map で検索すると次のようになります。



答えはTaipei Zooでした。

2014年1月26日日曜日

SECCON2013 online writeup - repeat after me ネットワーク・Web 100

SECCON2013 online の writeup です。
ネットワーク・Webの100点問題、repeat after me です。
問題はfollowme.capというキャプチャファイルを渡されてフラッグをゲットせよというもの。

キャプチャファイルなので Wireshark で眺める。内容を追っていると、telnet で接続している事がわかる。そこで適当に TCP stream を見ていると、tcp.stream eq 1 の内容で外部サーバへ ssh 接続して flag.txt を表示しているのがわかる。



このサーバにアクセスして flag.txt の内容を確認すればよいとわかる。そこで、接続先サーバおよびユーザ名とパスワードを同じ TCP steam から抜き出す。


まず、接続先はfollowme@133.0xf2.010357となっている。0x 以降は16進の書き方で、変換方法がわからないので、まずは同じように ssh を試してみる。

ssh -p 31337 followme@133.0xf2.010357
The authenticity of host '[133.0xf2.010357]:31337 ([133.242.16.239]:31337)' can't be established.
RSA key fingerprint is 2d:cb:9b:98:70:f4:67:e7:02:03:15:ab:32:59:78:68.
Are you sure you want to continue connecting (yes/no)? yes

すると、アドレスが 133.242.16.239 、ユーザ名が followme とわかる。これは 0xf2 が16進で10進に変換すると 242、010357 は8進数になっており、16進数に直してから10EFとなり二桁ずつ10進数に変換すると16と239が得られる。

次にパスワード部分だが、wireshark に記載されているものを直接入力してもうまくいかない。Delete やバックスペースなどの制御文字があるため、それらを削除または同じように動作させる必要がある。

今回は ssh ツールを使用して同じような動作をさせてみる。まずは、パスワード部分の切り出し。

network100# hexdump -C pass.bin | more
00000000  6c 73 20 2d 6c 15 66 6f  6c 6c 6f 77 6d 65 24 20  |ls -l.followme$ |
00000010  77 68 6f 61 6d 69 17 6c  73 2d 6c 7f 7f 2e 20 2d  |whoami.ls-l... -|
00000020  6c 2e 02 7f 0d 00 6c 73  20 2d 6c                 |l.....ls -l|
0000002b

このファイルを sshpass で読み込んで接続させる。

network100# sshpass -f pass.bin ssh -p 31337 followme@133.242.16.239
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.8.0-29-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Sun Jan 26 15:13:58 JST 2014

  System load:  0.0               Processes:           83
  Usage of /:   1.1% of 96.47GB   Users logged in:     2
  Memory usage: 15%               IP address for eth0: 133.242.16.239
  Swap usage:   0%

  Graph this data and manage this system at https://landscape.canonical.com/

38 packages can be updated.
21 updates are security updates.


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

Last login: Sun Jan 26 14:10:16 2014 from kd124212144186.ppp-bb.dion.ne.jp
followme$ ls -l
total 4
-r--r--r-- 1 0 0 25 Dec 24 10:55 flag.txt

あとは flag.txt を確認するだけ。

followme$ more flag.txt 
-sh: 2: more: not found
followme$ cat flag.txt
Interesting_IPv4_address
followme$ 


答えは上記のとおり。