SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
AVTokyo 2012


 ⽂文字列列曖昧検索索による
マルウェアバイナリ解析
  株式会社プリファードインフラストラクチャー

        丸⼭山史郎郎,柏原秀蔵

    NTTセキュアプラットフォーム研究所

        折原慎吾、朝倉浩志

        2012年年11⽉月  17⽇日  
発表者⾃自⼰己紹介

l    まるまる / @marugorithm     l    柏原秀蔵 / @suma90h
l    研究開発エンジニア               l    ソフトウェアエンジニア
      l    アルゴリズム                  l    分散システムなど
      l    ⽂文字列列処理理が好物       l    バイナリエディタ完成してない
                              l    職業リバースエンジニアではない




                            2
70,000,000

               60,000,000

               50,000,000


背景
               40,000,000
               30,000,000
               20,000,000
               10,000,000
                       0
l    新しいマルウェアは相変わらず増えている(うんざりしてくる
                JUL AUG SEP   OCT NOV DEC    JAN   FEB MAR APR MAY JUN
               2011 2011 2011 2011 2011 2011 2012 2012 2012 2012 2012 2012

      l  それらを解析の必要性がある(最近は、ウェブ・モバイルも多い)

                                                     New Malware


              10,000,000


               8,000,000


               6,000,000


               4,000,000


               2,000,000


                      0
                             Q1   Q2   Q3   Q4   Q1   Q2   Q3   Q4   Q1   Q2   Q3   Q4 Q1     Q2
                            2009 2009 2009 2009 2010 2010 2010 2010 2011 2011 2011 2011 2012 2012



                    Source: McAfee Threats Report: Second Quarter 2012	
                                                     3	
             McAfee Threats Report: Second Quarter 2012
背景:Reverse Code Engineering 技術・ツールの進化


l  解析⼿手法はそれぞれ
    l  動的・静的

    l  ブラックボックス・ホワイトボックス

l  ツール
                                      By Ma-games.de(GNU-FDL)	
    l  逆アセンブラ、デバッガ、アンパッカー

    l  サンドボックス、命令令トレーサ

    l  バイナリエディタ(with ⽬目grep)



l    解析技術の進化
      l  動的解析・サンドボックスの研究、OSS化は2006年年頃から多い
      l    リバースコードエンジニアリングに利利⽤用する逆アセンブラといっ
            たツールの進化、静的解析の進化は少なく⾒見見える
      l    Pythonスクリプトなどによる拡張性は上昇?
                           4	
    (注:アウトサイダーの視点)
背景:動的解析 vs 静的解析

l    動的解析・サンドボックス(仮想化技術の進歩と共に)
      l  サンドボックス・⾃自動アンパックに注⼒力力した研究・ツール

      l  ブラックボックス・ホワイトボックスの両⽅方のアプローチが可能

      l  ⽋欠点

         l    実⾏行行時間が⻑⾧長い・実⾏行行してない部分は解析できない
l    静的解析
      l  デファクトスタンダード:IDA Pro

      l  逆アセンブルし、API Callなどを⽤用いて意味を推論論する研究

      l  静的解析と動的解析のハイブリッド型の研究:PolyUnpack

      l  ⽋欠点

         l    パッキング・難読化への対処が困難である
         l    最終的に、解明できる範囲は⼈人間の処理理能⼒力力に依存する

                              5
モチベーション

l    マルウェアに対してしかけていきたい
      l  攻撃者・作者へ反撃するのは困難

      l  リバースコードエンジニアリングの効率率率をあげたい



l    静的解析  (RCE)に⽂文字列列検索索でアプローチしたい
      l  サンドボックスによる解析範囲は限られている

      l  逆アセンブルしたとき、⼈人間が調べる範囲を集中させたい

      l  既存マルウェア、よく知られるコードをフィルタできるとよい



      l    収集済みのマルウェア活⽤用は可能だろうか?
            l    データベース化して解析に役⽴立立てたい
            l    ⽂文字列列検索索、マシンパワーに頼るのは現実的だろうか?

                               6
コンセプト:⽂文字列列検索索による解析⽀支援

l    曖昧検索索技術を使って、解析対象と⼀一致するバイナリを既存ファ
      イルから探す
      l  ⼈人が読むべき部分を注⼒力力させたい

      l  デバッグシンボルと同じような情報を提供したい

                              マル
                             ウェア
                      OSS

                             既存
                            コード           ファイル1の
                                           関数A
                                          ファイル2の
       コードX                                関数B

              ⼊入⼒力力    検索索ツール      出⼒力力


      バイナリY                  7
似たツール:IDAScope

l    IDAscope plugin (Hex-Rays 2012 Contest Results)
       l  コードブロックからシンボルなし関数を⾃自動補完

       l  コードブロックから暗号アルゴリズムを⾃自動補完

       l  IDA Proユーザは、これを使うと良良さそう

            l    曖昧検索索は必要ないのでは?
      l    共通点:
            l    ⽬目指すところは同じ:マルウェア解析を容易易にすること
            l    ユースケースとして似たような使い⽅方を想定している


l    今回の発表主旨
      l    ⽂文字列列ベースの曖昧検索索技術の能⼒力力を実験し、
            現実的であるか紹介すること

                                  8
検索索アルゴリズムの⽬目的
                                  55	 8b	 ec	 56	 8b	 75	 08	 57	 8b	 3d
                                  38	 10	 41	 00	 6a	 1f	 56	 6a	 07	 68
l    共通モジュール抽出の問題点               00	 04	 00	 00	 ff	 d7	 f7	 d8	 1b	 c0
      l  全く同じ物を検索索してもダメ。
                                  c6	 46	 03	 00	 f7	 d8	 89	 45	 08	 74
                                  16	 68	 cc	 30	 41	 00	 56	 e8	 e2	 b3
            l    例例)アドレスが異異なる。   00	 00	 59	 85	 c0	 59	 74	 05	 6a	 01
                                  58	 eb	 16	 6a	 1f	 56	 6a	 07	 68	 00
      l    マルウェアだと開始位置が          08	 00	 00	 ff	 d7	 f7	 d8	 1b	 c0	 f7
            わからない場合がある            d8	 80	 66	 03	 00	 5f	 5e	 5d	 c3




