Decoder:着信パケットの復号

Document created by RSA Information Design and Development on Apr 19, 2018
Version 1Show Document
  • View in full screen mode
 

NetWitness Suite 11.0以降では、管理者はsslKeysコマンドを使用してPacket Decoderが着信パケットを復号するように構成できます。有効なパーサは、暗号化されていないパケット ペイロードを調べ、それに応じてメタデータを作成します。Decoderが着信パケットを復号するように構成されていない場合、ほとんどの有効なパーサは、暗号化されたガベージしか調べないため、意味のあるメタデータを作成できません。

注:FIPSが有効になっている場合、FIPSによって承認された暗号のみが複合化の対象になります。

sslKeysコマンドを使用すると、プレマスター キーまたはプライベート キーをDecoderにアップロードし、キーに一致するキャプチャされた暗号化パケットを解析前に復号できます。Decoderを構成するには、NwConsoleコマンド ラインコマンド ライン インタフェースまたはDecoder RESTfulインタフェースを使用してsslKeysコマンドを入力します。

これは、コマンド ライン インタフェースの例です。

/decoder/sslkeysにあるRESTfulインタフェース フォームを使用すると、単一のPEMエンコードされたプライベート キー、複数の連結連結されたプライベート キーを含む単一のファイル、または複数のプレマスター キーを含む単一のファイルをアップロードできます。

これは、RESTfulインタフェース フォームの例です。

パケットは解析段階で復号されますが、ディスクに書き込まれるのは暗号化されたパケットのみです。復号で使用される一致したプレマスター キーはtls.premasterメタ キーに書き込まれます。アナリストはこのメタ キーを使用して、後でオン デマンドで暗号化されていないパケットを表示できます。

以下では、管理者が着信パケットの復号を構成する方法と、アナリストが暗号化されていないパケットをオン デマンドで表示する方法について詳しく説明します。

パフォーマンスに関する考慮事項

パケットをリアルタイムで復号するには、解析段階で追加の処理が必要になります。この機能を実装する前に、着信トラフィックの帯域幅が使用可能な演算処理能力を超えないように慎重に計画してください。トラフィックを復号する場合、復号しない場合よりも多くのDecoderが必要になることがあります。

Decoderでキャプチャされたパケットは、通常、アセンブリ段階でのタイムアウト値が最大60秒に設定されており、それが過ぎると解析ステップに送られます。非常に大きい帯域幅によるメモリ負荷がDecoderにかかっている場合、アセンブラでのパケットの存続期間が短くなる可能性があります。このような状況を軽減するには、より長いタイムアウト値を設定し、アセンブリでパケットを保持するために使用できるメモリの量を増やします。また、Decoderはパケットの復号を実行するために、解析段階の前に復号キーを受信する必要があります。

注:現在、復号できるのはTLS 1.2以前のプロトコルだけです。

ロードされているフィードがなく、次のパーサが有効になっていて、セッションの50%が復号対象である場合、Decoderはトラフィックを3 Gbpsで処理できます。

                                                                                                                                                                                       
Parser名説明
SYSTEMセッション詳細
ネットワークネットワーク レイヤー
ALERTSアラート
GeoIPIp.srcとip.dstに基づく地理的データ
HTTPHTTP(ハイパーテキスト転送プロトコル)
HTTP_LuaHTTP(ハイパーテキスト転送プロトコル)Lua
FTPFTP(ファイル転送プロトコル)
TELNET TELNETプロトコル

SMTP

SMTP(Simple Mail Transfer Protocol)

POP3POP3(Post Office Protocol)

NNTP

NNTP(Network News Transport Protocol)

DNSDNS(ドメイン ネーム サービス)

HTTPS

SSL(Secure Socket Layer)プロトコル

MAIL標準のメール形式(RFC822)

VCARD

VCARDのフルネームとメール情報を抽出

PGPネットワーク トラフィック内のPGPブロックを識別

SMIME

ネットワーク トラフィック内のSMIMEブロックを識別

SSHSSH(Secure Shell)

TFTP

TFTP(Trivial File Transfer Protocol)

DHCPDHCP(ダイナミック ホスト構成プロトコル)

NETBIOS

NETBIOSコンピューター名情報を抽出

SNMPSNMP(Simple Network Management Protocol)

