13/3/08

Las funciones básicas de un switch

El artículo más leído de este blog, es el de Vale la pena un switch administrable? Algunos lectores están interesados en saber las diferencias entre un switch administrable y otro que no lo es, las diferencias de precio son importantes y por eso surge la curiosidad, que ventajas tiene uno sobre el otro? Otros lectores ya cuentan con un switch administrable, pero no saben que hacer con él, como aprovechar esas características que costaron muchos dólares de más.

No es posible describir en un solo post todo lo que es posible hacer con un switch administrable, por lo que en el futuro espero dedicar al menos un post al mes para describir con más detalle algunas características de los switches, con ejemplos prácticos de implementación, por lo pronto quiero empezar con los fundamentos, en realidad como funciona un switch?, Esto nos ayudará a sentar las bases para más adelante discutir prestaciones más avanzadas de los switches.

Un Switch es un dispositivo de red que funciona en la capa 2 del modelo OSI, para los lectores que no están familiarizados con el modelo OSI, los invito a leer la definición de la wikipedia, para los propósitos de este post lo importante es saber que la capa 2 tiene que ver con la dirección física de la tarjeta de red, esto es la dirección MAC, que es un número único asignado por el fabricante a la tarjeta de red, cada fabricante tiene su propio rango de direcciones MAC, lo que asegura que no se repitan, en la práctica es posible modificarlo mediante software, pero en lo que respecta al proceso de fabricación, si es un número único asignado a cada tarjeta de red.

De paso también menciono que hay switches de capa 3 e incluso de capa 4, pero aun estos switches más avanzados, deben cumplir con las funciones de un switch capa 2, que es las que explicaremos en este post.

Un switch debe realizar tres tareas básicas, las cuales se describen a continuación.

1. Aprender direcciones (address learning)

Todo switch tiene una tabla de direcciones MAC con el puerto asociado, cuando el switch se enciende por primera vez, esta tabla esta vacía, ahora con relación a la figura 1, supongamos que A, desea comunicarse con B, para esto, A tiene preparado un frame, en el que entre otras cosas, esta expresadas los direcciones de origen y destino. El siwtch recibe este paquete y toma nota de la dirección de origen y la anota en la tabla de direcciones MAC, esto es la línea 1 de la tabla MAC ilustrada en la figura 1. Inicialmente el switch no conoce donde esta ubicado B, por lo que reenvia el frame a través de todos los puertos excepto en el puerto donde lo recibió, de esta manera B recibe el frame y lo responde nuevamente con un paquete que tiene como origen la dirección MAC de B, por lo que de esta manera, el switch ahora puede determinar donde esta ubicado B y agrega la segunda línea de la pequeña tabla MAC ilustrada en la figura 1. Para la siguiente comunicación entre A y B, el switch conoce la ubicación exacta de ambos y reenvia los frames directamente entre A y B.




2. Reenviar y Filtrar

Cuando el switch recibe un frame, examina el destino y busca en la tabla el puerto de salida y lo envía únicamente a través de este puerto, esta es la función de filtro, limita el envió del frame al puerto específico en el que se encuentra el destino. Por otra parte, como ya vimos al inicio, si la tabla MAC aun no tiene la información el paquete es reenviado a todos los puertos excepto al puerto en el que se recibió el paquete originalmente, lo mismo pasa cuando ocurre un broadcast (en breves palabras, un broadcast es un frame cuya dirección de destino es todos los del segmento) es decir, cuando una PC envía un frame de broadcast, este es recibido por todas las PCs en el mismo segmento de red, en el caso de los broadcast, el switch los reenvia por todos los puertos, excepto en el puerto que lo recibió originalmente.

3. Evitar Loops

Una tercera función básica e importante de un switch es evitar loops (uso el ingles, porque me parece más apropiado que bucle, o lazo). Para entender que es un loop, y lo dañino que es para cualquier red, observemos la situación ilustrada en la figura 2. Supongamos que por conveniencia alguien decide que desea tener dos enlaces a un mismo switch, de tal forma que si uno falla el otro funcione, o supongamos que alguien inadvertidamente ve un cable colgando y con la mejor de las intenciones decide conectarlo al switch sin percatarse que ese mismo cable ya estaba conectado en otro puerto del mismo switch, lo que ocurre a continuación es desastroso.