l    曖昧検索索による⽅方法                 55	 8b	 ec	 56	 8b	 75	 08	 57	 8b	 3d

                                  38	 20	 41	 00	 6a	 1f	 56	 6a	 07	 68

      l  似ている部分を探す。              00	 04	 00	 00	 ff	 d7	 f7	 d8	 1b	 c0

      l  似ている尺度度は?⼿手法は?
                                  c6	 46	 03	 00	 f7	 d8	 89	 45	 08	 74

                                  16	 68	 08	 41	 41	 00	 56	 e8	 56	 b9

                                  00	 00	 59	 85	 c0	 59	 74	 05	 6a	 01

                                  58	 eb	 16	 6a	 1f	 56	 6a	 07	 68	 00

                                  08	 00	 00	 ff	 d7	 f7	 d8	 1b	 c0	 f7

                                  d8	 80	 66	 03	 00	 5f	 5e	 5d	 c3
編集距離離計算

l    2つの⽂文字列列間の編集距離離  d (S, R)


             ACGTGATC
      置換	
          削除	
                           d (ACGTGATC, ACTAATC) = 3
             ACTA ATC
       l    挿⼊入・削除・置換をコスト1とする。
       l    ⽂文字列列データに対する曖昧検索索の基本テク。
       l    様々なアルゴリズムが存在。
編集距離離計算アルゴリズム

l    動的計画法による⽂文字列列S, R間の編集距離離計算
      l  ⽂文字の挿⼊入・削除・置換のコストを1とする

      l  (|S|+1) × (|R|+1) の表  Dを⽤用意する




               s   u   r   g   e   r   y
           0   1   2   3   4   5   6   7
       s   1
       u   2
       r   3
       v   4
       e   5
       y   6
編集距離離計算アルゴリズム

l    動的計画法による⽂文字列列間の編集距離離計算
      l  以下の計算式に従って表を埋める

       if  S[i] = R[ j], D[i, j] ← D[i −1, j −1],
       else D[i, j] ← min(D[i −1, j], D[i, j −1], D[i −1, j −1]) +1.
                     s     u     r     g      e     r     y
               0     1     2     3     4     5      6     7
         s     1     0     1     2     3     4      5     6
         u     2     1     0     1     2     3      4     5
         r     3     2     1     0     1     2      3     4
         v     4     3     2     1     1     2      3     4      d(S, R)	
         e     5     4     3     2     2     1      2     3
         y     6     5     4     3     3     2      2     2
アルゴリズムの概要

l  我々のやりたいこと
     l  2つの⽂文字列列間の編集距離離計算ではない

     l  バイナリのバイト列列の中からクエリとなるモジュールに

         似ている部分のみを抜き出したい
l  ⼿手法
     l  DNAアライメント等で使われる部分的な近似照合アルゴリズム

         (Smith-Watermanアルゴリズム)を改良良したものを利利⽤用した
     l  結果からモジュールの開始位置を⾒見見つけられるようなヒューリ

         スティック
     l  重複する検出のフィルタリング
⽂文字列列アルゴリズムの概要

l      動的計画法による部分⼀一致ベースの曖昧検索索
        l  1⾏行行⽬目のスコアを全て0とする



                                 バイナリのバイト列	

                  fd   2d   4f     3d   fd   2d    53   3d
              0   0    0    0      0    0      0   0    0
         fd   1
 (




検
索        2d   2
         4f   3
         3d   4
ー )
⽂文字列列アルゴリズムの概要

l      動的計画法による部分⼀一致ベースの曖昧検索索
        l  あとは表を埋めるだけ



                                 バイナリのバイト列	

                  fd   2d   4f     3d   fd   2d    53   3d
              0   0    0    0      0    0      0   0    0
         fd   1   0    1    1      1    0      1   1    1
 (




検
索        2d   2   1    0    1      2    1      0   1    2
         4f   3   2    1    0      1    2      1   1    2
         3d   4   3    2    1      0    1      2   2    1
ー )
⽂文字列列アルゴリズムの概要

l      動的計画法による部分⼀一致ベースの曖昧検索索
        l  ⼀一番下の⾏行行の値に着⽬目

        l  予め決めておいた閾値(この例例では1とする)以下のマスに着⽬目

                                  バイナリのバイト列	

                   fd   2d   4f     3d   fd   2d    53   3d
               0   0    0    0      0    0      0   0    0
          fd   1   0    1    1      1    0      1   1    1
 (




検
索        2d    2   1    0    1      2    1      0   1    2
          4f   3   2    1    0      1    2      1   1    2
         3d    4   3    2    1      0    1      2   2    1
ー )
⽂文字列列アルゴリズムの概要

l      動的計画法による部分⼀一致ベースの曖昧検索索
        l  そこからバックトラックを⾏行行い、類似部分の開始位置を求める



                                 バイナリのバイト列	

                  fd   2d   4f     3d   fd   2d    53   3d
              0   0    0    0      0    0      0   0    0
         fd   1   0    1    1      1    0      1   1    1
(




検
索        2d   2   1    0    1      2    1      0   1    2
         4f   3   2    1    0      1    2      1   1    2
         3d   4   3    2    1      0    1      2   2    1
ー )
⽂文字列列アルゴリズムの概要

l      動的計画法による部分⼀一致ベースの曖昧検索索
        l  重複するような出現は最⼩小のスコアを選ぶようにフィルタする

        l  この例例では “fd 2d 4f 3d”と”fd 2d 53 3d“が抽出される

                                  バイナリのバイト列	

                   fd   2d   4f     3d   fd   2d    53   3d
               0   0    0    0      0    0      0   0    0
          fd   1   0    1    1      1    0      1   1    1
