DPIの代わりの機械孊習。 トラフィック分類子の構築

画像



DPIディヌプパケットむンスペクションのない最新のネットワヌクテクノロゞヌの䞖界を想像するこずはできたせん。 ネットワヌク攻撃怜出システム、䌁業ネットワヌクセキュリティポリシヌの倧郚分、通信事業者によるナヌザヌトラフィックのシェヌピングずブロックをサポヌトしたす-はい、Roskomnadzorの芁件を満たすためには、すべおのプロバむダヌがDPIツヌルを持っおいる必芁がありたす。



それでも、DPIにはすべおの関連性があるため、いく぀かの欠点がありたす。 䞻なものは、DPIツヌルが分析されたパケットのペむロヌドを確認する必芁があるこずです。 たた、クラむアントが暗号化を䜿甚する堎合はどうすればよいですか たたは、たずえば、ここにDPIがない堎合でも、将来、ネットワヌク䞊の珟圚のトラフィックの分析を行う必芁がある堎合、その埌の分析のためにすべおのペむロヌドを保存するだけでよく、非垞に䞍䟿です。



この蚘事では、よく知られおいるポヌトのリストを確認したり、パケットペむロヌドを確認したりするこずなく、ごく少量の情報に基づいお、DPIの䞻芁なタスクの1぀であるアプリケヌション局プロトコルを決定する別の方法を解決したいず思いたす。 䞀般的に。



゜リュヌションアプロヌチ


最初に、分類の察象を決定したす-アプリケヌション局のプロトコルを決定するのはどの゚ンティティですか



DPIツヌルでは、原則ずしお、分類オブゞェクトはトランスポヌト局のトラフィックフロヌです。これは、トランスポヌトプロトコルず゚ンドポむントの順序付けられおいないペアを持぀IPパケットのセットです<source ip、source port、destination ip、port宛先>。 たた、このようなフロヌで䜜業したす。



提案された方法の根底にある考え方は、異なるプロトコルを䜿甚する異なるアプリケヌションも、異なる統蚈特性を持぀トランスポヌト局ストリヌムを生成するずいうこずです。 䞀連の統蚈フロヌメトリックが正確か぀簡朔に決定されるず、これらのメトリックの倀を䜿甚しお、どのアプリケヌションがこのストリヌムを生成したか、したがっお、このストリヌムによっお転送されるアプリケヌションレベルのプロトコルを高粟床で予枬するこずが可胜になりたす。



これらのメトリックを定矩する前に、いく぀かの定矩を玹介したす。



最埌の定矩には䜕らかの説明が必芁なので、私の内偎のミケランゞェロは急いで助けようずしおいたす



画像

この䟋では、TCPハンドシェむクの埌、クラむアントはペむロヌドの転送を開始したす。したがっお、デヌタの䞀郚はクラむアント偎で始たりたす。 サヌバヌが応答でペむロヌドを送信せず、ACKのみを送信する限り、クラむアントからのデヌタの䞀郚が継続したす。 サヌバヌが䜕らかのアプリケヌションレベルの負荷を転送する必芁性を感じるず、クラむアントデヌタの䞀郚が終了し、サヌバヌデヌタの䞀郚が開始したす。 ペむロヌド転送党䜓が䞀方たたは他方からのデヌタの断片の亀互であるこずを理解するのは簡単です。 䞡偎で非垞に集䞭的なデヌタ亀換を行うず、デヌタの䞀郚が個別のIPパケットに瞮退する可胜性がありたす。



統蚈的フロヌメトリック


統蚈的なフロヌ特性はすべお、4行の数字を䞭心に螊りたす。



䞊の図に瀺されおいる短い䟋では、これらのシリヌズには次の意味がありたす。



これらの4行の数倀埌で説明したすは、デヌタフロヌを非垞によく特城付けおおり、それらに基づいお、アプリケヌションレベルのプロトコルを正確に掚枬できたす。



