Decoder: Entschlüsseln eingehender Pakete

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

Ab NetWitness Suite 11.0 können Administratoren einen Packet Decoder so konfigurieren, dass eingehende Pakete mithilfe des Befehls sslKeys entschlüsselt werden können. Für die aktivierten Parser ist dann die unverschlüsselte Paketnutzlast sichtbar und die Metadaten können entsprechend erstellt werden. Wenn der Decoder nicht so konfiguriert ist, dass eingehende Pakete entschlüsselt werden, sind für die meisten aktivierten Parser nur verschlüsselte, unleserliche Daten sichtbar, und es können keine aussagekräftigen Metadaten erstellt werden.

Hinweis: Wenn FIPS aktiviert ist, können nur von FIPS zugelassene Verschlüsselungsverfahren verwendet werden.

Mit sslKeys können Pre-Master-Schlüssel oder private Schlüssel in den Decoder hochgeladen werden, sodass erfasste verschlüsselte Pakete, die mit diesen Schlüsseln übereinstimmen, vor dem Analysieren entschlüsselt werden können. Administratoren konfigurieren den Decoder durch Eingabe des Befehls sslKeys in der NwConsole-Befehlszeilenoberfläche oder in der RESTful-Schnittstelle des Decoders.

Dies ist ein Beispiel für die Befehlszeilenoberfläche.

Das Formular der RESTful-Schnittstelle am Pfad: /decoder/sslkeys ermöglicht das Hochladen eines einzelnen PEM-kodierten privaten Schlüssels, einer einzelnen Datei mit mehreren, verketteten privaten Schlüsseln oder einer einzelnen Datei mit mehreren Pre-Master-Schlüsseln.

Dies ist ein Beispielformular der RESTful-Schnittstelle.

Die Pakete werden zwar in der Analysephase entschlüsselt, aber nur die verschlüsselten Pakete werden auf die Festplatte geschrieben. Der passende Pre-Master-Schlüssel für die Entschlüsselung wird in den Metaschlüssel tls.premaster geschrieben, den Analysten anschließend zum Anzeigen unverschlüsselter Pakete nach Bedarf nutzen können.

Weitere Informationen für Administratoren zum Konfigurieren der Entschlüsselung der eingehenden Pakete und für Analysten zum Anzeigen unverschlüsselter Pakete nach Bedarf werden unten genannt.

Überlegungen zur Performance

Das Entschlüsseln der Pakete in Echtzeit verursacht zusätzliche Last in der Analysephase. Planen Sie die Implementierung dieser Funktion sorgfältig, damit die eingehende Datenverkehrsbandbreite nicht über die verfügbare Rechenleistung hinausgeht. Möglicherweise benötigen Sie mehr Decoder zum Entschlüsseln von Datenverkehr, als Sie ohne die Entschlüsselung benötigen würden.

Auf einem Decoder erfasste Pakete haben in der Regel ein Timeout von ca. 60 Sekunden in der Zusammenstellungsphase, bevor sie an den Analyseschritt gesendet werden. Wenn beim Decoder der Arbeitsspeicher aufgrund der sehr hohen Bandbreite knapp wird, kann sich die Lebensdauer der Pakete im Assembler verkürzen. Um diese Situation zu vermeiden, können Sie einen längeren Timeoutwert konfigurieren und die Menge des Arbeitsspeichers erhöhen, der für die Pakete in der Zusammenstellungsphase zur Verfügung steht. Darüber hinaus muss der Decoder den Dechiffrierschlüssel vor der Analysephase erhalten, um die Entschlüsselung der Pakete durchführen zu können.

Hinweis: Derzeit können nur TLS-Protokolle der Version 1.2 und früher entschlüsselt werden.

Ohne geladene Feeds, mit folgenden aktivierten Parsern und bei einem Anteil von 50 % von zu entschlüsselnden Sitzungen, kann ein Decoder Datenverkehr mit 3 Gbit/s verarbeiten.

                                                                                                                                                                                       
Name des ParsersBeschreibung
SYSTEMDetails zu Sitzung
NETWORKNetzwerkschicht
ALERTSWarnmeldungen
GeoIPGeografische Daten basierend auf ip.src und ip.dst
HTTPHyper Text Transport Protocol (HTTP)
HTTP_LuaHyper Text Transport Protocol (HTTP) Lua
FTPFile Transfer Protocol (FTP)
TELNET TELNET-Protokoll

SMTP

Simple Mail Transport Protocol (SMTP)

POP3Post Office Protocol (POP3)

NNTP

Network News Transport Protocol (NNTP)

DNSDomain Name Service (DNS)

HTTPS

Secure Socket Layer (SSL) Protocol

MAILE-Mail-Standardformat (RFC822)

VCARD

Extrahiert den vollständigen Namen und E-Mail-Informationen für VCARD.

PGPIdentifiziert PGP-Blöcke innerhalb des Netzwerkverkehrs.

SMIME

Identifiziert SMIME-Blöcke innerhalb des Netzwerkverkehrs.

SSHSecure Shell (SSH)

TFTP

TFTP (Trivial File Transfer Protocol)

