[[todo]] * [[https://cve.mitre.org]] * [[https://attack.mitre.org]] * [[https://nvd.nist.gov/]] * [[https://exploit-db.com]] Ein Penetrationstest, auch als Pen-Test oder Ethical Hacking bezeichnet, ist ein autorisierter Angriff auf ein Computersystem, Netzwerk oder eine Anwendung, um Schwachstellen zu identifizieren und die Sicherheitsmaßnahmen zu bewerten. Man versucht dabei, Schwachstellen zu finden und auszunutzen, wie sie auch von echten Angreifern ausgenutzt werden könnten. Ein Penetrationstest kann verschiedene Teile eines Systems überprüfen, z.B. Netzwerke, Server, Betriebssysteme, Software und Webanwendungen. Die Testergebnisse werden in einem Bericht zusammengefasst, der detaillierte Informationen über die gefundenen Schwachstellen enthält. Das [[metasploit|Metasploit Framework]] bietet eine Vielzahl von Exploits, Payloads, Werkzeugen und Modulen um Schwachstellen zu identifizieren, zu analysieren und auszunutzen. Das Framework ist in der Programmiersprache Ruby geschrieben. * [[MSFVenom]]: Msfvenom ist ein vielseitiges Werkzeug, das im Metasploit Framework enthalten ist und für die Erzeugung und Anpassung von bösartigen Backdoors und Payloads verwendet wird. * [[Meterpreter]]: Meterpreter ist eine Post-Exploitation-Shell, die es einem Angreifer ermöglicht, die Kontrolle über ein System zu erlangen und verschiedene Aktionen auszuführen. =====Ablauf===== Ein Penetrationstest (auch bekannt als Ethical Hacking) wird in der Regel in mehreren Phasen durchgeführt, um die Sicherheit eines Systems zu überprüfen. ====Vorbereitung==== In dieser Phase werden die Ziele des Penetrationstests festgelegt, das Zielsystem oder die Zielsysteme identifiziert und alle erforderlichen Genehmigungen eingeholt. Es wird auch eine Vereinbarung über den Umfang des Tests und die Zustimmung des Kunden getroffen. ====Reconnaissance==== Das Hauptziel der Reconnaissance ist es, Informationen über das Zielunternehmen, seine IT-Infrastruktur, Systeme, Netzwerke und Mitarbeiter zu sammeln. Durch die Erfassung und Analyse dieser Informationen kann der Sicherheitsexperte potenzielle Schwachstellen und Angriffsvektoren identifizieren. ===Methoden=== Es gibt sowohl passive als auch aktive Methoden, um Informationen zu sammeln. * Passive Reconnaissance: Bei der passiven Reconnaissance werden öffentlich zugängliche Informationen gesammelt, ohne direkte Interaktion mit dem Ziel. Dies umfasst die Durchführung von Online-Recherchen, das Durchsuchen von sozialen Medien, das Überprüfen von öffentlichen Unternehmenswebsites, das Lesen von Nachrichtenartikeln und das Durchsuchen von Jobbörsen. * Aktive Reconnaissance: Bei der aktiven Reconnaissance erfolgt eine direkte Interaktion mit dem Ziel, um zusätzliche Informationen zu sammeln. Dies kann beispielsweise das Scannen von Netzwerken, das Durchführen von Portscans, das Erfassen von Netzwerkverkehr, das Sammeln von Informationen über DNS (Domain Name System) oder Whois-Abfragen beinhalten. * Social Engineering: Social Engineering ist eine Technik, die bei der Reconnaissance eingesetzt werden kann, um Informationen von Mitarbeitern des Zielunternehmens zu erhalten. Dabei werden psychologische Taktiken genutzt, um das Vertrauen der Mitarbeiter zu gewinnen und an vertrauliche Informationen zu gelangen. Dies kann beispielsweise durch Telefonanrufe, E-Mail-Phishing oder persönliche Besuche erfolgen. ===Werkzeuge=== * Open-Source-Intelligence (OSINT) Tools: OSINT-Tools wie Shodan, Maltego, theHarvester und Recon-ng ermöglichen die automatisierte Sammlung von öffentlich zugänglichen Informationen über das Ziel. * Portscanner: Portscanner wie [[Nmap]], AngryIPScanner oder Nessus werden verwendet, um offene Ports und verwundbare Dienste auf den Zielsystemen zu identifizieren. * DNS-Analyse-Tools: Tools wie DNSenum und DNSRecon helfen bei der Identifizierung von Subdomains, MX-Einträgen und anderen Informationen im Zusammenhang mit dem Domain Name System. * Social Engineering Frameworks: Frameworks wie Social-Engineer Toolkit (SET) oder GoPh [[https://live.sysinternals.com/]] ====Schwachstellenanalyse==== Das Hauptziel ist es, Schwachstellen an einem Zielsystem zu finden die ausgenutzt werden können um Zugriff zu bekommen. * **Informationsbeschaffung**: Das kann IP-Adressen, Netzwerktopologien, Anwendungen, Betriebssysteme und anderes beinhalten. Diese Informationen dienen als Grundlage für weitere Analysen und Tests. * **Scanning**: In dieser Phase werden Tools eingesetzt, um nach bekannten Schwachstellen zu suchen. Diese Tools scannen das Zielsystem auf offene Ports, veraltete Softwareversionen, schlechte Konfigurationen und andere Schwachstellen. * **Manuelle Prüfung**: Neben automatisierten Scans ist es wichtig, manuelle Überprüfungen durchzuführen. Man analysiert die Ergebnisse des Scans, untersucht das System genauer und sucht nach nicht offensichtlichen Schwachstellen, die möglicherweise von automatisierten Tools übersehen wurden. * **Schwachstellenbewertung**: Dabei wird festgestellt, wie gefährlich eine Schwachstelle ist, welche Auswirkungen sie haben könnte und wie leicht sie ausgenutzt werden kann. Diese Bewertung hilft dabei, keine ungewollten Schäden zu verursachen und Prioritäten zu setzen. * **Berichterstellung**: Am Ende wird ein detaillierter Bericht erstellt, der alle Schwachstellen, ihre Bewertung, Empfehlungen zur Behebung und andere Informationen enthält. ====Exploitation==== In dieser Phase werden die identifizierten Schwachstellen ausgenutzt, um Zugriff auf das Zielsystem zu erlangen oder Sicherheitsmaßnahmen zu umgehen. Exploits lassen sich in folgende Kategorien einteilen. * **Remote-Exploits**: Diese Exploits werden über ein Netzwerk oder das Internet ausgeführt und ermöglichen einem Angreifer, auf das Ziel aus der Ferne zuzugreifen. Remote-Exploits können beispielsweise Sicherheitslücken in Netzwerkdiensten, Webanwendungen oder Betriebssystemen ausnutzen. * **Local-Exploits**: Im Gegensatz zu Remote-Exploits erfordern Local-Exploits bereits einen Zugriff auf das betroffene System. Sie werden typischerweise verwendet, um die Privilegien auf einem System zu erhöhen oder um Zugriff auf vertrauliche Informationen zu erlangen. * **Web-Exploits**: Diese Exploits zielen speziell auf Schwachstellen in Webanwendungen ab. Sie können zum Beispiel Cross-Site Scripting (XSS), SQL-Injection, Remote-File-Inclusion oder Directory-Traversal-Angriffe umfassen. * **Denial-of-Service** (DoS)-Exploits: Bei diesen Exploits wird versucht, ein System, eine Anwendung oder einen Dienst durch gezielte Überlastung oder Ausnutzung von Schwachstellen lahmzulegen. Das Ziel ist es, den Zugriff auf den Dienst für legitime Benutzer zu verhindern. * **Zero-Day-Exploits**: Zero-Day-Exploits sind Exploits, die auf neu entdeckte Schwachstellen abzielen, für die zum Zeitpunkt des Angriffs noch kein offizieller Patch oder keine Abwehrmaßnahme verfügbar ist. Sie nutzen den Vorteil aus, dass der Betreiber des Systems noch keine Kenntnis von der Schwachstelle hat und daher nicht in der Lage ist, sie zu beheben. * **Physische Exploits**: Diese Exploits nutzen Schwachstellen in der physischen Sicherheit aus, um Zugriff auf ein System zu erlangen. Beispiele hierfür sind das Ausnutzen von ungeschützten USB-Anschlüssen, das Bypassen von Zugangskontrollen oder das direkte Abfangen von Datenübertragungen. ====Privilege Escalation==== Sobald Zugriff auf das Zielsystem erlangt wurde, wird versucht, den Zugriff auf weitere Teile des Systems zu bekommen oder Benutzerrechte zu erweitern. Das kann z.B das Überwinden von Firewalls oder das Ausnutzen von Schwachstellen in Programmen oder dem Betriebssystem sein. [[https://github.com/rizemon/OSCP-PWK-Notes|Linux - Windows - PrivEsc]] ===Cached Credentials=== Siehe auch [[mimikatz]], [[hashcat]] cmdkey /list runas /savecred /user: [[https://www.youtube.com/watch?v=DiOx531rAVY|Stored Credentials]] ===Scheduled Tasks=== // find weak scheduled tasks schtasks.exe /query [/v] // check for permissions accesschk.exe /accepteula -quvw replace the executable [[https://www.youtube.com/watch?v=l0evgRphRIA|Scheduled Tasks]] ===Services=== ==Insecure service executables== sc query | findstr "SERVICE_NAME DISPLAY_NAME STATE" // list specific service // check start permissions (SERVICE_START_NAME) of service // note executable path sc qc // check permissions accesschk.exe /accepteula -quvw replace the executable net start ==Insecure service permissions== sc query | findstr "SERVICE_NAME DISPLAY_NAME STATE" // check start permissions (SERVICE_START_NAME) of service sc qc // see if user has permissions for specific service accesschk.exe /accepteula -uwcqv sc config binpath = "" [[https://www.youtube.com/watch?v=YddtA7o8jVQ|Executables]], [[https://www.youtube.com/watch?v=WCnuu9fF-pk|Permissions]] ==Unquoted service path== When the path is not quoted (ex: C:\Program files\soft\new folder\exec.exe) Windows will try to execute first 'C:\Program.exe', then 'C:\Program Files\soft\new.exe' and finally 'C:\Program Files\soft\new folder\exec.exe'. Try to create 'C:\Program Files\soft\new.exe' // look for unquoted service /w whitespaces and path not in quotation marks // you can use winpeas - https://github.com/carlospolop/PEASS-ng/tree/master/winPEAS winPEASx64.exe servicesinfo [[https://www.youtube.com/watch?v=Yt6OZtTVcqk|Unquoted service path]] ===Registry=== ==Weak Registry permissions== // check reg permissions accesschk /accepteula -uvwqk manuel HKEY_CURRENT_USER\Console reg add HKEY_CURRENT_USER\Console /v /t REG_EXPAND_SZ /d /f [[https://www.youtube.com/watch?v=sb9npkEwWcg|Weak Registry Permissions]] ==Passwords in Registry== [[https://www.youtube.com/watch?v=u-8b5eDEQ7Y|Passwords in registry]] or scripts * service executable path in REGISTRY manipulieren * [[https://www.youtube.com/watch?v=gs9QgX4tpyE|AutoRun Programme manipulieren]] * [[https://www.youtube.com/watch?v=suLJhmD5x2c|AlwaysInstallPrivileged]] * [[https://www.youtube.com/watch?v=7Z4c-GTVrWM|Insecure GUI Apps]] [[https://delinea.com/blog/windows-privilege-escalation|Privilege Escalation on Windows]], [[https://www.youtube.com/playlist?list=PLBf0hzazHTGMBgq3RXdGDNJjw9iEz-lKz|Windows PrivEsc]], [[https://www.youtube.com/playlist?list=PLBf0hzazHTGPlod44Eeca2nTnYoRB6h0M|Linux PrivEsc]] ====Erkennung und Berichterstattung==== Nach Abschluss des Penetrationstests werden die durchgeführten Aktivitäten dokumentiert und eine umfassende Berichterstattung erstellt. Dies umfasst eine Zusammenfassung der Ergebnisse, eine detaillierte Beschreibung der gefundenen Schwachstellen und Empfehlungen zur Behebung dieser Schwachstellen.