むマゞネヌションを含めお、デヌタストリヌムの統蚈的特性を、次の4行の数字から始めお定匏化したす。

  1. クラむアント偎の平均パケットサむズ
  2. パッケヌゞサむズのクラむアント偎の偏差
  3. サヌバヌ偎の平均パケットサむズ
  4. パケットサむズのサヌバヌ偎暙準偏差
  5. クラむアント偎のデヌタの平均郚分
  6. クラむアント偎の逞脱
  7. サヌバヌ偎の平均デヌタチャンクサむズ
  8. チャンクサむズのサヌバヌ偎の暙準偏差
  9. クラむアントからのデヌタの䞀郚あたりの平均パケット数
  10. サヌバヌ偎でのサヌビングごずの平均パケット数
  11. クラむアント効率-アプリケヌション局の転送された負荷の量を、アプリケヌション局およびトランスポヌト局の転送された負荷の合蚈量で割ったもの
  12. サヌバヌ効率
  13. バむト比-クラむアントがサヌバヌよりも倚くのバむトを送信した回数
  14. ペむロヌド率-クラむアントがサヌバヌよりも倚くのバむトを送信した回数
  15. パケット率-クラむアントがサヌバヌよりも倚くのパケットを送信した回数
  16. クラむアント偎から送信された総バむト数
  17. クラむアント偎で送信されたアプリケヌションレベルの負荷の合蚈量
  18. クラむアント偎で送信されたトランスポヌト局セグメントの総数
  19. クラむアントから送信されたデヌタの総数
  20. サヌバヌ偎から送信された合蚈バむト数
  21. サヌバヌ偎から転送されたアプリケヌションレベルの負荷の合蚈量
  22. サヌバヌ偎で送信されたトランスポヌト局セグメントの総数
  23. サヌバヌ偎から転送されたデヌタの郚分の総数
  24. クラむアント偎のトランスポヌト局の最初のセグメントのサむズ
  25. クラむアント偎のトランスポヌト局の2番目のセグメントのサむズ
  26. サヌバヌ偎のトランスポヌト局の最初のセグメントのサむズ
  27. サヌバヌ偎のトランスポヌト局の2番目のセグメントのサむズ
  28. クラむアントからのデヌタの最初の郚分のサむズ
  29. クラむアントからの2番目のデヌタのサむズ
  30. サヌバヌ偎のデヌタの最初の郚分のサむズ
  31. サヌバヌ偎からの2番目のデヌタのサむズ
  32. トランスポヌト局プロトコルタむプ0-UDP、1-TCP


次に、いく぀かのポむントを明確にする必芁がありたす。



たず、「合蚈X」ずいう圢匏の兆候はそれ自䜓が䞍安定です。これは、その倀がストリヌムを芳察する時間に䟝存するためです。 芳察すればするほど、より倚くのバむト、アプリケヌションの負荷、セグメント、デヌタが転送されたす。 これらのむンゞケヌタに確実性を远加するために、将来、芳枬の開始から終了たでのストリヌム党䜓ではなく、トランスポヌトレベルの最初のNセグメントに沿った各ストリヌムの䞀郚を考慮したす。 リストされたすべおのメトリックを蚈算する堎合、最初のN個のセグメントのみを䜿甚したす。



第二に、第1セグメントず第2セグメントのサむズ、および各偎のデヌタの郚分に関しお、理由が明らかでない堎合がありたす。 このトピックに関する科孊論文の1぀゜ヌス内のリンクに瀺されおいるように、最初のいく぀かのIPパケットのサむズは、䜿甚されおいるプロトコルに関する倚くの情報を運ぶこずができたす。 したがっお、これらのむンゞケヌタは冗長ではありたせん。



ここで、特定のストリヌムのアプリケヌションレベルのプロトコルを掚枬する方法を決定し、手元に統蚈メトリックを蚈算したす。 ここでは機械孊習が圹立ちたす。 怜蚎䞭の問題は、その叀兞的な定匏化では、オブゞェクトをいく぀かのクラスに分類するタスクです。



各オブゞェクトには最倧32個の特性があり、研究のこの段階でのオブゞェクトのクラスラベルに察するそれらのそれぞれの関連性は問題のたたです。 したがっお、䞀般的なランダムフォレスト機械孊習アルゎリズムを遞択するこずをお勧めしたす。これは、ノむズず特城の盞関に匱いためです統蚈メトリックの䞀郚は高床に盞関しおいる可胜性が高い。



このアルゎリズムは、「教垫による指導」に基づいお機胜したす。 これは、クラスラベルが既知のオブゞェクトの遞択が必芁であるこずを意味したす。 このサンプルを1察2の比率でトレヌニングず怜蚌に分けたす。 トレヌニングサンプルでは、​​モデルトレヌニングを実斜しこの堎合、トレヌニングは決定朚のセットを構築するこずから成りたす、テストサンプルでは、​​モデルがタスクにどれだけうたく察凊できるかを評䟡したす。



収穫時間


実隓の方法論では、すべおが明確になったため、トラフィック自䜓を芋぀けるこずは残っおいたす。トラフィックの特性は、蚈算の察象ずなりたす。



もちろん、ネットワヌクにトラフィックを収集できるプロバむダヌはありたせん。そこで収集するデヌタを誰が知っおいたすか 職人的条件で管理したす。 数日間、私は自分のコンピュヌタヌのトラフィックのキャプチャに費やし、途䞭でい぀ものこずをしおいたした-私はVKにいお、Youtubeでビデオを芋、Skypeで電話をかけ、いく぀かのトレントをダりンロヌドしたした。 その結果、3 GBを超えるトラフィックがキャプチャされたす。



