ふるつき

v(*'='*)v かに

tsharkメモ

コマンドライン引数のメモ

-r <input file>

 そのまま

-T fields

 -eオプションで、表示するデータを指定するときに一緒に用いる

 一般には-Tfieldsと書くらしい

-e <field>

-T fieldsと一緒に、指定したフィールドだけを表示するためにつかう。

-T fields -e tcp.segment_dataとするとTCP通信のデータだけを取り出せる。

-eオプションは複数指定できる。複数指定した場合は、-E separator=<separator character>で指定した文字で区切られて、引数として与えた順番に表示される

-E separator=<separator character>

与えられるのは一文字だけ。

-T fields -e frame.number -e tcp.segment_data -E separator=,

-Y <expr>

 表示するパケットの条件を指定するフィルタ。displayのYらしい。<expr>にはWiresharkのDisplay Filterと同じ構文を用いる。

-Y tcp

-Y 'tcp.stream eq 0'

SECCON FINAL Intercollegeでした

 

 insecureというチームで出場しました。18のチームがいた中で、15位でした。

競技

 Attack and Defenseという形式でした。各チームにサーバが割当てられ、そのサーバでサービスを運用します。それらのサービスにはセキュリティホールが存在しています。私達は、脆弱性を発見して、修正して、また発見した脆弱性を利用して他のチームのサーバに攻撃を仕掛けます。

Defense Point

 サービスを運用していると、時折、利用者が訪れます(SLAと言ったはず)。正しく(仕様に従って)運用できていれば、Defense Pointが得られます。Defense Pointは連続でサービスを稼働させるほどに増えます。

Attack Point

 他のチームのサービスの脆弱性を突くと、例えば顧客情報を入手できます(他にも、本来運営のみが見られるはずのデータにアクセスできることがあります)。そのようなデータを入手すると、Attack Pointとなります。Attackに成功すると、被害チームの総得点の3%が攻撃チームに移動します。

サービス

ブログ

 誰でも投稿できるようなブログを運営します。

keiba

 競馬でお金を稼ぐサービスです。馬券を買ったことがないので、使い方がわかりませんでした。

sbox2015

 サービスにアップロードしたスクリプトRubyPHPPython)の実行結果から得られた値を用いて、2048を解くサービスです。意味がわからん。おもに、他の問題を攻略するためのスクリプトを走らせるサービスでした。

流れ

 私のやったことを適当に書きます。

 とりあえず、keibaは自分で起動する必要があったので起動しました。nodejsで書かれていたのでnode app.jsとかそういうコマンドを打ちました。するとdevelopmentモードで起動したので「まずそうだぞ」と思って、productionモードで走らせる方法をぐぐりました。NODE_ENV=production node app.js。developmentだとエラーが見えるらしいのですが、エラーの起こし方もわからなかったしnodejsわからない(javascriptわからない)のでここに時間を割くのは失策だったかも。

 しばらくkeibaのソース眺めてました。わかる人にはSQLiがあることがわかるらしいのですが私にはわかりませんでした。

 競技時間の1/4(つまり一時間)が過ぎた頃、ptr-yudaiがブログのSQLiを発見したはずです。SQLiできると、ブログの管理パスワードがわかりました。管理者になると、SLAが残していったフラグを見ることができましたので、Attackしました。

 keibaに飽きた私はsboxを見てました。スクリプトが実行できることがわかったので、ブログの管理パスワードを抜くようなスクリプトを書きました。 またたく間にAttack Pointが増加して嬉しかったです。

 そしたら目をつけられてたくさん攻撃されました。Defenseはまるでだめだったので、一気にポイントを抜かれました。かなしみ。

 たくさん攻撃されて本当に辛かったので、サービスを止めました。

 競技が終わりました。だめだめでした。

反省

 Defenseできるようにならないとだめ。そのためには、ソースコードが読めないとだめ。

 サービスの概要をちゃんと把握しないとだめ。

 

懇親会など

 懇親会楽しかったです。企業や企業じゃないところの方に声を掛けていただいて、お話を聞いていました。こちらが高専生なので、バイトやインターンの話になりがちでした。

 プロ各位と少しだけおしゃべりしました。

セキュリティミニキャンプ沖縄

