Vulnhub dc-9 PortKnocking
Was ist das?
Portknocking ist ein Verfahren, um Server bzw. einzelne Serverdienste in TCP/IP-Netzwerken abzusichern, das heißt vor unbefugtem Zugriff zu schützen. Der Name kommt von engl. „to knock“ (klopfen) und „Port“ (Anschluss). Er soll versinnbildlichen, dass man zunächst in einer vorher vereinbarten Sequenz „anklopft“, bevor sich ein Port öffnet und man so Zugang zu einem bestimmten Serverdienst erhält.
Die Kommunikation auf dem gewünschten Port wird dabei zunächst von einer Firewall vollständig blockiert. Um diesen Port zu öffnen, sendet man mehrere SYN-Pakete mit zuvor vereinbartem Inhalt und in der richtigen zeitlichen Abfolge an den Server (der sogenannte „Knock“). Mit einem SYN-Paket wird im Transmission Control Protocol normalerweise der Verbindungsaufbau eingeleitet, aber die Firewall blockiert diese Verbindungsversuche zunächst und antwortet nicht auf die Kommunikationsversuche, oder sie sendet ein RST-Paket und weist damit die Verbindung zunächst ab. Ein Portknocking-Daemon hört aber mit, zum Beispiel indem er die Logdatei der Firewall auswertet, und öffnet bei korrekter Abfolge und Inhalt der SYN-Pakete den gewünschten Port in der Firewall.
Zur Einnerung
- nmap -sS 10.0.10.58 130 ⨯
Starting Nmap 7.92 ( https://nmap.org ) at 2023-03-09 10:50 CET Nmap scan report for 10.0.10.58 Host is up (0.00017s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE 22/tcp filtered ssh 80/tcp open http MAC Address: 08:00:27:1D:02:EE (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 0.27 seconds
- Port 22 ist offen aber durch eine Firewall geschützt.
- Es könnte auf PortKnocking hinweisen.
- Wir nutzen die zuvor erkannte DirectoryTraversal Lücke um weiter Erkenntniss zu gewinnen.
Directorytraversal
File does not exist [options] UseSyslog [openSSH] sequence = 7469,8475,9842 seq_timeout = 25 command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9842,8475,7469 seq_timeout = 25 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn
- Erkenntniss
- Die kombiantion der Ports 7469,8475,9842 sollte den SSH Port öffnen.