proofnet GmbH - unsere Leistungen im Überblick
-
Embedded Development
Wir verfügen über Experten mit jahrelangen Erfahrungen im Bereich des Embedded Software Development für Kunden im Automobilbereich und Maschinenbau.
Der Schwerpunkt liegt dabei auf der Software-Entwicklung von Steuergeräten für den Automobilbereich, in welchen eine Vielzahl an Kommunikationsprotokollen zum Einsatz kommen, sowie der Entwicklung von Embedded Produkten im sicherheitskritischen Umfeld (Geldwerte).
-
Security Testing
Das Gebiet des Security Testing dient der Identifikation von potentiellen Schwachstellen und unerwünschten Funktionalitäten, welche entweder durch gezielte Angriffe oder aber durch Fuzzy Testing entdeckt werden können.
Pen-Testing
Wir scannen externe Kommunikationsschnittstellen von Embedded Systemen auf vorhandene und bekannte Schwachstellen, überprüfen Firewalleinstellungen und versuchen in die Systeme einzudringen.
Fuzzy Testing
Diese Form des Testing basiert auf einer toolgestützten Erstellung von korrumpierten Eingabedaten, welche vom zu untersuchenden Embedded System über eines der verfügbaren Interfaces (Bluetooth, 802.11 Wifi, USB, TCP/IP, HTML, Javascript etc.) verarbeitet wird. Hierdurch können die Robustheit des Systems gegenüber manipulierten Eingabedaten verifiziert, Programmabstürze, System Resets, System Freezes, Memory Leaks etc. und schließlich sich hieraus ergebende Schwachstellen aufgedeckt werden.
Das Ziel beim Fuzzy Testing ist es also immer, ein zu untersuchendes System durch eine möglichst hohe Testabdeckung in einen instabilen Zustand zu bringen und die gefundene Problematik anschließend ggf. auf ihre Security Relevanz hin zu untersuchen und zu bewerten.
Fuzzy Programmierung
Steht für die Erstellung von spezifischen Testfällen, welche aus der Spezifikation des zu testenden Features abgeleitet werden. In der Regel wird dabei das zu untersuchende Protokoll oder (Medien-, Datei-)Format analysiert und gezielte oder auch zufällige Manipulationen vorgenommen. Die Testdaten werden anschließend im Rahmen des Fuzzy Testings dem zu verifizierenden System zugeführt und die Auswirkung auf die Verarbeitung der Daten untersucht.
Proof-of-Concept Exploits
Bei Bedarf entwickeln wir Proof-of-Concept Exploits für gefundene Bugs um so die Tragweite des Problems zu verdeutlichen.
-
Security Consulting
Security Source-Code Reviews
Wir überprüfen Source-Code auf potentielle Security Schwachstellen, Backdoors und die Implementierung von kryptographischen Algorithmen und Authentifizierungsmechanismen.
Security Requirement Reviews
Wir analysieren und bewerten Requirements, geben Empfehlungen und Verbesserungsvorschläge bei dem Einsatz und der Spezifikation sicherheitsrelevanter Features wie dem Einsatz kryptographischer Verfahren und Zufallsgeneratoren.
-
Reverse Engineering
Auf dem Gebiet des Reverse Engineering beschäftigen wir uns mit der Analyse von binären Softwaremodulen aus Sicht eines Hackers ohne Zugriff auf Sourcecode und Softwaredokumentation. Das Ziel ist dabei das Aufdecken von ausnutzbaren Schwachstellen sowie der Extraktion von schützenwerten Geheimnissen und Informationen. Im Fokus eines Angreifers steht beispielsweise die Informationsgewinnung über die Implementierung von proprietären Algorithmen (z.B. von kryptographischen Verfahren), der Aufdeckung von nicht dokumentierten bzw. proprietären Kommunikationsprotokollen (z.B. für Debugging, Remote-Steuerung oder weitreichende Testinterfaces) sowie der Identifikation von sicherheitsrelevanten Schwachstellen oder potentiellen Backdoors. Unser Ziel ist dabei grundsätzlich nur die Aufdeckung von Sicherheitsproblemen und eine Aufklärung des Kunden über deren potentielle Folgen und Risiken. Selbstverständlich erfolgt eine solche Zusammenarbeit absolut diskret.
Einige Beispiele unserer Leistungen:
Extraktion von Container-Formaten
Wir analysieren im Kundenauftrag (proprietäre) (Flash-)Container Formate mit dem Ziel, die einzelnen Bestandteile z.B. eines Dateisystems (Executables, Config Files, Libraries) verfügbar zu machen. Dieser Vorgang dient in der Regel als Vorbereitung für die weitere Security-Analyse von Software-Modulen aus Binärcontainern.
Auffinden von Backdoors und Schwachstellen
Im Anschluss an die Extraktion von Dateien aus einem Containerformat, können diese Dateien auf interessante Informationen hin untersucht werden. Security relevant können unter anderem die Verwendung von TCP-/UDP-Sockets sein, welche z.B. durch Events aktiviert werden können und im Normalbetrieb per Portscan nicht erkennbar sind. Auch die Ausführung von Skripten und anderen Executables z.B. von externen Medien oder die Analyse von verwendeten Zufallsgeneratoren für kryptographische Systeme (z.B. SSL, VPN, Wifi, Bluetooth, u.a.) sind erfahrungsgemäß lohnende Ziele.
Rekonstruktion von proprietären Protokollen und Algorithmen
Auf Anforderung des Kunden untersuchen wir Binärdateien auf proprietäre Kommunikationsprotokolle, für welche es keine Dokumentation (mehr) gibt. Eine solche Analyse dient auch dazu, ein zugeliefertes Produkt auf Übereinstimmung mit den Requirements und Dokumentationen zu überprüfen um beispielsweise nicht erwünschte Funktionalitäten, welche zur Steuerung eines Embedded Gerätes dienen (z.B. Freischaltung von Funktionalitäten, Schreiben von Datensätzen), zu identifizieren.
Ein weiteres Feld ist die Analyse und Bewertung von proprietären Verschlüsselungsverfahren. Diese Arbeiten basieren in der Regel auf der (falschen) Annahme, dass ein nicht öffentlich bekanntes Verschlüsselungsverfahren oder Signaturverfahren ausreichend oder sogar sicherer ist als die Verwendung gängiger Krypto-Verfahren, auch als Security-by-Obscurity bekannt.
Extraktion von Geheimnissen
Auch im Embedded Bereich ist der Einsatz von kryptographischen Verfahren wie asymmetrischen und symmetrischen Verschlüsselungsverfahren Standard. Interessant ist hierbei, wie und wo hierfür benötigte Geheimnisse und Schlüssel hinterlegt sind und wie einfach es gelingen kann, an derartige Informationen zu kommen bzw. diese Informationen auszutauschen (z.B. einen Public Key zur Verifikation von Signaturen).