DHCPDynamic Host Configuration Protocol (DHCP und BOOTP)

NETBIOS

Extrahiert NETBIOS-Computernameninformationen.

SNMPSNMP (Simple Network Management Protocol)

NFS

Network File System (NFS)-Protokoll

RIPRouting Information Protocol (RIP)
TDSMSSQL- und Sybase-Datenbankprotokoll (TDS)

TNS

Oracle-Datenbankprotokoll (TNS)

IRCInternet Relay Chat (IRC)-Protokoll

RTP

Real Time Protocol (RTP) für Audio/Video

SIPSession Initiation Protocol (SIP)

H323

H.323-Telekonferenzprotokoll

SCCPCisco Skinny Client Control Protocol

GTalk

Google Talk (GTalk)

VlanGreVLAN-ID und GRE/EtherIP-Tunneladressen

BITTORRENT

BitTorrent-Dateifreigabeprotokoll

FIXFinancial Information eXchange Protocol

GNUTELLA

Gnutella-Dateifreigabeprotokoll

IMAPInternet Message Access Protocol

MSRPC

Microsoft Remote Procedure Call-Protokoll

RDPRemote Desktop Protocol

SHELL

Command Shell Identification

TLSv1TLSv1

SearchEngines

Ein Parser, der Suchbegriffe extrahiert.

FeedParserExterner Feedparser

Chiffrierschlüssel

Mit dem Befehl sslKeys können zwei Arten von Chiffrierschlüsseln verwendet werden:

  • Pre-Master-Schlüssel: der symmetrische Schlüssel, der im TLS-Nutzlaststream für die Verschlüsselung und Entschlüsselung verwendet wird.
  • Privater Schlüssel: der asymmetrische private Schlüssel, der den Pre-Master während des TLS-Handshake verschlüsselt.

Pre-Master-Schlüssel

Der Pre-Master-Schlüssel wird per Zufallsprinzip generiert und gilt nur für die Lebensdauer einer bestimmten TLS-Sitzung. Es gibt in der Regel keine gute Möglichkeit, den Pre-Master-Schlüssel rechtzeitig für den Analyseschritt zu einem Decoder zu bringen. Jedoch können Chrome und Firefox die Pre-Master-Schlüssel, die sie generieren, in eine Datei schreiben. Dies ist nützlich für Testzwecke. Um Ihren Browser dafür zu konfigurieren, erstellen Sie eine Umgebungsvariable namens SSLKEYLOGFILE und weisen Sie ihr den Pfadnamen der Datei zu, in die die Schlüssel geschrieben werden sollen. Der Decoder akzeptiert die Datei und verwendet alle Dechiffrierschlüssel in der Datei für jeglichen verschlüsselten Datenverkehr, den er erfasst.

Dies ist ein Beispiel für ein NwConsole-Skript, mit dem die Datei in einen Decoder hochgeladen wird:

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

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

Dies ist ein Beispiel für einen curl-Befehl (mit dem RESTful-Port), mit dem die Datei in einen Decoder hochgeladen wird:

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

Nachdem die symmetrischen Schlüssel hochgeladen wurden, werden sie sofort für alle erforderlichen Entschlüsselungsvorgänge verwendet. Symmetrische Schlüssel werden im Arbeitsspeicher gespeichert und es gibt eine Begrenzung, wie viele jeweils gleichzeitig gespeichert werden können. Wenn viele Schlüssel hinzugefügt werden, werden die jeweils ältesten Schlüssel gelöscht. Sie können auch Pre-Master-Schlüssel hinzufügen, indem Sie einfach die Parameter random und premaster an sslKeys übergeben.

Private Schlüssel oder PEM-Dateien

Private Schlüssel werden in der Regel in PEM-Dateien gespeichert und sind die asymmetrischen Schlüssel, die von den Diensten generiert werden, die TLS-Datenverkehr entgegennehmen. Diese Schlüssel werden während des TLS-Handshake verwendet, um den symmetrischen Pre-Master-Schlüssel zu verschlüsseln, der für den Rest der Nutzlastverschlüsselung verwendet wird.

Wenn Sie z. B. einen Webserver haben und dessen Datenverkehr prüfen möchten, müssen Sie den privaten Schlüssel hochladen, den er zum Verschlüsseln des Datenverkehrs verwendet. Sie müssen dies nur einmal durchführen, da er dauerhaft gespeichert wird (bzw. solange, bis er durch einen Löschbefehl entfernt wird). Private Schlüssel werden vor der Speicherung automatisch verschlüsselt, um sie zu schützen. Nach dem Upload müssen Sie einen Befehl zum Neuladen des Parsers ausgeben, damit der neu installierte Schlüssel für den HTTPS-Parser sichtbar wird. Jetzt können alle TLS-Handshakes, die den privaten Schlüssel verwenden, vom Decoder entschlüsselt werden.

Hinweis: Nicht alle Verschlüsselungssuites verwenden „bekannte“ private Schlüssel (z. B. den kurzlebigen Diffie Hellman). Mit solchen Verschlüsselungsverfahren verschlüsselter Datenverkehr kann nur entschlüsselt werden, wenn der Pre-Master-Schlüssel auf den Decoder hochgeladen wurde, bevor die Sitzung analysiert wird.

