aisecjp saivs(spider artificial intelligence vulnerability scanner)
TRANSCRIPT
SAIVSSpider Artificial Intelligence Vulnerability Scanner
AISECjp 2016.04.26
高江洲 勲
About the speaker
• 職業: Web security engineer.
• 会社: MBSD
• 趣味: 散歩, 脆弱性スキャナ作り
• ブログ: http://qiita.com/bbr_bbq
高江洲 勲(@bbr_bbq)
MBSD
タカエス イサオ
Agenda
1. SAIVSとは?目的
2. 実装方法
3. 将来の展望
4. デモンストレーション
MBSD
SAIVSとは?
MBSD
SAIVS
= Spider Artificial Intelligence Vulnerability Scanner.
Webアプリケーション診断を行うことを目指したAI.
現在のWebアプリケーション診断
人間の診断員がWebアプリ診断を行う。
MBSD
診断員Web Server
Web Apps
F/W
診断ベンダー 顧客
疑似攻撃
SQLi?
XSS?
レスポンスの受信/分析
Webアプリをクローリングしながら疑似攻撃を行う。
Webアプリからのレスポンスを分析して脆弱性を見つける。
GOAL
全て機械によるWebアプリ診断の実現。
MBSD
SAIVS Web Server
Web Apps
F/W
診断ベンダー 顧客
疑似攻撃
人間のようにWebアプリをクローリングしながら診断を行う。
SQLi?
XSS?
実業務や懸賞金プログラムへの参戦を目指す。
レスポンスの受信/分析
現在のSAIVSの能力
MBSD
Webアプリのクローリング。
機械的なスキャンの実行。
簡易レポートの出力。
SAIVS prototype v1:
「Webアプリのクローリング」に機械学習を活用。
こんなことができます
MBSD
ログインしたいけどアカウントがないのでスキップ。
会員登録機能でアカウントを作った後にログイン。
ログイン後のページをクローリングしながらスキャン。
なぜクローリングに機械学習?
MBSD
Webアプリのクローリングって意外と難しい。
なぜ?
このページは何でしょう?
MBSD
人間は容易にページ種別を認識できる(会員登録ページ)。
けど、機械が認識するのは困難。
入力フォームに何を入れるのか?
MBSD
遷移
人間は「Name」「Email」等に適切な文字列を入力できる。
けど、機械は非常に困難(フォームの意味が解釈できない)。
???
???
???
???
???
遷移は成功したのか?
MBSD
人間はエラーメッセ―ジから遷移失敗と認識できる。
けど、機械は困難(エラーの意味が解釈できない)。
クローリングには複雑な思考パターンが必要
MBSD
「機械学習」でクローリングの思考パターンの実現を試みる。
思考パターン 機械学習アルゴリズム
ページ種別の認識
Naive Bayes
遷移成否の認識
(入力フォームへの)適切な入力文字列の学習Multilayer PerceptronQ-Learning
Naive Bayesとは?
テキスト分類に使用される機械学習アルゴリズム。
⇒事前定義のカテゴリテーブルと確率理論に基づいて分類。
MBSD
使用例)
スパムメールフィルタ (Spam or Ham).
ブログ記事のカテゴリ分類 (はてなブログ).
WAFの攻撃検知率向上への利用 (Scutum).
Naive Bayesの使用例
MBSD
SPAM:0.672 ← こっちに分類HAM:0.03
期間SPAM:10%HAM :30%
カテゴリ
限定
ココ
クリック
http://wana.jp
SPAM:40%HAM :10%
SPAM:30%HAM :40%
SPAM:70%HAM :50%
SPAM:80%HAM :5%
スパムメールフィルタ
メール本文からキーワードを抽出。
キーワードを基にSPAM/HAMの確率を求める。
「ページ種別の認識」で使用するカテゴリテーブル
MBSD
カテゴリ 分類に使うキーワード
ログイン Email, User ID, Password, Sign in …
会員登録 Email, Password, Confirm, Sign up …
検索 Word, Text, String, Sort, Search …
・・・ ・・・
認識したいページ種別と、ページ種別を特徴付けるキーワードを定義。
現状は30くらいのWebアプリからキーワードを収集。
多くのキーワードを収集する = 分類精度が向上する。
SAIVSでページ種別の認識を試みる
MBSD
「Sign in」のHTMLソースの解析
MBSD
<h1>Sign in</h1><form action="/cyclone/sessions" method="post"><label for="email">Email</label><input id="email" name="email" type="text" /><label for="password">Password</label><input id="password" name="password" type="password" /></form>
HTMLソースをパースしてキーワードを抽出。
カテゴリテーブルを使用して、最も高い確率のカテゴリを求める。
結果:ログイン(正解)
SAIVSでページ遷移成否の認識を試みる
MBSD
遷移試行後のHTMLソースの解析
MBSD
<div>Invalid email or password </div>
HTMLソースをパースして キーワードを抽出。
カテゴリテーブルを使用して、最も高い確率のカテゴリを求める。
結果:遷移失敗(正解)
カテゴリ 分類に使うキーワード
遷移成功 Good, Valid, Success, Normal, Fine …
遷移失敗 Bad, Invalid, Failure, Error, Unmatch …
「遷移成否の認識」で使用するカテゴリテーブル例
正常遷移するために、入力フォームに何を入力するか?
最適なパラメータ値の学習が必要。
MBSD
SAIVSで正常遷移できるパラメータ値を学習する
遷移???
???
???
???
???
MBSD
Deep Q-Network(DQN)のアルゴリズムを参考にする
Google Deep Mind社が開発した人工知能。
深層学習と強化学習を組み合わせたアルゴリズム。
自己学習できるモデルとしては秀逸。
使用例)
クラッシックゲーム (Atari) の攻略.
囲碁の世界王者に勝利 (AlphaGoのベースになっている).
DQN?
MBSD
Deep Q-Networkの使用例
“Playing Atari breakout with DQN” by eldubro (2015/3)
SAIVSで採用した最適なパラメータ値を求めるモデル
MBSD
Deep Learningの代わりにMLPを使用。
遷移試行を繰り返しながら、最適なパラメータ値を学習。
将来の展望
MBSD
クローリング能力の強化
スキャン能力の強化
実戦投入 (Google VRPに参戦するか?)
Next Step: スキャン部分へのAI技術の応用
・脆弱性検出パターンの自己学習
・ロジック系の脆弱性検出
デモンストレーション
MBSD
診断対象:OWASP BWA Cyclone
デモの様子:https://www.mbsd.jp/blog/20160113_2.html
• Download “.PDF” version of this document:
≫ http://connpass.com/event/29969/
MBSD