(




検
索         2d   2   1    0    1      2    1      0   1    2
          4f   3   2    1    0      1    2      1   1    2
          3d   4   3    2    1      0    1      2   2    1
ー )
より⾼高速な曖昧検索索アルゴリズム

l    Factor Filter [2000, JDA], Suffix Filter [2007, ALENEX]
       l  索索引を利利⽤用した⾼高速な曖昧検索索アルゴリズム

       l  クエリの⼀一部を索索引で検索索を⾏行行い、ヒットした周辺のみを曖昧検

           索索でチェック。


l    楠本アルゴリズム[2012, PFI夏のインターンの成果]
      l  楠本、丸⼭山、岡野原で開発.

      l  2012年年PFI夏のサマーインターンの成果。

      l  移動付き編集距離離に基づく曖昧検索索の近似アルゴリズム。

      l  ストリームに対して省省メモリ領領域で⾼高速に検索索可能。

      l    1万クエリくらいを同時に検索索可能。


                                19
プログラムの仕様

l    ⼊入⼒力力                                                  l     出⼒力力                       対象バイナリパス	


       l  ファイル                                               /home/maruyama/data/malware/dump/
                                                              1a1f6496107b1063313aba6af99fce8e.GUnPacker.dump
       l  検索索クエリ(コード)                                        hit: id = 14
                   バイナリID	
                                                              hit: distance = 28
                        編集距離	
  query: name = sub_401000
                                   hit: beg_pos = 4096
                                                開始位置からの                                                  開始位置からの
  query: beg_pos = 4096
                                      hit: length = 266
                                                offset	
                                                 offset	
  query: length = 266
                                        
  query: threshold = 53
                        モジュール長	
      55	 8b	 ec	 81	 ec	 60	 02	 00	 00	 53	 

 モジュール長	
  
                                                           33	 db	 39	 1d	 00	 30	 41	 00	 89	 5d	 

                                                 許容誤差	
  55	 8b	 ec	 81	 ec	 60	 02	 00	 00	 53	 

                  f4	 0f	 84	 e9	 00	 00	 00	 56	 b8	 00	 

  33	 db	 39	 1d	 00	 20	 41	 00	 89	 5d	 

                  30	 41	 00	 57	 8b	 3d	 08	 20	 41	 00	 

  f4	 0f	 84	 e9	 00	 00	 00	 56	 b8	 00	 

                  89	 45	 e8	 be	 04	 01	 00	 00	 ff	 30	 

  20	 41	 00	 57	 8b	 3d	 08	 10	 41	 00	 

                  8d	 45	 a8	 50	 e8	 7d	 04	 01	 00	 8d	 

  89	 45	 e8	 be	 04	 01	 00	 00	 ff	 30	 

                  45	 a8	 50	 e8	 9d	 a5	 00	 00	 83	 c4	 

  8d	 45	 a8	 50	 e8	 e5	 f7	 00	 00	 8d	 

                  0c	 8d	 45	 f8	 50	 6a	 03	 8d	 45	 a8	 

  45	 a8	 50	 e8	 0a	 9c	 00	 00	 83	 c4	 

                                                                検出モジュール	
                                                              53	 50	 ff	 75	 08	 e8	 a6	 ef	 0a	 01	 

  0c	 8d	 45	 f8	 50	 6a	 03	 8d	 45	 a8	 

                  69	 8d	 45	 fc	 89	 5d	 f0	 50	 8d	 85	 

  53	 50	 ff	 75	 08	 ff	 15	 00	 10	 41	 

    クエリモジュール	
                                                              a4	 fe	 ff	 ff	 50	 8d	 45	 e4	 50	 8d	 

  00	 8d	 45	 fc	 89	 5d	 f0	 50	 8d	 85	 

                  45	 ec	 53	 50	 8d	 85	 a0	 fd	 ff	 ff	 

  a4	 fe	 ff	 ff	 50	 8d	 45	 e4	 50	 8d	 

                  89	 75	 ec	 50	 89	 75	 fc	 53	 ff	 75	 

  45	 ec	 53	 50	 8d	 85	 a0	 fd	 ff	 ff	 

                  f8	 ff	 d7	 85	 c0	 75	 5f	 83	 7d	 e4	 

  89	 75	 ec	 50	 89	 75	 fc	 53	 ff	 75	                  01	 75	 30	 ff	 75	 0c	 8d	 85	 a4	 fe	 

  

                                                          ff	 ff	 ff	 75	 fc	 50	 e8	 6c	 49	 00	 

                                                             20
実験

l  実験に使ったマルウェア
    l  2007年年に捕獲

    l  141ファイル(全てアンパック済み)

    l  総ファイルサイズ:50,515,632バイト

l  検索索クエリ例例
      l    “PoeBot.C”のルーチン“FlashFXP password stealer”の⼀一部分を検索索
l    実験結果例例
      l  実⾏行行時間(Core i5, 16GB RAM)

             l    1分41秒
      l    結果例例
             l    14件検出
             l    完全⼀一致:8件、60バイト差で⼀一致:6件

                                   21
プログラム実⾏行行の流流れ

l    アンパック済みファイル集合を⽤用意する


l    1個のファイルを取り出し、IDAを使い関数を取得


l    抽出した関数をクエリとして、検索索を⾏行行う




                      22
Demo




23
曖昧検索索とRCEを組み合わせた特徴

l    利利点
       l  似ているバイナリデータの列列挙、⼀一致位置を検索索できる

       l  逆アセンブルなしで⼀一致部分を発⾒見見できる

       l  検索索クエリはコードに限定しない

            l    どんなバイナリでも検索索できる


l    解析時の⽋欠点
      l  検索索結果から意味を解釈するには、登録するバイナリファイルに

          注釈を加える必要がある
      l  対象が多いほど実⾏行行時間が増加:実⾏行行時間=クエリ×検索索対象

      l    曖昧検索索に関すること
            l    存在しないものは検索索できない
            l    コードの難読化などに⾮非対応
                               24
結論論

