fuzzing

141
1 from ZareGoto uzzing F Ashigirl96

Upload: reon-nishimura

Post on 15-Jun-2015

431 views

Category:

Engineering


5 download

DESCRIPTION

About Fuzzing

TRANSCRIPT

Page 1: Fuzzing

1

from ZareGoto

uzzing FAshigirl96

Page 2: Fuzzing

2

from ZareGoto

uzzing FAshigirl96

(入門)

Page 3: Fuzzing

3

Self - Introduction

Page 4: Fuzzing

Handle Name: Ashigirl96 - あしがる 西村 礼恩

趣味: Twitter

専門: Network/Control System Security

言語: Python

好きなもの: Scapyとママの作ったオムライス

Page 5: Fuzzing

キャンプのきっかけ

Page 6: Fuzzing

もともとパソコンをあまり触ってなかったけど、

まっちゃ139(去年の1,2月)に興味行ったら、

セキュリティに興味持って、 応募用紙に名前書いたら、

Page 7: Fuzzing

もともとパソコンをあまり触ってなかったけど、

まっちゃ139(去年の1,2月)に興味行ったら、

セキュリティに興味持って、 応募用紙に名前書いたら、

受かりました。

Page 8: Fuzzing

いきなりですが…

8

Page 9: Fuzzing

Scapy is 何?

9

Page 10: Fuzzing

いず 何?

10

Page 11: Fuzzing

is 何?Fuzzing

11

Page 12: Fuzzing

というほど、おおげさなものではありません…。

12

Page 13: Fuzzing

13

と、言いたいですが…

Page 14: Fuzzing

14

(☝ ՞ਊ ՞)☝中二病君

自動車.....

Page 15: Fuzzing

15

(☝ ՞ਊ ՞)☝中二病君

http://policecar.nomaki.jp/1.jpg

Page 16: Fuzzing

16

(☝ ՞ਊ ՞)☝中二病君

http://home-bb.biz/wp-content/uploads/2013/07/c5cdaf66f8642101a3da8a60ec825ecf.jpg

Page 17: Fuzzing

17

(☝ ՞ਊ ՞)☝中二病君

工場.....

Page 18: Fuzzing

18

(☝ ՞ਊ ՞)☝中二病君

http://cdn-ak.f.st-hatena.com/images/fotolife/w/wami/20090219/20090219234336.jpg

Page 19: Fuzzing

19

(☝ ՞ਊ ՞)☝中二病君

http://tomtittot.asablo.jp/blog/img/2012/04/23/1f4451.jpg

Page 20: Fuzzing

20

(☝ ՞ਊ ՞)☝中二病君

リア充.....

Page 21: Fuzzing

21

(☝ ՞ਊ ՞)☝中二病君

http://yaplog.jp/cv/warabidani/img/138/earthmoon_p.jpg

Page 22: Fuzzing

22

(☝ ՞ਊ ՞)☝中二病君

http://yaplog.jp/cv/warabidani/img/138/earthmoon_p.jpg

Page 23: Fuzzing

23

に繋がるかも…

不謹慎ですみまへん

Page 24: Fuzzing

24

(o´・ω・`)

Page 25: Fuzzing

25

(ヾノ・∀・`)ナイナイ

Page 26: Fuzzing

Scapy とは、

26

Page 27: Fuzzing

27

Scapy is a powerful interactive packet manipulation program.

http://www.secdev.org/projects/scapy/にて

Page 28: Fuzzing

28

Scapy is a powerful interactive packet manipulation program.

It is able to forge or decode packets of a wide

number of protocols

Page 29: Fuzzing

29

Scapy is a powerful interactive packet manipulation program.

It is able to forge or decode packets of a wide

number of protocols

send them on the wire, capture them, match requests and replies,

and much more.

Page 30: Fuzzing

30

Scapy is a powerful interactive packet manipulation program.

It is able to forge or decode packets of a wide

number of protocols

send them on the wire, capture them, match requests and replies,

and much more.

It can easily handle most classical tasks like scanning, tracerouting, probing, unit tests, attacks or network

discovery (it can replace hping, 85% of nmap, arpspoof, arp-sk, arping, tcpdump, tethereal, p0f, etc.). It also

performs very well at a lot of other specific tasks that most other tools can't handle, like sending invalid frames,

injecting your own 802.11 frames, combining technics (VLAN hopping+ARP cache poisoning, VOIP decoding on

WEP encrypted channel, ...), etc.

Page 31: Fuzzing

31

平たくいえば、

Page 32: Fuzzing

32

平たくいえば、簡易パケット生成モジュール in Python

Page 33: Fuzzing

33

次に、

Page 34: Fuzzing

制御システム とは、

34

Page 35: Fuzzing

35

---- from kotobank.jp

Page 36: Fuzzing

36

それは重要じゃない。