NFS

NFS(ネットワーク ファイル システムファイル システム)プロトコル

RIPRIP(Routing Information Protocol)
TDSTDS(MSSQLおよびSybaseデータベース プロトコル)

TNS

TNS(Oracleデータベース プロトコル)

IRCIRC(インターネット・リレー・チャット)プロトコル

RTP

音声/ビデオ用RTP(リアル タイム プロトコル)

SIPSIP(Session Initiation Protocol)

H323

H.323テレビ会議プロトコル

SCCPCisco Skinny Client Control Protocol

GTalk

GTalk(Google Talk)

VlanGreVlan IDおよびGRE/EtherIPトンネル アドレス

BITTORRENT

BitTorrentファイル共有プロトコル

FIX金融情報交換プロトコル

GNUTELLA

Gnutellaファイル共有プロトコル

IMAPインターネット メッセージ アクセス プロトコル

MSRPC

Microsoft Remote Procedure Callプロトコル

RDPリモート デスクトップ プロトコル

SHELL

コマンド シェルの識別

TLSv1TLSv1

SearchEngines

検索語句を抽出するパーサ

FeedParser外部のフィード パーサ

Encryption Keys

sslKeysコマンドは、次の2種類の暗号化キーを受け入れます。

  • プレマスター キー:TLSペイロード ストリームで暗号化と復号に使用される対称キー。
  • プライベート キー:プレマスターを暗号化するTLSハンドシェイクで使用される非対称プライベート キー。

プレマスター キー

プレマスター キーはランダムに生成され、ある特定のTLSセッションの間だけ存続する一時キーです。通常、解析ステップに間に合うようにDecoderにプレマスター キーを送信する良い方法はありません。ただし、ChromeとFirefoxはどちらも、生成したプレマスター キーをファイルに書き込むことができます。これはテストをする場合に便利です。ブラウザがこれを行うように構成するには、SSLKEYLOGFILEと呼ばれる環境変数を作成し、キーが書き込まれるファイルのパス名をその環境変数に割り当てます。Decoderは、書き込まれたファイルをそのまま受け入れ、キャプチャした暗号化トラフィックにファイル内のすべての復号キーを使用します。

これは、DecoderにファイルをアップロードするNwConsoleスクリプトの例です。

login <decoder>:50004 <username> <password>

send /decoder sslKeys --file-data=SSLKeys.txt

これは、curlコマンドとRESTfulポートを使用してDecoderにファイルをアップロードする例です。

curl -u "<username>:<password>" -H "Content-Type: application/octet-stream" --data-binary @"/path/SSLKeys.txt" -X POST "http://<hostname>:50104/decoder?msg=sslKeys"

アップロードされた対称キーは、すぐに必要な復号に使用されます。対称キーはメモリに格納されます。任意の時点で格納できるキーの数には制限があります。この制限を超えてキーが追加されると、最も古いキーが無効になります。プレマスター キーは、randomおよびpremasterパラメータをsslKeysに渡すだけで追加することもできます。

プライベート キーまたはPEMファイル

プライベート キーは、通常はPEMファイルに格納され、TLSトラフィックを受け入れるサービスによって生成される非対称キーです。これらのキーは、残りのペイロード暗号化に使用されるプレマスター対称キーを暗号化するために、TLSハンドシェイク中に使用されます。

たとえば、トラフィックを可視化したいWebサーバがある場合は、そのWebサーバがトラフィックの暗号化に使用するプライベート キーをアップロードする必要があります。プライベート キーは永続的に(または削除コマンドで削除されるまで)格納されるため、アップロードする必要があるのは1回だけです。プライベート キーは、格納される前に、それ自体を保護するために自動的に暗号化されます。アップロードした後、新しくインストールしたキーが、HTTPSパーサが新しくインストールされたキーを認識できるように、パーサの再ロード コマンドを実行する必要があります。これで、Decoderはこのプライベート キーを使用するすべてのTLSハンドシェイクを復号できるようになります。

注:すべての暗号スイートが「既知」のプライベート キーを使用するとは限りません(Ephemeral Diffie Hellmanなど)。このような暗号を含む暗号化トラフィックは、セッションの解析前にプレマスター キーをDecoderにアップロードしない限り、復号できません。

