Hallo,
Wie erkenne ich HTTPS, wenn ich mit Ethereal/Wireshark Pakete sniffe?
Ich sehe nur lauter TPKT und TCP Pakete, da steht aber nichts von HTTPS, SSL, TSL oder sonst etwas, was ich mit Verschlüsslung in Verbindung bringen würde. Eigentlich sollte aber HTTPS-Traffic über das Netzwerkinterface laufen.
Weiss das jemand?
Vielen Dank schon mal im Voraus für jede Hilfe.
Heimnetzwerke - WIFI, LAN, Router und Co 16.557 Themen, 81.662 Beiträge
Dies ist auch so beabsichtigt. HTTPS, beziehungsweise SSL/TLS setzen zwischen der Tansportschicht und der Anwendungsschicht an, also oberhalb TCP/IP und unterhalb HTTP, somit kannst Du also kein HTTP sehen (sonst wäre die Sicherheit auch dahin). Erkennen kannst Du es eigentlich nur während des Handshake oder anhang des Ports beim Verbindungsaufbau, der Rest ist ein Tunnel den Du anhand der Einzelpakete nicht mehr identifizieren kannst.
Vielen Dank!
In meinem Fall geht es darum, dass ich heute den ganzen Tag nach Beispielcode für ein miserabel dokumentiertes API gesucht habe, das wohl nur ein paar wenige bis jetzt eingesetzt haben. Leider habe ich einfach nichts brauchbares gefunden und kam so auf die letzte und verzweifelte Idee, der Sache mit einem Sniffer etwas genauer nachzugehen. Ich habe mich jetzt noch ein bisschen über SSL/TLS schlau gemacht. Es sollte also eigentlich in den ersten Paketen ein Key ausgetauscht werden, mit dem sich dann die folgenden Pakete entschlüsseln lassen. Wenn ich die Pakete entschlüsseln könnte, würde ich vielleicht einen Hinweis auf den Fehler finden.
Leider weiss ich nicht, was ich mit dem Schlüssel und dem verschlüsselten Inhalt genau machen muss.
Wenigstens bin ich jetzt schon so weit, dass ich weiss, ob tatsächlich HTTPS verwendet wird.
Hmmm... was für eine API ist dies denn, die Du versuchst zu reverse engineeren? Wo scniffst Du genau? Am eigenen Netzwerkinterface, oder zwischen Client und Server? Falls Du direkt am Client sitzt wäre es eigentlich Blödsinn am verschlüsselten Datenstrom anzusetzen, da solltest Du lieber auf der Anwendungsebene "debuggen", hier ist der Datenstrom ja schon entschlüsselt.
Es geht um das DS Open API von IBM. Ich muss einige Performancedaten aus einem DS8300 Disksubsystem auslesen.
Die Konzepte der Kommunikation mit dem CIM Agent sind relativ gut beschrieben, es scheint aber kein einziges Beispiel für die Implementierung in einer bestimmten Programmiersprache zu geben. Meine Informationen habe ich bis jetzt aus diesem Dokument bezogen: DS Open API Reference (PDF)
Die Kommunikation funktioniert mit WBEM, welches vom .NET Framework mit WMI implementiert wird. Zu WMI habe ich einige Artikel gelesen und es mit der selben Methode versucht, die auch bei Daten von Windowseigenen Providern verwendet wird und eigentlich generell funktionieren sollte. Hier ein Beispiel: WMI mit C# .NET
Leider erhalte ich immer eine Meldung, der RPC Server könne nicht kontaktiert werden (oder ähnlich). Da die Kommunikation mit dem CIM-Agent über das Kommandozeilentool funktioniert, bin ich mir fast sicher, dass der Fehler in meinem Code liegt. Was mir seltsam erscheint ist beispielsweise, dass ich den Port, auf dem der CIM-Agent kontaktiert werden muss, nicht angeben kann. Wenn ich es mit einem Doppelpunkt nach der IP, gefolgt vom Port, versuche, dann sehe ich im Sniffer, dass er den Port nicht als Port erkennt, sonder für einen Teil der IP hält und diese dann verständlicherweise nicht auflösen kann.
Ich kann ja dann morgen meinen bisherigen Code noch posten. Vermutlich hat das hier aber noch niemand gemacht, oder?
Wo scniffst Du genau? Am eigenen Netzwerkinterface, oder zwischen Client und Server? Falls Du direkt am Client sitzt wäre es eigentlich Blödsinn am verschlüsselten Datenstrom anzusetzen, da solltest Du lieber auf der Anwendungsebene "debuggen", hier ist der Datenstrom ja schon entschlüsselt.
Ich sniffe am Netzwerkinterface meines Entwicklungsrechners.
Ich werde mal schauen, ob ich irgendwo in einem Objekt die verschickten Daten finde... gute Idee.
Leider kann ich Dir bei deinem Problem nicht gezielt weiter helfen, da ich damit noch nie zu tun hatte, allerdings kommt es mir fast so vor, als hättest Du an der falschen Stelle angefangen zu suchen, schau mal ob Dir vielleicht folgendes eher weiterhilft:
http://openwbem.org/
Ich sniffe am Netzwerkinterface meines Entwicklungsrechners.
Ich werde mal schauen, ob ich irgendwo in einem Objekt die verschickten Daten finde... gute Idee.
Wenn das nicht klappen sollte (müsste es aber eigentlich), dann gäbe es eventuell noch eine andere, allerdings aufwändige Möglichkeit, sofern die technischen Randbedingungen entsprechend sind... Du könntest einen transparenten SSL-Proxy zwischen Subsystem und Client schalten.
Openwbem läuft nicht unter Windows (ist auf der Seite nicht so deutlich ersichtlich).
Ich habe aber OpenPegasus gefunden, welches den gleichen Zweck erfüllt.
Bis jetzt habe ich noch kein Beispiel dazu machen können, habe es aber bereits aus den Sourcen kompiliert und angefangen die Dokumentation zu lesen.
Das sieht viel versprechend aus. :)
Noch einmal vielen Dank für deine Hilfe!
TCP-Pakete, die zwischen deinem lokalen Rechner auf beliebigem Port (üblicherweise >10000) und Port 443 (https) des Webservers ausgetauscht werden.
Der Inhalt besteht dann natürlich nur aus "Binärmüll" (Ciphertext).
Nur die Pakete beim Handshake gehen an Port 443 des Webservers, der ansdchließende Datenstrom geht über einen unpriorisierten hohen Port, damit Port 443 für neueClient-Anfragen wieder frei ist.
