STRACE und HTTPREPLAY

Immer mehr Kommunikation wird über verschlüsselte Verbindungen abgewickelt. TLS und SSL sind hier die Schlagworte. "Sicher und Verschlüsselt" entzieht einem Admin natürlich auch einige Optionen der Fehlersuche. Es kommt aber doch vor, dass auch die Nutzdaten dieser Verbindungen analysiert werden müssen. es gibt eigentlich drei Möglichkeiten, diese Analyse durchzuführen.

  • NetMon 3 und Wireshark
    Beide Programme können SSL-Verbindungen analysieren, wenn man ihnen den "Private Key" des Servers bereit stellt. Voraussetzung ist aber, das auch der Key Exchange mitgeschnitten wurde. für den Einsatz mit Wireshark muss eine unter Windows als PFX-Datei exportierter Key mit OpenSSL erst noch in das PEM-Format konvertiert werden
  • Reverse Proxy
    Die meisten Firmen werden ihre Webserver und Webservices zumindest aus dem Internet über einen Reverse Proxy (z.B. TMG und UAG) veröffentlichen. Sofern das Backend auch einen Zugriff ohne SSL erlaubt (offloading), kann man so die Daten auf dem Teilstück zwischen Proxy und Webserver ablauschen. Das funktioniert aber nur für HTTPS aber nicht für die bei Lync interessanten SIP-Verbindungen über Port 5061 (TLS)
  • Fiddler
    Wenn man auf dem Client einen Proxy einbinden kann, dann ist Fiddler eine interessante Option. Er integriert sich sehr elegant in Windows, indem er als Proxy den Windows Proxy auf sich umstellt und quasi als "Man in the Middle" alle Pakete sieht. Fiddler kann auch HTTPS analysieren, indem er "on the fly" ein passendes Zertifikat erstellt und damit die Verbindung aufbricht und die Anforderungen schön anzeigt. Allerdings gibt es besonders in Verbindung mit NTLM als Anmeldeverfahren hier das Problem, dass Fiddler per Default einen "Proxy-Via" addiert, der dann NTLM bricht.

Aber damit sind die Möglichkeiten eines Administrators noch nicht erschöpft, wenn sowohl der Internet Explorer als auch viele andere Programme nutzen die gleiche Schnittstelle, um per TLS Daten zu senden und zu empfangen.

Aufzeichnen mit STRACE

Das Hilfsmittel dazu ist STRACE, welches einen Debugge für die IIS Socket-Schnittstelle ist und als freier Download von Microsoft erhältlich ist:

STRACE is a socket/SSL tracer designed to generate LOG für Internet Explorer
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=7643

Nach der Installation wird das Programm per Kommandozeile aus einer CMD-Box aufgerufen. Folgender Aufruf startet z.B. den Communicator mit aktiviertem STRACE:

C:\Program Files (x86)\STRACE>WITHDLL.EXE /d:STRACE.DLL "c:\Program Files (x86)\ Microsoft Lync\communicator.exe"

In der DOS-Box kann man dann erst mal nicht viel sehen:

Nachdem der Fehler oder der Zugriff erfolgt sein könnte, beenden Sie wieder das gestartet Programm. Die Ausgaben landen aber auf ihrem Desktop in einer Datei:

Die Datei ist als Textdatei auch mit Notepad einsehbar aber nicht wirklich einfach zu analysieren.

Auswerten mit HTTPREPLAY

Interessant wird das nun mit dem Programm HTTPREPLAY, welches ebenfalls kostenfrei bei Microsoft herunter geladen werden kann

HTTPREPLAY is a SOCKTRC Plugin allowing to analyze and replay HTTP traffic
https://www.microsoft.com/en-us/download/details.aspx?id=41566
HTTPREPLAY v2.1 includes both updated version of STRACE and HTTPREPLAY tools with support for Internet Explorer 11. STRACE is a socket/SSL tracer that is based on the "Detours" utility from Microsoft Research. The tool has been specificaly designed to generate HTTP traces for Internet Explorer but it can be used with many other applications. HTTPREPLAY allows to generate HTTP report from STRACE or Fiddler (*.SAZ) trace. HTTPREPLAY can also be used to "replay" a full navigation scenario from a previously taken trace.

Nach der Installation liegen die passenden Programme im Verzeichnis "C:\Program Files (x86)\HTTPREPLAY\" und können z.B. wie folgt aufgerufen werden

HttpReplay.cmd <Pfad\Dateiname_tracedatei.log> /ShowFullResponse

Hier ein Beispielaufruf:

Danach öffnet sich sofort der Internet Explorer, welcher in einer HTML-Datei die Auswertung anzeigt. Zudem bleibt das Programm gestartet und wenn Sie im Browser nun den "proxy" auf localhost:81 stellen, können Sie sogar auf die URL klicken und die Sitzung "nachspielen. Hier reicht es aber erst mal aus zu sehen, welche URLs angesprochen werden und wie die Antworten aussehen.

Damit ist schon sehr gut ersichtlich, mit welchen Methoden der Client eine URL anspricht und welche Rückmeldung der Server mitliefert. Schade ist nur, dass HTTPREPLAY die Daten der Anfragen nicht komplett anzeigt, sondern abschneidet.

Weitere Links