Transferir archivos con netcat

Posted on April 22nd, 2007 in Linux, tutoriales by Miggs

Introducción

Como transferir archivos entre dos maquinas interconectadas entre si de una manera rápida y sencilla usando netcat.

Requisitos

Descripción

Servidor

  • Al equipo donde se encuentra el archivo a copiar lo denominamos ‘Servidor’.
  • El servidor permanecerá en escucha hasta que el cliente se conecte a el.
  • Una vez el cliente se conecte, el servidor transferirá el contenido del archivo.
  • Una vez completada la transmisión, se cierra la conexión.

# nc -l -p 1234 < fichero.ext -q 0

-l modo de escucha.
-p puerto de escucha.
‘fichero.ext’ nombre del fichero a copiar
-q tiempo en segundos antes de salir una vez completada la transferencia.

Cliente

  • Al equipo donde queremos recibir la información lo denominaremos ‘Cliente’.
  • El cliente se conecta al servidor.
  • La información reciba una vez conectado la guardaremos en ‘fichero.ext’.
  • Una vez completada la transmisión, se cierra la conexión.

# nc servidor 1234 > Copiafichero.ext

servidor Hostname o ip del servidor
1234 puerto de escucha en el servidor
‘Copiafichero.ext’ nombre de la copia

Limitaciones

  • Netcat no usa ningún tipo de encriptación.
  • Por cada archivo a transferir es necesario crear un servidor.
  • Puertos por debajo de 1024 [0-1023] necesitan privilegios de administrador.

Video Tutorial: Backtrack 2 | Remote brute force attack

Posted on April 13th, 2007 in Linux, Seguridad, tutoriales by Miggs

Una de las responsabilidades de los administradores de sistemas es limitar el acceso a aquellos usuarios con autorización para entrar en el mismo. Con el fin de bloquear el acceso a terceros se crearon las contraseñas. Cada usuario posee un ‘nombre de usuario’ y una contraseña. Cada vez que un usuario quiere acceder al sistema se le piden dichos datos. Si el nombre de usuario y la contraseña coinciden con los almacenados en el servidor le permitimos el acceso, si no, se lo denegamos.

Uno de los problemas de este sistema surge cuando una tercera persona se hace pasar por uno de nuestros usuarios. Siempre y cuando conozca el nombre de usuario y su password se le permitirá el acceso, independientemente de que la persona no sea quien dice ser.

Otro problema es que si el acceso a sido denegado, el usuario puede volver a intentar acceso n numero de veces (normalmente n es infinito). Por lo general, limitar el número de intentos puede bloquearnos el acceso, haciendo del remedio peor que la enfermedad.

Un ataque muy común que se hace uso de dichas ‘vulnerabilidades’ son los ‘ataques basados en diccionarios’ (dictionary-based attack). El ataque consiste en bombardear al servidor con nombres de usuarios y contraseñas aleatorios. Es algo parecido a intentar abrir una caja fuerte introduciendo números al azar. Si alguna vez te has encargado de algún servidor ssh o ftp seguramente los hayas sufrido.

Ya que el número de posibles combinaciones de usuarios y passwords posibles es demasiado alto, en este tipo de ataque normalmente se usan diccionarios. Un diccionario (de passwords y/o usuarios) es un fichero de texto con nombres de usuario y passwords frecuentemente usados. Por ejemplo, en la mayor parte de sistemas nos solemos encontrar un usuario ‘root‘, y, estadísticamente hablando, passwords como ‘1234‘ o ‘qwerty‘ son usadas mas frecuentemente que ‘a\/gW1~3|23‘. Como te podrás imaginar, para diferentes idiomas se usan diferentes diccionarios.

Pero entonces…? SI!, La única manera de que este ataque funcione es que la combinación usuario-password este en tu diccionario, o en otras palabras, una mala gestión de usuarios/passwords.

El motivo por el que este tipo de ataques están tan extendidos es porque con un simple script podemos testear cientos o miles de servidores de forma automática sin necesidad de intervenir en el proceso. Otro motivo es que los ‘chicos malos’ necesitan ordenadores desde los que realizar sus ataques.

En un ataque real conseguir acceso al sistema es solo el primer paso. Una vez dentro se suele instalar como mínimo algún troyano con el cual garantizar el acceso en caso de que se cambie la password. Hay ocasiones en el que el atacante simplemente cambia la password para levantar sospecha y darle a conocer al usuario que su password es débil.

En este video tutorial os muestro un ejemplo práctico de cómo realizar este tipo de ataques y por supuesto como detectar su presencia.

