SAMIT16.11を開催しました

今回のテーマ

Cプログラムをハックしよう!

開催日時

今月のSAMITは低レイヤーなテーマでやりました. SAMIT初のセキュリティ講座でした.

connpass.com

今回やったこと

午前

  • 環境構築
  • Linuxのセキュリティ機構について
  • Stack Overflowの実践
  • Shell Codeの任意実行

    午後

  • Format String Attackによるメモリの読み書き

内容

脆弱なCプログラムを書き,実際に自分で書いたプログラムの脆弱性をつく演習をやりました. 今回は攻撃の手口を知りセキュアなプログラムを心がけることを学ぶ講座でした.

午前

最初は受講者の環境構築から始まりました. デバッガーであるPEDAをインストールしました.

Linuxに適用されているセキュリティ機構の説明を聞きつつ, 今回は脆弱性をつく為にそれらのセキュリティ機構を停止させました.

最初の演習ではStack Overflowという脆弱性で変数を書き換える演習を行いました. C言語で脆弱なプログラムを作りPEDAや逆アセンブルを使って 書き込めるアドレスの特定などを行いました. 特定したアドレスを元にStack Overflowを行い変数の書き換えを行いました.

次の演習はShell Codeを実装して,他のプログラムに埋め込む演習を行いました. まずはC言語でShell Codeを実装して,そのC言語版Shell Codeのバイナリを逆アセンブルしました. そのアセンブラを元にヌル文字を含まないアセンブラでShell Codeを実装して午前が終わりました.

懇親会

懇親会は本学の学食を利用しました.

f:id:seminarAtMIT:20161119221821j:plain

午後

午後は午前に作ったアセンブラ版Shell Codeを埋め込む脆弱なプログラムを作りました. プログラムでバッファオーバーフローを引き起こしShell Codeを実行しました.

最後の演習はFormat String Attackによるメモリの読み書きでした. Format String AttackはC言語のprintf仕様の脆弱性をついた攻撃です. Format String Attackを行うことでprintf関数で変数の値の読み書きを行いました.

f:id:seminarAtMIT:20161119221751j:plain