ウェブ攻撃検知機械学習の深さの練習

クリエイティブコモンズライセンス 著作権:帰属、紙ベースを作成するために他人を許可し、(同じライセンスで元のライセンス契約に基づいて用紙配布する必要がありますクリエイティブコモンズ

I.概要

1.1 WAF伝統的な痛みのポイント

伝統的なWAFは、ウェブ攻撃を検出する方法のルールとブラックリストとホワイトリストに依存しています。攻撃の未知のタイプに対して無力、セキュリティ担当者の知識の幅広さに過度の信頼を置くための方法;一方でさえ、正規表現の固有の制限による攻撃の既知のタイプ、およびシェル、PHPと他の言語非常に柔軟な構文、つまり、理論的には、バイパスし、したがって、誤って漏れが自然な存在で停止し、停止することができ、かつ定期的な洗練されたコストの精度を向上させ、より定期的に追加することで、無限のパッチ適用の渦に投げ込まれた全体的なパフォーマンスを下にドラッグ。

AIセマンティック解析と認識:これらの問題に対応して、現在の主流のセキュリティベンダーの研究は、2つの陣営に分けることができます。

1.2意味解析

HTTPサンドボックスを解決するために、疑いのある実行可能コードセグメントから抽出されたペイロードは、次かどうかを確認するために行われてもよいです。

シェルの構文は、猫のc'a'tのC「「」 'T 『』 c'a't 『を理解することがあれば、共通のシェルコマンドの猫については、』同じものです。意味理解は、偽陽性の問題の定期的な漏れのいくつかを解決することは理論的には可能ですが、いくつかの困難があります。例えば、実行可能なコードセグメントの一部が疑われるhttpプロトコル、どのように切断し、通常の解像度を確保するためにスプライスするためにHTTPプロトコルが、これらはより厄介であり、別のSQL文法、sehll文法、JS構文は、それぞれ、達成する必要があります。

従来のWAFのルールに基づいて、ビューのセマンティック解析ライブラリポイントLibinjection、およびそこにリークをバイパスすることは、多くの場合に停止し、自分自身を支配するためにそれを使用するには、ルールの識別のために、抽象化の層で行います。実際には、いくつかのセマンティックベースのWAFのスローガンがあった市場は、現在の見通しは非常に明確ではありません正確にどのように、非常に騒々しいです。

1.3 AI認識

機械学習は、深い学習が従来のWAF究極のソリューションの痛みのポイントを解決しようとする楽観的、いくつかのAIのファンは、量が...多分、ちょうど多分AIはまだ多くの完璧なソリューションを発明していませんでした。たとえそうだとしても、それはビューのWAF対応のポイントを学習し、簡単な機械で、広大な世界が残っています。

安全な識別の分野では、メディアデータのためのAI技術のヒトへの使用は、際立った特徴は、数学的な表現能力を構築し、そのための能力は、トレーニングモデルによって善と悪を区別します。

したがって、良いか悪いかは、データの品質及び特性の最終モデルの品質に依存し、彼らはモデルが上限に達することができるかを決定し、アルゴリズムが上限に触れ続けるしようとするモデルを有効にすることです。

特徴抽出は、「自然の掘削工程の素晴らしい法則、」機能のあるタイプがクラス特性に対応する攻撃の種類を区別することができ、コアは、特徴選択モデルのこのタイプではないだけを作る方法であると同時に、区別するための優れた能力を持っています私たちは、攻撃にも未知の種類を区別する能力を優れた内部一般化と汎用性を持つことができます。

画像認識、音声認識などの分野に関しては、AIアプリケーションは少し後でWebセキュリティの分野で起動、アプリケーションは徹底的に十分な深さではありません。Webセキュリティの認識精度やメンテナンス性に学習理由マシンはまだ伝統的なWAFのルールに完全に代替ではなく、定期的なセキュリティ、WYSIWYGに基づくマッチングは、メンテナンスが有効になります。したがって、その適用性を改善するためのWeb攻撃の認識のためのAIを使用するには、以下の方向から起動する必要があります。

  • 精度を向上させます

  • 最適化ロジックは、パフォーマンスを向上させます

  • 自己再生および効率的な反復のモデル

  • 攻撃の未知の種類の同定
    2つのWeb攻撃シグネチャ分析、

攻撃の例ではまず見て:

1.XSSクロスサイトスクリプティング

<script>alert(0)</script>

<img src=0 onerror=alert(0)>

2.SQl注入

+and+(select+0+from+(select+count(*),concat(floor(rand(0)*0),

union all select null,null,null,null,null,null,null,null#

3.コマンド実行

${@print(eval($_post[c]))}

exec xp_cmdshell('cat ../../../etc/passwd')#

Web要求は、攻撃が特徴、主に二つの方向に分かれていることがわかります。

キーワードの脅威の特徴を次のような

select,script,etc/passwd

非標準の構造的特徴:

${@print(eval($_post[c]))}

状態遷移に基づいて、2.1取り出し特徴

私たちの一般的な方法は、類似した文字属性の一般化ではなく、固定の文字と状態であることです。例えば:手紙「N」、「Z」、「0」にデジタル一般、「F」等に一般セパレータに一般漢字に一般化。核となるアイデアは、変換の連鎖確率を訓練するために文字が他の文字と別の領域でのWeb攻撃の意味を持っているように、可能な限り、異なる文字属性を表現するために異なる状態を使用して、状態のシリーズにペイロードを変換することです行列。

一般的に使用されるモデルは、隠れマルコフ連鎖モデルです。黒のサンプルトレーニングHHMモデルの場合は、黒、黒を見つけることができます。この利点の目的は正義の下流産で実現し、サンプルのトレーニングHHMモデルと白、あなたは攻撃の未知のタイプを発見するが、同時に正義の高い流産を持つことができます。試験された収集訓練サンプルを使用する場合は、良好な発見されたいくつかのXSS攻撃のために、実施形態を識別するための優れた能力を有するリクエストパラメータ構造の特性のウェブセパレータ挿入攻撃このような明らかな変形の攻撃パラメータ、構造化されていない一方SQLインジェクションの機能や機密ディレクトリを実行するには、それは完全に予想に沿ったものでもあり、認識されていません。

しかし、よく知られている方法は、欠陥がある:異常が構造的な観点からパラメータを要求観察するが、構造が必ずしも異常なウェブ攻撃ではありません。構造は通常のWeb攻撃ではないことを保証するものではありません。

>認識 - (1)構造的な異常が攻撃をXSS

var _=i[c].id;u.test(_)&&(s=(s+=(_=_.substring(0))+"#@#").replace(/\\|/g," "))}""!==s?(s=s.substring(0,s.length-0),_sendexpodatas

(2)異常な変形XSS攻撃の構造 - >承認

/m/101/bookdetail/comment/129866160.page?title=xxx<marquee onstart="top[`ale`+`rt`](document[\'cookie\'])">

(3)構造異常SQLインジェクション - >承認

/wap/home.htm?utm_source=union%' and 3356=dbms_pipe.receive_message(chr(107)||chr(78)||chr(72)||chr(79),5) and '%'='&utm_medium=14&utm_campaign=32258543&utm_content=504973

(4)構造通常のSQLインジェクション - >認識されません

/hitcount.asp?lx=qianbo_about&id=1 and 1=2 union select password from 

(5)通常の構造異常はリクエスト - >偽

/amapfromcookie().get("visitorid"),o=__ut._encode(loginusername),u=o?"r":"g",d=n.gettime(),c=_cuturltoshorrid")

(6)通常の構造異常はリクエスト - >偽

o.value:"")&&(c=c+"&sperid="+o),x+=c,__ut._httpgifsendpassh0(x)}}_sendexpodatas=function(e,t,n){var a=0===t?getmainpr

(7)構造異常通常のリクエスト - >偽

/index.php?m=vod-search&wd={{page:lang}if-a:e{page:lang}val{page:lang}($_po{page:lang}st[hxg])}{endif-a}

2.2構造ベースの統計

このような特殊文字のURLの長さの数の組み合わせとして抽出機能のURLリクエストが、経路長は、パラメータ長部は、パラメータ名の長さは、長さのパラメータ値は、パラメータの数は、パラメータ長を占め、特殊文字、危険及び高いリスク特殊文字の組み合わせの数、等数、深さパス、セパレータ、これらの統計的指標の機能の数、ロジスティック回帰モデルを選択することができるように、SVM、設定されたアルゴリズム、教師なし学習、またはMLPモデルの数。

モデルは、許容できる性能を持っていることを確認するために作られた唯一の単一のドメイン名のURLリクエスト取る場合は、しかし、私たちは会社のドメインネームシステムの何千ものに直面している、異なるドメインの異なるURLのディレクトリ階層、異なる命名規則を発揮し、 ...上記の技術では、データ自体が多い特徴非常に複雑なシナリオは、曖昧になるような操作のためのさまざまなリクエストパラメータ。このように、あまり効果区別要求モデルは、精度はフルスタックのURLには低すぎます。リアルタイムでは、環境が比較的良好なフィット感を持っている場合でも、比較的簡単なシナリオ、97%に引き上げ、正確率をモデル化することは困難です。

2.3特徴コードワード断片に基づきます

TF-IDFの特徴抽出を使用して特定の単語、URLリクエストスライスの規則によると、キーワードの組み合わせに分化する能力を保持して備えています、可能な限りオープンソースのオンライン攻撃のサンプル音の特徴と組み合わせます。プロジェクトの重要な特徴がどのように「ロスレス」サブ機能語とキーワードの組み合わせが密接に関連している構造、ここで、後者は、連続的に(以下焦点を当てて)精製されたモデルの性能結果との組み合わせを必要とします。

実際には、いくつかの共通の特徴は、予約キーワード、およびWeb攻撃の中でリスク文字の組み合わせ、及びこれらのキーワードや文字の組み合わせが限定されています。理論的には、ほぼすべてのこれらのキーワードや文字の組み合わせのがすべてカバーすることができ、大規模なトラフィックと我々が今日持っているウェブ攻撃のWAF完全なサンプルと組み合わせます。

第三に、機能ベースのセグメンテーションと抽出MLPモデル

ユニバーサル近似定理ユニバーサル近似定理(Hornikら、1989 ;. Cybenko、1989)は、理論的には、ニューラルネットワークは、任意の精度君任意の複雑さで機能することができますについて説明します。

プロジェクト3.1の機能

デコード:

再帰デコードURL、Base64でデコード、12月六角デコード。

文字一般化:

そのような一般化として統一されたデータは、「0」、小文字の資本および他の操作です。

イベントの試合:

XSS攻撃ラベルとペイロードは、タイミングを一致させることによって、同じタイプのイベントやタグが収集されたイベントを、含まれており、言葉のカスタムモデルの袋の中に文字の組み合わせでそれを置き換えます。

キーワードマッチ:

上記の原則に合致する同様のイベント、文字の汎化組み合わせと同じ性質を持つキーワードの同じタイプ、単語やバッグモデルを入れて、そうすることの利点は、フィーチャ寸法を小さくすることです。

変換特徴ベクトル:

復号によって試料を、ワードマッチングは、その固定長によって特徴ベクトルに変換され、「0」と「1」です。

3.2モデルの結果

評価の結果と考えてモデル特徴抽出、ここだけ、スペースを小さくします。

ランダムフォレスト:
ここに画像を挿入説明
ロジスティック回帰:

15404293287007.jpg

MLPモデル:

、

3.3まとめ

短所

  • 変換規則を最適化する特徴を抽出、繰り返し較正モデルを必要とします。

  • 貧しい未知の攻撃の種類を識別する。

  • 変形攻撃認識無効。

  • キーワードのタイミング情報を学んでいません。

シェルの構文は、猫のc'a'tのC「「」 'T 『』 c'a't 『を理解することがあれば、共通のシェルコマンドの猫については、』同じものです。ここで紹介するMLPモデルは、単語の猫を理解することができますが、これらはc'a't(情報のワード破壊)の変形を理解することはできません。

利点

  • 比較的深い学習を持つことは、より効率的な予測効率です。

  • 相対的な深さの学習モデル、スケーラブルで、より便利なの展開を配布し、トラフィックの洪水を収容することができます。

  • 高精度、完全に既知のタイプを識別します。

  • 保守性は、単に漏れが再入力する訓練をマーキングした後、要求の種類を停止し、エラー停止しました。

上記のキーワードベースの機能のためのMLPモデルは、一部の人々は、なぜほぼ100%正確で達成することができ、疑問に思うかもしれ?これは、繰り返しテストの結果です。あなたが一般化し、清掃作業の多くを行った特徴ベクトル変換要求のURLを行いますが、前にも定期的に使用しています。早期の識別要求の誤判定をベクター変換した後、正と負のサンプルの際立った特徴をタップし、単語やURLのクリーニングモードのベクトルの次元バッグを調整することにより、モデル訓練サンプルへの入力があいまいであることを保証しようとするだろう。毎日生成された偽陽性のタイプのオンラインモデルの間に、それはトレーニングセットに戻すポジティブサンプルとして、調整後に特徴抽出し、モデルを更新します。ビットずつの蓄積を通じて、モデルはより洗練されたようにします。

第四に、変形および未知の攻撃LSTMモデルを識別するために

3つのアイデアに基づく特徴抽出は、単語モデルMLPのトレーニング効果を選択する最良の方法は、既知の攻撃タイプの正確な識別を満たすために、機能とパラメータの組み合わせを訓練することによって得ることができます。しかしながら、ルールに部分的に依存しているから、抽出物のMLPモデルの特性、漏れが生じることは理論的には永久に停止し、正義の流産。目標は、サンプルが常に不十分で識別することであるため、手動絶えずレビューを必要とし、新しい攻撃、調整特徴抽出、パラメータを調整する、ウェイトトレーニング...この道は終わることはありません一見ことがわかりました。

4.1なぜLSTM

上記のWeb攻撃で要求を想起し、セキュリティ専門家が攻撃を識別することができるようになりますし、機械学習モデルを手動でそれが差別のシリーズを特徴と伝えるために私たちを必要とし、特性をバインディングのサンプルデータを使用し、MLモデルを取得するための機能をシミュレートするために聞かせて出力およびアフリカ。

セキュリティ専門家は、URL要求を参照して、各セグメントの意味するものである...これらは、URLに基づいており、ウェブ攻撃はキーワードを含む、URL要求の構造が正常である、自分の理解のURLの心の「経験メモリー」に応じて要求されます要求コンテキストは、各文字と理解しました。従来のニューラルネットワークは、これを行うことはできませんが、リカレントニューラルネットワークは、それは情報が持続することを可能にすることを行うことができます。
ここに画像を挿入説明
LSTMは直前およびWeb攻撃のための要求URLかどうかを判断する前と後の文字を使用することの利点を理解したテキストを使用します。エンジニアリングの利点を保存することができ、この機能は、複雑なプロセスです。

それは、ある未知の攻撃を識別するための能力を持って、理解のURL要求された機能のこの方法です。未知の攻撃がそれを変形させるために言葉が開いて、それを分割してしまうため、MLPモデルは、単語の猫を理解することができますが、変形c'a'tを理解することはできません。LSTMモデルと各文字の特徴として、文字間のコンテキスト・リンクは、存在するか否かの層の埋め込みを介して猫、c'a'tまたはC「「」T 『』 c'a't 『』、変換後、発現ベクターは、同様の機能を、ほぼ同じものの両方のためのモデルを持っています。

4.2定量化するための機能とモデルのトレーニング

ここでは唯一のパラメータ値のパラメータ値は、トレーニングを要求しました。

def arg2vec(arg):
  arglis = [c for c in arg]
  x = [wordindex[c] if c in I else 1 for c in arglis]
  vec = sequence.pad_sequences([x], maxlen=maxlen)
  return np.array(vec).reshape(-1 ,maxlen)

def build_model(max_features, maxlen):
  """Build LSTM model"""
  model = Sequential()
  model.add(Embedding(max_features, 32, input_length=maxlen))
  model.add(LSTM(16))
  model.add(Dropout(0.5))
  model.add(Dense(1))
  model.add(Activation('sigmoid'))
  # model.compile(loss='binary_crossentropy,mean_squared_error',
  # optimizer='Adam,rmsprop')
  model.compile(loss='binary_crossentropy',
  optimizer='rmsprop', metrics= ['acc'])
  return model

def run():
  model = build_model(max_features, maxlen)
  reduce_lr = ReduceLROnPlateau(monitor='val_loss' , factor=0.2, patience= 4 , mode='auto', epsilon = 0.0001 )
  model.fit(X, y, batch_size=512, epochs= 20, validation_split=0.1, callbacks = [reduce_lr])
  return model

if __name__=="__main__":
  startTime = time.time()
  filename = sys.argv[1]
  data = pd.read_csv(filename)
  I = ['v', 'i', '%', '}' , 'r', '^', 'a' , 'c', 'y', '.' , '_', '|', 'h' , 'w', 'd', 'g' , '{', '!', '$' , '[', ' ', '"' , ';', '\t ' , '>', '<', ' \\', 'l' , '\n', ' \r', '(', '=', ':', 'n' , '~', '`', '&', 'x', "'" , '+', 'k', ']', ')', 'f' , 'u', '', '0', 'q', '#' , 'm', '@', '*', 'e', 'z' , '?', 't' , 's', 'b' , 'p' , 'o' , '-', 'j' , '/',',' ]
  wordindex = {k:v+2 for v, k in enumerate (I)}
  max_features = len(wordindex) + 2 # 增加未知态(包含中文)和填充态
  maxlen = 128
  X = np.array([arg2vec(x) for x in data['args']]).reshape(- 1 ,128)
  y = data['lable']
  model = run()
  logger.info("模型存储!")
  modelname = 'model/lstm' + time.strftime('%y_%m_%d' ) + '.h5'
  model.save(modelname)

ここに画像を挿入説明
4.3モデルの評価
ここに画像を挿入説明
試験用サンプルサイズは10,000 99.4%の精度です。

場合は、試験試料584万、99.99%のトレーニングGPU精度の後、

それは主に攻撃的な意図が不十分に定義するかどうかの理由URL断片の長さを切断することによって引き起こされる、サンプル識別エラーを観察しました。

4.4まとめ

短所

  • リソースのオーバーヘッド、低予測効率;

  • モデルは、同じサイズを入力する必要があり、要求URLがより大きく128のバイトを切断されるため、0未満の128のバイトまでである上記のような剛性の方法のURLの切断は、元の情報を破壊することができます。

利点

  • プロジェクトの複雑な機能ません。

  • これは、未知の攻撃を認識する能力を持っています。

  • 強い汎化能力。

V.ものがたり

私も時々存在自体の特定の方向に欠陥が立つことができない、ウェブ攻撃抽出法の方向と特性を検出する各種のを試してみてください、仕事のために必要がありますが、私は非常に満足のいく結果を得ることはありません。伝統的な機械学習方法は、Web攻撃の認識を行うには、まだ私の時間のほとんどを消費し、非常に依存フィーチャー・プロジェクトは、継続されます。

現在のモデルLSTMに加えて、蘇寧の生産環境は最高の実行MLPモデルであるが、それ自体は重大な欠陥があります。このモデルの特徴は、特徴抽出時間をやって、キーワードを抽出するためのWebベースの攻撃であるため、識別の精度を確保するために、クリーニングのurl一般化を実行するために定期的な単語の多くを使用する必要がありましたが、このアプローチの本質は、ルールベースのWAFとの大きな違いはありません。唯一の利点は、それによってアップグレードするルール・ベースを維持し、エラムの誤用停止または漏れのあるタイプを除外WAFを識別するための手段試験にマルチ同一でないを提供することです。

表示され、それは文字セットの組み合わせを所有することを学ぶだろう、特徴ベクトルとして、各文字は、理論的には、単にサンプルを供給するのに十分な、それは十分な与えるところ、私が思うに、長期的にLSTMは、上記の方向が最も有望である検出します本物のセキュリティ専門家のようなURLに代わって、敷地内の意義の範囲内でどのような位置に関係なく、攻撃のどのような様々な、同じ即座に認識攻撃しないように。

おすすめ

転載: blog.csdn.net/kclax/article/details/93631780