読者です 読者をやめる 読者になる 読者になる

ふるつき

記事と内容がないです

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

セキュリティミニキャンプ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という機器i(IC?)をつかうと、実際に流れている電気信号をシリアルコンソールに流してくれるっぽいので、さらにそれをpythonのCANライブラリ(python-obd)を使って読みました。  ライブラリが充実してるしpythonだしてコーディングは難しくなくて、だいたい文字列処理をうまくやるだけでした。パケット(CAN用語ではフレーム)をパースするものを作ることを覚悟していたので、今度作れたらいいな。

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

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

f:id:Furutsuki:20151221205106j:plain

ファジング実践

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

感想とか

 めちゃめちゃいろんな学びだったのにこんなに短くなってしまってまともにかけてないの悲しい。しかしミニキャンプはむちゃくちゃ楽しいですね! 今回は特にハードっぽいところへの怖さ(知らぬがゆえの恐怖)が随分なくなったのでよかったです。  あと課題が多い。楽しみが続くぞ……

あわせてよみたい 

maeken's blog» Blog Archive » ミニセキュリキャンプ沖縄に行ってきた!