週刊アスキー

  • Facebookアイコン
  • Twitterアイコン
  • RSSフィード

サーバー攻略から企業NWの深層へ侵入する「Deep Exploit」「GyoiThon」

機械学習を活用したツールでBlack HatとDEF CONに乗り込んだMBSD高江洲勲氏

2018年08月29日 07時00分更新

 2018年8月、セキュリティカンファレンス「Black Hat USA」と「DEF CON 26」にて、3日間、計3か所の展示スペースでツールをデモ展示した強者がいる。三井物産セキュアディレクション(MBSD)のセキュリティエンジニアである高江洲勲氏だ。「できるだけ多くの方に見てもらいたくて、Black HatのArsenalコーナー、DEF CONのDemo Labコーナー、DEF CON内のAI Village(AIがテーマのワークショップなどが集まるコーナー)の展示スペースに応募したところ、3つとも通ってしまいました(笑)」(高江洲氏)。

三井物産セキュアディレクション テクニカルサービス事業本部 プロフェッショナルサービス事業部 先端技術セキュリティセンター セキュリティエンジニア 高江洲勲氏

機械学習の魅力にはまってツールを開発

 機械学習の魅力にはまり、独学で試行錯誤しながらツールを作ったという高江洲氏は、元プログラマー。セキュリティ業界に転職してWeb診断業務に携わるようになったのは8年ほど前のことだ。学生時代は情報工学が専門で、当時はまだ機械学習が流行っておらず、特に関心もなかったという。

 だが数年前、AlphaGoの開発でも有名なDeepMind(現在はGoogleの子会社)の「Deep Q Network」(DQN)のデモを見て衝撃を受けた。DQNは深層強化学習ベースのゲーム専用人工知能で、ゲームのルールを教えなくても、何度もプレイすることでルールを理解し、高得点を獲得する方法を探り出す。

「何千万回という人間では到底できないプレイ回数で複雑なパターンを学習し、最終的にはありえないハイスコアをたたき出すまで成長する。もしかしてこの手法を用いれば、さらに複雑な現実のタスクも自動化できるのではないかと興味が湧きました」

 その深層強化学習を採用するのが、ArsenalとAI Villageでデモ展示した「Deep Exploit」だ。

Deep Exploit~社内ネットワークの奥深くまでサーバーを攻略

 Deep Exploitは、対象サーバーの情報を収集(nmap、Webクローリング)して既知の脆弱性を特定し、侵入テストツール「Metasploit Framework」(以下、Metasploit)と連携して攻略に最適なエクスプロイトを選定・実行するツールだ。1つめのサーバーが攻略できたら、そこで取得したセッション情報を使って社内ネットワークの他サーバーにもアプローチ。どんどん奥深くまで駒を進められることがツール名の由来という。

Deep Exploitの概要。「コマンド1つで自動的にサーバー攻略を試せるので、効率よくペネトレーションテストができます」(高江洲氏)

 開発のきっかけは、同僚とMetasploitの話をしたことだった。会話の中で、Metasploitの操作を自動化できたら面白いんじゃないかと、ふと思い立った。実は以前、WebアプリケーションのXSS(クロスサイトスクリプティング)の脆弱性を探す自動クローラツールを作成したことがあり、2016年のセキュリティカンファレンス「CODE BLUE」や「Black Hat Asia」、2017年の「PyCon JP」で発表していた。その経験もあって、気軽な気持ちで情報収集を開始した。

 調べてみると、外部プログラムからMetasploitのコマンドを実行したり、エクスプロイトの成否を判定する上で必要な情報を取得したりするためのRPC APIがMetasploitに用意されていることが判明。機械学習や深層強化学習と相性の良い機能が多く実装されていることも分かった。

 深層強化学習は、最適なエクスプロイト方法の学習およびエクスプロイトの選定で採用した。

「機械学習では、あらかじめ学習するデータを用意して覚え込ませるのが一般的ですが、今回のケースで同手法を用いるとなると、標的サーバーの情報とそれに紐付くエクスプロイトの組み合わせをすべて集めなければならず、現実的ではありません」

 Metasploitに実装されているエクスプロイト機能を用いてトライアンドエラーを繰り返しながら、対象サーバーの状態に適したエクスプロイトを自立的に学習する深層強化学習が最適と考えた。

 学習環境は、社内で検証用に用意している脆弱なサーバーのほか、「Metasploitable」や「OWASP Broken Web Applications Project」などの、Web脆弱性診断の検証向けにあらかじめ脆弱性が仕込まれた“やられサーバー”を活用。パラメーターを調整しつつ精度を上げながら、“コマンド1つ叩くだけで、うまくいけば一発でエクスプロイトが成功”するツールを目指した。開発は、他作業の合間を縫いながらで換算して約4か月。前例がない取組みだけに、手探りしながら実装を進めたという。

Black HatのArsenal会場にて。高江洲氏のブースは興味津々の参加者で大混雑

 Deep Exploitが最初にお披露目されたのは、2018年2月のセキュリティイベント「SECCON」。ツール展示企画「SECCON YOROZU」が初開催されるということで、早速応募した。

