Manual guía sobre cómo analizar el tráfico de red con Wireshark

INTECO-CERT presenta el informe «Análisis de tráfico con Wireshark» que pretende servir de apoyo a administradores y técnicos de seguridad a la hora de analizar tráfico para detectar problemas o ataques de red.

inteco cert

Seguramente todo administrador de redes ha tenido que enfrentarse alguna vez a una pérdida del rendimiento de la red que gestiona. En ese caso sabrá que no siempre es sencillo, por falta de tiempo y recursos o por desconocimiento de las herramientas apropiadas, tener claros los motivos por los que esto ha sucedido. En ocasiones, incluso se ha podido llegar a perder la conectividad o bien ciertos equipos han podido desconectarse sin motivo aparente.

En cualquier caso, conocer el origen del incidente es el primer paso para poder tomar las contramedidas necesarias y conseguir una correcta protección. En este punto, los analizadores de tráfico pueden resultar de gran utilidad para detectar, analizar y correlacionar tráfico identificando las amenazas de red para, posteriormente, limitar su impacto. Con tal propósito, existen en el mercado dispositivos avanzados como el appliance MARS (Monitoring, Analysis and Response System) de Cisco o IDS/IPS basados en hardware de diversos fabricantes. Pero estas soluciones no siempre están al alcance de todas las empresas ya que su coste puede que no cumpla un principio básico de proporcionalidad (el gasto es superior al beneficio obtenido) y, por lo tanto, no se justifique su adquisición.

Por ello, y para cubrir las necesidades de entidades con infraestructuras tecnológicas más modestas, INTECO-CERT presenta esta «Guía de análisis de tráfico con Wireshark». Tiene por objeto sensibilizar a administradores y técnicos de las ventajas de auditar la red con un analizador de tráfico, principalmente utilizando la herramienta libre Wireshark. Además, ofrece ejemplos prácticos de ataques en redes de área local bastante conocidos y que actualmente siguen siendo uno de los mayores enemigos en los entornos corporativos.

El manual guía se encuentra disponible en la siguiente dirección web:

Habilitar IP Forwarding en Windows 7

En Windows, al igual que en Linux, el ip-forwarding viene desabilitado por defecto, para poder habilitar esta utilidad muy necesaria para realizar enrutamientos, se realiza de la siguiente manera:

Vamos a regedit.exe, para esto escribimos “regedit”, sin comillas en Ejecutar, con esto nos lanza el Editor de Registro. Luego editamos el siguiente registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

En esta parte se debe modificar El valor de 0 por 1, finalmente reiniciamos el equipo.

fuente: cesarin.wordpress.com

Redireccionar puertos en Linux usando SSH

En algunas ocasiones necesitamos acceder a algún servicio o aplicación que usa un puerto diferente al que por defecto tenemos permitido.

Imaginemos que estamos usando en nuestro trabajo nuestro portatil con Ubuntu y queremos actualizar repositorios o usar facebook, messenguer, etc … Estos servicios usan un puerto determinado que en principio si no podemos usar directamente se debe a la existencia en la red de un firewall que esta capando un puerto determiando.

Pues bien utilizando SSH , nos enseñana como podremos crear un tunel sobre dicho servidor externo y evitar el firewall, usando nuestra máquina como servidor local y redireccionando todas las salidas sobre el puerto especificado, es bastante sencillo y nos saltaremos el cortafuegos gustosamente:

El ejemplo que vamos a utilizar es el saltarnos un firewall, en nuestra red que capa el puerto que utiliza ubuntu para actualizar unos repositorios en un host concreeto.

Imaginemos que deseaba agregar el repositorio UbuntuGis para instalar algunos paquetes del mismo (Grass y Quantum GIS entre otros), pero al añadirlo:

sudo add-apt-repository ppa:ubuntugis/ppa

Si hay un firewal en la red que capa dicho puerto obtendriamos el siguiente error::
Executing: gpg –ignore-time-conflict –no-options –no-default-keyring –secret-keyring /etc/apt/secring.gpg –trustdb-name /etc/apt/trustdb.gpg –keyring /etc/apt/trusted.gpg –primary-keyring /etc/apt/trusted.gpg –keyserver keyserver.ubuntu.com –recv 6B827C12C2D425E227EDCA75089EBE08314DF160
gpg: requesting key 314DF160 from hkp server keyserver.ubuntu.com
gpgkeys: HTTP fetch error 7: couldn’t connect to host
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0

