Utilisation de la commande netcat

netcat est connu comme un couteau suisse pour le protocole TCP/IP. En lisant le man page de netcat : netcat is a simple unix utility which reads and writes data across network connections, using TCP or UDP protocol. It is designed to be a reliable "back-end" tool that can be used directly or easily driven by other programs and scripts. At the same time, it is a feature-rich network debugging and exploration tool, since it can create almost any kind of connection you would need and has several interesting built-in capabilities.

 

1. Note préliminaire

On utilisera 2 systèmes dans cet article

  • server1.example.com: IP address 192.168.0.100
  • server2.example.com: IP address 192.168.0.101

Netcat doit être installé sur les deux systèmes - Vérifier grâce à la commande :

which nc

Et pour en apprendre plus avec les possibilitès de netcat :

man nc 

2. Copier un fichier depuis un serveur vers un autre

Nous voulons copier un fichier MonFichier depuis le server1 vers le server2. Executer ceci

server2:

nc -lp 1234 > MonFichier

(1234 est un port arbitraire mais non utilisé). server2 attendra le fichier MonFichier sur le port 1234.

Sur le server1:

nc -w 1 server2.example.com 1234 < MonFichier

pour démarrer le transfert de fichier.

 

3. Cloning Hard Drives & Partitions

Vous pouvez utiliser netcat pour cloner un disque dur ou une partition à travers le réseau. Dans cet example, nouvs voulons cloner /dev/sda du server1 vers le server2. Bien sur pur être cloné les partitions doivent être démonté du système, ainsi il faut démarrer le serveur cible (server2) depuis un CD de secours tel que Knoppix.

Utiliser ifconfig pour obtenir l'adresse IP (server2 IP addresse est 192.168.0.12 au lieu de 192.168.0.101).

Sur le server2 :

nc -l -p 1234 | dd of=/dev/sda

Ensuite sur le server1 :

dd if=/dev/sda | nc 192.168.0.12 1234

et le processus de clonage démarre. Cela peut prendre un certain temps, dépendant de la taille du disque ou de la partition.

 

4. Port Scanning

Sur le server1, pour scanner les ports ouverts sur le server2 :

server1:

nc -v -w 1 server2.example.com -z 1-1000

(1-1000 means: scan ports from port number 1 to port number 1000.)

Scan de ports sur le système local :

nc -v -w 1 localhost -z 1-1000

 

5. Serving Web Pages

Utiliser netcat comme un serveur web :

while true; do nc -l -p 80 -q 1 < somepage.html; done

fournira la page somepage.html jusqu'a ce que le terminal soit fermé.

 

6. Spoofing HTTP Headers

Demande de page web avec netcat :

nc ispconfig.org 80

Modifier les headers comme ceci :

GET / HTTP/1.1
Host: ispconfig.org
Referrer: mypage.com
User-Agent: my-browser

Après avoir entré les headers, pressé ENTREE deux fois, et la page demandé devrait apparaître (avec les nouveaux headers envoyés par le serveur)

server2:~# nc exampple.com 80
GET / HTTP/1.1
Host: example.com
Referrer: mypage.com
User-Agent: my-browser

HTTP/1.1 200 OK
Date: Fri, 28 Nov 2008 14:11:49 GMT
Server: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c
Last-Modified: Wed, 26 Nov 2008 19:34:17 GMT
ETag: "228c707-21b1-b6b7e040"
Accept-Ranges: bytes
Content-Length: 8625
Content-Type: text/html
[...] 

 

7. Chatting

Chatter avec netcat entre les deux systèmes.

server2:

nc -lp 1234

Le server2 attend que le server1 se connecte sur le port 1234.

server1:

nc server2.example.com 1234

Mainteant il est possible d'envoyer des messages entre les deux systèmes avec la toche ENTREE. Pour fermer le chat, utiliser CTRL+C sur les deux systèmes.

 

8. Liens