https://github.com/alucky0707この広告は、90日以上更新していないブログに表示しています。2014-08-20解答編セキュキャン昨日に投稿した記事の読み方です。色んなものAPTで入れてるからかなりカオスになってる。GCC,GFortranは4.8.2で、Rubyは2.1.2、Pythonは2.7.6と3.4.0。Node.jsは0.11.13だったと思います。zipファイルを落としてくるここにも書いておきましたが、これは普通に落としてくるだけです。seccamp2014.pyするとseccamp2014.pyというファイルができると思います。seccamp2014.2.pyQuineになっています。Rubyとして実行する→7zファイルの取得さて、seccamp2014.pyを素直にPythonとして実行してもQuineなので、あまり意味がありません。コードを眺めてみます。strict';$=+[];____=$++;___$=$++;__$_=$++;__$$=$++;_$__=$++;_$_$=$++;_$$_=$++;_$$$=$++;$___=$++;$__$=$++;$_=({}+$)[_$_$]+({}+$)[___$]+([][$]+[])[___$]+(!$+[])[__$$]+({}+[])[_$$_]+(!!$+[])[___$]+(!!$+[])[__$_]+({}+$)[_$_$]+({}+[])[_$$_]+({}+[])[___$]+(!!$+[])[___$];$$=$[$_][$_];$$($$((!!$+[])[___$]+(!!$+[])[__$$]+(!!$+[])[____]+(!!$+[])[__$_]+(!!$+[])[___$]+$_[__$_]+'"'+([][$]+[])[_$_$]+(!$+[])[____]+'\\'+____+_$_$+____+(!!$+[])[____]+'\\'+___$+_$$$+___$+'\\'+___$+_$$_+____+(!!$+[])[__$$]+$_[___$]+(!$+[])[____]+'\\'+____+_$__+____+(!!$+[])[__$$]+$_[__$_]+$_[____]+(!!$+[])[___$]+'\\'+___$+_$$$+___$+'\\'+___$+_$$_+____+(!!$+[])[____]+(!!$+[])[__$$]+([][$]+[])[__$_]+(まだまだ続く)何となくですが、1行目のto_sとかrequireからしてRubyのように見えませんか?というわけでRubyとして実行してみます。seccamp2014.py何だかバイナリのようなものが一気に出力されたと思います。-c100とかすると7zという文字が見えるので多分7zip形式のアーカイブなんじゃないかと当たりを付けて保存します。7zコマンドで解凍を試みるのですが......。:パスワードの入力を求められました。次はこのパスワード探しです。Node.jsで実行→ブラウザで実行→パスワードのヒントを取得もう一度ソースコードをよく観察してみます。strict';やfunctionからJavaScriptとしても実行できるのではないかと推測できます。seccamp2014.html何やらコマンドラインらしき文字列が出力されました。Xとかなので)実行してみます。seccamp2014.htmlすると次のようなページが開きます。Hareyakani!」と表示されていますね。「ぱーっとぱーっと晴れやかに」と言ったらハナヤマタしかないので、先程の7zのパスワードに「hanayamata」と入力してみます。32025というわけでseccamp2014.7zが解凍されて、seccamp2014.gz,vというファイルが現れました。3.gz,vって何の拡張子だよ→RCSで取り出すgz,vというか末尾に,vが付いているものはRCSといういにしえのバージョン管理システムのファイルになります。バージョン管理システムというと、最近で言えばGitとかMercurialみたいなものですね。revision=============================================================================何だか色々出てきましたが、ぱっと見て1.1、1.2、1.3という3つのリビジョンがあり、1.1から1.2になるときに+115行されていることなんかが分かります。まあ行が増えてる方が正解かなーと(実際は試行錯誤するかもしれない)考えて、リビジョン1.2のファイルを取り出して、解凍します。Fortranとしてコンパイルして実行→C言語でコンパイルして実行というわけでFortranとしてコンパイルして実行します。=(まだまだ続く)するとC言語っぽいソースコードが出てくるので、今度はC言語としてコンパイルして実行します。./seccamp2014cこれでMarkdownっぽいファイル——つまり私のセキュリティ・キャンプの参加記が取り出せるはずです。一つ注意するべき点は、seccamp2014.f90は少なくともリトルエンディアンで32bit以上な環境じゃないと上手く動かないと思うのと(私はx86_64なLinuxでしか試してません)、seccamp2014.cは機械語をハードコーディングしているので間違いなくx86_64なLinuxじゃないと動かないと思います。考えたネタはなるべく実装しようと思ったので公開までに結構時間がかかってしまいました。本当はもっと色々やってみたいことがあったのですが......(最初のpolyglotコードの言語数を増やしたり)。ちなみに、私が知る範囲で解読してくださったのは@tyage氏だけでした。誰も解読してくれなかったらどうしようと思っていたので、読んでくださる方がいてよかったです、ありがとうございます。以下、解読されたtext.mdです。Githubに置いてあります。セキュキャンに行ってきたセキュリティ・キャンプ全国大会2014(以下、セキュキャン)に参加してきたので、その感想とか色々をだらだらと綴っていきたいと思います。応募のきっかけそれは6月中旬のこと。多少の語弊はありますが大体こんな感じだったような気がします。ぶっちゃけセキュリティに興味があったのかと言うとそんなことはあまり無かったかもしれない......。脆弱性を突かれる側だった......。Bull飲み放題じゃなかったです。Webクラスに参加したのかというと、実はセキュアなシステムを作ろうクラスにするかでかなり悩んだのですが、Webクラスの講師にはせがわようすけさんがいたのが決定打でした。はせがわさんは主に「JavaScript関連」「Eject関連」で私がとても尊敬している人です。埼玉の僻地から幕張までやって来ました。会場に着くと早速名刺交換です。実は私は名刺を持っていなかったので、セキュキャンのためにわざわざ作ってきました。名刺交換も初めてだったので、他人に名刺を渡す手がぎこちなかった気がします。最初の何人かは名刺を渡す向きが反対だったりして失礼しました。そのあとは昼食を取って、全体でセキュリティについて考えさせられる講義を受けて、ゲストのソフトイーサ株式会社の登大遊さんの話を聞きました。この登さんのことは——筑波大学のシステムをハッキングしたことなど——はいくつか知っていたのですが、他にも面白そうなことをいくつもやっているんだな、と思いました。言った面白いことは、最大限の計算の上で成り立つものなのだとも思いました。夕食後はゲストの警察庁(警視庁ではない)の萬谷さんの話を聞きました。自分の無知を晒すようであれなんですが、私はこのとき初めてフォレンジックという言葉を聞きました。自分の知らない方面の技術もまだまだたくさんあるんだな、と再確認させられました。OSの実機(検定シールの不備で回収されたことで有名なFlame)に触れました。2日目この日の朝は確か、早起きしてErlangでQuineを書いていた記憶があります。完全に趣味の話なのであまり気にしないで下さい。OSについて何となく詳しくなったような気がします。専門講義が終わるとチュータさんの成果発表を聞いたり、BoFというものをやったりしました。Featherの略だそうです。Featherというのは英語の慣用句で日本語にすると「同じ穴のむじな」という意味です。要するに興味がある人同士が集まってする座談会みたいなものです。私はBoFでアニメ好きな人と集まって話したのですが、その際に@ntddk氏から東方などゲームのハッキングの話を少し聞きました。3日目この日の朝は確か二度寝して7時に起きました。3日目の午前中は企業訪問ということでウイルスバスターで有名なトレンドマイクロさんにお邪魔させていただきました。トレンドマイクロさんがお盆中だというのにわざわざ説明等していただきありがとうございます。感想としては、トレンドマイクロが日本に本社を持つ企業だということと、トレンドマイクロと言えばウイルスバスターがメインのイメージがあったのですが、そうではなくて企業のセキュリティサポートなどをやっていることが多いことに驚きました。OSアプリの脆弱性探し(バグ探しではない)という実習を行いました。「Cross」「Site」「Scripting」という三つのチームに別れて探したのですが、私は「Scripting」チームでした。アプリの中にはXSS等の脆弱性も含まれていて、探すのはとても楽しかったです。4日目もう半分以上経過してしまったんだなぁ、と思いながら起床しました。4日目の午前中は昨日探した脆弱性の発表をチームでしました。その後は世界のKinugawaさん(このページの会社名がバグハンターの人です)の話を聞いたり、講師陣のセキュリティに対する姿勢などを伺ったりしました。人によって色々な考え方があり興味深かったです。午後は楽しみにしていたCTFです。Flagの略で、(本来の趣旨とは違うらしいですが)出されたコンピュータに関わる問題をチームで解いて、その点数で競うといった内容のものです。私は「レイジェン74」というチームで参加しました。このチーム名は確か、会場のテーブルに置いてあったルーターの名前から取ったはずです。CTFは自分はWeb系の100点200点の問題しかほとんど解くことができず、チームに迷惑をかけたと思います。自分の実力を何度も呪いました。一問だけ全体の中で自分しか解いた人がいなかった問題もありました。「GIFのみがアップロードできるサービスの脆弱性を探す」というもので、バイナリエディタを使ってがんばって脆弱性を突くようなGIFファイルを作ることで問題を解くことができました。この一問を解いたおかげで何人かの講師やチューターの方の印象に残ることができたみたいだったのでとてもよかったです。がんばった甲斐がありました。ちなみにCTFの結果は9位でした。一桁の順位に収まることができたのでよかったかなと思います。上にいきたかった気持ちもなくもないです。気が付いたら最終日になってました。グループワークの発表をしました。グループワークはCTFと同じチームで行っていました。GEIST」というテーマで家電製品のハッキングの危険性とその対策について発表しました。準備期間がとても短かったので、内容をまとめるのがとても大変でした。その後は全体の成果発表があったりして、閉会式でした。最後に本を二冊貰えるとのことだったので、私はやさしいインタープリタの作り方入門とBareMetalで遊ぶRaspberryPiの薄い本を貰ってきました。実のところを言うと[リンカ・ローダ実践開発テクニック]が欲しかったのですが、目の前で最後の一冊を取られたんですよね...。どなたか送ってください。帰り道に駅のホームを間違えて帰るのが30分くらい遅くなるハプニングはありましたが、無事帰宅。本当にあっという間の5日間でした。総括して今までネットワーク上でしか交流のなかった[@mpyw]氏などや、何度か名前の聞いたことのある方々と実際に会って話すことができてとても大きな刺激になりました。OSの実機にも触れることができてよかったです。セキュリティについてはそこまで興味があったわけではないのですが、実際に行って講義を受けて、色々と考えることがあるんだな、と実感させられました。セキュリティについて考えたこと私がセキュリティについて思うことは色々とあるのですが、例えば上にさりげなく書いた「脆弱性探し(バグ探しではない)」という部分が大事なんじゃないなぁ。「脆弱性探し(バグ探しではない)」というのは、言葉の通りなんですが、脆弱性=セキュリティ上の欠陥というのは、単なる実装上のバグではないということです。これはつまりどういうことなのかというと、セキュリティというとぱっと出てくるのはXSSやSQLインジェクションなどですが、そのような技術的側面だけでなくセキュリティ・ポリシーのような考え方もあります。セキュリティ・ポリシーはユーザーに対して企業/サービスがセキュリティに対してどのような姿勢を持っているかを示すというものです。このように、セキュリティとは技術面のみの問題ではないのです。技術力を磨くことも当然大事ですが、セキュリティについて考えるのであれば、それ以上に技術以外の知識を学ぶ必要もあるのかな、と感じました。応募用紙に書いたこと来年以降の応募者のために書いておきます。言っても何書いたっけなぁ......。「継続Webフレームワーク作りたいんだけど、実際に作るときにはセキュリティ面での配慮も必要だから勉強しておきたい」とか大言壮語を吐いたような気がします。他にもSOPについて自分の言葉で語れってところでは「Chromeはfileスキームのときファイル単位でオリジンが管理されるからハマってウザい」とかそんなことを書いたような......。冷静に考えるとあんなものでよく通ったなぁ......。いうものに書く内容は基本的に過去の経験に裏付けられるので、色んなことを経験してそれを言葉に纏めておくことが大切だと思います。ブログの更新サボってる奴が言うセリフじゃねぇんですが。事前にやっておくといいこと事前課題をしっかりやるとか......。それ以外にも自分で勉強しておくとか......。そんな有り体なことを書いても面白くないし見飽きているでしょうし、そんなこと別にセキュキャンに行っていない人でも想像して書けるでしょう。私が実際に行った経験から書いていきたいと思います。淫夢ネタに慣れておくセキュキャンでは無駄に淫夢ネタが飛び交います。「こ↑こ↓」とか「ファ!?」とか。これが参加者だけならいいのですが、困ったことに一部の講師まで淫夢ネタを常用します。淫夢ネタを把握していないと、周りにノリに置いていかれる恐れがあります。これは結構つらいです。対策としては、語録をググって「あのさぁ」「いいよ!来いよ!」など汎用性の高いものから使っていくようにするなどするといいでしょう。淫夢ネタを把握していると、日常的な会話の中で「うわっ、アイツホモビのネタを平然と使ってやがるよ...」と残念な奴を見抜くことができるようにもなりますし、一石二鳥です。Twitterをやる最近はバカッターなどと言われ世間でのTwitterの批判が大きく、やらない方がよいような気もしますが、セキュキャンに応募するような意識の高いあなたなら問題なくTwitterを使えるはずです。今回のセキュキャンでは運営側がTwitterでの呟きをまとめてTogetterにまとめたりしていました。名刺に書くネタも増えますし、セキュキャンが終わったあとも連絡を取りやすくなるかもしれません。今回の場合で言えばとしぁさんを中心としたておくれている人達を把握していると幸せになれたと思います。買ってきた漫画は消化しておく完全に私事なんですが、セキュキャンの前日にハナヤマタを全巻まとめ買いしたのですが、全巻読み切らずにセキュキャンに来てしまいました。そのせいで1日目2日目は続きが気になって夜も眠れない状態でした。買ってきた漫画は消化しといた方がいいです、はい。コミケと被るから欲しいものは友人に頼んでおくこれも私事ですが、今回のセキュキャンはコミケと日程が大被りしました。セキュキャンに参加しようと思うと必然的にコミケの1、2日目は行くことができなくなります。私はこのことを完全に見逃していて、おかげで1日目に好きなサークルが新刊を出していたのですが、買い逃してしまうという失態をおかしました。このようなことがないように、予めセキュキャンの日程を確認して、緻密に計画を練っておくことが大切かと思われます。最後にこんなグダグダでダラダラな文章に最後まで目を通して頂きありがとうございます。セキュキャンの講師の方々、運営の方々、参加者の皆様、自分が未熟なために迷惑をかけた部分もあったと思います。いった際に優しくしてくださり、本当に助かりました。ツイート月別アーカイブはてなブログをはじめよう!alucky0707さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。