Executing: gpg –ignore-time-conflict –no-options –no-default-keyring –secret-keyring /etc/apt/secring.gpg –trustdb-name /etc/apt/trustdb.gpg –keyring /etc/apt/trusted.gpg –primary-keyring /etc/apt/trusted.gpg –keyserver keyserver.ubuntu.com –recv 6B827C12C2D425E227EDCA75089EBE08314DF160gpg: requesting key 314DF160 from hkp server keyserver.ubuntu.comgpgkeys: HTTP fetch error 7: couldn’t connect to hostgpg: no valid OpenPGP data found.gpg: Total number processed: 0

* Está capando el puerto 11371, el que usa el servidor de claves en la dirección: keyserver.ubuntu.com

Ahora bien para solucionar esto mediante un tunel con SSH hariamos lo siguiente:

1. Editamos el fichero /etc/hosts (como superusuario), en concreto la siguiente línea:
127.0.0.1 localhost keyserver.ubuntu.com

2. Guardamos y teniendo en cuenta que disponemos un servidor externo con un servidor SSH y sin restricciones en cuanto a firewall se refiere, lanzamos SSH con un tunel sobre el puerto 11371 local y redireccionando la salida sobre la dirección especificada (keyserver.ubuntu.com) y el mismo puerto. Tan sencillo como la siguiente línea (en este caso estoy usando el servidor de mi universidad, y nombre_usuario el nombre de mi usuario en el servidor ts.uco.es):

ssh nombre_usuario@ts.uco.es -L 11371:keyserver.ubuntu.com:11371

3. Nos autenticamos en el servidor y ya estamos preparados para agregar el repositorio, esta vez satisfactoriamente:

      blogofsysadmins.com@asubuntu:~$ sudo add-apt-repository ppa:ubuntugis/ppa
      [sudo] password for ahornero:
      Executing: gpg –ignore-time-conflict –no-options –no-default-keyring –secret
      keyring /etc/apt/secring.gpg –trustdb-name /etc/apt/trustdb.gpg –keyring
      /etc/apt/trusted.gpg –primary-keyring /etc/apt/trusted.gpg –keyserver
      keyserver.ubuntu.com –recv
      6B827C12C2D425E227EDCA75089EBE08314DF160
      gpg: requesting key 314DF160 from hkp server keyserver.ubuntu.com
      gpg: key 314DF160: “Launchpad ubuntugis-stable” not changed
      gpg: Total number processed: 1
      gpg:              unchanged: 1

¡Y listo!, ya tenemos una bonita forma de evitar un cortafuegos para un uso concreto, en este caso agregar un repositorio.

Script en bash para poner en color el Netstat

Aqui os dejo este script feo en bash que me he encontrado en un foro ruso mas raro que un perro verde, por si a alguien le sirve.

El script muestra un netstat (concretamente netstat -natp) con distintos colores según el estado de cada conexión (established, listen, syn_sent, fyn_wait, etc.). Claramente no es un script muy útil (ni muy bien hecho), pero lo publico. Quizás a alguno le sirve de disparador para hacer algo verdaderamente útil.

#!/bin/bash
cyan="\E[1;36m\E[1m";
normal="\E[m";
blue="\E[34m\E[1m";
violet="\E[35m\E[1m";
red="\E[31m\E[1m";
yellow="\E[33m\E[1m";
green="\E[37m\E[32m\E[1m";
text="\E[1;37m\E[1m";

if [ "$UID" != "0" ]; then
	echo -e "$red$0: You will get more information if you have root privileges. Try sudo $0$normal"
fi

netstat -natp | \
while read line; do

	if [ `echo $line | awk '{print($1)}'` = "Proto" ]; then
		echo -e "$yellow=====================================================================================================$normal"
		echo -e "$text$line$normal"
		echo -e "$yellow=====================================================================================================$normal"
	else

		state=`echo $line | awk '{print($6)}'`
		color=$normal
		case $state in
			"ESTABLISHED")
				color=$green;;
			"SYN_SENT" | "SYN_RECV")
				color=$yellow;;
			"FIN_WAIT1" | "FIN_WAIT2" |"TIME_WAIT")
				color=$violet;;
			"CLOSE" | "CLOSE_WAIT" | "LAST_ACK" | "CLOSING" )
				color=$blue;;
			"LISTEN")
				color=$cyan;;
			"UNKNOWN")
				color=$red;;
			*)
		esac
		echo -e "$color$line$normal"

	fi
done;