Submit Search
Upload
第一回バイナリゆるゆる勉強会スライド
•
Download as PPTX, PDF
•
3 likes
•
1,747 views
Ryosuke Shimizu
Follow
第一回 ゆるゆる勉強会第一弾 バイナリ勉強会 シェルコードを書いてみようの会の ver0.9
Read less
Read more
Engineering
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 31
Download now
Recommended
Grinning math01
Grinning math01
Yohei Sato
TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。
tak9029
2016tensorflow ja001
2016tensorflow ja001
Shin Asakawa
人工知能と機械学習の違いって?
人工知能と機械学習の違いって?
Shuyo Nakatani
Azureで始めるDevOps
Azureで始めるDevOps
Atsushi Kojima
[CB16] EXOTIC DATA RECOVERY & PARADAIS by しもがいとだい
[CB16] EXOTIC DATA RECOVERY & PARADAIS by しもがいとだい
CODE BLUE
第3回長崎デジタルコンテストLT『リバースエンジニアリング入門』
第3回長崎デジタルコンテストLT『リバースエンジニアリング入門』
Saya Katafuchi
[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英
[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英
CODE BLUE
Recommended
Grinning math01
Grinning math01
Yohei Sato
TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。
tak9029
2016tensorflow ja001
2016tensorflow ja001
Shin Asakawa
人工知能と機械学習の違いって?
人工知能と機械学習の違いって?
Shuyo Nakatani
Azureで始めるDevOps
Azureで始めるDevOps
Atsushi Kojima
[CB16] EXOTIC DATA RECOVERY & PARADAIS by しもがいとだい
[CB16] EXOTIC DATA RECOVERY & PARADAIS by しもがいとだい
CODE BLUE
第3回長崎デジタルコンテストLT『リバースエンジニアリング入門』
第3回長崎デジタルコンテストLT『リバースエンジニアリング入門』
Saya Katafuchi
[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英
[CB16] IoTとしての自動車とセキュリティ: リモートサービスのセキュリティ評価とその対策の検討 - by 和栗直英
CODE BLUE
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
Saya Katafuchi
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみよう
Satoshi Mimura
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
wintechq
[CB16] Keynote: How much security is too much? by Karsten Nohl
[CB16] Keynote: How much security is too much? by Karsten Nohl
CODE BLUE
[CB16] 基調講演: セキュリティはどれくらいが適量? – How much security is too much? – by Karsten Nohl
[CB16] 基調講演: セキュリティはどれくらいが適量? – How much security is too much? – by Karsten Nohl
CODE BLUE
Elastic{on}オープンな世界へようこそ
Elastic{on}オープンな世界へようこそ
Masamitsu Maehara
[CB16] Using the CGC’s fully automated vulnerability detection tools in secur...
[CB16] Using the CGC’s fully automated vulnerability detection tools in secur...
CODE BLUE
Elastic stack 世界にさらしたサーバを可視化してみた
Elastic stack 世界にさらしたサーバを可視化してみた
Masamitsu Maehara
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
Masamitsu Maehara
Swiftで機械学習(Play Machinelearning with Swift easily)
Swiftで機械学習(Play Machinelearning with Swift easily)
Yusuke Yoshie
2018/07/26 Game change by Deep Learning and tips to make a leap
2018/07/26 Game change by Deep Learning and tips to make a leap
Sony Network Communications Inc.
20190316_Deep learning brings game change and manufacturing
20190316_Deep learning brings game change and manufacturing
Sony Network Communications Inc.
テクニカルサポートエンジニア…勉(ry
テクニカルサポートエンジニア…勉(ry
Hidetomo Hosono
Interop2017
Interop2017
tak9029
2018 programing
2018 programing
m_miyamoto
Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門
Shinobu Kawano
Hacking Robotics
Hacking Robotics
Kensei Demura
第5回資料
第5回資料
ニフクラ mobile backend
情報セキュリティ講習会2016
情報セキュリティ講習会2016
Naoki Kato
デバイスをセキュアにつないで可視化する – Azure Sphere、Digital Twin紹介_IoTビジネス共創ラボ 第10回 勉強会
デバイスをセキュアにつないで可視化する – Azure Sphere、Digital Twin紹介_IoTビジネス共創ラボ 第10回 勉強会
IoTビジネス共創ラボ
セキュリティ教育とUX ~結ばれていた赤い糸~
セキュリティ教育とUX ~結ばれていた赤い糸~
Yahoo!デベロッパーネットワーク
最近ソフトウェア開発が面白くない
最近ソフトウェア開発が面白くない
Tatsuya Yagi
More Related Content
Viewers also liked
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
Saya Katafuchi
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみよう
Satoshi Mimura
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
wintechq
[CB16] Keynote: How much security is too much? by Karsten Nohl
[CB16] Keynote: How much security is too much? by Karsten Nohl
CODE BLUE
[CB16] 基調講演: セキュリティはどれくらいが適量? – How much security is too much? – by Karsten Nohl
[CB16] 基調講演: セキュリティはどれくらいが適量? – How much security is too much? – by Karsten Nohl
CODE BLUE
Elastic{on}オープンな世界へようこそ
Elastic{on}オープンな世界へようこそ
Masamitsu Maehara
[CB16] Using the CGC’s fully automated vulnerability detection tools in secur...
[CB16] Using the CGC’s fully automated vulnerability detection tools in secur...
CODE BLUE
Elastic stack 世界にさらしたサーバを可視化してみた
Elastic stack 世界にさらしたサーバを可視化してみた
Masamitsu Maehara
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
Masamitsu Maehara
Viewers also liked
(9)
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
マルウェア解析講座そのいち〜仮想環境下では暴れないけど質問ある?〜
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみよう
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
[CB16] Keynote: How much security is too much? by Karsten Nohl
[CB16] Keynote: How much security is too much? by Karsten Nohl
[CB16] 基調講演: セキュリティはどれくらいが適量? – How much security is too much? – by Karsten Nohl
[CB16] 基調講演: セキュリティはどれくらいが適量? – How much security is too much? – by Karsten Nohl
Elastic{on}オープンな世界へようこそ
Elastic{on}オープンな世界へようこそ
[CB16] Using the CGC’s fully automated vulnerability detection tools in secur...
[CB16] Using the CGC’s fully automated vulnerability detection tools in secur...
Elastic stack 世界にさらしたサーバを可視化してみた
Elastic stack 世界にさらしたサーバを可視化してみた
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
Similar to 第一回バイナリゆるゆる勉強会スライド
Swiftで機械学習(Play Machinelearning with Swift easily)
Swiftで機械学習(Play Machinelearning with Swift easily)
Yusuke Yoshie
2018/07/26 Game change by Deep Learning and tips to make a leap
2018/07/26 Game change by Deep Learning and tips to make a leap
Sony Network Communications Inc.
20190316_Deep learning brings game change and manufacturing
20190316_Deep learning brings game change and manufacturing
Sony Network Communications Inc.
テクニカルサポートエンジニア…勉(ry
テクニカルサポートエンジニア…勉(ry
Hidetomo Hosono
Interop2017
Interop2017
tak9029
2018 programing
2018 programing
m_miyamoto
Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門
Shinobu Kawano
Hacking Robotics
Hacking Robotics
Kensei Demura
第5回資料
第5回資料
ニフクラ mobile backend
情報セキュリティ講習会2016
情報セキュリティ講習会2016
Naoki Kato
デバイスをセキュアにつないで可視化する – Azure Sphere、Digital Twin紹介_IoTビジネス共創ラボ 第10回 勉強会
デバイスをセキュアにつないで可視化する – Azure Sphere、Digital Twin紹介_IoTビジネス共創ラボ 第10回 勉強会
IoTビジネス共創ラボ
セキュリティ教育とUX ~結ばれていた赤い糸~
セキュリティ教育とUX ~結ばれていた赤い糸~
Yahoo!デベロッパーネットワーク
最近ソフトウェア開発が面白くない
最近ソフトウェア開発が面白くない
Tatsuya Yagi
Introduction of Swift from Machine Learning
Introduction of Swift from Machine Learning
Daisuke Yamashita
Study Group of NIPS2017 presented by webfarmer.ltd
Study Group of NIPS2017 presented by webfarmer.ltd
WEBFARMER. ltd.
Microsoft Conversational AI_20191030
Microsoft Conversational AI_20191030
Ayako Omori
人工知能が拓くオンラインゲームの可能性 (AOGC 2007)
人工知能が拓くオンラインゲームの可能性 (AOGC 2007)
Youichiro Miyake
失敗を成功に近づけるアブダクションの科学
失敗を成功に近づけるアブダクションの科学
Shigeyuki Kameda
NLPソリューション開発の最前線_DLLAB_自然言語処理ナイト_200702
NLPソリューション開発の最前線_DLLAB_自然言語処理ナイト_200702
小川 雄太郎
NLPソリューション開発の最前線
NLPソリューション開発の最前線
Deep Learning Lab(ディープラーニング・ラボ)
Similar to 第一回バイナリゆるゆる勉強会スライド
(20)
Swiftで機械学習(Play Machinelearning with Swift easily)
Swiftで機械学習(Play Machinelearning with Swift easily)
2018/07/26 Game change by Deep Learning and tips to make a leap
2018/07/26 Game change by Deep Learning and tips to make a leap
20190316_Deep learning brings game change and manufacturing
20190316_Deep learning brings game change and manufacturing
テクニカルサポートエンジニア…勉(ry
テクニカルサポートエンジニア…勉(ry
Interop2017
Interop2017
2018 programing
2018 programing
Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門
Hacking Robotics
Hacking Robotics
第5回資料
第5回資料
情報セキュリティ講習会2016
情報セキュリティ講習会2016
デバイスをセキュアにつないで可視化する – Azure Sphere、Digital Twin紹介_IoTビジネス共創ラボ 第10回 勉強会
デバイスをセキュアにつないで可視化する – Azure Sphere、Digital Twin紹介_IoTビジネス共創ラボ 第10回 勉強会
セキュリティ教育とUX ~結ばれていた赤い糸~
セキュリティ教育とUX ~結ばれていた赤い糸~
最近ソフトウェア開発が面白くない
最近ソフトウェア開発が面白くない
Introduction of Swift from Machine Learning
Introduction of Swift from Machine Learning
Study Group of NIPS2017 presented by webfarmer.ltd
Study Group of NIPS2017 presented by webfarmer.ltd
Microsoft Conversational AI_20191030
Microsoft Conversational AI_20191030
人工知能が拓くオンラインゲームの可能性 (AOGC 2007)
人工知能が拓くオンラインゲームの可能性 (AOGC 2007)
失敗を成功に近づけるアブダクションの科学
失敗を成功に近づけるアブダクションの科学
NLPソリューション開発の最前線_DLLAB_自然言語処理ナイト_200702
NLPソリューション開発の最前線_DLLAB_自然言語処理ナイト_200702
NLPソリューション開発の最前線
NLPソリューション開発の最前線
第一回バイナリゆるゆる勉強会スライド
1.
Sub:ShellCodeを書こうスペシャル Name: simizu ryosuke
(HN:fvi_att) バイナリ ゆるゆる勉強会 part .1
2.
$whoami 清水 亮輔 HN:fvi_att 東工大社会理工学研究科 ●セキュリティ技術者教育支援システムの研究 (セキュリティの勉強ができるゲームの開発) IPA 情報処理技術者高度試験
セキュリティスペシャリスト 2014年リクルートアメリカ横断インターンシップ 最近ロボットの進化を目指したSNS及びプラットフォームを画策、構築中
3.
始める前に 仮 想 マ シ ン の 準 備 は ? お や つ と ゆ る ゆ る な 心 の 準 備 はOK ?
4.
バイナリ勉強会とは言ったけれど バイナリ = 機械語
(000101010101111……) アセンブラ = 機械語を人間にわかりやすく表現したもの。 ”xxをyyする” という形式に変換 ということで今回はアセンブラを使ってバイナリを組み立てていきます。 (目標: 講義:40分 演習:60分 雑談:20~30分)
5.
$いつバイナリの知見をつかうのか? 正直に言うと そこまで使わない →バイナリを意識しなくても99.9%のシステムは構築できる時代
6.
バイナリ勉強会をやるとは言ったけど.... バイナリを勉強することで得られる学習効果を最大にする 教材ってなんだろう? → ShellCodeをつくろう 理由: ● ハッカーぽくてかっこいいという意欲の向上 ●
OSがメモリのデータをどのようにして処理するかなどの 他の分野でも利用可能な知見を得られるため xxすることができるコードの断片(今回はバイ ナリ)
7.
ShellCode実装に必要な知識 ShellCode =既存のプログラムを正規ルートから脱線させた後 データをコードとして認識させ実行できるデータ となると 既存のプログラムがどのようにして動いているのか知る必要がある
8.
今回の対象者 一応半分くらいが ”Cのポインタまでは触ったことがある”とのこと 一応プログラムを介してメモリ上のデータを操作する部分まではできる。 ではメモリ上でプログラムをどのようにして処理するかか らスタートしよう
9.
プログラムを動かしてみよう ① まずは簡単な2つのプログラムを実行&コードを観察しよう gcc –S
–o sample1.s_code1.c gcc –S –o sample2.s code2.c 0. mov xx yy ? (データの移動に関連) 1. int ?(システムコールに関連) 確認したら 今度は gcc –g –S オプションを付加して確認してみよう
10.
アセンブラ ラベル宣言 .text プログラムのコード部分宣言 .bss
初期値を持たない大域変数宣言 .data 初期値をもつ大域変数宣言
11.
データの格納領域 1.レジスタ ここでデータの加工を行う、高速、少量 (Eax,ebx,ecx,edx) ,(ebp,esp)
,(epi) 2.メモリ ここにデータを保管する 低速、大量
12.
アセンブラでhello worldを実行してみよう ハンドアウト 1.
を手打ちしてみよう 分からないことがいろいろ出てきた mov xxx yyy データの移動命令 Int xx 割り込み命令 (実行するには) gcc –o first_asm.o first_asm.asm ld first_asm.o first_asm
13.
int と システムコールとはなにか OSが提供しているkernelの機能を 使うためのAPI http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html x86系では
int(interupt命令)にてeaxレジスタ の 値を見てシステムコールを実行
14.
メモリマッピング →普段のプログラムはどのようにしてデータを メモリで管理しているのか? → スタック、ヒープ、静的領域 などなど スタックってなんだろう?
15.
プロセス中のメモリマップ
16.
Cでサブルーチンを定義・呼び出ししよう それをアセンブラで見てみよう ハンドアウト 2.参照 $gcc
-g -S -o call_stack call_stack.c gオプション:デバッグ情報の同時出力 Sオプション:アセンブラにして出力
17.
スタックってなんだろう? スタック とはメモリ上のデータの構造の一つ FirstInLastOut型 スタックとesp
ebpを用いて制御を行うシステム =コールスタック
18.
コールスタック Addr:0xffffffff Addr:0x00000000 ス タ ッ ク の 成 長 方 向 1.引数をpushする 第x引数..第一引数の順番 2.Call命令 呼び出し元の.text内のコードアドレスをpush コード実行ポインタ %epiの値を呼び出し先を変更 2. Ebpレジスタの内容をpush 古いebpの内容をスタック内に退避 今の%espの値をebpに移動 2.Espの値を減算してスタックメモリ空間を 生成。(なぜ?)
19.
スタック コールスタック %ebp, %esp
の2つのレジスタと call 命令、ret命令、leave命令 を組み合わせてコールスタックを実現
20.
プログラムを動かしてみよう② https://github.com/fvi- att/paak_binarystydy_1/tree/master/security_hole_BOF_1 からプログラムとコードをダウンロードして実行してみよう このプログラムにはある特徴がある。 引数に10文字より多い文字列を入れるとなにが起こるか?
21.
なぜそうなったのか? どうやら main()メソッド内で定義した char[10] にヒントがありそうだ。 実行結果: Memory
stack smash! “スタックメモリが破壊されました”
22.
スタックオーバーフロー http://www.uquest.co.jp/embedded/learning/lect ure13.html うまくリターンアドレスを上書きできれば プログラムの制御を変更できるようになる
23.
shellcodeを実装する 別プロセスを実行するsyscallは execve syscall システムコールの一覧は /usr/include/i386-linux-gnu/asm/unistd_32.h ではexecveを使って任意の別プロセスを実行 するshellcodeを書いてみよう。
24.
シェルコードを書いてみる アセンブラで演習No.4を手写ししてみる。 出力したアセンブラコードを以下のコマンドで ¥x●●形式のバイナリで出力する。 objdump –M intel
-d ./xxx | grep “init”-A xx | cut -f 2 | perl -p -e perl -pe 's/(¥w{2})¥s+/¥¥x¥1/g'
25.
シェルコードがプログラムとして 実行できるか確認 演習No5.に作成したシェルコードを貼り付けて 実行する。 この場合スタック上のデータを関数ポインタを 用いてコードとして実行させている。
26.
execstack 及び NX技術に関して メモリのページ(4KB)ごとにプログラム実 行可能なデータかどうかフラグをつけ、BOF によるコード実行を防ぐための技術 gdb
–x xxx.out でread write executフラグを確認することがで きる
27.
原理はシンプル 問題は山積み Code Red (2001年)
28.
こんどできたらやりたいこと シェルコードを、実際のプログラムを用いて 使ってみます
29.
おしらせ あなたも”ゆるゆる”勉強会をやってみよう 勉強会をやることで”人に教える”という立場から 勉強するため、すごい効果がある ゆるゆる勉強会 主催者募集中
30.
おしまい たぶん今は役に立たない知恵だけど 10年、20年で絶対に役に立つと思う。 Thank you for
your listening.
31.
Appendix
Download now