Enviar pesquisa
Carregar
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
•
Transferir como PPTX, PDF
•
14 gostaram
•
4,976 visualizações
Tokoroten Nakayama
Seguir
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 22
Baixar agora
Recomendados
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
SECCON Beginners
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
mao999
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
Kousuke Ebihara
型安全性入門
型安全性入門
Akinori Abe
アジャイルにモデリングは必要か
アジャイルにモデリングは必要か
Hiromasa Oka
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
KageShiron
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編
hama7230
Recomendados
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
SECCON Beginners
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
mao999
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
Kousuke Ebihara
型安全性入門
型安全性入門
Akinori Abe
アジャイルにモデリングは必要か
アジャイルにモデリングは必要か
Hiromasa Oka
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
KageShiron
MCC CTF講習会 pwn編
MCC CTF講習会 pwn編
hama7230
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
kazkiti
競プロでGo!
競プロでGo!
鈴木 セシル
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
SECCON Beginners
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
Marp Tutorial
Marp Tutorial
Rui Watanabe
20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf
Kazuaki Ishizaki
Linuxのsemaphoreとmutexを見る
Linuxのsemaphoreとmutexを見る
wata2ki
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
Mr. Vengineer
Zynq mp勉強会資料
Zynq mp勉強会資料
一路 川染
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
さくらインターネット株式会社
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
MITSUNARI Shigeo
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話
LINE Corporation
katagaitai CTF勉強会 #3 crypto
katagaitai CTF勉強会 #3 crypto
trmr
どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?
たけおか しょうぞう
非同期処理の基礎
非同期処理の基礎
信之 岩永
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
データ分析グループの組織編制とその課題 マーケティングにおけるKPI設計の失敗例 ABテストの活用と、機械学習の導入 #CWT2016
データ分析グループの組織編制とその課題 マーケティングにおけるKPI設計の失敗例 ABテストの活用と、機械学習の導入 #CWT2016
Tokoroten Nakayama
Mais conteúdo relacionado
Mais procurados
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
kazkiti
競プロでGo!
競プロでGo!
鈴木 セシル
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
SECCON Beginners
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
Marp Tutorial
Marp Tutorial
Rui Watanabe
20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf
Kazuaki Ishizaki
Linuxのsemaphoreとmutexを見る
Linuxのsemaphoreとmutexを見る
wata2ki
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
Mr. Vengineer
Zynq mp勉強会資料
Zynq mp勉強会資料
一路 川染
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
さくらインターネット株式会社
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
MITSUNARI Shigeo
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話
LINE Corporation
katagaitai CTF勉強会 #3 crypto
katagaitai CTF勉強会 #3 crypto
trmr
どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?
たけおか しょうぞう
非同期処理の基礎
非同期処理の基礎
信之 岩永
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
Mais procurados
(20)
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
競プロでGo!
競プロでGo!
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
暗号技術の実装と数学
暗号技術の実装と数学
Marp Tutorial
Marp Tutorial
20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf
Linuxのsemaphoreとmutexを見る
Linuxのsemaphoreとmutexを見る
プログラムを高速化する話
プログラムを高速化する話
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
Zynq mp勉強会資料
Zynq mp勉強会資料
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
SpectreとMeltdown:最近のCPUの深い話
SpectreとMeltdown:最近のCPUの深い話
katagaitai CTF勉強会 #3 crypto
katagaitai CTF勉強会 #3 crypto
どうして昔の人は八進数でしゃべるのか?
どうして昔の人は八進数でしゃべるのか?
非同期処理の基礎
非同期処理の基礎
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Destaque
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
データ分析グループの組織編制とその課題 マーケティングにおけるKPI設計の失敗例 ABテストの活用と、機械学習の導入 #CWT2016
データ分析グループの組織編制とその課題 マーケティングにおけるKPI設計の失敗例 ABテストの活用と、機械学習の導入 #CWT2016
Tokoroten Nakayama
ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話
Tokoroten Nakayama
ヒューレットパッカード社の社員の離職リスク予測 第一回機械学習ビジネス研究会 #ml_business
ヒューレットパッカード社の社員の離職リスク予測 第一回機械学習ビジネス研究会 #ml_business
Tokoroten Nakayama
機械学習ビジネス研究会(未踏研究会)
機械学習ビジネス研究会(未踏研究会)
Tokoroten Nakayama
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
Tokoroten Nakayama
プロダクション環境でオンラインで機械学習を動かすにあたってツライ話 #MLCT
プロダクション環境でオンラインで機械学習を動かすにあたってツライ話 #MLCT
Tokoroten Nakayama
jubatusのECサイトへの適応 #jubatus_hackathon
jubatusのECサイトへの適応 #jubatus_hackathon
Tokoroten Nakayama
たのしいうぇっぶくろーら #pyfes
たのしいうぇっぶくろーら #pyfes
Tokoroten Nakayama
失敗から学ぶデータ分析グループのチームマネジメント変遷 (デブサミ2016) #devsumi
失敗から学ぶデータ分析グループのチームマネジメント変遷 (デブサミ2016) #devsumi
Tokoroten Nakayama
失敗から学ぶデータ分析グループのチームマネジメント変遷
失敗から学ぶデータ分析グループのチームマネジメント変遷
Tokoroten Nakayama
DAUを評価指標から捨てた会社の話 #tokyowebmining
DAUを評価指標から捨てた会社の話 #tokyowebmining
Tokoroten Nakayama
情報処理とは何か あとbigdataとか
情報処理とは何か あとbigdataとか
Tokoroten Nakayama
特徴ベクトル変換器を作った話 #dogenzakalt
特徴ベクトル変換器を作った話 #dogenzakalt
Tokoroten Nakayama
Muroto for ps vita
Muroto for ps vita
Tokoroten Nakayama
Argosの紹介 #x86study
Argosの紹介 #x86study
Tokoroten Nakayama
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
Tokoroten Nakayama
BattleField3に見る自己表現としてのゲームプレイ
BattleField3に見る自己表現としてのゲームプレイ
Tokoroten Nakayama
特徴ベクトル変換器を作った話
特徴ベクトル変換器を作った話
Tokoroten Nakayama
Phishingsite is ggrks
Phishingsite is ggrks
Tokoroten Nakayama
Destaque
(20)
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
データ分析グループの組織編制とその課題 マーケティングにおけるKPI設計の失敗例 ABテストの活用と、機械学習の導入 #CWT2016
データ分析グループの組織編制とその課題 マーケティングにおけるKPI設計の失敗例 ABテストの活用と、機械学習の導入 #CWT2016
ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話
ヒューレットパッカード社の社員の離職リスク予測 第一回機械学習ビジネス研究会 #ml_business
ヒューレットパッカード社の社員の離職リスク予測 第一回機械学習ビジネス研究会 #ml_business
機械学習ビジネス研究会(未踏研究会)
機械学習ビジネス研究会(未踏研究会)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
プロダクション環境でオンラインで機械学習を動かすにあたってツライ話 #MLCT
プロダクション環境でオンラインで機械学習を動かすにあたってツライ話 #MLCT
jubatusのECサイトへの適応 #jubatus_hackathon
jubatusのECサイトへの適応 #jubatus_hackathon
たのしいうぇっぶくろーら #pyfes
たのしいうぇっぶくろーら #pyfes
失敗から学ぶデータ分析グループのチームマネジメント変遷 (デブサミ2016) #devsumi
失敗から学ぶデータ分析グループのチームマネジメント変遷 (デブサミ2016) #devsumi
失敗から学ぶデータ分析グループのチームマネジメント変遷
失敗から学ぶデータ分析グループのチームマネジメント変遷
DAUを評価指標から捨てた会社の話 #tokyowebmining
DAUを評価指標から捨てた会社の話 #tokyowebmining
情報処理とは何か あとbigdataとか
情報処理とは何か あとbigdataとか
特徴ベクトル変換器を作った話 #dogenzakalt
特徴ベクトル変換器を作った話 #dogenzakalt
Muroto for ps vita
Muroto for ps vita
Argosの紹介 #x86study
Argosの紹介 #x86study
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
ビッグデータとioDriveの夕べ:ドリコムのデータ分析環境のお話
BattleField3に見る自己表現としてのゲームプレイ
BattleField3に見る自己表現としてのゲームプレイ
特徴ベクトル変換器を作った話
特徴ベクトル変換器を作った話
Phishingsite is ggrks
Phishingsite is ggrks
Semelhante a レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化
Kazunori Jo
Effective python #5, #6
Effective python #5, #6
bontakun
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 1101
Nobuaki Oshiro
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920
Nobuaki Oshiro
前処理のための前処理(Tokyo.R#45)
前処理のための前処理(Tokyo.R#45)
Shinya Uryu
R高速化
R高速化
Monta Yashi
Clojure
Clojure
yshigeru
Semelhante a レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
(7)
拡張ライブラリ作成による高速化
拡張ライブラリ作成による高速化
Effective python #5, #6
Effective python #5, #6
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920
前処理のための前処理(Tokyo.R#45)
前処理のための前処理(Tokyo.R#45)
R高速化
R高速化
Clojure
Clojure
Mais de Tokoroten Nakayama
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本質)
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本質)
Tokoroten Nakayama
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
Tokoroten Nakayama
ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版
Tokoroten Nakayama
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
Tokoroten Nakayama
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
Tokoroten Nakayama
なぜコンピュータを学ばなければならないのか 21世紀の君主論
なぜコンピュータを学ばなければならないのか 21世紀の君主論
Tokoroten Nakayama
データマイニングの話詰め合わせ
データマイニングの話詰め合わせ
Tokoroten Nakayama
データサイエンティスト養成読本の解説+書き忘れたこと
データサイエンティスト養成読本の解説+書き忘れたこと
Tokoroten Nakayama
機械学習の精度と売上の関係
機械学習の精度と売上の関係
Tokoroten Nakayama
難易度ボラタリティグラフという分析手法
難易度ボラタリティグラフという分析手法
Tokoroten Nakayama
インターネット上の情報発信手段の変遷 情報発信の簡易化
インターネット上の情報発信手段の変遷 情報発信の簡易化
Tokoroten Nakayama
Mais de Tokoroten Nakayama
(13)
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本質)
ラボラトリーオートメーションのためのソフトウェア思想教育(非プログラマ―が知っておくべきプログラミングの本質)
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
ビジネスパーソンのためのDX入門講座エッセンス版
ビジネスパーソンのためのDX入門講座エッセンス版
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
なぜコンピュータを学ばなければならないのか 21世紀の君主論
なぜコンピュータを学ばなければならないのか 21世紀の君主論
データマイニングの話詰め合わせ
データマイニングの話詰め合わせ
データサイエンティスト養成読本の解説+書き忘れたこと
データサイエンティスト養成読本の解説+書き忘れたこと
機械学習の精度と売上の関係
機械学習の精度と売上の関係
難易度ボラタリティグラフという分析手法
難易度ボラタリティグラフという分析手法
インターネット上の情報発信手段の変遷 情報発信の簡易化
インターネット上の情報発信手段の変遷 情報発信の簡易化
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
1.
レベルを上げて物理で殴れ
Fuzzing入門編 ところてん @tokoroten
2.
自己紹介 • 元:中島飛行機跡地、不発弾処理係 • 現:ソーシャルゲーム屋の裏方 •
Railsの会社でPythonを書いてる • セキュリティ、自然言語処理、機械学習 • Python100%でゲーム作ってコミケで頒布 – http://www.pygame.org/project-Howitzer-1925-.html
3.
Fuzzingとは! • レベルを上げて、物理で殴
る • 計算力を上げて、テストで 殴る
4.
具体的には • わずかな時間を見つけて
デバッグレボリューション • うれしくて感動でコードが パーン • ┗(^o^ )┓三
5.
簡単に言うと? • プログラムに • ランダムなデータを食わせ
て • クラッシュさせる
6.
Fuzzingはテストの裏返し • ユニットテスト –正常に動くことの保障 •
Fuzzing –バグが出ないことの安心
7.
メリット • バグや脆弱性を叩きつぶせる –人間の考慮の範囲外を攻められる •
Fuzzingは並列化により高速化可能 –クラウド上で全力で殴れる
8.
ファジングの種類 • ダムファジング
– ガチでランダムなデータを入力 – 作るのは簡単、効率は悪い • ミューテーションファジング – 正常なデータを元に突然変異させて入力 – 作るのはある程度簡単、効率はそこそこ • スマートファジング – プロトコルを元にしてデータを生成 – 作るのは超大変、効率はものすごく良い
9.
ファジングのレイヤー • プロトコルレイヤー –
HTTP、FTP、SIP、XML、etc... • 関数単位 – ユニットテストを改造すると簡単 • ファイル単位 – Officeとか、Firefoxのデバッグ
10.
研究レベルのもの • GA Fuzzing
– Fuzzingしながらコードカバレッジを計測 – よりコードカバレッジが高いテストデータほ ど評価 – テストデータをGA交配してテストを作り出す – より深い場所のコードに対して攻撃できる • 再実装してみたが性能はいまひとつ – 深いところに到達するが、境界を攻撃しづら い http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4682289
11.
Fuzzingの例 • Firefox
– Alexaを元に100万のサイトからHTMLを取得 – デイリーでサブセットを食わせる – 週末に全部のデータを食わせる • マイクロソフト – Fuzzingで自社プロダクトを攻撃 – Office2010は1800個のバグを発見 – 他にもVistaはFuzzingでXPよりバグを減らせた – 社内でFuzzingコンテストをしている
12.
今回作ったモノ • 正規表現を入力すると、
受理可能な文字列を返す、Fuzzer • 実装 – pythonのreモジュールの内部で利用されてい る sre_parseモジュールを利用 – sre_parseは正規表現をパース、木構造に変換 – 正規表現のオートマトンをランダムウォーク して、 受理可能な文字列を出力 https://github.com/tokoroten/acceptableRegex
13.
sre_parseの利用 • 正規表現 "(fuga{4,10})+" •
sre_parseでパース後の構造 – [('max_repeat', (1, 65535, [('subpattern', (1, [('liter al', 102), ('literal', 117), ('literal', 103), ('max_repea t', (4, 10, [('literal', 97)]))]))]))] • あとはがんばってランダムウォーク
14.
実験 • URLの正規表現 –
http://(?:(?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][-a-zA-Z0-9]*[a- zA-Z0-9]).)*(?:[a-zA-Z]|[a-zA-Z][-a-zA-Z0-9]*[a-zA-Z0- 9]).?|[0-9]+.[0-9]+.[0-9]+.[0-9]+)(?::[0- 9]*)?(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa- f][0-9A-Fa-f])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0- 9A-Fa-f][0-9A-Fa-f])*)*(?:/(?:[-_.!~*'()a-zA-Z0- 9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*(?:;(?:[-_.!~*'()a- zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa- f])*)*)*(?:?(?:[-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A- Fa-f][0-9A-Fa-f])*)?)? http://www.din.or.jp/~ohzaki/perl.htm
15.
sre_parseによるパース結果 •
[('literal', 104), ('literal', 116), ('literal', 116), ('literal', 112), ('literal', 58), ('literal', 47), ('literal', 47), ('subpattern', (None, [('branch', (None, [[('max_re peat', (0, 65535, [('subpattern', (None, [('subpattern', (None, [('in', [('range', (97, 122)), ('range', (65, 90)), ('range', (48, 57))]), ('branch', (None, [[], [(' max_repeat', (0, 65535, [('in', [('literal', 45), ('range', (97, 122)), ('range', (65, 90)), ('range', (48, 57))])])), ('in', [('range', (97, 122)), ('range', (65, 90)), (' range', (48, 57))])]]))])), ('literal', 46)]))])), ('subpattern', (None, [('in', [('range', (97, 122)), ('range', (65, 90))]), ('branch', (None, [[], [('max_repeat', (0, 65535, [('in', [('literal', 45), ('range', (97, 122)), ('range', (65, 90)), ('range', (48, 57))])])), ('in', [('range', (97, 122)), ('range', (65, 90)), ('range', (48, 57))] )]]))])), ('max_repeat', (0, 1, [('literal', 46)]))], [('max_repeat', (1, 65535, [('in', [('range', (48, 57))])])), ('literal', 46), ('max_repeat', (1, 65535, [('in', [('ra nge', (48, 57))])])), ('any', None), ('max_repeat', (1, 65535, [('in', [('range', (48, 57))])])), ('literal', 46), ('max_repeat', (1, 65535, [('in', [('range', (48, 57) )])]))]]))])), ('max_repeat', (0, 1, [('subpattern', (None, [('literal', 58), ('max_repeat', (0, 65535, [('in', [('range', (48, 57))])]))]))])), ('max_repeat', (0, 1, [(' subpattern', (None, [('literal', 47), ('max_repeat', (0, 65535, [('subpattern', (None, [('branch', (None, [[('in', [('literal', 45), ('literal', 95), ('literal', 46), ('li teral', 33), ('literal', 126), ('literal', 42), ('literal', 39), ('literal', 40), ('literal', 41), ('range', (97, 122)), ('range', (65, 90)), ('range', (48, 57)), ('literal', 58), (' literal', 64), ('literal', 38), ('literal', 61), ('literal', 43), ('literal', 36), ('literal', 44)])], [('literal', 37), ('in', [('range', (48, 57)), ('range', (65, 70)), ('range', (97, 102))]), ('in', [('range', (48, 57)), ('range', (65, 70)), ('range', (97, 102))])]]))]))])), ('max_repeat', (0, 65535, [('subpattern', (None, [('literal', 59), ('max_r epeat', (0, 65535, [('subpattern', (None, [('branch', (None, [[('in', [('literal', 45), ('literal', 95), ('literal', 46), ('literal', 33), ('literal', 126), ('literal', 42), ('lit eral', 39), ('literal', 40), ('literal', 41), ('range', (97, 122)), ('range', (65, 90)), ('range', (48, 57)), ('literal', 58), ('literal', 64), ('literal', 38), ('literal', 61), ('lit eral', 43), ('literal', 36), ('literal', 44)])], [('literal', 37), ('in', [('range', (48, 57)), ('range', (65, 70)), ('range', (97, 102))]), ('in', [('range', (48, 57)), ('range', (65, 70)), ('range', (97, 102))])]]))]))]))]))])), ('max_repeat', (0, 65535, [('subpattern', (None, [('literal', 47), ('max_repeat', (0, 65535, [('subpattern', (No ne, [('branch', (None, [[('in', [('literal', 45), ('literal', 95), ('literal', 46), ('literal', 33), ('literal', 126), ('literal', 42), ('literal', 39), ('literal', 40), ('literal', 41), ('range', (97, 122)), ('range', (65, 90)), ('range', (48, 57)), ('literal', 58), ('literal', 64), ('literal', 38), ('literal', 61), ('literal', 43), ('literal', 36), ('literal', 44)]) ], [('literal', 37), ('in', [('range', (48, 57)), ('range', (65, 70)), ('range', (97, 102))]), ('in', [('range', (48, 57)), ('range', (65, 70)), ('range', (97, 102))])]]))]))])) , ('max_repeat', (0, 65535, [('subpattern', (None, [('literal', 59), ('max_repeat', (0, 65535, [('subpattern', (None, [('branch', (None, [[('in', [('literal', 45), ('literal', 95), ('literal', 46), ('literal', 33), ('literal', 126), ('literal', 42), ('literal', 39), ('literal', 40), ('literal', 41), ('range', (97, 122)), ('range', (65, 90)), ('ra nge', (48, 57)), ('literal', 58), ('literal', 64), ('literal', 38), ('literal', 61), ('literal', 43), ('literal', 36), ('literal', 44)])], [('literal', 37), ('in', [('range', (48, 57)), (' range', (65, 70)), ('range', (97, 102))]), ('in', [('range', (48, 57)), ('range', (65, 70)), ('range', (97, 102))])]]))]))]))]))]))]))])), ('max_repeat', (0, 1, [('subpatt ern', (None, [('literal', 63), ('max_repeat', (0, 65535, [('subpattern', (None, [('branch', (None, [[('in', [('literal', 45), ('literal', 95), ('literal', 46), ('literal', 3 3), ('literal', 126), ('literal', 42), ('literal', 39), ('literal', 40), ('literal', 41), ('range', (97, 122)), ('range', (65, 90)), ('range', (48, 57)), ('literal', 59), ('literal', 47), ('literal', 63), ('literal', 58), ('literal', 64), ('literal', 38), ('literal', 61), ('literal', 43), ('literal', 36), ('literal', 44)])], [('literal', 37), ('in', [('range', (48, 57)) , ('range', (65, 70)), ('range', (97, 102))]), ('in', [('range', (48, 57)), ('range', (65, 70)), ('range', (97, 102))])]]))]))]))]))]))]))]))]
16.
出力結果 •
http://1625.33425u08104123.781417247 • http://55528104.3857525588?613082112.77601072 • http://35037.3542P46667.48007/%eD%ee~;-):=- :%Be;@$%D4+!;%aB,;)r%B7%68;%ed$%58':),/%31%5A%DC/%bB%e1.;&;)%AB%Db4,%e1%Ee4;%A4=%dB6%67;%Bd0%6b/;%b8%eB%4B%2e%c6%1b- • http://E--L.f.R.8.2.qj-6.pvYRV-10J8:2067715 • http://235430.86635865x3304578.84274/%cB%AC;)_'_;%bA'%E0$%31)%c3;'%Aa*%bE+;!y+~=@;!)%DB:%dD%bb'@;_%cE%de@%A6%cC);%BB%Dc;n %Ec%4D;=(=;%68$&%eD$--/IY-;.%aE-)&%ed%E7%71%Eb?.%AC'%Db%cC%eEfl%67 • http://3.044n8365426546.864:707/%65%A2,%5E,%ea%Ec%2C_%dD;;c%45&%dE~L;)%aA~=;%bC%34%d6;%0D:%Cb=_/%aA,%ab=%B1%bC:&_;,+=;%3 e=%BB%C0%34)%0b.;%5AI%eB%a1;@;%EA%c5:;%bB%4a,%c0%3D%0E%Ce;!%Ee*)%e82+;@E*'%72-$$%2c;%bD%bD%De- %b0+/;$%DE%17%1E)%CB%2E-;%aB!;%24%d4$_%5d/%70@~%cb'(;%4d%CA%80:;%ED%205%7d=;;*l%D8*;-@,/%D3.%eEi;(*%B3=Bc;+%aD%bA)'-- +%D8%bA;'=~%Ad%67%30';%aD*%45%c4(*;%36%E6$!=(;_%Ab%ED%db+U%aA%0B;!%DB:(A%e76%AB*;='%8e%d7!%AD%2dS~;+%Da%cC%2BT%BE) _%dDy?%CA%aE • http://11285763.087w614.4257718562/%AB$%Cd*;*,%be%E3:%5B)%aa%8Ba;%d3_+%E6%E6*%ca;.,;,!%7E~%ee%a8%AB;%5DB8;%Ae%CA%4A(+;*- %2c%d3@*;%26.%6D:@%C6/@;%8A%BA%D4%be%E8%E3,;.%Cb+%cD/!'%bc;%EA$m%d830_%c8%6D;%AB@~;;;%a8;:@_%e1;%a4;%cC%db%aE%0c %A3(!$;%c4%ca~&%cdc;-)/_.%B6(%cb!;$%7D%aC~@%7b%ee,%0a;%4c;%Ce;%bb$%c7%8C:%Ee%Eb%EE%48~;%Ab*%0A/%be- EY%dC%bb(:;%45%6Cp)%55- %aA%7A;%DB%Ab%66=%Ed%db%BD&%D3/*@.%Abl=%B8_%BD@;%5B)((h%bD%e3'%d7/%e0);%bB;%CB%5e;@H:%e5;~_:=%6A%0c%Da%Bb,/h:%D1 %Ea,;%43'%eA%BB.%a7:%a5;-2%Cc1':./;-%Ee;%4E*.%84=~%D6&%A8;%eB%dC%cB;%db%aA%7E):,(,%2E- ;)%AEi++$;;==%ac:%C4%62X%7A/)%eb%3a%EB%4c0%aa;C-@@;- :@&5Q%eD,,';!:y,i*'=%4e;%21%aa%68$',%Bc:%A2%7B;'%2d@%dA%ED%6a;(%dB%2a(%35;%e7%ED(_%bD%51+1;%26%D0!%Ce;%4ap%Ea%B1;/%aC =+%a2_AN;~@%Bb%CB%b2;.%bb%cA%1B=@%Cb%c1%8Aq;v%CA%BA;@'%bD=;,%1b%a2@@@;_@&@!%ac?%ce+_XS$%d8 • http://s.E.x6a-Y7-W.X.lJ-S1A7.:5/%C5;%d4Q$- $!*+B/%a3@%2b,j%A1%c1@%aB;~)S%eE%01fl);+%7e%BA&%03@=U,%67;e,%0b%cc%77;(_%65%e1%AD+%e8H;&e.+!%aE%C8*%Bb!;%Da+%eB:%8c ;%32%B5%E6%CD@!%61/-+%5E%D3+:!;;1$,%cA$%ca!$%e3!/%8B%a2%C3%a3%b0~%a6%Da;'%d1%D7,%88);'::~@3%58_;-- @_%8b;%c5%a1%Eb6&%2b%Ae%ba;&%67@%Be%A4%4D!;%EDeD+%2d%da)%57*/&%ca%d1'F)%D26w;-:;+=%44I%ede%D6%41%ee;%ee- %db@%c4',%ee;%Da;@%c3G~:6;%52p)o%Eb%AA!;$!:'%DA&%C50;/%ca%ea'1.;%AC%Ca:%73L;;%Aa&a)%Aa;;$~!_%ac,/)%BD.;:L%63- %54,!;%ee%cD%36%bB=!%D0;;%be%E5.;%ad%6E%38%BeI!;%dd%EC;%c6*;+%2B_%81')%58(/(%45%BC;=*:'%3a%cE*%5B$;%c7%C8%74$,;$%cE%E4 %A5;;%E0%B5'%AB%Cd%87m+?'$:;!%DE%5b • http://J8614.C/,%D1%E3%2a@;.-%b8;=@%36=$;%Ce@;%2a_&E%AE/%0C%De%eB+;!%EE-,%5A~=_@- ;%20%BC%Bd!%Ec;%ba;%07;=%Da)S%ee.%aa%dE'$;;(%Ee$;%C8%aD%ad;/;;,%7A;nY%B1;.%cE%Bd%D8/.@-%67_0%dD%2A0/%EB%ea$%CC%3a- !~t;%bc%2c%CB%d4!;%C4%a1@~%DE,%Ed%6a_;;%dA)*%2d/%1b,-%6Em%ec%01%81%bE%da;%Dd=~%0B%A1%bD'o;)%Ad@%b8+%Ee~&(.;%2e%EB まさに外道!
17.
アタックしてみよう
URLを10万件食わせても、TeraPadとSkypeは問題なし URLパーサがヘボいとクラッシュする可能性
18.
まとめ • Fuzzingはランダムデータによる攻撃 • バグがないことの保証 •
正規表現からランダムパターンを作っ て、 効率よくアタックするコードをPython実装 • みんな自分のコードを攻撃しよう
19.
本業では使ってるの? • 「まだ」使ってないよ • これから使うよ! •
覚悟しといてね>同僚各位
20.
最後に • MSが同じものを提供していた!
(∩ ゚д゚)アーアーきこえなーい
21.
参考文献 • 書籍 –
ビューティフルテスティング – ファジング:ブルートフォースによる脆弱性発見手法 – リバースエンジニアリング ―Pythonによるバイナリ解析技 法 • 記事 – http://www.computerworld.com/s/article/9174539/Microsoft_r uns_fuzzing_botnet_finds_1_800_Office_bugs – http://www.hackingvoip.com/ – http://www.blackhat.com/presentations/bh-usa-06/BH-US-06- Endler.pdf – http://msdn.microsoft.com/en-us/library/cc162782.aspx – http://news.mynavi.jp/articles/2007/11/17/bhj3/index.html
22.
参考文献 • ツール –
http://peachfuzzer.com/ – http://www.microsoft.com/download/en/details.aspx ?id=21769 – http://www.microsoft.com/download/en/details.aspx ?id=20095 – http://freecode.com/projects/zzuf?branch_id=68024 &release_id=245074 – http://packetstormsecurity.org/fuzzer/ – http://www.computerdefense.org/2006/12/webfuzz- a-series-of-basically-useless-python-scripts/
Baixar agora