次に、復号に使用されるPEMファイルをアップロードするコマンドのサンプルをいくつか示します。

NwConsoleを使用する場合:

send /decoder sslKeys pemFilename=MyKey.pem --file-data=/path/MyKey.pem

RESTfulインタフェースを使用する場合(URLにpemFilenameパラメータを指定する必要があります):

curl -u "<username>:<password>" -H "Content-Type: application/octet-stream" --data-binary @"/path/MyKey.pem" -X POST "http://<hostname>:50104/decoder?msg=sslKeys&pemFilename=MyKey.pem"

複数のプレマスター キーとプライベート キーのアップロード

RESTfulインタフェース フォームを使用すると、複数のプレマスター キーとプライベート キーを同時にアップロードすることが簡単にできます。

  1. ブラウザでRESTful APIを開き、構成するDecoderで次のパスに移動します。/decoder/sslkeys
    これは、RESTfulインタフェース フォームの例です。
  2. アップロード ファイル1]の横にある[ファイルの選択]をクリックし、ローカル ファイルローカル ファイル システムファイル システムでアップロードするプレマスター キー ファイルまたはPEMファイルを見つけます。
  3. (オプション)[アップロード ファイル2]および[アップロード ファイル3]について同じ手順を繰り返します。
    これは、追加のアップロードを含むRESTfulインタフェース フォームの例です。
  4. アップロード]をクリックします。
    ファイルがDecoderにアップロードされ、結果がフォームに表示されます。
    これは、結果を含むRESTfulインタフェース フォームの例です。

キーを管理するためのパラメータ

sslKeysコマンドには、プレマスター キーとプライベート キーを管理するためのいくつかのパラメータがあります。次に、パラメータの完全な一覧を示します。

                                   
パラメータ説明
clear すべてのプレマスター キーをメモリから削除します。システムにインストールされているPEMファイルは削除されません。
maxKeys メモリに格納できるプレマスター キーの最大数を変更します。
listPems インストールされているすべてのプライベート キーPEMファイルの一覧を返します。
deletePem 指定されたPEMファイルをファイル システムから削除します。このパラメータを複数回渡すと、複数のファイルを削除できます。
random プレマスター キーを識別するために使用されるランダム ハッシュ。
premaster 上記のrandom パラメータでインストールされるプレマスター キー。これらのパラメータは組み合わせて使用する必要があり、randomを最初に指定する必要があります。

戻り値

ほとんどのsslKeysコマンドは、メモリ内のプレマスター キーに関する統計情報の名前と値のペアを返します。次の表に、統計情報の一覧を示します。

                           
名前説明
added このコマンドの実行中に追加されたプレマスター キーの数。
total メモリにロードされているプレマスター キーの合計数。
agedOut このコマンドの実行中に削除されたプレマスター キーの合計数。これは存続期間の統計ではありません。
maxKeys 現在のプレマスター キーの最大許容数。

暗号化されていないトラフィックの表示

パケットが解析段階で復号される場合、暗号化されたパケットはディスクに書き込まれ、復号に使用される一致するプレマスター キーはtls.premasterメタ キーに書き込まれます。アナリストは、このtls.premasterメタ キーを使用して、暗号化されていないパケットを表示できます。

暗号化されていないパケットを表示するために使用できるDecoder APIの1つは/sdk/content RESTfulサービスです。暗号化されたパケットのセッションIDと値128(または16進数の0x80)にマスクされたflagsパラメータを確認する必要があります。ブラウザでDecoder RESTfulインタフェースを開き、次のコマンドを入力します。<id>は実際のセッションIDに置き換えます。

http://<decoder>:50104/sdk/content&session=<id>&flags=128&render=text

Decoderは、復号された後のパケットを表示するシンプルなWebページを返します。

暗号化されたパケットがどのようなものか確認したい場合は、次のいずれかのコマンドを入力します。<id>はセッションIDに置き換えます。

http://<decoder>:50104/sdk/content&session=<id>&render=text

http://<decoder>:50104/sdk/content&session=<id>&flags&render=text

/sdk/contentサービスの詳細については、/sdk contentのマニュアル ページを参照してください。

You are here
Table of Contents > DecoderおよびLog Decoderのための追加の手順 > 着信パケットの復号

Attachments

    Outcomes