セキュリティミニキャンプin沖縄に参加しました

 二日間行われた専門講座に行ってきました。その時の技術的な内容について随分端折って書きます。細かい話は後日応用と一緒にやりたいと思っている。

マルウェア動的解析の自動化

 私が書くような内容は何もなくてスライドを見てくれって感じですが、一応書きます。やったこととか感想とか。

 やったことは、DECAF(Qemuの改造でデバッグのために便利にしてる)を使って、Out-of-VMなアプローチからマルウェアを解析するということ。実際にはマルウェアではなくてマルウェアっぽい動きをする(アンチデバッグな機能を持った)PEなのですが。  これを、主にAPIコールのフック→書き換えを使ってアンチデバッグの回避というイタチごっこをやっていました。これの内容自体はセキュリティキャンプ(全国)でやったものらしくて、そちらではIDAを用いてバイナリを解析してどのAPIをフックするかというところからだったらしいですが、ミニなのでPEのソースコードは与えられていました。IDAでも頑張りましたが。  どうやってフックするかといいますと、DECAFのプラグインを作ります。Cで書きます。お手本のプラグインがあって、そいつを拡張しました。どういうふうに拡張するかというと、フックできるAPIの種類を増やします。もともとはIsDebuggerPresentしかフックできなかったものを、Sleepもフックできるようにする。  やるだけ作業という感じで、IsDebuggerPresent用のものを全部コピーして、IsDebuggerPresent→Sleepに置換して、あと必要な部分(引数とか)を書き換えたらそれでフックできます。そして、DECAFに用意されているAPIを叩いて、呼ばれた時の引数を書き換えたりします。  というのが、Sleep以外にもいくつかあって、それをどんどん攻略していく形になるのだと思うのですが、阿呆なハマり方をしたりして、そんなにたくさんはできませんでした。GetTickCountの戻り値を書き換えたあたりで時間切れ。

車載LANを流れるメッセージの解析

 車載LANのプロトコルであるところのCANの仕組みや、Pythonを使っての読み書きをやりました。CANはデータリンク層あたりだった気がするのでレイヤ低めです。ELM327をつかうと、実際に流れている電気信号をシリアルコンソールに流してくれるっぽいので、さらにそれをpythonのCANライブラリ(python-obd)を使って読みました。  ライブラリが充実してるしpythonだしてコーディングは難しくなくて、だいたい文字列処理をうまくやるだけでした。

組込みシステム解体新書(入門編)

   とあるルータのボードを解析したりしてました(解析=どのへんが電源でどのへんが処理部で……をみわける)。さらに、そのルータにはご丁寧にデバッグ用のピンがさしてあったのでCPU(?)のデータシートと付きあわせて、どのピンがどの動作に関わっているかを調べました(テスタのはしをちょんちょんしてピンと足がつながっているか確かめます)。そして、デバッグ用のICを経由してPCにつなぎ、JTAG(組み込みなCPUのオンボードデバッグのための規格)から神になる……はずでしたがうまく行かず。う〜ん。これも課題ですね。

ファジング実践

 ファジングはFuzzと呼ばれるエラーを引き起こしそうなデータを投げつける、ブラックボックステストのようなものです。これでいくらかの脆弱性を探します。  今回は、Peachというツールを使って、lighttpdというapacheみたいな奴の古いバージョンに見られた脆弱性を殴りに行きました。もともと用意されている設定ファイルでは弱くて脆弱性殴れないので、設定ファイルをいじってサンプル強くして殴りに行きました。HTTPのリクエスト投げてたのですが、設定でいろいろ(UAとか、Acceptとか)なヘッダの要素(?)を増やしてから殴りなおすと、lighttpdがCPUを100%占有して固まりました。  たくさんのデータを投げてたので、データの数や種類を変えて、そのような事態を起こす原因となったデータを絞り、その中身を見てどのような部分が脆弱性を産んだのか調べて治す……のですが、今回は絞るとこまででした。

感想とか

 めちゃめちゃいろんな学びだったのにこんなに短くなってしまってまともにかけてないの悲しい。今回は特にハードっぽいところへの怖さ(知らぬがゆえの恐怖)が随分なくなったのでよかったです。