SECCON2013で出題した問題一式を公開しました。

去年(2013年)から今年にかけてSECCON2013というセキュリティコンテストの運営に参加させていただきました。主に問題作成担当だったので、もし参加された方がいましたら、いくつかの問題は私が作成したものだったかもしれません。 そのSECCONも先週末(3月1…

CodeIQブロクさんに寄稿させていただきました。

バイナリ、アセンブラ短歌、CTF、セキュリティ関係の内容でCodeIQブログさんに寄稿させていただきました。良かったら読んでみてください。 バイナリアンになろう! http://codeiq.hatenablog.com/entry/2013/11/11/130145 CodeIQとは競技プログラミングやCTF…

アセンブラ命令(x86)をクラスタリングしてみた。

以前、出現頻度の高いアセンブラ命令を調べてみる。という記事で命令ごとの出現頻度を調べました。あのときはWindows環境でProgram Files以下のPEファイルを対象にデータをとりましたが、今回はFreeBSDのlibcを対象にデータをってみたいと思います。 まずはo…

アセンブラ命令とマシン語で相互変換したい。

OllyDbgの作者が(おそらくOllyDbg内で使っていると思われる)80x86 32-bit Disassembler and Assemblerをソースコード含めて公開しています。サイズも小さく、勉強にはもってこいなのでここで紹介したいと思います。 ソースコード一式は上記サイトからダウ…

jubatusハンズオン ~EC2で分散実行編~ に参加してみた。

ハンズオン形式の勉強会、jubatusハンズオン ~EC2で分散実行編~に参加してきました(資料も公開されています)。 自分そもそも分散処理という単語にはまったくの無縁で、完全シロウトだったので参加を見送ろうと思ってたのですが、ただ第1回目のjubatusハ…

プロセスダンプするプログラムを作成してみよう!

Windows環境においてプロセスをダンプするにはMiniDumpWriteDumpを使います。 BOOL WINAPI MiniDumpWriteDump( _In_ HANDLE hProcess, _In_ DWORD ProcessId, _In_ HANDLE hFile, _In_ MINIDUMP_TYPE DumpType, _In_ PMINIDUMP_EXCEPTION_INFORMATION Except…

LD_PRELOADで関数フックしてみよう!

「たのしいバイナリの歩き方」の4章でWindows環境におけるAPIフックについて解説しました。今回はLinux環境についても解説しましょう。 Linux環境(Ubuntu 12.04.2)ではLD_PRELOADという環境変数を使うことで似たようなことが可能です。LD_PRELOADでググっ…

ptraceを使ってみよう!

「たのしいバイナリの歩き方」では4章で簡易的なデバッガの作成を解説しています。ただWindows環境での話でした。ptraceを使うことで、同じようなことをLinux環境(Ubuntu 12.04.2)でも実現できます。基本的な仕組みはWindowsのときと同じです。 試しにやっ…

アセンブラかるたを極めたい。

SECCON2013 横浜大会にて「アセンブラかるた」というものが扱われました。詳しくはリンク先を見てほしいのですが、一言でいうと"x86の1バイト命令を使ったかるた"です。例えば、表が0x90なら裏はNOPとか、そんな感じ。 このアセンブラかるた、極めるのは実は…

「たのしいバイナリの歩き方」が無事発売されました。

正確には8/22に発売されているのですでに発売後5日目(?)なのですが(汗)、無事発売までこぎつけることができました。 たのしいバイナリの歩き方作者: 愛甲健二出版社/メーカー: 技術評論社発売日: 2013/08/22メディア: 単行本(ソフトカバー)この商品を含…

シリツ・プログラミングキャンプ2013に参加してきました。

シリツ・プログラミングキャンプ2013に参加してきました。 シリツ・プログラミングキャンプとは、そもそも遥か昔、セキュリティ&プログラミングキャンプという学生向けのイベントがあったのですが、それが2012年以降プログラミングコースがなくなり、セキュ…

セキュリティ・キャンプ2013に参加してきました。

セキュリティ・キャンプ2013に参加してきました。 セキュリティ・キャンプとは、情報セキュリティについて本格的に学びたいという意欲を持った学生(22歳以下)向けの合宿イベントで、毎年夏に開催されています。今年は海浜幕張駅から歩いて数分のクロス・ウ…

フォーマットストリングバグ(format bug)を試してみる。

今回はフォーマットストリングバグ(format bug)について書きます。わりとマイナーな脆弱性で現在ではほとんどみないのですが、技術的に興味深いものなので知ってても損はないと思います。テスト環境はFreeBSD8.3(x86)です。 ターゲットとなるプログラム…

WindowsでASLR(Address Space Layout Randomization)を確認してみる。

ASLR(Address Space Layout Randomization)とは、OSがプロセスをロードするときに、ランダムな場所にモジュールを配置するセキュリティ機能です。実際はモジュールだけじゃなく、スタックやヒープなどもランダマイズされたりします。 ASLRはWindowsにも当…

関数先頭にあるMOV EDI,EDIって何だろう?

Windows環境において、多くのAPI関数の先頭に存在するMOV EDI,EDIという命令。たとえばMessageBoxWの先頭2バイトを次のようなプログラムで調べてみる。 // VC++ 2010 Express版 #include <stdio.h> #include <Windows.h> int main() { HMODULE user32 = ::LoadLibrary(L"user32.d</windows.h></stdio.h>…

アセンブラ短歌やってみた。

「アセンブラ短歌」は五・七・五・七・七の三十一バイト(みそひとバイト)から成る機械語コードでプログラムを書いてみるという近未来の文化的趣味であり,近年,国内のハッカー間で密かなブームが起きています.http://kozos.jp/asm-tanka/ はっかーもすなる…

出現頻度の高いアセンブラ命令を調べてみる。

x86-64のアセンブラ命令数はすでに1000前後あるみたいです。ただそんな数の命令をいちいち覚えてられないだろうという話で、実際よくみるのはほんの20命令くらい、特別なことをしないならばだいたい100命令くらい覚えていれば問題ないんじゃないの? という…

「たのしいバイナリの歩き方」という技術書を書かせていただきました。

このたび「たのしいバイナリの歩き方」という技術書を書かせていただきました。たのしいバイナリの歩き方作者: 愛甲健二出版社/メーカー: 技術評論社発売日: 2013/08/22メディア: 単行本(ソフトカバー)この商品を含むブログ (2件) を見る バイナリ系の技術…