Crear un proxy Socks usando un tunel ssh

Si tienes una cuenta ssh en algún ordenador de internet la puedes utilizar como proxy para navegar desde ese ordenador remoto. En esencia un proxy es un ordenador que utilizas como puente para acceder a Internet a través de él. Esto puede ser útil para muchas situaciones. Por ejemplo:

  • Tienes que conectarte a una página a la que no puedes acceder desde tu red por estar «prohibida».
  • Quieres conectar a una página pero no quieres que sepan de entrada desde que ordenador estás consultando. Aclaración: siempre, repito, siempre se puede averiguar desde dónde se ha consultado una página, es una cuestión de tiempo y recursos (como los que tiene la policía)
  • Estas configurando un servidor de páginas web en tu red local y quieres comprobar si funciona desde Internet. Puedes llamar a un amigo para que se conecte o puedes hacerlo tú desde el proxy.

Basta con tener un cliente de ssh instalado y una cuenta en internet. En mi caso tengo una cuenta en el servidor de Hostmonster que permite acceso de ssh. Si no tienes ninguna cuenta y no quieres alquilarla hay muchos sitios en internet que te ofrecen cuentas shell gratuítas con servicios limitados.

Lo primero que haremos será usar el cliente de ssh para crear la conexión y abrir el proxy. En linux lo puedes hacer con el siguiente comando:

ssh -D 9999 usuario@direccion_servidor_ssh

Tras esto y una vez introducida la contraseña ya tendremos preparada la conexión y el puente SOCKS en el puerto 9999 de nuestro ordenador. Por supuesto se puede cambiar el número de puerto y los valores «usuario» y «direccion_servidor_ssh» correponderán con los de nuestra cuenta ssh.

La segunda parte es configurar el navegador web (o cualquier otro programa que queramos usar) para que use el puente SOCKS. En el ejemplo utilizaré el navegador Firefox. Vamos al menú «Editar->Preferencias» y en la ventana que se abre seleccionamos «Avanzado» y la pestaña «Red».

Preferencias firefox
Preferencias firefox

Una vez aquí pinchamos en «Configuración» y introducimos los datos como sigue cambiando el número de puerto 9999 si hemos seleccionado otro al crear el túnel.

Preferencias firefox
Preferencias firefox

Si hemos realizado los pasos correctamente nos conectamos a cualquier página para comprobar si funciona. Será algo más lenta que la navegación directa pero hay veces que no hay otra solución que utilizar este método.

Recopilando información en un test de intrusión

El primer paso de un test de intrusión es la búsqueda de información o information gathering. Esta información será utilizada para organizar el ataque de la forma más precisa posible en las siguientes fases. Hay desarrolladas múltiples aplicaciones para tratar de automatizar esta pesada tarea, aunque la necesidad de hacer consultas y búsquedas manuales es imprescindible.

Maltego es una herramienta completa, sencilla y vistosa que deja impresionado a todo consultor. Existe una versión gratuita denominada «Community Edition» y otra comercial, «commercial edition«. Seguramente Veronica Mars habría reducido su temporada a un par de episodios y hubiera prescindido de los servicios de su amiga «Mac» si hubiese conocido esta utilidad.

Entre otras cosas permite encontrar las relaciones que existen entre sistemas de información y personas:

  • Localización de nombres de usuario, nombres reales, números de teléfono, correo-e.
  • Localización de sistemas mediante DNS, Google Hacking, BBDD de RIRs
  • Búsqueda de otros dominios relacionados
  • Búsqueda de documentos y metadatos en los documentos
  • Representación gráfica de toda la información recolectada
  • En su versión comercial además, función de cliente/servidor.

Paterva Network

Podéis ver algunas imágenes más y un vídeo de demostración en la página del fabricante: http://www.paterva.com/maltego/screenshots/

Otras herramientas también muy útiles pero más básicas son:

SEAThttp://thesprawl.org/code/src/seat-0.2.tar.bz2
Goolaghttp://www.goolag.org/
http://www.goolag.org/download.html
MetaGoofilhttp://www.edge-security.com/metagoofil.php
TheHarvesterhttp://www.edge-security.com/theHarvester.php
Goog-Mail.pyhttp://www.darkc0de.com/misc/googemail.py
http://www.darkc0de.com/misc/emailcollect_v1.3.py
Fierce DNShttp://ha.ckers.org/fierce/
Extract Subdomainshttp://www.darkc0de.com/misc/goog-subdomains.py
The Revisionisthttp://lcamtuf.coredump.cx/strikeout/
Herramientas web http://www.serversniff.net
http://www.robtex.com
http://www.serversniff.net
Maltegohttp://www.paterva.com/maltego/
Base de Datos RIPEftp.ripe.net/ripe/dbase/ripe.db.gz
Infocrobeshttp://www.gnucitizen.org/blog/infocrobes/
Hachoir-Metadatahttp://hachoir.org/wiki/hachoir-metadata
sameips.shhttp://www.514.es/download/sameips.sh
httpreconhttp://www.computec.ch/projekte/httprecon/
BidiBlahhttp://www.sensepost.com/research/bidiblah/