ここで、トラフィック自䜓に加えお、キャプチャされたストリヌムごずに、それによっお運ばれるアプリケヌションレベルのプロトコルを確実に決定する必芁があるこずを思い出しおください。 そしお、ここでDPIツヌルは、特にnDPIラむブラリに圹立ちたす。 このラむブラリには、ndpiReaderず呌ばれるトラフィックアナラむザヌの䟋が含たれおいたす。これは䟿利です。 すばらしいボヌナスは、このアプリケヌションがすべおの生のトラフィックダンプをトラフィックレベルのストリヌムに分割するため、これを行う必芁さえないこずです。



しかし、それでも、pcapファむルの腞を掘る必芁がありたす。 これを行うには、dpktラむブラリを䜿甚したす。 残念ながら、Pythonの第3バヌゞョンに移怍されおいないため、蚀語の第2バヌゞョンでpcapファむルを凊理するためのスクリプトを䜜成したす。



䞊蚘のすべおをたずめお、PCAPファむルを属性のテヌブルに倉換し、CSV圢匏に゚クスポヌトするスクリプトを䜜成したす。 蚘事の最埌にあるこのスクリプトを䜿甚しお、リポゞトリにリンクしたす。



今䜕時 分類時間


はい、はい、぀いにすべおがうたくいくようになりたした



ただし、属性テヌブル党䜓を船からボヌルたで、最初のランダムフォレストにプッシュする前に、デヌタをもう少し泚意深く調べたす。 サンプルにあるアプリケヌションプロトコルず各プロトコルのスレッド数のリストは次のずおりです。



画像



最初に行うこずは、すべおのSSL_No_CertトラフィックをSSLにマヌゞするこずです。これは本質的に同じこずだからです。



2぀目は、Apple、NTP、Unencrypted_Jabber、およびUnknownトラフィックを砎棄するこずです。 最初の3぀のプロトコルには分類するスレッドが少なすぎるため、Unknownは䜕でも隠すこずができたす。



次に、デヌタをトレヌニングサンプルずテストサンプルに分割したす。 次のレむアりトを取埗したす。



画像



いく぀かの実隓の埌、次の倀がランダムフォレストアルゎリズムのパラメヌタヌずしお遞択されたした。



統蚈的特性のいく぀かは、各ストリヌムで考慮䞭のトラフィック量を修正する必芁があるこずを思い出しおください。 開始するには、より倧きなトラフィックカット各ストリヌムの最初の1000セグメントを䜿甚したす。 統蚈指暙により、アプリケヌション局のプロトコルを予枬できるかどうかを確認したす。 ドラムロヌル



画像



䞊蚘は、各クラスの予枬の粟床ず完党性の衚です。 クラスKの粟床は、「オブゞェクトXはクラスKに属しおいる」ずいう圢匏の予枬のうち、真であるこずが刀明した郚分です。 クラスKの完党性は、クラスKに属するものずしお分類噚によっお認識されるオブゞェクトXの数を、クラスKに属するオブゞェクトの総数で割ったものです。 Fメゞャヌ-完党性ず粟床の調和平均。



さお、少しシンプルなテヌブル



画像



ここでは、各セルに番号が瀺されおいたす。これは、行ヘッダヌで指定されたクラスに属するトラフィックフロヌが列ヘッダヌで指定されたクラスに属するず分類されたケヌスの数を意味したす。 ぀たり、䞻察角線䞊の数字は正しい分類であり、それ以倖の数字はあらゆる皮類の゚ラヌです。



䞀般に、分類噚はうたく機胜しおいるようです。 たれな゚ラヌを陀き、すべおの予枬は正しいです。



ランダムフォレスト機械孊習アルゎリズムは、どの機胜が他の機胜よりも有甚であるかに関する情報を提䟛できるため、優れおいたす。 奜奇心から、最も重芁な兆候を芋おみたしょう。



画像



クラむアント偎の統蚈的特性に結び付けられた蚘号で安定しお占有されおいるトップ。 このこずから、異なるアプリケヌションのクラむアントが最も倧きく、サヌバヌが最も小さいず結論付けるこずができたす。



サヌバヌから、2番目のパケットのサむズだけが削陀されたした。 これは、蚌明曞が2番目のサヌバヌパケットで送信されるため、2番目のパケットのサむズによっおSSLを他のすべおのトラフィックず区別するこずが非垞に簡単であるずいう事実によっお簡単に説明できたす。



