INFORMATION SECURITY

Security Auditing

Eine aussagekräftige, pragmatische Methode des Security Auditings besteht darin, das zu bewertende System umfangreichen Sicherheitstests zu unterziehen. Standards für diese Vorgehensweise sind beispielsweise das Information System Security Assessment Framework (ISSAF) oder das Open Source Security Testing Methodology Manual (OSSTMM).

Solche Penetration Tests simulieren state-of-the-art Angriffe -extern/intern und blind/informiert- gegen die Sicherheitsbarrieren der Firma. Primäres Ziel eines Penetration Tests ist die Offenlegung von Zugängen zu Firmenresourcen über die Ausnutzung existierender Schwächen.

Als wesentliche Gründe für die Durchführung von Penetration Tests gelten:

Phasen eines Penetration Tests

Nach der Vorbereitung (NDA, Kick-Off Meeting mit den Schwerpunkten Ansprechpartner, PenTest Scope / Approach / Methode / Schedule / Impact Minimierung sowie Test Cases und Eskalation) werden diese PenTest Schritte durchlaufen:

Information Gathering

Passives Information Gathering umfasst:

Aktives Information Gathering umfasst:

Vulnerability Identification

Während dieser Phase werden die Resultate des Information Gatherings genutzt, um Target Probes zu konfigurieren, mit denen die Schwächen des untersuchten Systems identifizierbar werden. Dazu ist es erforderlich, mehr Informationen über das genutzte Betriebssystem, über alle aktiven Dienste und über die Anwendungsversionen zu gewinnen. In dieser Phase werden keine Exploits gestartet, es erfolgt nur ein Audit des Zielsystems, um potentielle Schwächen aufzudecken.

Das primäre Tool hierfür stellen Scanner (z.B. Nessus, nmap). Passives Scanning vermeidet Entdeckung, aktives Scanning liefert präzisere Resultate. Restriktionen intermediärer Firewalls werden mittels Modifikation von IP- und TCP Pakets umgangen (nmap besitzt Features für das Perimeter Avoidance Scanning).

Port Scanning:

System Identification

Services Identification

Nach dieser letzten Task sind laufende Services und Anwendungen identifiziert. Danach werden die Standard Internet Vulnerability Databases nach assoziierten Schwachstellen hin abgefragt.

Vulnerability Exploitation

Mit Hilfe der identifizierten Schwachstellen können in dieser Phase konkrete Angriffe implementiert werden, d.h., das reine Auditing findet hier sein Ende. Erst eine konkrete Penetration zeigt, welche Effekte eine Schwachstelle unter Angriff produziert.

Allerdings benötigt man dazu individuellen Exploit Code für die erkannte Vulnerability. Eine Option ist die gezielte Internet Suche nach Code, zum Beispiel auf milw0rm.org. Der Tester sollte aber mit diesen Exploit Sites vertraut sein, um unerwartete Nebenwirkungen zu vermeiden (schon der blosse Aufruf kann das eigene System schädigen). Sollte kein passender 'vertrauenswürdiger' Code lokalisierbar sein, bleibt das Generieren eigenen Codes (mit damit einhergehendem Aufwand).

Es existieren aber auch automatische Vulnerability Exploitation Frameworks. Solche Toolboxen vereinfachen PenTests erheblich, insbesondere in Fällen, in denen eine grössere Zahl von Servern zu analysieren ist. Wichtig ist auch eine Scheduling Option, da Tests i.d.R. nicht während der Produktion tagsüber realisiert werden können.

Erweiterbarkeit ist ein wichtiges Kriterium für die Auswahl eines (kommerziellen) Vulnerability Exploitation Frameworks, ein Tester sollte eigene Attack Scripts einbetten können. Das lässt sich z.B. für das Application Fuzzing nutzen, also der Transfer von Random Data an das Input Modul einer Anwendung, um Anomalien zu detektieren, die möglicherweise für Buffer Overflow Attacken anfällig sind.

Auch im Bereich Web Application Vulnerabilities gibt es automatische Exploitation Frameworks, die effizient Web Anwendungen analysieren und ihre Schwächen exploitieren. WebInspect und Nikto sind Beispiele.