Script para notificar intrusiones en tu red (Wifi o cableada) con Ubuntu

Este es un script que detecta quien se esta conectandoa tu red, y como comenta su autor Franklin Aliaga, es muy util si usas un Modem Router Inalambrico para detectar personas que se pueden estar conectando a tu red, hoy en dia existen infinidades de metodos para entrar a una red inalambrica asi que hay que estar monitoreando siempre la red, en este caso el script funciona de la siguiente manera, mientras tu estas haciendo tus trabajos hay un demonio que cada 3 min. ejecutara el script y mostrara en una alerta en el panel de notificaciones de tu Ubuntu.

Requisitos:

sudo apt-get install libnotify-bin nmap

Para crear el script sigue los siguientes pasos:

Abre una consola y en tu /home, teclea:

sudo gedit alertared

Copia y pega el siguiente codigo:

#!/bin/bash
#script creado por: franklin aliaga
#si no tienes nmap digita sudo apt-get install nmap
#con este comnado de nmap nos muestra los hosts conectados
#y los guarda en un archivo *.txt

#script mejorado y actualizado por: microstudi (lector de tuxapuntes)

# Modificica esta linea a tu gusto si deseas guardar los temporales en otra ruta.

ARCHIVOS="$HOME/bin/hosts"

/usr/bin/nmap -sP 192.168.2.1/24 -oG $ARCHIVOS/hosts_ip.txt

#aqui cortamos el formato obtenido anteriormente de archivo para solo obtener las ip's
#y mandarlo a otro archivo *.txt
cat $ARCHIVOS/hosts_ip.txt | grep Host | cut -c 7-20 | tr -d "\()" > $ARCHIVOS/host_ip1.txt

#aqui capturamos el numero de lineas que tiene nuestro archivo
#en este caso la cantidad de ip's que hay en el archivo
contador=$(wc -l $ARCHIVOS/host_ip1.txt | cut -c 1-2)

#aqui obtenemos la nuestra ip
ip=$(/sbin/ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -c 6-)
echo "Mi ip: $ip"
total=$(expr $contador - 1)

var=0

while [ $var -le $total ]; do
let var=$var+1
#capturamos la ip por linea
linea=$(cat $ARCHIVOS/host_ip1.txt | sed -n "$var p")
if [ $linea != "192.168.2.1" ]; then
if [ $linea != $ip ]; then
/usr/bin/notify-send "Conectado $linea"
#Para enterar-se por la consola también:
echo "Conectado $linea"
fi
fi
done

Guarda el fichero que acabas de crear y en consola teclea:

sudo chmod +x alertared

Despues creamos el demonio:

crontab -e

Y añadimos la linea:

*/3 * * * * /home/tu nombre de usuario/alertared

*Con esto el sistema ejecutara cada 3 minutos el script y nos notificara los intrusos.

Bloquear una IP atacante con null route

En alguna ocasion podemos encontrarnos con algun tipo de ataque de una determinada IP o red (rezando para que no sean multiples) hacia nuestra red/sistema.

En Linux (y BSD/Solaris/Unix Flavours) podemos mandar los paquetes de una determinada IP o red a ninguna parte (blackhole route o null route) añadiendo una entrada en nuestra tabla de rutas.

USANDO EL COMANDO ROUTE PARA NULL ROUTE

route add 192.168.1.5 gw 127.0.0.1 lo

En este comando especificariamos que la IP atacante es 192.168.1.5 y queremos enviar los paquetes que nos envie a la interfaz de loopback.

Verificar que se ha “null routeado” la IP en nuestra tabla de rutas

route -n

O bien usando Netstat

netstat -nr

Tambien podemos hacer un reject:

route add -host 192.168.1.5 reject

Mandar a Null route una red entera

Imaginaros que queremos filtrar el sistema autónomo completo de McColo (si algún ISP anunciara sus prefijos, claro).

route add -net 208.66.192.0/24 gw 127.0.0.1 lo

Borrar entradas de la tabla de rutas

Probablemente haya un tiempo en el que ya no nos interese bloquear a determinada IP o bloque. Para borrar una entrada haremos lo siguiente:

route delete 192.168.1.5