Detalles técnicos

  • La distro usada para realizar el ataque es Backtrack 2, versión Live.
  • Para escanear la red y localizar posibles víctimas se uso nmap.
  • Para el ataque en si utilizamos medusa (~# man medusa).
  • El diccionario usado pertenece a ‘john the ripper‘ (Incluido por defecto en Backtrack 2).
  • El servidor de ssh en la víctima es una instalación estándar de OpenSSH.

Ver video tutorial

Video Tutorial: Backtrack 2 | Remote brute force attack

Pulsa aquí o sobre la imagen para acceder al vídeo tutorial.

Detección y prevención

La mejor forma de detectar este y cualquier tipo de ataque es comprobando los logs y analizando cualquier anomalía. En su día escribí un post llamado ‘Navegando entre los logs’ donde hable de cómo el servidor en el que se encuentra alojado esta web, Fujiyama, estaba en constante estado de alerta.

En ‘Consejos básicos: Mantener un servidor del ssh’ menciono las practicas mas habituales para evitar este tipo de ataques sobre servidores de ssh. En esa época decidí cambiar el puerto de escucha del servidor de ssh y desde entonces no he recibido ningún ataque en los dos últimos meses.


Tutorial: Cambiando la MAC: linux && Windows

Posted on April 2nd, 2007 in tutoriales by Miggs

Todo NIC (Network Interface Controller) posee un identificador de 48 bits al que normalmente nos referimos como MAC. Dicho identificador es asignado por el fabricante de la tarjeta, y teoricamente es “único” para cada NIC, y . Dichos 48 bits se suelen representan en hexadecimal (16 grupos de 4 bits).

Como dato interesante, antes de poder asignar una MAC, los productores de Interfaces de red han de acordar (pagando una licencia) con el IEEE el rango de MACs en el que pueden trabajar. Gracias a esta jerarquía, analizando parte de la MAC podemos averiguar quien es el fabricante.

Normalmente el id del fabricante son los primeros 24 bits. Imaginemos que tu MAC es AA-AA-AA-BB-BB-BB, “AA-AA-AA” seria el código de fabricante y “BB-BB-BB” el numero asignado por dicho fabricante. Es por esto que muchas aplicaciones son capaces de “averiguar” el fabricante de la tarjeta (Compaq, intell, etc).

Ver MAC en Windows:

Windows trata a dicha dirección como “Physical Address” o dirección física. Para verla basta con que teclees en la consola del sistema “ipconfig /all”.

> ipconfig /all

Ethernet adapter Local Area Connection:

Sufijo de conexión específica DNS . :
Descripción . . . . . . . . . . . . . . . . . . . . : Broadcom NetXtreme Gigabit Ethernet
Dirección física. . . . . . . . . . . . . : 00-E0-7E-11-22-33
DHCP habilitado. . . . . . . . . . . . . . . . : No
Dirección IP. . . . . . . . . . . . . . . . . . . . : 192.168.1.10
Máscara de subred. . . . . . . . . . . . . . : 255.255.0.0
Puerta de enlace predeterminada . : 192.168.1.1
Servidores DNS. . . . . . . . . . . . . . . . . :

Ver MAC en Linux:

Linux por otro lado la llama “Haddr”, Hardware address. Para verla basta con pulsar “sudo ifconfig” o en la terminal.

#sudo ifconfig

eth0 Link encap:Ethernet HWaddr 00:0B:DB:C6:2E:5C
inet addr:150.203.233.126 Bcast:150.203.233.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7002 errors:0 dropped:0 overruns:0 frame:0
TX packets:749 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:1861755 (1.7 MiB) TX bytes:141647 (138.3 KiB)
Base address:0xdf40 Memory:feae0000-feb00000

“universally administered address” vslocally administered address”

Entonces…, es posible o no cambiar dicho identificador?. En linux Si. En windows normalmente tambien, aunque depende de los drivers.

Hasta ahora implicitamente nos estabamos refiriendo a la “universally administered address”. Dicho código esta grabado “Hard Coded” en la tarjeta y como proras imaginar NO se puede modificar. Sin embargo, con el fin de dar cierta flexibilidad a los administradores de redes se decidió crear la llamada “locally administered address“ la cual se mantiene via software, y SI que la podemos personalizar.

En el momento que asignemos algún valor a la segunda, la tarjeta comenzará a usar dicho valor. Este truco es muy útil para evitar filtros de MAC o suplantar otros equipos.

Cambiar la MAC en Windows:

Inicio -> Panel del Control -> Conexiones de red -> Conexión de red local -> (botón derecho) propiedades:

MAC1

-> Configuracion -> (Pestana)Avanzado:

MAC2

-> Selecciona “Locally Administered Address” e introduce la nueva MAC -> Aceptar -> Aceptar.

Cambiar la MAC en Linux:

# sudo ifconfig eth0 hw ether AA:AA:AA:BB:BB:BB

Opciones:
eth0 -> Interfaz de la tarjeta que quieras cambiar.
AA:AA:AA:BB:BB:BB -> Nueva MAC.

Por ultimo, Aquí os dejo una lista (gracias a ettercap) bastante completa de los rangos asignados a los diferentes productores de tarjetas.