Im Folgenden sind Beispielbefehle aufgeführt, mit denen eine PEM-Datei für die Entschlüsselung hochgeladen wird.

Mit NwConsole:

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

Über die RESTful-Schnittstelle (der Parameter pemFilename muss in der URL enthalten sein):

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"

Hochladen mehrerer Pre-Master- und privater Schlüssel

Über das Formular der RESTful-Schnittstelle können Sie mehrere Schlüssel, Pre-Master und privat, gleichzeitig hochladen.

  1. Öffnen Sie die RESTful-API in Ihrem Browser und navigieren Sie zu diesem Pfad im Decoder, den Sie konfigurieren möchten: /decoder/sslkeys.
    Dies ist ein Beispielformular der RESTful-Schnittstelle.
  2. Klicken Sie neben Datei 1 hochladen auf Datei auswählen und suchen Sie die Pre-Master-Schlüsseldatei oder PEM-Datei, die Sie in das lokale Dateisystem hochladen möchten.
  3. (Optional) Wiederholen Sie dies für Datei 2 hochladen und Datei 3 hochladen.
    Dies ist ein Beispielformular der RESTful-Schnittstelle mit zusätzlichen Uploads.
  4. Klicken Sie auf Hochladen.
    Die Dateien werden in den Decoder hochgeladen und die Ergebnisse werden im Formular angezeigt.
    Dies ist ein Beispielformular der RESTful-Schnittstelle mit Ergebnissen.

Parameter für das Verwalten von Schlüsseln

Der Befehl sslKeys hat verschiedene Parameter für das Verwalten von Pre-Master- und privaten Schlüsseln. Dies ist die vollständige Liste der Parameter:

                                   
ParameterBeschreibung
clear Entfernt alle Pre-Master-Schlüssel aus dem Arbeitsspeicher. Löscht keine PEM-Dateien, die im System installiert sind.
maxKeys Ändert die maximale Anzahl der Pre-Master-Schlüssel, die im Arbeitsspeicher gespeichert sind.
listPems Gibt eine Liste aller installierten PEM-Dateien mit privaten Schlüsseln zurück.
deletePem Löscht die benannte PEM-Datei aus dem Dateisystem. Sie können diesen Parameter mehr als einmal übergeben, um mehrere Dateien zu entfernen.
random Der zufällige Hash-Wert zum Identifizieren des Pre-Master-Schlüssels.
premaster Der Pre-Master-Schlüssel, der für den vorherigen Parameter random installiert wird. Sie müssen paarweise auftreten und random muss der erste sein.

Rückgabewerte

Die meisten sslKeys-Befehle geben statistische Name/Wert-Paare zu den Pre-Master-Schlüsseln im Arbeitsspeicher zurück. Die zurückgegebenen Statistiken sind in der folgenden Tabelle aufgeführt.

                           
NameBeschreibung
added Die Anzahl der gerade während dieses Befehls hinzugefügten Pre-Master-Schlüssel.
total Die Gesamtzahl der im Arbeitsspeicher geladenen Pre-Master-Schlüssel.
agedOut Die Gesamtzahl der Pre-Master-Schlüssel, die während dieses Befehls entfernt wurden; dies ist keine Lebensdauerstatistik.
maxKeys Die aktuelle maximal zulässige Anzahl an Pre-Master-Schlüsseln.

Anzeigen von unverschlüsseltem Datenverkehr

Wenn Pakete während der Analysephase entschlüsselt werden, werden die verschlüsselten Pakete auf die Festplatte geschrieben und der passende Pre-Master-Schlüssel für die Entschlüsselung wird in den Metaschlüssel tls.premaster geschrieben. Analysten können die unverschlüsselten Pakete dann mit dem Metaschlüssel tls.premaster anzeigen.

Eine Decoder-API, mit der Sie unverschlüsselte Pakete anzeigen können, ist der RESTful-Service /sdk/content. Sie müssen die Sitzungs-ID der verschlüsselten Pakete und den Parameter flags, der auf den Wert 128 (oder 0x80 im Hexidezimalformat) maskiert ist, kennen. Gehen Sie in Ihrem Browser zur RESTful-Schnittstelle des Decoders und geben Sie folgenden Befehl ein, wobei Sie die tatsächliche Sitzungs-ID statt <id> verwenden:

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

Der Decoder gibt eine einfache Webseite zurück und zeigt die Pakete an, nachdem sie entschlüsselt wurden.

Wenn Sie wissen möchten, wie die Pakete verschlüsselt aussehen, geben Sie einen der folgenden Befehle ein, wobei Sie statt <id> die Sitzungs-ID verwenden:

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

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

Weitere Informationen zum Service /sdk/content service finden Sie auf der Anleitungsseite für /sdk content.

You are here
Table of Contents > Decoder und Log Decoder – zusätzliche Verfahren > Entschlüsseln eingehender Pakete

Attachments

    Outcomes