シスコは、企業や組織に対応した「新しい時代のネットワーキング」
このブログでは、以前に NetFlow 技術を使ってトラフィックの異常、すなわちセキュリティ インシデントを見つける取り組みを紹介しました(「ネットワーク内部を可視化し、異常検出を行うフローコレクター」)。その記事では、Flowmon Networks 社の製品を例に、可視化に加えてネットワーク全体のセキュリティ インシデント検知のメカニズムを紹介しましたが、暗号化トラフィックに特化した機能は含まれていませんでした。
今回は、「暗号化トラフィックを復号化せずに、どうやって見つけるの?」という素朴な疑問に対して、スイッチやルータの観点から、具体的に紹介したいと思います。メカニズムの詳細は、別のブログ「暗号化されたマルウェアトラフィックを復号化せずに検出」やホワイトペーパーでも詳しく紹介されていますので、そちらも併せて参照ください!
Cisco Catalyst 9300 の IOS-XE 16.6.1 のコンフィグガイド「Network Management Configuration Guide, Cisco IOS XE Everest 16.6.1 (Catalyst 9300 Switches) Chapter: Configuring Encrypted Traffic Analytics」
設定は、ものすごくシンプルです。Flexible NetFlow の CLI ではなく、独自の形式で設定行数を減らしています。概要は、コレクターの IP アドレスやポート番号、Inactive Timer を設定し、インターフェイスごとに起動するというものです。
et-analytics
ip flow-export destination <Collector-IPAddress> 2055
inactive-timeout 10
!
interface GigabitEthernet1/0/1
switchport mode access
et-analytics enable
※動作確認しているIOS-XEは、以下のバージョンです。
Cat9300-1#show version | i bin
System image file is "flash:cat9k_iosxe.16.06.01.SPA.bin"
フローデータとして送信されるデータは、以下のコマンドで確認できます。SPLT(Sequence of Packet Length and Time)、IDP(Initial Data Packet)およびBD(Byte Distribution)のExport-IDが確認できます。
Cat9300-1#show flow exporter export-ids netflow-v9 | i 4494
ipv4 splt : 44941
ipv4 idp : 44940
ipv4 bd : 44944
さて、設定を行うと早速、NetFlow によってパケットが送信されてきます。実際には、NetFlow v9 を使って、2 つのテンプレートと、それに対応するデータが入っています。Wireshark は、ポート番号 2055 をフィルタしておくのがおすすめです。
それぞれのテンプレートとデータは、以下のとおりです。
まずは 40 バイト長の 44941、つまり SPLT(Sequence of Packet Lengths and Times)が、テンプレートとデータともに確認できます。
次に、1300 バイト長の 44940、つまり InitialDataPacket(IDP)も、テンプレートとデータともに確認できます。データ フロー セットの中身をみると、確かに 1300 バイト詰まってます。
SPLT については、オープンソースで公開されているツール「Joy」を使って、実際に人間が見てわかりやすい形で表示できます。「SPLT = パケットの長さと時間の連続したもの」ということで、ポート番号 443 で暗号化された TLS 通信が、「普通らしい」のか「異常らしい」のかを判定するために、非常に有用なテレメトリ情報です。
※Joy(https://github.com/cisco/joy): ネットワーク フロー データやインフラフ ロー データのキャプチャと分析を行うためのパッケージ。ネットワーク研究、フォレンジックス、セキュリティ モニタリングが主な用途とされ、オープンソースで公開されている。
以下の 2 つは、宛先ポート番号 443 のフロー情報を Joy で可視化したものです。左から右に向かって時間が経過し、上半分が送信、下半分が受信、線の長さはそれぞれのパケット長を表しています。例 1 は、私のパソコンと適当なサーバとのウェブ通信、例 2 は TLSで暗号化された、とあるマルウェアのサンプルです。技術的な知識がある方でしたら、例 2 のようなポート 443 宛ての通信は「異常っぽい」と気になるのではないでしょうか?
例1) 私のパソコンと適当なサーバとのウェブ通信 | 例2) とある暗号化されたマルウェア |
---|---|
トラフィックのふるまいを見て、普通か異常か、を完璧に判定することは実際には非常に難しいのは、言うまでもありません。このブログでは SPLT を特に紹介しましたが、他にもさまざまな要素を掛け合わせていくことで、精度は高まります。また、判定するロジックが、これまでのオンプレミスに配置された静的な条件でのみ動作するのではなく、クラウドと連携することで、日々学習されている高い精度をもった判定ロジック(Classifier)を活用できるようになりました。
分析や高い精度での判定ロジックについては、これから各社各様に進化していく部分であると思いますが、ネットワーク基盤も、トラフィックのふるまいを可視化するための新しいテレメトリ情報を提供することで、新時代の脅威に対抗していこうとしています。IOS-XE16.6.1 は、まだその入り口にすぎませんが、非常に画期的なアプローチであることはご理解いただけたのではないでしょうか?是非、今後の機能拡張にもご注目ください!