Page 37: Fuzzing

37

???

Page 38: Fuzzing

38

興味あるのは、制御システムのセキュリティ

Page 39: Fuzzing

39

では、制御システムのセキュリティで有名なのは

Page 40: Fuzzing

40

組織、システム自体のレイヤ、制御システムの業界、

それぞれの標準が提案されている

Page 41: Fuzzing

41

組織、システム自体のレイヤ、制御システムの業界、

それぞれの標準が提案されている

IEC62443

注目されている

Page 42: Fuzzing

42

IEC62443シリーズ統合化(しつつある)

WIB (nternational Instrument User’s Association)

!

ISCI (ISA Security Compliance Institut)

!

EDSA認証

Page 43: Fuzzing

43

EDSA認証対象

Page 44: Fuzzing

44

EDSA認証対象

制御システム向けの組み込み機器

Page 45: Fuzzing

45

組み込み機器は、組み込みソフトウェアのプロセスの制御、監視を実行する

Page 46: Fuzzing

46

EDSA認証は3つにカテゴリできる

ソフトウェア開発セキュリティ評価(SDSA)

機能セキュリティ評価(FSA)

通信ロバストネス試験(CRT)

Level1 Level2 Level3

Page 47: Fuzzing

47

一旦ここまで…次に、

Page 48: Fuzzing

とは、

48

Fuzzing

Page 49: Fuzzing

49

Fuzzingとは、意図的なデータ(Fuzz)をプログラムに

自動的に与えることで、クラッシュやバグを発見するプロセスのことです。

Page 50: Fuzzing

50

つまり、脆弱性を見つけるプロセス。

Page 51: Fuzzing

51

Fuzzデータはvictimによって変わります。

Page 52: Fuzzing

52

For Example:

HTTPリクエスト --->----

Webサーバ(足軽画伯)

GET / HTTP/1.1 Host: www.hoge.jp Host: www.hoge.jp Host: www.hoge.jp Host: www.hoge.jp Host: www.hoge.jp

Page 53: Fuzzing

53

For Example:

異常なコマンドライン

Page 54: Fuzzing

54

For Example:

他にも、デバイスがプロトコル実装が正確に作動していて、 悪意のあるネットワークトラフィックにも対応できるか というテストをしていきます。

Page 55: Fuzzing

なら、こんなことできるのではないか。

55

Page 56: Fuzzing

次の3つを組み合わせてみました。

56

Page 57: Fuzzing

57

・ターゲット: 制御システムで使うプロトコル

Page 58: Fuzzing

58

・ターゲット: 制御システムで使うプロトコル

・何をするか: ファジングによる脆弱性発見

Page 59: Fuzzing

59

・ターゲット: 制御システムで使うプロトコル

・何をするか: ファジングによる脆弱性発見

・ツール: Scapy

Page 60: Fuzzing

60

今回使うプロトコル DNP3.0

Page 61: Fuzzing

61

DNP3.0とは

Distributed Network Protocol

HMI/SCADA~RTU間で使用されてる通信プロトコル

米国で多用

Page 62: Fuzzing

62

DNP3.0とは

レイヤはこのように なっています

Page 63: Fuzzing

63

もっと…もっと詳しく

Page 64: Fuzzing

Application Layer

64

Page 65: Fuzzing

65

Transport Function

Page 66: Fuzzing

66

Data Link Layer

Page 67: Fuzzing

67

それぞれのFieldをScapyを使い記述します

Page 68: Fuzzing

68

難しい?

Page 69: Fuzzing

69

うん、難しい

Page 70: Fuzzing

70

っ Scapy Reference

Page 71: Fuzzing

71

Page 72: Fuzzing

72

興味ある人はここで調べてください☆

Page 73: Fuzzing

73