l    現時点では実⽤用化は厳しい、が…
      l  誤差を考慮した⽂文字列列検索索

            l    編集距離離ベースの検索索でも⼗十分な精度度が得られる
            l    バイナリなら何でも対応可能
l    今後の展望
      l  索索引⽅方式を採⽤用して速度度の⾼高速化に対応

      l  他のツールとの連携に対応



l    パッキングは対象外とした
      l  専⾨門家に任せたい

      l    圧縮、暗号化、難読化したコードから元コードの復復元や、動的解
            析時の意味解析に関する研究は存在している

                                25
既存の数が多過ぎるとき、対処できるか?

l    検索索時間はどうなのか?
      l  検索索クエリの⻑⾧長さ、検索索対象の数に⽐比例例する

      l  索索引⽅方式の曖昧検索索を利利⽤用することで⾼高速化

      l  検索索⾃自体を分割・並列列化



l    検索索ヒット結果が多すぎる事例例
      l  共通モジュールを前処理理で束ねておくことで対応

      l  実験例例:printf, sprintf などCPU命令令の重複は多い

         l    ストップワード的な扱いで対応する




                             26
曖昧検索索の応⽤用例例

l    今回はx86逆アセンブラの拡張を想定していた
      l  IDA Proなどの拡張を想像してもらうのがシンプル

      l  実験していないが、JavaやCLIといったバイトコードへの可能性



l    サンドボックス/プログラムトレーサーとの結合
      l  サンドボックスでの解析時、パターンマッチの検出を組み合わせ

          て利利⽤用するのが想像しやすい


l    コードのパターンマッチング
      l  マルウェアのモジュール間類似度度計算

      l    ソフトウェアの検査、クローン検出の応⽤用
            l    コードにOSSが汚染していないか?
            l    古い脆弱性の含むライブラリを利利⽤用していないか?
                               27

Contenu connexe

Tendances

Chainerの使い方と 自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と 自然言語処理への応用Yuya Unno
 
Jubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCTJubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCTYuya Unno
 
質問応答システム入門
質問応答システム入門質問応答システム入門
質問応答システム入門Hiroyoshi Komatsu
 
Deep Learning技術の今
Deep Learning技術の今Deep Learning技術の今
Deep Learning技術の今Seiya Tokui
 
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Yuya Unno
 
自然言語処理分野の最前線(ステアラボ人工知能シンポジウム2017)
自然言語処理分野の最前線(ステアラボ人工知能シンポジウム2017)自然言語処理分野の最前線(ステアラボ人工知能シンポジウム2017)
自然言語処理分野の最前線(ステアラボ人工知能シンポジウム2017)STAIR Lab, Chiba Institute of Technology
 
子どもの言語獲得のモデル化とNN Language ModelsNN
子どもの言語獲得のモデル化とNN Language ModelsNN 子どもの言語獲得のモデル化とNN Language ModelsNN
子どもの言語獲得のモデル化とNN Language ModelsNN Chiba Institute of Technology
 
Chainer with natural language processing hands on
Chainer with natural language processing hands onChainer with natural language processing hands on
Chainer with natural language processing hands onOgushi Masaya
 
情報抽出入門 〜非構造化データを構造化させる技術〜
情報抽出入門 〜非構造化データを構造化させる技術〜情報抽出入門 〜非構造化データを構造化させる技術〜
情報抽出入門 〜非構造化データを構造化させる技術〜Yuya Unno
 
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...Yuya Unno
 
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...Yuta Kikuchi
 
Tf勉強会(5)
Tf勉強会(5)Tf勉強会(5)
Tf勉強会(5)tak9029
 
Building High-level Features Using Large Scale Unsupervised Learning
Building High-level Features Using Large Scale Unsupervised LearningBuilding High-level Features Using Large Scale Unsupervised Learning
Building High-level Features Using Large Scale Unsupervised LearningTakuya Minagawa
 
ChainerによるRNN翻訳モデルの実装+@
ChainerによるRNN翻訳モデルの実装+@ChainerによるRNN翻訳モデルの実装+@
ChainerによるRNN翻訳モデルの実装+@Yusuke Oda
 
言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクール言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクールYuya Unno
 
教師なしオブジェクトマッチング(第2回ステアラボ人工知能セミナー)
教師なしオブジェクトマッチング(第2回ステアラボ人工知能セミナー)教師なしオブジェクトマッチング(第2回ステアラボ人工知能セミナー)
教師なしオブジェクトマッチング(第2回ステアラボ人工知能セミナー)STAIR Lab, Chiba Institute of Technology
 
Jubatusにおける大規模分散オンライン機械学習
Jubatusにおける大規模分散オンライン機械学習Jubatusにおける大規模分散オンライン機械学習
Jubatusにおける大規模分散オンライン機械学習Preferred Networks
 

Tendances (20)

Chainerの使い方と 自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と 自然言語処理への応用
 
Jubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCTJubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCT
 
質問応答システム入門
質問応答システム入門質問応答システム入門
質問応答システム入門
 
深層学習による自然言語処理の研究動向
深層学習による自然言語処理の研究動向深層学習による自然言語処理の研究動向
深層学習による自然言語処理の研究動向
 
Deep Learning技術の今
Deep Learning技術の今Deep Learning技術の今
Deep Learning技術の今
 
Skip gram shirakawa_20141121
Skip gram shirakawa_20141121Skip gram shirakawa_20141121
Skip gram shirakawa_20141121
 
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
 
自然言語処理分野の最前線(ステアラボ人工知能シンポジウム2017)
自然言語処理分野の最前線(ステアラボ人工知能シンポジウム2017)自然言語処理分野の最前線(ステアラボ人工知能シンポジウム2017)
自然言語処理分野の最前線(ステアラボ人工知能シンポジウム2017)
 
子どもの言語獲得のモデル化とNN Language ModelsNN
子どもの言語獲得のモデル化とNN Language ModelsNN 子どもの言語獲得のモデル化とNN Language ModelsNN
子どもの言語獲得のモデル化とNN Language ModelsNN
 