Imaginemos que la PC envía un broadcast, este es recibido por el switch 01 y reenviado a todos los puertos excepto el puerto F0/3 (porque por ahí fue recibido originalmente), el switch 02 recibe uno de los broadcast en el puerto F0/1 y lo reenvia a todos los demás puertos excepto por supuesto el puerto F0/1, el problema es que el broadcast también llego por el puerto F0/2 y reenviado a todos los puertos, así que el resultado es que tanto en F0/1 como en F0/2 del switch 02, tendremos nuevamente un paquete de broadcast enviado al switch 01 que nuevamente repite la acción y de esta forma tenemos un loop infinito, en la práctica lo que ocurre es que esto deja inutilizada la red, ya que los recursos en el switch están totalmente consumidos enviando y recibiendo broadcast. He vivido experiencias de estas y créanme que no es nada agradable.

Por lo anterior, un switch debe proveer de mecanismos que eviten la formación de estos loops, y la solución es el Spanning Tree Protocol o STP, este protocolo evita la formación de loops en los switches

De las tres características antes mencionadas, las primeras dos están presentes en cualquier switch sea o no administrable, sin embargo, la tercera, la posibilidad de evitar loops únicamente esta disponible en switches administrables, no solo eso, usualmente requieren poca o ninguna configuración, por lo que a mi entender, este simple hecho es una buena razón para utilizar switches administrables.

Una de las preguntas que me han hecho algunos lectores es la siguiente, acabo de comprar un switch administrable, que debo configurarle para que mi red funcione? en principio nada, el switch tan pronto se conecte a la energía eléctrica y tenga PCs conectadas en sus puertos intentando comunicarse unas con otras, empezara a construir su tabla de direcciones, reenviara y filtrara frames y también evitara loops, por supuesto en el caso de los switches administrables.

También una palabra de advertencia, el hecho de tener algunos switches administrables no evitara la formación de loops en los switches no administrables, he visto redes de miles de dólares venirse abajo porque alguien conecta en algún punto de la red, un switch no administrable e inadvertidamente forma un loop. Por supuesto, la presencia de switches administrables permitirá diagnosticar y resolver el problema de manera más rápida.

Ahora, supongo que no invertiste miles de dólares, para que tu switch aprenda direcciones, reenvie/filtre frames y evite loops, por supuesto que deseas hacer muchas cosas más con tu switch, te invito a dejar un comentario con tus inquietudes, experiencias y espero más adelante estar publicando otros artículos para que puedas desquitar cada dólar de tu inversión.

7/3/08

El comando netstat en Windows

Netstat es una herramienta disponible desde la línea de comando de la mayoría de sistemas operativos importantes (Windows, Linux, Unix, etc), es otra de esas herramientas disponibles gratuitamente, pero a mi parecer bastante subutilizada. Entre otras cosas, esta herramienta permite dar un vistazo a las conexiones que tiene establecida la PC, también permite ver algunas estadísticas de red y la tabla de ruteo (esto ultimo también esta disponible con el comando route print)

En este post me voy a concentrar en la versión para Windows, particularmente en XP, puedo suponer que las mismas opciones también aplicarían a Windows Vista, pero de momento no tengo como comprobarlo. Ahora, sin más preámbulos, veamos algunos usos prácticos de este comando.

