(Comments)
Share on Twitter Share on FacebookNetcat es un programa disponible en todas las plataformas, conocido como "the swiss army knife", por la versatilidad de uso que ofrece.
[email protected]:~# nc -h[v1.10-41]connect to somewhere: nc [-options] hostname port[s] [ports] ...listen for inbound: nc -l -p port [-options] [hostname] [port]options:-c shell commands as `-e'; use /bin/sh to exec [dangerous!!]-e filename program to exec after connect [dangerous!!]-b allow broadcasts-g gateway source-routing hop point[s], up to 8-G num source-routing pointer: 4, 8, 12, ...-h this cruft-i secs delay interval for lines sent, ports scanned-k set keepalive option on socket-l listen mode, for inbound connects-n numeric-only IP addresses, no DNS-o file hex dump of traffic-p port local port number-r randomize local and remote ports-q secs quit after EOF on stdin and delay of secs-s addr local source address-T tos set Type Of Service-t answer TELNET negotiation-u UDP mode-v verbose [use twice to be more verbose]-w secs timeout for connects and final net reads-C Send CRLF as line-ending-z zero-I/O mode [used for scanning]port numbers can be individual or ranges: lo-hi [inclusive];hyphens in port names must be backslash escaped (e.g. 'ftp\-data').¿Como podemos usarlo?1. Como cliente de telnet a cualquier puerto.Suele usarse para hacer fingerprint de servicios a menudo, o como cliente de telnet a secas, por ejemplo en el puerto 23 de tu router.Ej.nc 192.168.1.1 232. Como servidor.2.1. Redireccionando la salida de un programa.Ej.Linux/Unixnc -l -p 23 -e /bin/bashWindowsnc -l -p 23 -e cmd.exe2.2. Redireccionando la salida de un programa mediante pipes | .Con estos comandos, obtenemos una shell remota de otro sistema. Ojo, es insegura, ya que hereda los permisos del usuario en el que lo ejecutamos pero no pregunta por la password. Obviamente, la conexión será con un cliente telnet o con el mismo netcat en el apartado 1.Ej.Clonar un disco, una particion o un archivo en linux de nuestro equipo al servidor de netcatDisco:Servidor:nc -l -p 1024 -q 3 | dd of=/dev/sda
Cliente:dd if=/dev/sda | nc 192.168.1.101 1024
2.3. Si queremos testear el cortafuegos de una máquina, podemos también usar netcat. Ponemos en dicha máquina el netcat como servidor:Archivo (upload) a server:Servidor:nc -l -p 1024 | dd of=archivo.extCliente:dd if=archivo.ext | nc 192.168.1.101 1024Archivo (download) a client:Server:dd if=archivo.ext|nc -l -p 1024Client:nc 192.168.1.101 1024| dd of=archivo.extEl dd también se puede cambiar por el comando cat o zcat y redirecciones, lógicamente.Esto se puede complicar mas, si queremos comprimir el archivo mientras lo enviamos.Ej.Servidor:nc -l -p 1024 | gunzip -c | dd of=archivo.extCliente:dd if=archivo.ext | gzip -c | nc 192.168.1.101 1024
2.4. Y que tal un chat por UDP (sin cifrado ni pass, en texto claro) ?nc -l -p 1024y lanzamos en el cliente nmap :nmap -sS -p1024 192.168.1.101De esa forma vemos si está abierto el puerto.Ej.Server :nc -u -l -p 1024Client:nc -u 192.168.1.101 1024Ahora todo lo que tecleemos en consola, aparece en el otro pc y viceversa.Si lo queremos cifrado, tendremos que usar una versión de netcat con cifrado, por ejemplo socat, que admite cifrado y muchas más opciones que netcat; eso sí, es mas complejo.Estos son usos útiles de netcat que suelo emplear con mis máquinas y me sacaron de más de un atolladero. Sé que hay muchos más usos, pero estos son los que considero mejores.
Comments