95 FunctionCode = {! 96 0:"Confirm ",! 97 1:"Read ",! 98 2:"Write ",! 99 3:"Select ",!100 4:"Operate ",!101 5:"Dir operate ",!102 6:"Dir operate – No resp ",!103 7:"Freeze ",!104 8:"Freeze – No resp ",!105 9:"Freeze clear ",!106 10:"Freeze clear – No resp ",!107 11:"Freeze at time ",!108 12:"Freeze at time – No resp ",!109 13:"Cold restart ",!110 14:"Warm restart ",!111 15:"Initialize data ",!112 16:"Initialize application ",!113 17:"Start application ",!114 18:"Stop application ",!115 19:"Save configuration ",!116 20:"Enable unsolicited ",!!

(オレオレ)コードの一部①

Page 74: Fuzzing

74

117 21:"Disable unsolicited ",!118 22:"Assign class ",!119 23:"Delay measurement ",!120 24:"Record current time ",!121 25:"Open file ",!122 26:"Close file ",!123 27:"Delete file ",!124 28:"Get file information ",!125 29:"Authenticate file ",!126 30:"Abort file "!127 }!128 class DNP3QR(Packet):!129 name = "DNP3.0 request"!130 fields_desc = [!131 #Application Header!132 #Application Control!133 XByteField('seq',0),!134 BitField('uns',0),!135 BitField('con',0),!136 BitField('fin',0),!137 BitField('fir',0),!138 !139 #Function Code!140 ShortEnumField("type", 1, FunctionCode)

(オレオレ)コードの一部②

Page 75: Fuzzing

75

DNP3.0プロトコルで使われるデータに合わせたファズデータを作る

Page 76: Fuzzing

76

ここを意識しましょう・整数オーバーフロー ・バッファオーバーフロー

・Off by one

・境界値未チェック ・異常フラグ ・サービス妨害攻撃 ・リソース異常消費

Page 77: Fuzzing

77

実は、まだ作ってる最中で…

Page 78: Fuzzing

78

話飛びます。

Page 79: Fuzzing

79

ちょっと前のインシデント

Page 80: Fuzzing

80

Stuxnet

Page 81: Fuzzing

81

の、(インシデント)概要。

Page 82: Fuzzing

82

1.USBメモリやインターネットを通じて情報システムへの侵入

Page 83: Fuzzing

83

2.システムの脆弱性を利用し、権限昇格、システム環境内部でウィルスの拡散実行

Page 84: Fuzzing

84

3.バックドアを作成し、外部指令サーバ(C&Cサーバ)や

80番ポート(HTTP)を介し通信し、ウィルスの増強化

Page 85: Fuzzing

85

4.組織内のネットワークに入り、制御システムへの侵入

Page 86: Fuzzing

86

5.制御システム上にある装置に対する攻撃実行

Page 87: Fuzzing

87

ヤバイ

Page 88: Fuzzing

88

Function of Stuxnet

Page 89: Fuzzing

89

1. 500 KBのプログラムで4000弱の機能を持っている

Page 90: Fuzzing

90

2. 複雑/オブジェクト指向

Page 91: Fuzzing

91

3. 複数のゼロデイを利用

Page 92: Fuzzing

92

4. 2つのrootkitを使用し、制御システムをターゲットとしている

Page 93: Fuzzing

93

5. Windowsに詳しい、制御システムであるWinCC/Step7についても詳しい

Page 94: Fuzzing

94

Stuxnetが出るまでの前後

Page 95: Fuzzing

95

汎用製品や標準プロトコルで構成されている情報システム

(以前)

Page 96: Fuzzing

96

(以前)

制御システムのオープン化(汎用製品や標準プロトコルの 利用)

Page 97: Fuzzing

97

(以前)

端末の9割以上がWindows系を利用している

Page 98: Fuzzing

98

How to 対策

Page 99: Fuzzing

99

How to 対策個別攻撃手法の回避法

Page 100: Fuzzing

100

システム設計時におけるネットワーク設計

Page 101: Fuzzing

101

システム設計時におけるネットワーク設計

『外部との隔離や接続ルートの明確』

Page 102: Fuzzing

102

外部との通信における接続先のフィルタリング

Page 103: Fuzzing

103

外部との通信における接続先のフィルタリング

&&

外部との接続点における通信の監視、制御機構

Page 104: Fuzzing

104

どうですか?

中二病妄想力の足しになりましたでしょうか?

Page 105: Fuzzing

105

参考資料(Scapy):

http://fossies.org/dox/scapy-2.2.0/

http://www.secdev.org/projects/scapy/doc/build_dissect.html

http://www.secdev.org/projects/scapy/doc/advanced_usage.html

Page 106: Fuzzing

106

参考資料(DNP3.0):

http://www.dnp.org/default.aspx

http://www.softech.co.jp/mm_120404_firm.htm

http://www05.abb.com/global/scot/scot229.nsf/veritydisplay/65b4a3780db3b3f3c2256e68003dffe6/$file/rec523_dnpprotmanend.pdf

Page 107: Fuzzing

107

参考資料(Fuzzing):

http://www.ipa.go.jp/security/vuln/fuzzing.html

http://lifeofpentester.blogspot.jp/2013/10/ fuzz-testing-web-applications-with-burp.html

Page 108: Fuzzing

108

ご清聴ありがとうございました。

Page 109: Fuzzing

109

話しそれますが…

Page 110: Fuzzing

110

演習しましょう!

Page 111: Fuzzing

111

(実践的に)Scapy使ってみよう...!!

Page 112: Fuzzing

112

こんなことしたい。

Page 113: Fuzzing

113

1.ettercapでARPキャッシュポイゾニングします2.ettercapでキャプチャしたパケットをScapyで解析します 3.解析したのをPythonでごみょごみょして、ソースコードを取り出します。 4.それを某サイトに送ります。

Page 114: Fuzzing

114

使うもの、ettercap、Scapy

Page 115: Fuzzing

115

192.168.1.17(Backtrack5)

192.168.1.4(Mac)

某サイト

Page 116: Fuzzing

116

192.168.1.17(Backtrack5)

192.168.1.4(Mac)

ARPキャッシュポイズニング

某サイト

Page 117: Fuzzing

117

192.168.1.17(Backtrack5)

192.168.1.4(Mac)

ARPキャッシュポイズニング

某サイト

ソースコード投げる

Page 118: Fuzzing

118

192.168.1.17(Backtrack5)

192.168.1.4(Mac)

ARPキャッシュポイズニング

某サイト

ソースコード投げる

BT5が奪取(?)

Page 119: Fuzzing

119

192.168.1.17(Backtrack5)

192.168.1.4(Mac)

ARPキャッシュポイズニング

某サイト

ソースコード投げる

解析...

Page 120: Fuzzing

120

Ettercapは、スイッチドLAN環境のための多目的なスニファ/インターセプター/ロガーです。多くのプロトコル(暗号化されたものも含む)のアクティブもしくはパッシブな分析をサポートし、ネットワークとホスト分析のための多くの機能を含んでいます。

Page 121: Fuzzing

121

Ettercapは、スイッチドLAN環境のための多目的なスニファ/インターセプター/ロガーです。多くのプロトコル(暗号化されたものも含む)のアクティブもしくはパッシブな分析をサポートし、ネットワークとホスト分析のための多くの機能を含んでいます。

長い

Page 122: Fuzzing

122

Ettercapは、スイッチドLAN環境のための多目的なスニファ/インターセプター/ロガーです。多くのプロトコル(暗号化されたものも含む)のアクティブもしくはパッシブな分析をサポートし、ネットワークとホスト分析のための多くの機能を含んでいます。

長い長い

Page 123: Fuzzing

123

Ettercapは、スイッチドLAN環境のための多目的なスニファ/インターセプター/ロガーです。多くのプロトコル(暗号化されたものも含む)のアクティブもしくはパッシブな分析をサポートし、ネットワークとホスト分析のための多くの機能を含んでいます。

長い長い長い

Page 124: Fuzzing

124

Ettercapは、スイッチドLAN環境のための多目的なスニファ/インターセプター/ロガーです。多くのプロトコル(暗号化されたものも含む)のアクティブもしくはパッシブな分析をサポートし、ネットワークとホスト分析のための多くの機能を含んでいます。

中二病の おもちゃ

Page 125: Fuzzing

125

http://sourceforge.jp/projects/sfnet_ettercap/

ここからダウンロード出来ます!

Page 126: Fuzzing

126

1.ettercapでARPキャッシュポイゾニングします

2.ettercapでキャプチャしたパケットをScapyで解析します 3.解析したのをPythonでごみょごみょして、ソースコードを取り出します。 4.それを某サイトに送ります。5.正答します。

Page 127: Fuzzing

127

Page 128: Fuzzing

128

%ettercap -T -M arp -i eth1 /192.168.1.4/ /192.168.1.1/ -w 01.pcap

コマンド

Page 129: Fuzzing

129

%ettercap -T -M arp -i eth1 /192.168.1.4/ /192.168.1.1/ -w 01.pcap

コマンド

use text only CUI

Page 130: Fuzzing

130

%ettercap -T -M arp -i eth1 /192.168.1.4/ /192.168.1.1/ -w 01.pcap

コマンド

METHOD:ARGS perform a mitm attackin this case , ARP cache poisoning

Page 131: Fuzzing

131

%ettercap -T -M arp -i eth1 /192.168.1.4/ /192.168.1.1/ -w 01.pcap

コマンド

-i, –iface use this network interfacein this case, use 'eth1'

Page 132: Fuzzing

132

%ettercap -T -M arp -i eth1 /192.168.1.4/ /192.168.1.1/ -w 01.pcap

コマンド

Attacker and victim

Page 133: Fuzzing

133

%ettercap -T -M arp -i eth1 /192.168.1.4/ /192.168.1.1/ -w 01.pcap

コマンド

-w, –write write sniffed data to pcapfile

Page 134: Fuzzing

134

とあるサイトで…192.168.1.4(victim)が…

Page 135: Fuzzing

135

1.ettercapでARPキャッシュポイゾニングします2.ettercapでキャプチャしたパケットをScapyで解析します3.解析したのをPythonでごみょごみょして、ソースコードを取り出します。 4.それを某サイトに送ります。

Page 136: Fuzzing

136

図1.

Page 137: Fuzzing

137

図2.

Page 138: Fuzzing

138

図3.

Page 139: Fuzzing

139

図4.

Page 140: Fuzzing

140

演習…終わりです…

Page 141: Fuzzing

141

ありがとうございました!!