GRADUATION
バイナリを、ただの黒い箱ではなく読めるものとして見られるようになりました。
file・od・strings・readelfという4つの手元の道具で、コンパイル済みバイナリの姿を覗きました。先頭数バイトの魔法の数字(マジックナンバー)から形式を見分け、埋め込まれた文字列を拾い、ELFヘッダーの項目を読みました。「バイナリは読めないもの」ではなく「読み方さえ知れば読めるもの」に変わりました。
おつかれさまでした。
持ち帰るもの
- ファイルの正体は、拡張子ではなく先頭バイトが語るfileコマンドは拡張子を見ていません。先頭数バイトのマジックナンバー(ELFなら7f 45 4c 46)を見て、形式を判定しています。
- 文字列は、コンパイルされても消えないソースコードに書いた文字列リテラルは、実行ファイルの中にそのまま残ります。stringsで簡単に拾えます。
- ELFヘッダーは、OSがまず読む地図readelf -hで見えるEntry point・Type・Machineは、OSがこのファイルをどう実行すればよいかを判断するための、最初の手がかりです。
次にやるといいこと
- 次は、そのバイナリを実行したときにOSと何をやり取りしているかを見るsec-cとmini-syscallです。
- stringsで見つけた「消し忘れの文字列」は、実務でも情報漏えいの入口になります(sec-auditで扱った視点と同じです)。