「完成度は低かったものの、来場者から面白いと言われて。もっと作り込んでみようとβ版の開発に踏み切りました」

 現在はβ版のDeep Exploit。今後も精度を上げるなど強化を図り、いずれは社内で活用できるレベルまで持って行ければと高江洲氏は述べる。

GyoiThon~Web関連製品を特定して脆弱性の有無を診断

 一方、DEF CONのDemo Labで展示したのは「GyoiThon」だ。

 GyoiThonは、診断対象をWebサーバーに絞ったペネトレーションテストツールだ。クローラーでHTTPレスポンスを収集し、OSやCMS、フレームワークなど、Webサーバー上で稼働するソフトウェアを特定するのが主な機能。得られた情報に基づきMetasploit連携でエクスプロイトを実行、脆弱性の有無も診断する。

GyoiThonの概要

「Webサーバーのヘッダーやボディを見ると、Open SSLやPHPなどは製品名や拡張子などが記載されているので、パターンマッチングで特定できます。ですが、Joomla!やHeartCoreなどは製品名が記載されていないケースが多く、またApacheでも製品名が記載されていないケースもあります。このため、これらの製品を特定するためには、製品名以外の”特徴”から判断しなければならず、従来の手法では特定が難しい。特定できなければ、どんな脆弱性が潜んでいるかも分からず、脆弱性診断もできません」

 そこで、GyoiThonはパターンマッチングに加えて、ソフトウェア特有のパスやCookie名の文字列構成といった特徴を基に機械学習で自動判定する機能を開発。各ソフトウエアの特徴を基に、これまで自動検出が難しかったWebソフトウェアを確率的に特定できるようにした。そして、特定したソフトウエアに対してエクスプロイトを実行し、検出した脆弱性をレポート出力する機能も実装されている。以下がGyoiThonのデモ動画。「"Machine Learning"や"Exploit!!"の文字の下に“Let's Thontak”とあるが、誰も反応してくれなくて寂しい」と高江洲氏は語る。

 GyoiThonは、同僚の桝屋雅文氏と米山俊嗣氏の3人で共同開発した。桝屋氏はWebクローラーとパターンマッチング部分を担当、高江洲氏が機械学習やMetasploit関連を担当し、米山氏が全体のコンセプト設計などを行なった。こちらも開発期間は延べ3~4か月という。

 まずは今年1月に広島で開催された「JANOG41 Meeting」で、「Pythontak」という名称でコンセプトレベルのツールを発表。たくさんの反響を受けて改善に着手、3月のBlack Hat Aisaでも出展した。

GyoiThonは、「御意!」という同僚の口癖とPythonを組み合わせた造語だそうだ

今後は機械学習自体の脆弱性について研究したい

 今後もどんどんツール発表をしながら改良も行っていきたいと述べる高江洲氏だが、業務のためだけに行なっているわけではないという。

「むしろオープンソースとして公開し、世界中の人に使ってもらいたいんです。ブログやカンファレンスなどでアウトプットすると、多くのレスポンスが得られます。これを業務に活かすことはもちろんですが、フィードバッグと改良を繰り返す中で、それが世の中のセキュリティを少しでも良くすることにつながったら嬉しいなと思って。ちょっとクサい台詞ですかね」と、高江洲氏は照れながら本音を明かす。

DEF CONのDemo Labでの様子。参加者との距離が近く、突っ込んだ質問も多かったと高江洲氏は振り返る

 もう1つ、高江洲氏がラスベガス後に本腰を入れて取り組み始めたことがある。それは、機械学習の脆弱性を突く攻撃手法や対策の研究だ。

 機械学習を採用した製品やサービスは、ここ数年で一気に増えた。Googleも「Cloud IoT Edge」や「Edge TPU」、「ML Kit」ベータ版など、IoTやモバイルで使える機械学習ソリューションを発表したばかり。監視カメラに機械学習モデルを実装するといった活用事例もさらに増えると述べる高江洲氏は、だからこそ今から機械学習自体のセキュリティを考えることが重要と強調する。

「でも、機械学習の脆弱性に関する論文を探しているのですが、まだまだ少なくて…。また、機械学習の脆弱性を調査・検証しているセキュリティエンジニアは多くはいません」

 日本国内には機械学習の専門家やセキュリティエンジニアはいても、機械学習の脆弱性を調査・検証している人はわずか。だからこそ開拓の余地がある、魅力的な分野と高江洲氏は目を輝かせる。

「社内や有志で行っている勉強会のAISECjp(Artificial Intelligence x Security)の仲間に関心ある人たちがいて。協力しながら何かできたらいいなと思っています」

 コードを書くのが大好きで、趣味としても仕事としても生涯続けていきたいと熱く語る高江洲氏。

「会社も研究開発やカンファレンス参加について後押ししてくれるので、そうした環境をうまく活かしながら活動の幅を広げていきたいです」

この記事をシェアしよう

週刊アスキーの最新情報を購読しよう

本記事はアフィリエイトプログラムによる収益を得ている場合があります

この特集の記事