Para utilizar esta herramienta, únicamente tienes que abrir una línea de comando y escribir netstat al presionar enter, se desplegara un listado de conexiones activas en tu PC, como puede verse en la siguiente figura, la primera columna muestra el protocolo (puede ser tcp o udp), la siguiente muestra la dirección local junto con el puerto local, a continuación esta la dirección y puerto remoto y finalmente se muestra el estado de la conexión, en la figura puede verse que hay conexiones establecidas y otras en estado TIME_WAIT, esto indica que son conexiones tcp que ya se están cerrando. Esta información se captura en un instante de tiempo (constante se están creando y cerrando conexiones, así que aquí viene el primer tip, si deseas que la lista se este refrescando cada x tiempo, puedes agregar el numero de segundos de intervalo al final del comando, por ejm. netstat 10 refrescara la estadística cada 10 segundos.


Si el uso anterior fuera el único de este comando, sería interesante, pero quedaría en deuda, la clave esta en usar las opciones, si deseas verlas basta con escribir el comando netstat help, hay varias opciones y te animo a experimentarlas, se pueden utilizar solas o combinadas, en lo particular me resultan útiles algunas opciones especificas que describo a continuación.

Utilizando el comando con las opciones a (que despliega todas las conexiones y puertos que están abiertos, es decir esperando conexiones o en listening state) y o que despliega el PID del proceso que esta utilizando la conexión, el comando sería netstat -ao y el resultado puede verse en la siguiente figura.


Saber que puertos están abiertos es importante ya que permite detectar algunos procesos que no deberían estar en este estado, esto puede ayudar a descubrir spywares en tu PC, o protocolos que están corriendo y no deberían, por ejemplo en la figura anterior observo que el puerto 1025 en mi PC esta en estado LISTENING, la pregunta obvia es que programa o servicio esta abriendo el puerto 1025?, aquí es donde entra la opción o del comando, ya que muestra el PID (process ID),que en este caso en particular es esl 120, sabiendo este número, podemos utilizar el comando tasklist, que muestra el servicio o programa que esta abriendo este puerto, en la siguiente figura puede verse el resultado del comando tasklist, ahí observo que el programa asociado al proceso 120 es alg.exe nunca he oído hablar de alg.exe así que esto me genera curiosidad después de investigar un poco en internet, me doy cuenta que es un proceso normal de Windows utilizado por Internet Connection Sharing, uff, menos mal, sin embargo, utilizando esta misma lógica, se pueden encontrar programas maliciosos en tu PC (en mi caso, el siguiente paso sería abrir Wireshark y capturar tráfico para tener aun más detalles de lo que esta pasando).


La otra opción que puede resultar muy útil de este comando, es la opción de ver estadísticas de la conexión, el comando sería netstat -es que desglosa las estadísticas por protocolo, un análisis de estas estadísticas puede revelar problemas de cableado, o con la interface (por ejemplo si se observa un número alto de errores), o también ayudar a aislar mejor la causa del problema, te animo a experimentar con esta opción y ver que estadísticas te pueden resultar útiles.

Finalmente un consejo, es una buen práctica utilizar regularmente este comando en tu PC, si lo haces cuando todo esta funcionando bien, puedes identificar que procesos son normales, que puertos están abiertos, etc, esto te puede servir de base, en el futuro, si tu PC empieza a dar problemas, un rápido vistazo con netstat -ao puede ayudarte a identificar la raíz del problema, no digo que es un método infalible pero vale la pena considerarlo.

29/2/08

Las 12 verdades fundamentales de las redes

Si llevas cierto tiempo en el mundo de las redes, con toda seguridad has oído hablar de las RFC, estos son los documentos que dan vida a los protocolos de red, no es el propósito de este post hablar sobre los RFC en general, por lo que únicamente mencionare que si quieres encontrar más información al respecto, puedes ver la definición dada por la wikipedia, también puedes ir al sitio oficial de las RFC.

Lo que si es el propósito de este post, es discutir la RFC 1925, esta pertenece a un tipo especial de documento. Como muchos de ustedes probablemente saben, en Estados Unidos y en muchos otros países, se celebra el 1 de abril, algo equivalente a lo que en latinoamerica celebramos el día de los inocentes el 28 de diciembre. Pues bien, desde hace muchos años, es costumbre publicar algunas RFCs el 1 de abril, con algunas notas humorísticas, por ejemplo la RFC 2324 describe detalladamente el protocolo HTCPCP (Hyper Text Coffee Pot Control Protocol), un protocolo para el control, monitoreo y diagnostico de una cafetera! La RFC 1925 pertenece a este tipo especial de RFCs, consideradas humorística. Sin embargo aunque si tiene su lado humorístico, esta RFC presenta las 12 verdades fundamentales de las redes, que si las analizamos una por una, en realidad nos dejan lecciones dignas de reflexión en cuanto al que hacer de las redes, así que me he tomado la molestia de traducirlas y las pueden ver a continuación.

Antes de continuar, aclaro que esta es una traducción que hice tratando de ser fiel a la original, igual los invito a ver la versión original, puede ser que la entiendas mejor en su idioma original, además, todos los créditos son para Ross Callon, el autor que inspiradamente escribió estas 12 verdades fundamentales y las documento en la RFC 1925, a continuación las verdades:

Las 12 verdades Fundamentales de las redes

(1) Tiene que trabajar

(2) Por mas esfuerzo que se haga, y sin importar la prioridad que se establezca, no se puede incrementar la velocidad de la luz.

(2a) (corolario). Por mas esfuerzo que se haga, no se puede hacer un bebe en un periodo mucho menor a 9 meses. Tratar de acelerarlo podría hacerlo mas despacio, pero no hará que pase mas rápido.

(3) Con la suficiente fe, los cerdos pueden volar muy bien. Sin embargo no necesariamente es buena idea. Es peligroso estar sentado en el espacio en el que están volando, porque no se puede predecir donde van a aterrizar.

(4) Algunas cosas en la vida nunca pueden ser completamente entendidas o apreciadas a menos que sean experimentadas de primera mano. Algunas cosas en las redes nunca pueden ser completamente entendidas o apreciadas por alguien que no construye redes comerciales ni esta involucrado en el día a día de la operación de una red.

(5) Siempre es posible consolidar diferentes problemas que no tienen relación entre si, en una sola solución compleja e interdependiente. En la mayoría de los casos es una mala idea.

(6) Es más fácil mover un problema que resolverlo (por ejemplo moviendo el problema a otro segmento de la arquitectura de la red).

(6a) (corolario). Siempre es posible agregar otro nivel de desorientación.

(7) Siempre hay algo

(7a) (corolario). Bueno, rápido, barato: Seleccione dos (no se pueden tener los tres al mismo tiempo)

(8) Es más complicado de lo que parece

(9) Para todos los recursos, sean los que sean, se necesitan más

(9a) (corolario) Cada problema de la red toma más tiempo para resolver de lo que uno supone que debería tomar.

(10) Una solución nunca resolverá todos los problemas (one size never fits all).

(11) Todas las viejas ideas serán propuestas de nuevo, con un nombre y presentación diferentes sin importar si funcionan o no.

(11a) (corolario). Vea la regla 6a.

(12) Sabemos que se ha alcanzado la perfección en el diseño de protocolos, no cuando ya no queda nada más que añadir, sino cuando no queda nada que quitar.

Como les mencione tiene un poco de humor, pero también encierra muchas verdades, en particular creo que todos en algún momento nos hemos dado cuenta de la cruda realidad de la verdad fundamental 7 y el corolario 7a, esto para mencionar dos, en general creo que todas tienen algo que en una u otra oportunidad hemos experimentado.

Si estas interesado en más RFCs humorísticas, puedes verlas aquí, tal vez más adelante analicemos alguna otra, si tienes comentarios sobre las 12 verdades fundamentales de las redes, no dudes en hacerlo, podrían ser útiles para otros.

23/2/08

Un nuevo año

Este saludo de año nuevo, tal vez llega un poco tarde, ya casi estamos terminando el segundo mes del año, pero bueno, para mi actividad en el blog, si es como año nuevo, finalmente estoy de regreso en lo que espero sea un horario más regular de publicaciones en este post.

No les voy a quitar mucho el tiempo, solo quiero solicitarles su apoyo participando en la encuesta a la derecha, periodicamente estaran apareciendo nuevas encuestas y su colaboración es apreciada, ya que permitira orientar mejor los contenidos del blog, esta encuesta inicial es un poco un beta test y de paso me interesa conocer el uso que actualmente le estan dando a Wireshark, es para resolver problemas en el trabajo? o quizas estas estudiando y utilizas Wireshark como una herramienta de aprendizaje primariamente?, o unicamente en tu casa como hobbie? para participar basta un click y de antemano gracias por hacerlo, Feliz y Prospero 2008 para todos.

22/2/08

Wireshark 101 - IO Graphing

Una de las características deseadas en un analizador de paquetes, es la capacidad de visualizar los datos de manera gráfica, esto es especialmente crítico a la hora de presentar un reporte con los hallazgos de un análisis a personas cuya especialidad no son las redes. Una gráfica puede explicar mucho mejor una situación que una serie de números sin sentido.

En este aspecto, mi opinion, es que Wireshark se queda un poco atrás, analizadores comerciales como el sniffer pro de Network General, tiene muy buenas opciones de gráficos para generar reportes que se ven muy bien y que dicen mucho, sin embargo, las opciones para gráficar que tiene Wireshark, si bien no son muy vistosas, si son utiles y vale la pena hecharles un vistazo ya que pueden ayudar, tanto para el análisis, como para el momento de presentar un reporte sobre los hallazgos.

Existen diferentes tipos de gráficos en Wireshark, como el flow graph que permite visualizar gráficamente el flujo de una conexión tcp/ip (como la muestran en los libros), o el TCP Stream Graph, que cuenta con algunos tipos de gráficos orientados más al análisis, pero que también pueden ser utilizados para reportes, sin embargo, en esta oportunidad, como el titulo lo indica, nos concentraremos en las graficas de entrada y salida (IO Graphs), estas nos permiten visualizar, el tráfico total que esta pasando por nuestro punto de medición en un momento dado.

Para activar esta gráfica, es necesario ir al menu statistics -> IO Graphs, como lo muestra la figura abajo, esto por supuesto una vez que hemos realizado una captura, es decir, la gráfica se generara a partir de paquetes previamente capturados.


En la siguiente figura, puede verse el resultado, sobre esta gráfica quiero hacer varias observaciones, en primer lugar, como pueden observar, esta el área de la gráfica, en esta en el eje x se muestra el tiempo, en este caso, la captura fue por aproximadamente dos horas, por lo que para ver la gráfica como esta aca, se modifico el campo tick interval a 1 Min (el default es 1 seg), en general este parametro se puede modificar de acuerdo al nivel de detalle que se desea tener. En el caso del eje Y, también se modifico la unidad, del default (que es Packets/tick) a Bytes/Tick. En el caso del eje Y, también esta una opción avanzada que permite unas opciones de análisis más potentes y que probablemente analizemos en una segunda parte.


Además de poder ajustar los ejes X y Y, para tener una mejor representación del tráfico, el verdadero potencial de estas gráficas, esta en la posibilidad de aplicar filtros, por ejemplo en el caso ilustrado en la figura anterior, se ha aplicado un filtro para ver cuanto del tráfico ilustrado en dicha gráfica es http, como se puede ver a la derecha de la pantalla, la gráfica 2 tiene aplicado el filtro http, los filtros que se utilizan acá, son filtros de visualización, aqui http es un filtro muy sencillo, pero en general se pueden utilizar filtros muy elaborados que permitan una mejor comprensión del problema que se esta analizando, para activar el filtro se presiona el boton correspondiente (Graph 2, en este caso) y como se puede ver en la figura, aparece con color rojo el tráfico http, la Graph 1, muestra el tráfico total en color negro. Se pueden generar hasta 5 gráficas, para activar/desactivar una gráfica, basta con presionar el boton correspondiente a dicha gráfica.

Finalmente menciono el boton Save, este esta disponible a partir de la versión 0.99.7 (la más reciente, que dicho de paso, si aun no has bajado, hazlo ya, puedes encontrala en el sitio de wireshark. Esta opción permite salvar la gráfica, en varios formatos gráficos, en una prueba que hice me dio un error, pero igual salvo la gráfica.

Este no es ni por mucho un tutorial avanzado de gráficas de Wireshark, el propósito es dar a conocer esta opción (para aquellos que aun no la conocian), en futuros post se estara haciendo referencias a las gráficas IO, por lo que vale la pena conocerlas, por lo demás te animo a experimentar con ellas.

Para los que quieren ver aplicaciones de esta gráficas en acción, hay un par de recursos interesantes, lamentablemente en Ingles, para los que lo entienen, perfecto, los invito a revisarlos, para los que no, también los invito a ver este par de videos, veran que las gráficas IO de Wireshark, tienen mucho potencial, estos son videos de Laura Chappel, la fundadora de WiresharkU, asi que insisto, vale la pena verlos, a continuación los enlaces:

IO Graphing

Advanced IO Graphing

Eso es todo por el momento, gracias a los estimados lectores que han permanecio fieles al blog pese a la larga ausencia y espero encontrarlos por acá en futuros posts, como siempre, los comentarios son bienvenidos.

1/10/07

o3 Magazine


Ha pasado algun tiempo (casi un mes), desde mi ultimo post, Septiembre fue un mes muy cargado de actividades de trabajo, espero que Octubre no lo sea tanto y encuentre el tiempo para dedicarlo a este blog.

En esta oportunidad quisiera recomendar a los lectores la revista O3, una revista gratuita en PDF, que se enfoca en el uso del Software Open Source en ambientes empresariales y de negocios.

Si bien el enfoque de esta revista no es el software para redes (que es lo que al menos a mi, mas me interesa), en general creo que es un muy buen recurso, para aquellos que estan pensando implementar soluciones open source en su empresa, en la revista podran encontrar articulos interesantes con ejemplos de implementación y con análisis que pueden ayudar a tomar una desición a favor de algun paquete de software en particular, o incluso podrán descrubir alguna aplicación que resuelva algun problema especifico.

Como ejemplo el ejemplar más reciente, el número 9, se enfoca en el uso de herramientas de publicación como Open Office que es un suite con herramienta de oficina de primer nivel, también tiene un articulo muy interesante sobre la aplicación GIMP un editor de gráficos también muy potente, que es uno de los estandartes del software open source.

Ya en un temas más enfocado en las redes, el ejemplar número 8, describe soluciones para correo eléctronico empresarial, también el ejemplar número 4, tiene varios temas de redes, por ejemplo como priorizar tráfico de VoIP con Linux QoS (un articulo que se ve muy interesante y que espero leer en los próximos días).

Como mencione al inicio, esta revista esta disponible gratuitamente en formato PDF y al igual que la revista Insecure, que mencione en un post hace algunas semanas, no hay necesidad de suscribirse ni nada por el estilo, probablemente la unica desventaja de esta revista para el mundo hispano, es que esta en ingles, pero como tantas otras veces he mencionado, el ingles en estos días, no es opcional.

Así que los invito a visitar el sitio de O3, hasta el momento se han publicado 9 ejemplares, alguno de ellos podría tener algun tema que sea de su interes.

3/9/07

Nanspy Worm en mi laptop

Este post, es lo que llamaria un Estudio de Caso, sobre la detección y eliminación de un virus tipo Worm (gusano), y de paso un ejemplo práctico del uso de Wireshark en una situación de la vida real.

Resulta que la semana pasada la laptop de mi casa fue infectada por un virus, la conexión a Internet, empezo a dar problemas de manera intermitente, por lo que como acostumbro, decidi ejecutar Wireshark, para tratar de determinar el problema, al hacerlo, pude observar que la pc establecia conexión a algunos sitios en internet, y además estaba tratando de establecer conexión con todo el rango de Ips de la subnet de mi PC (es una red clase B, por lo que facilmente podría pasar varias horas escaneando las 65,534 posibles host y efectivamente dejando mi conexión a Internet practicamente inutilizable).

Inmediatamente desconecte el cable de red, y como no tenia el tiempo suficiente para lidiar con el problema, salio al rescate una distribución de linux en livecd, si eres lector frecuente de este blog, podrás imaginar, que lo que utilice fue Backtrack 2.0 por supuesto, no podia ser otro, con este estuve navegando en internet (que en realidad resulta ser la función principal de esta laptop), hasta que el sabado finalmente tuve tiempo para lidiar con el problema.

Pero antes de describir como logre solucionar el problema, quisiera comentar, porque un virus tuvo chances de infectar mi pc, la respuesta es muy sencilla, recientemente tuve que formatear la PC, y por ser algo viejita (Pentium III 650 MHZ, con 384 MB de RAM), decidi instalarle Windows 2000, con Service Pack 3 (que era el que tenia disponible) y pues aun no había tenido tiempo de instalar un antivirus, ni patchs de seguridad que fueran pertinentes, asi que utilizar un sistema operativo que para estas alturas ya esta casi obsoleto, y sin todos los parches de seguridad apropiados, es una invitación al desastre.

Valga decir, que estoy conciente de los riesgos y no tenia información trascendental en la PC, asi que la posibilidad de un virus era un riesgo que podía correr (aunque honestamente no estaba en mis planes que un virus infectara la máquina).

En cuanto a la desinfección, la estrategia fue sencilla, encendi la máquina sin conexión a la red y active el wireshark, luego conecte el cable y observe el tráfico que estaba capturando, nuevamente pude ver que la PC se estaba conectando a algunos sitios de red, bajo algunos archivos y luego empezo a escanear una subnet clase B buscando otros hosts para infectar (el tipico comportamiento de un worm), uno de los archivos que la pc bajo se llamaba bbot.exe (suena intimidamente no?), así que con esta información volvi a encender la máquina esta vez ejecutando Windows ME (si, esta laptop tiene los dos sistemas operativos, por razones que no vale la pena discutir en este post), ejecute internet explorer e hice una busqueda en Google, en poco tiempo, descubri que este es un archivo asociado al virus Nanspy, y esto me llevo a una página en Trend Micro donde se explicaba que hacía el virus y lo más importante como desinfectarlo.

Al infectar una PC, este virus instala un archivo en la carpeta del systema este archivo se llama mmsvc32.exe, también crea una llave en el registro, para asegurar su ejecución cada vez que se reinicie el sistema. Para eliminar el virus, es necesario detener el proceso MMSVC32.EXE, y también desinstalarlo del registro, el proceso se puede detener ejecutando el taskmgr (en mi caso, el proceso no se estaba ejecutando o no era visible desde el taskmgr), para eliminar el archivo seguir las siguientes instrucciones:


1. Ejecutar regedit

2. Localizar la llave HKEY_LOCAL_MACHINE>SOFTWARE>Microsoft>Windows>CurrentVersion>Run

3. En el panel derecho encontrar y eliminar la siguiente entrada:

Microsoft Network Services Controller = "%System%\mmsvc32.exe"


Con esto el virus se ha eliminado del sistema, pero el sistema sigue siendo vulnerable, y en cualquier comento puede ser infectado de nuevo, asi que el paso final, es instalar el parche pertinente, de acuerdo con la información proporcionada por Trend Micro, este virus se vale de una vulnerabilidad descrita en el boletin de seguridad de Microsoft MS03-039, donde también esta disponible el parche.


Siguiendo los pasos anteriores, logre eliminar el virus de la PC, he estado monitoreando el tráfico y ahora todo se ve bien, sin embargo, esta experiencia recuerda muchos puntos importantes que hay que tomar en cuenta, sobre todo, cuando las computadoras estan en un ambiente crítico.


1. Es imporante mantener el sistema operativo con los parches de seguridad al día, suena tedioso, a veces hasta imposible mantenerse al día con la aplicación de parches de seguridad, pero es inevitable, aún con los parches al día es probable que tengamos problemas, pero es necesario hacerlo.


2. Se debe ejecutar al menos un antivirus en la PC, y actualizarlo frecuentemente, nuevamente, podría no ser suficiente, pero es necesario hacerlo.


3. Extremar precauciones cuando se trata de sistemas operativos obsoletos, o para los que el soporte ya es limitado.


4. Es imporante disponer de alguna herramienta como Wireshark, que permita visibilidad en el tráfico y ejecutarla periodicamente.

5. Utilizar un Firewall para protección de la red, obviamente esto por si solo no es una solución, como mínimo debe ir acompañado de adecuadas políticas de uso de Internet y de recursos de red y debe monitorearse constante los logs.

6. Es necesario contar con un sistema de detección de intrusos, como Snort, que puede detectar actividad sospechosa en la red, especialmente para redes con un significativo número de computadoras.


Finalmente quiero aclarar que no soy experto en seguridad, conocimientos básicos en redes y sentido común, pueden ayudar a detectar problemas con gusanos informáticos, sin embargo, si no tienes mucha experiencia, y tu red tiene aplicaciones críticas, o información delicada, que puede representar la vida o la bancarrota de tu organización, lo mejor es buscar ayuda profesional y tomarse muy en serio el tema de la seguridad informática.

24/8/07

Backtrack 2.0

Como lo define la wikipedia, "un LiveCD o LiveDVD (traducido en ocasiones como CDvivo o CD autónomo) es un sistema operativo (normalmente acompañado de un conjunto de aplicaciones) almacenado en un medio extraíble, tradicionalmente un CD o un DVD (de ahí su nombre), que puede ejecutarse desde éste sin necesidad de instalarlo en el disco duro del ordenador, para lo cual usa la memoria RAM como disco duro virtual y el propio medio como sistema de ficheros".

Los livecd tienen muchos usos prácticos, en esta oportunidad quisiera introducir a los lectores que aún no han tenido la oportunidad de conocerlo, uno de los mejores livecd con herramientas orientadas a la seguridad, la distribución en mención es backtrack 2.0


Como mencione en el párrafo anterior, esta es una distribución orientada a la seguridad, más especificamente a "penetration testers", esto es hackers (espero que con buenas intenciones) que se dedican a mejorar la seguridad poniendola a prueba mediante ataques (algo que dicho sea de paso, no esta excento de polémicas).


Esta es una distribución cargada de herramientas de seguridad divida en categorías, si deseas ver una lista de todas las herramientas disponibles puedes verla aquí.


Lo que encuentro interesante de los livecd, específicamente para el área de soporte de redes, es la posibilidad de experimentar con herramientas que solo estan disponibles en sistemas operativos como linux o las variantes de BSD. Definitivamente no soy experto en Linux, sin embargo me he aventurado a experimentar y puedo dar fe de que instalar aplicaciones no es nada sencillo, tampoco es muy dificil, pero consume tiempo y el tiempo es lo que normalmente esta más escaso, asi que un livecd provee la oportunidad de tener a disposición una gran cantidad de herramientas, con solo insertar un cd y bootear la pc con el, despues de utilizarlas, se extrae el cd, y nuevamente tenemos el sistema operativo con el que trabajamos normalmente.


Entre las muchas herramientas del backtrack, quiero resaltar el excelente soporte a tarjetas de red wireless, también tiene incluidas las herramientas para análisis de redes wireless más populares, como Kismet, Air crack, Airsnort entre otras, de hecho, la principal razón por la que me intereso el backtrack en primer lugar, fue por la posibilidad de ejecutar Wireshark, para análisis de redes wireless, ya que el soporte para estos análisis es mucho mejor en Linux y hasta el momento no me ha defraudado, lo he utilizado en un par de veces para estos propósitos con análisis sencillos sin problemas.


Tal vez la dificultad principal, para sacarle más provecho a este livecd, es la documentación que no es tan abundante, sin embargo, el wiki proporciona lo básico y si lo que te interesa son algunas herramientas específicas, estas normalmente cuentan con bastante documentación.


Hay muchas otras distribuciones de Livecds, en el segmento específico de la seguridad, de acuerdo con el top 10 publicado por Darknet.org, backtrack es la número uno, pero hay algunas otras que vale la pena considerar, sin embargo, si solo puedes bajar una, te recomiendo backtrack.

16/8/07

Solidaridad con el pueblo Peruano

En esta oportunidad, no voy a hablar de redes, ni de temas tecnologícos, unicamente quiero aprovechar este espacio, para expresar mi solidaridad con el pueblo Peruano, que en estos momentos dificiles, tras el paso de un terremoto que según puedo ver en las noticias alcanzo los 7.9 grados en la escala de Ritcher.

Lamentablemente hay victimas, hay perdidas materiales, y es una herida que seguro dejara una huella en la historia del pueblo Peruano, desde la distancia quiero expresar mis condolencias a las familias de las victimas, personalmente no puedo hacer nada por estar allá y contribuir en algo, pero a la distancia puedo elevar mis oraciones e invito a los lectores del blog a hacerlo, a elevar nuestras oraciones para que Dios de consuelo a las familias de las victimas.

9/8/07

Wireshark 101 - Estadísticas Parte I

Continuando con la serie de post sobre Wireshark, en esta oportunidad me gustaría comentar sobre las estadísticas disponibles en Wireshark, estas tienen muchas aplicaciones prácticas para conocer por ejemplo que protocolos hay presentes en la red, o que hosts son los que estan consumiendo el mayor ancho de banda.

En esta primera parte, se describen dos tipos de estadística, reservando algunos más para futuros postst, el primero de ellos es la opción Protocol Hierarchy y Conversations, ambas disponibles desde el menú Statitiscs.

La opción de Protocol Hierarchy despliega todos los protocolos detectados en la captura, indicando el porcentaje encontrado de cada uno, por ejemplo en la figura abajo, muestra que para esta captura en particular, el 100% del trafico es ethernet, lo cual no es de sorprender ya que ethernet es el protocolo dominante, aunque si se captura con una máquina que tenga la capacidad de tener visibilidad en una red WLAN se encontraria un porcentaje diferente.



En el caso ilustrado en esta figura, también se puede ver que el protocolo dominante es IP con el 97.3%, el otro 0.3% corresponde a ARP (no mostrado en la figura). En el siguiente nivel, el protocolo dominante es el TCP con 94.87%, el resto es tráfico UDP, desglosando el TCP, se observa que el http ocupa casí el 10% del tráfico.

Espero que este breve ejemplo sirva para ilustrar el potencial de esta estadística, para identificar que protocolos son los que más estan consumiendo el ancho de banda, también podríamos detectar protocolos que en realidad no deberían estar pressentes, por ejemplo si se tiene restricción sobre algun protocolo específico, acá se puede detectar con mayor facilidad y observar el impacto que tiene sobre la red.

La segunda estadística a describir en este post, es la de conversations, esta proporciona información sobre las conversaciones presentes en la red, con quien se esta comunicando cada host, en el caso especifico ilustrado se puede observar que se detectaron 25 conversaciones ethernet, 197 conversaciones ipv4, 1141 conversaciones tcp y 779 conversaciones udp.



En el ejemplo ilustrado se pueden ver las conversaciones de ipv4, para cada conversación es posible ver la cantidad de packetes y byte transmitidos en cada dirección, esto puede ayudar a identificar que hosts son los que estan acaparando más el ancho de banda, es posible ordenar en orden ascendente o descendente, en este caso, se ordeno por la mayor cantidad de bytes (observar el pequeño triangulo en el campo bytes), con un clic en cualquiera de los campos se ordena en basea a ese parametro, otro click en ese mismo campo invierte el orden, por ejemplo otro click en bytes, ordeara en forma ascendente.

En la parte inferior aparece un boton de copy, con este se copia el contenido de estadisticas y se puede pegar en un documento de texto con todos los valores separados por comas, por lo que posterioremente es posible abrir el archivo en excel o en cualquier hoja de calculo, para genera gráficas, o hacer un análisis más a fondo.

Para que las estadísticas tengan sentido, es importante situar a wireshark en una ubicación que haga sentido y hay que recordar que estas estadísticas serán utilies de acuerdo al contexto de captura, por ejemplo, si unicamente se esta capturando tráfico entre dos hosts, la estadística será valida para estos dos hosts, si se esta capturando tráfico en un enlace de salida, esta estadística tendrá sentido en el contexto del tráfico que esta pasando por ese enlace, el mensaje aquí es que hay que interpretar las estadísticas de acuerdo a su contexto.

Eso es todo por el momento, en al menos dos post futuros se discutiran más opciones para análizar estadísticas de la red con Wireshark.