Chainer with natural language processing hands on
Chainer with natural language processing hands onChainer with natural language processing hands on
Chainer with natural language processing hands on
 
情報抽出入門 〜非構造化データを構造化させる技術〜
情報抽出入門 〜非構造化データを構造化させる技術〜情報抽出入門 〜非構造化データを構造化させる技術〜
情報抽出入門 〜非構造化データを構造化させる技術〜
 
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
 
Tokyo r50 beginner_2
Tokyo r50 beginner_2Tokyo r50 beginner_2
Tokyo r50 beginner_2
 
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
 
Tf勉強会(5)
Tf勉強会(5)Tf勉強会(5)
Tf勉強会(5)
 
Building High-level Features Using Large Scale Unsupervised Learning
Building High-level Features Using Large Scale Unsupervised LearningBuilding High-level Features Using Large Scale Unsupervised Learning
Building High-level Features Using Large Scale Unsupervised Learning
 
ChainerによるRNN翻訳モデルの実装+@
ChainerによるRNN翻訳モデルの実装+@ChainerによるRNN翻訳モデルの実装+@
ChainerによるRNN翻訳モデルの実装+@
 
言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクール言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクール
 
教師なしオブジェクトマッチング(第2回ステアラボ人工知能セミナー)
教師なしオブジェクトマッチング(第2回ステアラボ人工知能セミナー)教師なしオブジェクトマッチング(第2回ステアラボ人工知能セミナー)
教師なしオブジェクトマッチング(第2回ステアラボ人工知能セミナー)
 
Jubatusにおける大規模分散オンライン機械学習
Jubatusにおける大規模分散オンライン機械学習Jubatusにおける大規模分散オンライン機械学習
Jubatusにおける大規模分散オンライン機械学習
 

Similaire à 文字列曖昧検索によるマルウェアバイナリ解析

genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターgenuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターsohta
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界Preferred Networks
 
オープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリオープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリ陽平 山口
 
Stan勉強会資料(前編)
Stan勉強会資料(前編) Stan勉強会資料(前編)
Stan勉強会資料(前編) daiki hojo
 
形式手法とalloyの紹介
形式手法とalloyの紹介形式手法とalloyの紹介
形式手法とalloyの紹介Daisuke Tanaka
 
Scalatronで楽しく学ぶ関数型プログラミング
Scalatronで楽しく学ぶ関数型プログラミングScalatronで楽しく学ぶ関数型プログラミング
Scalatronで楽しく学ぶ関数型プログラミングJun Saito
 
深層生成モデルと世界モデル, 深層生成モデルライブラリPixyzについて
深層生成モデルと世界モデル,深層生成モデルライブラリPixyzについて深層生成モデルと世界モデル,深層生成モデルライブラリPixyzについて
深層生成モデルと世界モデル, 深層生成モデルライブラリPixyzについてMasahiro Suzuki
 
ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話Preferred Networks
 
わかりやすいパターン認識_2章
わかりやすいパターン認識_2章わかりやすいパターン認識_2章
わかりやすいパターン認識_2章weda654
 
自作LSIコミュニティの可能性
自作LSIコミュニティの可能性自作LSIコミュニティの可能性
自作LSIコミュニティの可能性Junichi Akita
 
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​SSII
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ京大 マイコンクラブ
 
NINと画像分類 for 人工知能LT祭
NINと画像分類 for 人工知能LT祭NINと画像分類 for 人工知能LT祭
NINと画像分類 for 人工知能LT祭t dev
 
Inside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesInside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesTakeshi Komiya
 
TensorFlow White Paperを読む
TensorFlow White Paperを読むTensorFlow White Paperを読む
TensorFlow White Paperを読むYuta Kashino
 
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#信之 岩永
 
UDEC発表原稿-Udon概論-
UDEC発表原稿-Udon概論-UDEC発表原稿-Udon概論-
UDEC発表原稿-Udon概論-ContrastBar
 

Similaire à 文字列曖昧検索によるマルウェアバイナリ解析 (20)

genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターgenuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
オープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリオープンソースで作るスマホ文字認識アプリ
オープンソースで作るスマホ文字認識アプリ
 
Thinking in Cats
Thinking in CatsThinking in Cats
Thinking in Cats
 
Stan勉強会資料(前編)
Stan勉強会資料(前編) Stan勉強会資料(前編)
Stan勉強会資料(前編)
 
形式手法とalloyの紹介
形式手法とalloyの紹介形式手法とalloyの紹介
形式手法とalloyの紹介
 
Rokko チュートリアル
Rokko チュートリアルRokko チュートリアル
Rokko チュートリアル
 
Scalatronで楽しく学ぶ関数型プログラミング
Scalatronで楽しく学ぶ関数型プログラミングScalatronで楽しく学ぶ関数型プログラミング
Scalatronで楽しく学ぶ関数型プログラミング
 
深層生成モデルと世界モデル, 深層生成モデルライブラリPixyzについて
深層生成モデルと世界モデル,深層生成モデルライブラリPixyzについて深層生成モデルと世界モデル,深層生成モデルライブラリPixyzについて
深層生成モデルと世界モデル, 深層生成モデルライブラリPixyzについて
 
ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話
 
わかりやすいパターン認識_2章
わかりやすいパターン認識_2章わかりやすいパターン認識_2章
わかりやすいパターン認識_2章
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
自作LSIコミュニティの可能性
自作LSIコミュニティの可能性自作LSIコミュニティの可能性
自作LSIコミュニティの可能性
 
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
NINと画像分類 for 人工知能LT祭
NINと画像分類 for 人工知能LT祭NINと画像分類 for 人工知能LT祭
NINと画像分類 for 人工知能LT祭
 
Inside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesInside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfes
 
TensorFlow White Paperを読む
TensorFlow White Paperを読むTensorFlow White Paperを読む
TensorFlow White Paperを読む
 
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
 
UDEC発表原稿-Udon概論-
UDEC発表原稿-Udon概論-UDEC発表原稿-Udon概論-
UDEC発表原稿-Udon概論-
 