Privilege Escalation

Es gibt diverse Methoden nach einer erfolgreichen Infiltration die Privilegien des Testers auf dem System zu erhöhen. Man kann nach weiteren lokalen Schwachpunkten suchen - jetzt aus der internen Perspektive. Ferner könnte ein Abhören der Netzwerk Schnittstellen Aufschluss über Nutzer Credentials liefern. Auch (online) Social Engineering bietet gute Chancen. Unabhängig von der Erhöhung der Privilegien ergibt die Analyse von lokalen Dateien und Directories wichtige Hinweise auf die Funktion des Servers sowie auf potentiell sensitive Informationen (eine fehlende Security Awareness von Systemadministratoren wird nachweisbar).

Natürlich ist der Zugang zum administrativen Account einer Maschine das höchste Ziel. Nützlich dafür sind z.B. lokale Exploit Libraries in Vulnerability Exploitation Frameworks, die mittels eines unprivilegierten Accounts aktiviert werden können.

Maintaining Access

Die Aufrechterhaltung eines nicht-authorisierten Zugangs ist ein wesentliches Ziel von Hackern und von Testern, nur so lässt sich das System mittelfristig exploitieren. Dazu wird der Einsatz von Backdoors in Penetration Tests genutzt. Security Barrieren wie Firewalls oder ACLs können mittels Backdoors überwunden werden. Der Besitz eines Zugangs mit Backdoor hat noch einen weiteren wichtigen Vorteil: da Sicherheitssysteme wie Firewalls und Edge-IPS i.d.R. lediglich den Perimeter-Traffic überprüfen, kann ein Zugang mit Backdoor Angriffe bzw. Scans innerhalb des CN barrierefrei und ohne Aufsehen ausführen.

Einige Vulnerability Exploitation Frameworks ermöglichen die 'Injektion' von Agents auf Zielsysteme. Wird der Agent persistent ausgelegt, wird er praktisch zur Backdoor. Ein gängiges PenTest Backdoor Tool ist netcat, es wird meist als Reverse Shell genutzt, d.h., der Verbindungsaufbau erfolgt vom infiltrierten System outbound zum Angreifer (falls notwendig über 'kooperierende' Zwischenserver). Outbound netcat Traffic kann sich als Web Traffic maskieren, um Firewalls zu passieren. Da aber netcat Daten nur als Plaintext transportiert, sind Inhalte im Netz lesbar und könnten z.B. von einem guten Secure Web Gateway gestoppt werden. Deshalb nutzen Tester (und Hacker) verschlüsselte Tunnel. Beispiele sind Cryptcat, Matahari, Proxytunnel, Socat oder Stunnel.

Anschliessend dienen Rootkits dazu, die PenTest Backdoor Software zu verschleiern. Das zentrale Gegenmittel gegen Backdoors und Rootkits bildet Host-basiertes IPS.

Covering Tracks

Zu den Aufgaben von PenTestern gehört es, die Entdeckung auf infiltrierten Systemen zu vermeiden. Ein sicherheits-bewusster Systemadministrator analysiert Log Files, installiert Monitoring Software und überwacht Prozesse, Filesysteme und Network Traffic.

Ein Tester wird versuchen, Log File Entries zu manipulieren, um Spuren zu verwischen. Da es relativ viele Log Files (System-, Middleware- und Anwendungs Ebene) gibt und i.d.R. auch privilegierte Rechte erforderlich sind (Owner von /var/log/messages ist beispielsweise root), ist dies kein triviales Unterfangen und gelingt konsistent nur mit administrativen Rechten. Damit wäre aber die Präsenz noch nicht verschleiert, man denke nur an die 'who' Utility. Ferner werden bei dem PenTesting auch neue Files installiert, die also versteckt werden müssen.

Zusammenfassend lässt sich sagen, dass eine Spurenverschleierung nur durch Veränderung bzw. Austausch administrativer Utilities erreicht werden kann. Zentrale Gegenmassnahmen sind: Enterprise Monitoring Software und Host-basiertes IPS.