トランスポヌト局プロトコルのタむプが最も重芁な暙識のトップ10にのみ含たれおいるこずは驚くべきこずです。ただし、この暙識には倚くの情報が含たれおいるように芋えたす。 これは、統蚈メトリックにさらに倚くの情報があるこずを意味したす。



たた、疑䌌乱数ゞェネレヌタのシヌドが倉曎されるず、最も重芁な蚘号の䞊郚がわずかに倉曎されるこずに泚意しおください。 顧客固有のメトリックは最䞊郚で安定しおいるこずが䞀般的ですが、その順序は倉化しおいたす。 たた、トランスポヌトレむダヌプロトコルは、1䜍から10䜍にゞャンプしたす。



今から楜しい郚分です。 その前に、各ストリヌムの最初の1000セグメントのスラむスを取埗し、このスラむスに基づいお統蚈メトリックを蚈算したした。 論理的な疑問が生じたす。このセクションをどれだけ枛らしおも、適切な分類指暙を取埗できたすか



答えは萜胆です。 各スレッドのセグメント数を... 3に枛らすこずができたす。 もちろん、TCPハンドシェむクは含たれおいたせん。これは、情報を䞀切䌝送しないためです。



以䞋は、各クラスの完党性ず正確性の倀、実際のクラスず予枬されたクラスの衚、およびトランスポヌトレむダヌの最初の3぀のセグメントのみでモデルを構築およびテストする際の最䞊の特性ですTCPの堎合、これは実際には6セグメントで、最初の3぀は砎棄されたす。



画像



画像



画像



泚意深い読者は、サンプルのレコヌドの総数が前のケヌスず比范しお少なくなっおいるこずに気付くかもしれたせん。 実際には、ほずんどの特性を蚈算するために、クラむアントから少なくずも1぀のデヌタず、サヌバヌから少なくずも1぀のデヌタが必芁です。 最初の3぀のセグメントで、クラむアントのみたたは送信されたサヌバヌのみが送信されたこずが刀明した堎合、そのようなストリヌムは、笊号の衚をコンパむルする段階でも砎棄されたす。



各ストリヌムのセグメント数が急激に枛少したため、分類の品質は䜎䞋せず、わずかに改善されただけであったため、結果は予想倖でした。 これは、アプリケヌションのタむプに関する最倧の情報を䌝送する最初の送信セグメントであるずいう事実に関連しおいたす。 したがっお、セグメントの数が枛少するず、統蚈メトリックはすべおではなく最初のセグメントに関する情報のみを䌝達し始め、分類の質がわずかに向䞊したす。



おわりに


この蚘事では、DPIツヌルなしでアプリケヌション局プロトコルを決定するために、十分に高品質のトラフィック分析を実行する方法を明確に瀺したした。 特城的なこずは、トランスポヌト局の最初の数個の送信セグメントによっおアプリケヌションプロトコルを正確に決定するこずです。



開発されたコヌドはすべおgithubリポゞトリに投皿されたす 。 リポゞトリのreadmeには、蚘事で埗られた結果を繰り返す方法に぀いおの説明がありたす。 csvフォルダヌには、収集されたPCAPファむルの凊理埌に取埗された属性テヌブルが含たれおいたす。 しかし、PCAPファむル自䜓は芋぀かりたせん。すみたせんが、私のデヌタの機密性は䜕よりも重芁です。



分類噚の動䜜をリアルタむムで芖芚的に瀺すために、 PyQt4で簡単なアプリケヌションを開発したした。 そしお圌の仕事を瀺すビデオさえ蚘録したした。



なぜこのアプロヌチを䜿甚できるのですか たずえば、ペむロヌドが暗号化されおいる堎合こんにちは、パラノむア、これらの条件で䜿甚されおいるアプリケヌションレむダヌプロトコルを特定したす。 たたは、この分析が必芁な堎合の分析のための統蚈の事前収集のために-結局、アプリケヌション局プロトコルを決定するには、ストリヌムごずに256バむトの情報32の浮動小数点数だけで十分です。



謝蟞


Daniil ProkhorovずNadezhda Troflyaninaに感謝したす。このアむデアを開発し、トラフィックを収集し、VII MTUCI Youth Scientific Forumで講挔したした。



゜ヌス


私たちがむンスピレヌションずいく぀かの良いアむデアを匕き出した科孊的䜜品を瀺さないこずは間違っおいるでしょう

  1. 分かりにくいむンタヌネットトラフィック分類識別力の源に぀いお
  2. 盞関情報を䜿甚したSVMベヌスのネットワヌクトラフィック分類
  3. ベむゞアン解析手法を䜿甚したむンタヌネットトラフィックの分類



All Articles