Plus de Preferred Networks

PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57Preferred Networks
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Preferred Networks
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Preferred Networks
 
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...Preferred Networks
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Preferred Networks
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Preferred Networks
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2Preferred Networks
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Preferred Networks
 
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演Preferred Networks
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Preferred Networks
 
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)Preferred Networks
 
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)Preferred Networks
 
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るKubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るPreferred Networks
 
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張Preferred Networks
 
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会Preferred Networks
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2Preferred Networks
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Preferred Networks
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...Preferred Networks
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...Preferred Networks
 
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50Preferred Networks
 

Plus de Preferred Networks (20)

PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
 
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
 
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
 
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
 
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
 
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るKubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
 
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
 
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
 
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
 

Dernier

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Dernier (8)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

文字列曖昧検索によるマルウェアバイナリ解析

  • 1. AVTokyo 2012 ⽂文字列列曖昧検索索による マルウェアバイナリ解析 株式会社プリファードインフラストラクチャー 丸⼭山史郎郎,柏原秀蔵 NTTセキュアプラットフォーム研究所 折原慎吾、朝倉浩志 2012年年11⽉月  17⽇日  
  • 2. 発表者⾃自⼰己紹介 l  まるまる / @marugorithm l  柏原秀蔵 / @suma90h l  研究開発エンジニア l  ソフトウェアエンジニア l  アルゴリズム l  分散システムなど l  ⽂文字列列処理理が好物 l  バイナリエディタ完成してない l  職業リバースエンジニアではない 2
  • 3. 70,000,000 60,000,000 50,000,000 背景 40,000,000 30,000,000 20,000,000 10,000,000 0 l  新しいマルウェアは相変わらず増えている(うんざりしてくる JUL AUG SEP OCT NOV DEC JAN FEB MAR APR MAY JUN 2011 2011 2011 2011 2011 2011 2012 2012 2012 2012 2012 2012 l  それらを解析の必要性がある(最近は、ウェブ・モバイルも多い) New Malware 10,000,000 8,000,000 6,000,000 4,000,000 2,000,000 0 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4 Q1 Q2 2009 2009 2009 2009 2010 2010 2010 2010 2011 2011 2011 2011 2012 2012 Source: McAfee Threats Report: Second Quarter 2012 3 McAfee Threats Report: Second Quarter 2012
  • 4. 背景:Reverse Code Engineering 技術・ツールの進化 l  解析⼿手法はそれぞれ l  動的・静的 l  ブラックボックス・ホワイトボックス l  ツール By Ma-games.de(GNU-FDL) l  逆アセンブラ、デバッガ、アンパッカー l  サンドボックス、命令令トレーサ l  バイナリエディタ(with ⽬目grep) l  解析技術の進化 l  動的解析・サンドボックスの研究、OSS化は2006年年頃から多い l  リバースコードエンジニアリングに利利⽤用する逆アセンブラといっ たツールの進化、静的解析の進化は少なく⾒見見える l  Pythonスクリプトなどによる拡張性は上昇? 4     (注:アウトサイダーの視点)
  • 5. 背景:動的解析 vs 静的解析 l  動的解析・サンドボックス(仮想化技術の進歩と共に) l  サンドボックス・⾃自動アンパックに注⼒力力した研究・ツール l  ブラックボックス・ホワイトボックスの両⽅方のアプローチが可能 l  ⽋欠点 l  実⾏行行時間が⻑⾧長い・実⾏行行してない部分は解析できない l  静的解析 l  デファクトスタンダード:IDA Pro l  逆アセンブルし、API Callなどを⽤用いて意味を推論論する研究 l  静的解析と動的解析のハイブリッド型の研究:PolyUnpack l  ⽋欠点 l  パッキング・難読化への対処が困難である l  最終的に、解明できる範囲は⼈人間の処理理能⼒力力に依存する 5
  • 6. モチベーション l  マルウェアに対してしかけていきたい l  攻撃者・作者へ反撃するのは困難 l  リバースコードエンジニアリングの効率率率をあげたい l  静的解析  (RCE)に⽂文字列列検索索でアプローチしたい l  サンドボックスによる解析範囲は限られている l  逆アセンブルしたとき、⼈人間が調べる範囲を集中させたい l  既存マルウェア、よく知られるコードをフィルタできるとよい l  収集済みのマルウェア活⽤用は可能だろうか? l  データベース化して解析に役⽴立立てたい l  ⽂文字列列検索索、マシンパワーに頼るのは現実的だろうか? 6
  • 7. コンセプト:⽂文字列列検索索による解析⽀支援 l  曖昧検索索技術を使って、解析対象と⼀一致するバイナリを既存ファ イルから探す l  ⼈人が読むべき部分を注⼒力力させたい l  デバッグシンボルと同じような情報を提供したい マル ウェア OSS 既存 コード ファイル1の 関数A ファイル2の コードX 関数B ⼊入⼒力力 検索索ツール 出⼒力力 バイナリY 7
  • 8. 似たツール:IDAScope l  IDAscope plugin (Hex-Rays 2012 Contest Results) l  コードブロックからシンボルなし関数を⾃自動補完 l  コードブロックから暗号アルゴリズムを⾃自動補完 l  IDA Proユーザは、これを使うと良良さそう l  曖昧検索索は必要ないのでは? l  共通点: l  ⽬目指すところは同じ:マルウェア解析を容易易にすること l  ユースケースとして似たような使い⽅方を想定している l  今回の発表主旨 l  ⽂文字列列ベースの曖昧検索索技術の能⼒力力を実験し、 現実的であるか紹介すること 8
  • 9. 検索索アルゴリズムの⽬目的 55 8b ec 56 8b 75 08 57 8b 3d 38 10 41 00 6a 1f 56 6a 07 68 l  共通モジュール抽出の問題点 00 04 00 00 ff d7 f7 d8 1b c0 l  全く同じ物を検索索してもダメ。 c6 46 03 00 f7 d8 89 45 08 74 16 68 cc 30 41 00 56 e8 e2 b3 l  例例)アドレスが異異なる。 00 00 59 85 c0 59 74 05 6a 01 58 eb 16 6a 1f 56 6a 07 68 00 l  マルウェアだと開始位置が 08 00 00 ff d7 f7 d8 1b c0 f7 わからない場合がある d8 80 66 03 00 5f 5e 5d c3 l  曖昧検索索による⽅方法 55 8b ec 56 8b 75 08 57 8b 3d 38 20 41 00 6a 1f 56 6a 07 68 l  似ている部分を探す。 00 04 00 00 ff d7 f7 d8 1b c0 l  似ている尺度度は?⼿手法は? c6 46 03 00 f7 d8 89 45 08 74 16 68 08 41 41 00 56 e8 56 b9 00 00 59 85 c0 59 74 05 6a 01 58 eb 16 6a 1f 56 6a 07 68 00 08 00 00 ff d7 f7 d8 1b c0 f7 d8 80 66 03 00 5f 5e 5d c3
  • 10. 編集距離離計算 l  2つの⽂文字列列間の編集距離離  d (S, R) ACGTGATC 置換 削除 d (ACGTGATC, ACTAATC) = 3 ACTA ATC l  挿⼊入・削除・置換をコスト1とする。 l  ⽂文字列列データに対する曖昧検索索の基本テク。 l  様々なアルゴリズムが存在。
  • 11. 編集距離離計算アルゴリズム l  動的計画法による⽂文字列列S, R間の編集距離離計算 l  ⽂文字の挿⼊入・削除・置換のコストを1とする l  (|S|+1) × (|R|+1) の表  Dを⽤用意する s u r g e r y 0 1 2 3 4 5 6 7 s 1 u 2 r 3 v 4 e 5 y 6
  • 12. 編集距離離計算アルゴリズム l  動的計画法による⽂文字列列間の編集距離離計算 l  以下の計算式に従って表を埋める if  S[i] = R[ j], D[i, j] ← D[i −1, j −1], else D[i, j] ← min(D[i −1, j], D[i, j −1], D[i −1, j −1]) +1. s u r g e r y 0 1 2 3 4 5 6 7 s 1 0 1 2 3 4 5 6 u 2 1 0 1 2 3 4 5 r 3 2 1 0 1 2 3 4 v 4 3 2 1 1 2 3 4 d(S, R) e 5 4 3 2 2 1 2 3 y 6 5 4 3 3 2 2 2
  • 13. アルゴリズムの概要 l  我々のやりたいこと l  2つの⽂文字列列間の編集距離離計算ではない l  バイナリのバイト列列の中からクエリとなるモジュールに 似ている部分のみを抜き出したい l  ⼿手法 l  DNAアライメント等で使われる部分的な近似照合アルゴリズム (Smith-Watermanアルゴリズム)を改良良したものを利利⽤用した l  結果からモジュールの開始位置を⾒見見つけられるようなヒューリ スティック l  重複する検出のフィルタリング
  • 14. ⽂文字列列アルゴリズムの概要 l  動的計画法による部分⼀一致ベースの曖昧検索索 l  1⾏行行⽬目のスコアを全て0とする バイナリのバイト列 fd 2d 4f 3d fd 2d 53 3d 0 0 0 0 0 0 0 0 0 fd 1 ( 検 索 2d 2 4f 3 3d 4 ー )
  • 15. ⽂文字列列アルゴリズムの概要 l  動的計画法による部分⼀一致ベースの曖昧検索索 l  あとは表を埋めるだけ バイナリのバイト列 fd 2d 4f 3d fd 2d 53 3d 0 0 0 0 0 0 0 0 0 fd 1 0 1 1 1 0 1 1 1 ( 検 索 2d 2 1 0 1 2 1 0 1 2 4f 3 2 1 0 1 2 1 1 2 3d 4 3 2 1 0 1 2 2 1 ー )
  • 16. ⽂文字列列アルゴリズムの概要 l  動的計画法による部分⼀一致ベースの曖昧検索索 l  ⼀一番下の⾏行行の値に着⽬目 l  予め決めておいた閾値(この例例では1とする)以下のマスに着⽬目 バイナリのバイト列 fd 2d 4f 3d fd 2d 53 3d 0 0 0 0 0 0 0 0 0 fd 1 0 1 1 1 0 1 1 1 ( 検 索 2d 2 1 0 1 2 1 0 1 2 4f 3 2 1 0 1 2 1 1 2 3d 4 3 2 1 0 1 2 2 1 ー )
  • 17. ⽂文字列列アルゴリズムの概要 l  動的計画法による部分⼀一致ベースの曖昧検索索 l  そこからバックトラックを⾏行行い、類似部分の開始位置を求める バイナリのバイト列 fd 2d 4f 3d fd 2d 53 3d 0 0 0 0 0 0 0 0 0 fd 1 0 1 1 1 0 1 1 1 ( 検 索 2d 2 1 0 1 2 1 0 1 2 4f 3 2 1 0 1 2 1 1 2 3d 4 3 2 1 0 1 2 2 1 ー )
  • 18. ⽂文字列列アルゴリズムの概要 l  動的計画法による部分⼀一致ベースの曖昧検索索 l  重複するような出現は最⼩小のスコアを選ぶようにフィルタする l  この例例では “fd 2d 4f 3d”と”fd 2d 53 3d“が抽出される バイナリのバイト列 fd 2d 4f 3d fd 2d 53 3d 0 0 0 0 0 0 0 0 0 fd 1 0 1 1 1 0 1 1 1 ( 検 索 2d 2 1 0 1 2 1 0 1 2 4f 3 2 1 0 1 2 1 1 2 3d 4 3 2 1 0 1 2 2 1 ー )
  • 19. より⾼高速な曖昧検索索アルゴリズム l  Factor Filter [2000, JDA], Suffix Filter [2007, ALENEX] l  索索引を利利⽤用した⾼高速な曖昧検索索アルゴリズム l  クエリの⼀一部を索索引で検索索を⾏行行い、ヒットした周辺のみを曖昧検 索索でチェック。 l  楠本アルゴリズム[2012, PFI夏のインターンの成果] l  楠本、丸⼭山、岡野原で開発. l  2012年年PFI夏のサマーインターンの成果。 l  移動付き編集距離離に基づく曖昧検索索の近似アルゴリズム。 l  ストリームに対して省省メモリ領領域で⾼高速に検索索可能。 l  1万クエリくらいを同時に検索索可能。 19
  • 20. プログラムの仕様 l  ⼊入⼒力力 l  出⼒力力 対象バイナリパス l  ファイル /home/maruyama/data/malware/dump/ 1a1f6496107b1063313aba6af99fce8e.GUnPacker.dump l  検索索クエリ(コード) hit: id = 14 バイナリID hit: distance = 28 編集距離 query: name = sub_401000 hit: beg_pos = 4096 開始位置からの 開始位置からの query: beg_pos = 4096 hit: length = 266 offset offset query: length = 266 query: threshold = 53 モジュール長 55 8b ec 81 ec 60 02 00 00 53 モジュール長 33 db 39 1d 00 30 41 00 89 5d 許容誤差 55 8b ec 81 ec 60 02 00 00 53 f4 0f 84 e9 00 00 00 56 b8 00 33 db 39 1d 00 20 41 00 89 5d 30 41 00 57 8b 3d 08 20 41 00 f4 0f 84 e9 00 00 00 56 b8 00 89 45 e8 be 04 01 00 00 ff 30 20 41 00 57 8b 3d 08 10 41 00 8d 45 a8 50 e8 7d 04 01 00 8d 89 45 e8 be 04 01 00 00 ff 30 45 a8 50 e8 9d a5 00 00 83 c4 8d 45 a8 50 e8 e5 f7 00 00 8d 0c 8d 45 f8 50 6a 03 8d 45 a8 45 a8 50 e8 0a 9c 00 00 83 c4 検出モジュール 53 50 ff 75 08 e8 a6 ef 0a 01 0c 8d 45 f8 50 6a 03 8d 45 a8 69 8d 45 fc 89 5d f0 50 8d 85 53 50 ff 75 08 ff 15 00 10 41 クエリモジュール a4 fe ff ff 50 8d 45 e4 50 8d 00 8d 45 fc 89 5d f0 50 8d 85 45 ec 53 50 8d 85 a0 fd ff ff a4 fe ff ff 50 8d 45 e4 50 8d 89 75 ec 50 89 75 fc 53 ff 75 45 ec 53 50 8d 85 a0 fd ff ff f8 ff d7 85 c0 75 5f 83 7d e4 89 75 ec 50 89 75 fc 53 ff 75 01 75 30 ff 75 0c 8d 85 a4 fe ff ff ff 75 fc 50 e8 6c 49 00 20
  • 21. 実験 l  実験に使ったマルウェア l  2007年年に捕獲 l  141ファイル(全てアンパック済み) l  総ファイルサイズ:50,515,632バイト l  検索索クエリ例例 l  “PoeBot.C”のルーチン“FlashFXP password stealer”の⼀一部分を検索索 l  実験結果例例 l  実⾏行行時間(Core i5, 16GB RAM) l  1分41秒 l  結果例例 l  14件検出 l  完全⼀一致:8件、60バイト差で⼀一致:6件 21
  • 22. プログラム実⾏行行の流流れ l  アンパック済みファイル集合を⽤用意する l  1個のファイルを取り出し、IDAを使い関数を取得 l  抽出した関数をクエリとして、検索索を⾏行行う 22
  • 24. 曖昧検索索とRCEを組み合わせた特徴 l  利利点 l  似ているバイナリデータの列列挙、⼀一致位置を検索索できる l  逆アセンブルなしで⼀一致部分を発⾒見見できる l  検索索クエリはコードに限定しない l  どんなバイナリでも検索索できる l  解析時の⽋欠点 l  検索索結果から意味を解釈するには、登録するバイナリファイルに 注釈を加える必要がある l  対象が多いほど実⾏行行時間が増加:実⾏行行時間=クエリ×検索索対象 l  曖昧検索索に関すること l  存在しないものは検索索できない l  コードの難読化などに⾮非対応 24
  • 25. 結論論 l  現時点では実⽤用化は厳しい、が… l  誤差を考慮した⽂文字列列検索索 l  編集距離離ベースの検索索でも⼗十分な精度度が得られる l  バイナリなら何でも対応可能 l  今後の展望 l  索索引⽅方式を採⽤用して速度度の⾼高速化に対応 l  他のツールとの連携に対応 l  パッキングは対象外とした l  専⾨門家に任せたい l  圧縮、暗号化、難読化したコードから元コードの復復元や、動的解 析時の意味解析に関する研究は存在している 25
  • 26. 既存の数が多過ぎるとき、対処できるか? l  検索索時間はどうなのか? l  検索索クエリの⻑⾧長さ、検索索対象の数に⽐比例例する l  索索引⽅方式の曖昧検索索を利利⽤用することで⾼高速化 l  検索索⾃自体を分割・並列列化 l  検索索ヒット結果が多すぎる事例例 l  共通モジュールを前処理理で束ねておくことで対応 l  実験例例:printf, sprintf などCPU命令令の重複は多い l  ストップワード的な扱いで対応する 26
  • 27. 曖昧検索索の応⽤用例例 l  今回はx86逆アセンブラの拡張を想定していた l  IDA Proなどの拡張を想像してもらうのがシンプル l  実験していないが、JavaやCLIといったバイトコードへの可能性 l  サンドボックス/プログラムトレーサーとの結合 l  サンドボックスでの解析時、パターンマッチの検出を組み合わせ て利利⽤用するのが想像しやすい l  コードのパターンマッチング l  マルウェアのモジュール間類似度度計算 l  ソフトウェアの検査、クローン検出の応⽤用 l  コードにOSSが汚染していないか? l  古い脆弱性の含むライブラリを利利⽤用していないか? 27