SAMIT16.11を開催しました
今回のテーマ
Cプログラムをハックしよう!
開催日時
- 2016年11月19日10:00~16:00
- 室蘭工業大学 V棟301号室
今月のSAMITは低レイヤーなテーマでやりました. SAMIT初のセキュリティ講座でした.
今回やったこと
午前
- 環境構築
- 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を実装して午前が終わりました.
懇親会
懇親会は本学の学食を利用しました.
午後
午後は午前に作ったアセンブラ版Shell Codeを埋め込む脆弱なプログラムを作りました. プログラムでバッファオーバーフローを引き起こしShell Codeを実行しました.
最後の演習はFormat String Attackによるメモリの読み書きでした. Format String AttackはC言語のprintf仕様の脆弱性をついた攻撃です. Format String Attackを行うことでprintf関数で変数の値の読み書きを行いました.