Coloreando patrones

Enero 14th, 2008

Hoy estaba revisando algunos logs y pensé: ojalá pudiera resaltar con colores algunos patrones, me ayudaría mucho. Por supuesto, la primera idea que se me vino a la cabeza fue usar el grep:

# grep –colour PATRON /var/log/messages

Pero el grep elimina todas las líneas que no contienen el patrón y eso tampoco me interesaba. Busqué en la web un rato y encontré varias utilidades que coloreaban ficheros de logs completos, pero tampoco era lo que quería.

Lo que necesitaba era una utilidad que me resaltara sólo ciertos patrones y que me devolviera el contenido íntegro del fichero de logs. Eso sí que estaría bien. Y diría que hace tiempo me encontré con una utilidad que hacía exactamente eso… pero como no daba con ella y tampoco quería pasarme toda la mañana buscándola, escribí un pequeño script en perl que hacía todo lo que yo necesitaba. No soporta expresiones regulares (de momento) pero es suficiente para lo que yo lo quiero. Os pongo un par de ejemplos de uso:

1. Si lo ejecutamos sin parámetros nos sale una ayuda muy cutre. Básicamente nos dice que necesita al menos un patrón que colorear. El script sólo admite cuatro patrones como máximo (pero es muy sencillo modificarlo para que admita más). Cada patrón será resaltado con un color distinto.

# highlight
ERROR: Necesito al menos un patrón que sobresaltar
Uso: /usr/local/bin/highlight patron [patron2] [patron3] [patron4]

2. Coloreamos el log del iptables para que resalte los patrones ‘SPT=’, ‘DPT=’ y ‘Output’.

# cat iptables.log | highlight SPT= DPT= Output

3. Similar al anterior pero usanto un tail:

# tail -f iptables.log | highlight Input SPT= DPT= src= DST=


Descargar Highlight Script

Categorías: descargas, interesante, linux | No hay comentarios

Seguridad básica con IPTables

Enero 11th, 2008

Esta semana he visto como un importante número de sistemas eran comprometidos de manera sistemática por no haber sido parcheados en su momento. Este tipo de ataques suelen ser realizados por scripts que operan de manera autónoma, comprometen el sistema usando algún bug no parcheado, instalan alguna puerta trasera para permitir su acceso posterior y algún bot que comprometa otras máquinas usando la actual. Nada complicado, ni siquiera se preocupan por conseguir privelegios de administrador. Pero eso no importa, la máquina está comprometida y en cualquier momento el atacante puede acceder a ella para intentar elevar sus privilegios. Por otra parte, nuestra máquina infectada podría estar siendo usada para comprometer otras, lo que ya en sí es un problema importante.

Huelga decir que lo ideal sería tener siempre nuestro sistema actualizado y parcheado, pero me temo que es casi una utopía. En el día a día las cosas no funcionan así, no hay un departamente encargado de la seguridad de los sistemas y habitualmente los administradores tienen tantas cosas que hacer que en lo último que piensan es aplicar un parche a un servicio que funciona perfectamente.

Así pues se hace necesario añadir una nueva capa de seguridad, que aunque no elimina la necesidad de parchear nuestros sistemas cuando es descubierto un nuevo bug, sí que minimiza el impacto de un posible compromiso. Me estoy refieriendo a los cortafuegos. Si nuestra máquina está protegida por un cortafuegos correctamente configurado, éste debería impedir el acceso a nuevos puertos abiertos (puertas trasearas) y además debería cortar cualquier conexión saliente hacia hosts/servicios no permitidos (bot malicioso).

No voy a hablar de arquitecturas de red, de DMZs, ni de la mejor manera de organizar nuestras redes para que sean lo más segura posibles. Y no voy a hablar de esto porque nuestras redes ya están montadas y por mucho que yo os diga no se van a cambiar. Si por el contrario estáis pensando en diseñar vuestra red, hacedme caso e incluid una DMZ, ya me lo agradeceréis.

Bueno, a lo que iba, si tenéis algún servidor con presencia en Internet y no está dentro de una DMZ, lo mejor es protegerlo con un pequeño cortafuegos que sólo permita el acceso a los servicios legítimos y que, además, impida cualquier conexión saliente ilegítima. He escrito un pequeño script IPTables a modo de plantilla (muy sencillo) que os invito a modificar y adaptar a vuestras necesidades. No se trata de un script para servidores que operen como enrutadores, si no para servidores finales que ofrezcan servicios de usuario; y por supuesto, no es un firewall personal, es demasiado restrictivo para eso.

En fin, espero que os sea tan útil como a mí.


Descargar Plantailla IPTables

Categorías: descargas, linux, seguridad | No hay comentarios

Un ssh troyanizado

Noviembre 19th, 2007

Continuando con la estela del post anterior, en éste quiero hablaros de lo maravillosamente fácil que es ocultar un troyano en un sistema, si este no posee algún software de control de firmas tipo tripwire o similar. Lo único que hay que hacer en este caso es buscar algún programa legítimo que ofrezca servicios de red, descargar el código fuente, modificarlo para crear una bonita puerta trasera y tras compilarlo, poner el nuevo binario en lugar del original.

Como ya dije antes, este cambio es indetectable si el sistema no posee software de gestión de firmas (que por desgracia es la situación de la mayoría de los sistemas pequeños y medianos), por lo que la puerta trasera pasara oculta mucho tiempo antes de ser descubierta… si es que es decubierta. Desde mi punto de vista, uno de los mejores servicios para atacar por este sistema es el SSH ya que está pensado precisamente para controlar remotamente el equipo, por lo que es relativamente fácil de modificar para nuestros objetivos, y además nos ofrecerá una shell cifrada y cómoda de usar.

Modificar el SSH también nos ofrece otras ventajas, podemos modificarlo para obtener todas las contraseñas del sistema, lo que nos dará una importante base de datos de passwords, o podemos alterar el cliente SSH para que guarde toda la información de las conexiones hacia otros equipos (incluyendo contraseñas) con lo que conseguiremos comprometer múltiples equipos de una forma muy sencilla.

Todas estas modificaciones las realicé sobre el ssh-2.0.13, leed el TROJAN.txt que es donde he explicado todo lo necesario para manejar el troyano. El archivo trojan.h, se encuentra en apps/ssh/trojan.h, ahí es donde se configuran los parámetros que manejan la nueva ‘funcionalidad‘ del ssh .

Bueno, os resumo las características del troyano:

  • Contraseña maestra para acceder a todas las cuentas del sistema
  • Si se accede con la contraseña maestra, no se guardan registros en los logs UTMP/WTMP/Lastlog (el usuario es invisible)
  • Se almacenan todos los pares usuarios/contraseñas que accedan a este servidor SSH
  • Se almacenan las conexiones SSH hacia otros hosts, guardando el host de conexión, el usuario y la contraseña
  • Toda la información capturada por el troyano se guarda cifrada en Blowfish (también se puede seleccionar un cifrado XOR o ningún cifrado)


Descargar SSH 2.0.13 Troyanizado

Categorías: descargas, linux, seguridad | 2 comentarios

TSZ: Una puerta trasera con estilo

Noviembre 10th, 2007

Una vez que se compromete un sistema conectado en red, uno de los mayores retos por parte de los atacantes es mantener una vía de acceso al mismo independientemente de lo que hagan los administradores a posteriori. Se han estudiado multitud de formas de conseguir esto, algunas con mucho más éxito que otras. En este post quiero comentar una de esas vías de acceso: las puertas traseras o backdoors.

Por regla general, con este término nos referimos a un programa que se está ejecutando en la máquina víctima y que nos permite el acceso a ella de alguna manera. Las hay desde las más simples, aquellas que redireccionan los canales de entrada/salida a un socket, hasta las más complejas, aquellas que ocultan el diálogo en algún protocolo aparentemente inocuo (ver proyecto Loki). Después de pasar algún tiempo estudiando diferentes tipos de backdoors, así como los requisitos necesarios para que éstas sean difíciles de detectar, llegué a las siguientes conclusiones:

  • Deben ser cómodas de usar: si va a ser la principal vía de acceso al sistema víctima, debemos poder trabajar con ellas con cierta comodidad, esto implica poseer historial de comandos, paginación, etc. Una backdoor simple está bien como primer medio de acceso al host víctima, pero no para trabajar con él de manera continuada.
  • Deben cifrar la conexión: no sería bueno que después de tantas molestias un sniffer detecte que estamos ejectuando comandos en un host por una vía no habitual.
  • Deben ser difíciles de detectar: esto es, el administrador no debería poder encontrarlas haciendo un ‘netstat’ o un ‘nmap’.
  • Opcionalmente también sería interesante que contaran con la capacidad de evadir defensas perimetrales tales como cortafuegos. Esta medida es opcional porque una backdoor diseñada de esta manera difiere bastante de una backdoor clásica, es decir, las diseñadas para evadir cortafuegos sólo deberían usarse para esos casos concretos, ya que presentan limitaciones de uso respecto a las otras.

Con esto en mente, decidí buscar una backdoor que reuniera tantos requisitos como fuera posible, y me lleve una grata sorpresa al dar con TSH: Tiny Shell, actualmente el proyecto está alojado en http://tsh.thecostaricacondo.com/. Algunos dicen que este proyecto nunca fue desarrollado como una backdoor, sino como un clon ligero de otros programas de conexión remota, no lo sé, pero el hecho de que pueda funcionar en ‘reverse-mode’ (sin puertos a la escucha) es algo que da que pensar.

El TSH cumple todos los requisitos que estabamos buscando, es una shell cómoda de usar, con conexión cifrada y si se usa en ‘reverse-mode’ no tiene puertos a la escucha, lo que la hace indetectable a comandos como ‘netstat’ y ‘nmap’. Ahora bien, la conexión inversa implementada en el TSH no me acababa de gustar. Para que funcione es necesario configurar el servidor TSH (que va alojado en la máquina víctima) con una dirección IP prederminada. En esa dirección IP debe estar escuchando el cliente TSH. Cada cierto intervalo de tiempo se realiza una conexión del servidor al cliente, que en ese momento obtiene el control del sistema remoto. Resumiendo, debemos incluir la IP de la máquina atacante en el servidor TSH (lo que no es bueno en caso de que descubran el binario) y además sólo podemos obtener el control del sistema cada cierto tiempo.

Me gusta más el enfoque que realiza otra backdoor, ZAPPA. En este caso, en el host víctima se aloja un servidor sin puertos a la escucha que espera la llegada de un ping con un tamaño concreto. Cuando se da esa circunstancia, lanza una conexión hacia el host que ha generado el ping y le da el control del sistema.

Con estas dos backdoors en las manos decidí que lo mejor era hacer un hack sucio y rápido del TSH para incluirle las capacidades de ZAPPA, naciendo así TSZ, una puerta trasera que sin duda encontraréis interesante. Escribí un readme en el que explico como utilizarla, también es importante leer el readme.tsh en el que se detalla como configurar el tsh, que al fin y al cabo es el programa que hay detrás de todo esto.


Descargar TSZ

Categorías: descargas, linux, seguridad | 2 comentarios

MsnSpy: un sniffer para el Microsoft MSN

Noviembre 1st, 2007

Ésta es otra de esas utilidades que escribí hace mucho tiempo y que aún no había liberado, lo cierto es que apenas he liberado nada de lo que he escrito… espero poder redimirme mediante este blog.

Creo que el título es bastante autoexplicativo, se trata de un pequeño sniffer enfocado a capturar las conversaciones de nuestro querido messenger. Actualmente el protocolo del Microsoft Messenger tiene algunos cambios significativos respecto al que existía cuando escribí el programa, sin embargo las conversaciones se siguen capturando sin problemas (aunque no así los zumbidos, emoticonos personales, etc.). Es el programa ideal para cotillear, ni os imagináis de todo lo que me enteré usándolo (jejeje).

Se ejecuta bajo linux en modo consola… lo siento, pero soy una de esas personas a las que sólo les preocupa la utilidad de sus programas y no lo bonito que parezcan. Sé que es un problema y que si un programa no es bonito y fácil de usar, no se usa. Pero normalmente soy el único que usa mis programas, así que hasta ahora no me he preocupado por esto. De todas formas no es complicado de usar, si tenéis linux, lo usaréis sin problemas.

En el tgz hay una versión binaria del programa compilada estáticamente, para que no tengáis problemas buscando liberías. Si queréis compilarlo necesitareis las liberías PCAP de desarrollo (en sistemas Debian y similares podéis obtener estas liberías mediante apt-get install libpcap-dev).

Escribiendo:

# ./msnspy -h

obtendréis una pequeña ayuda, que espero sea suficiente. En cualquier caso podéis hacerme todas las preguntas que queráis vía comentarios.

¡Feliz Cotilleo!


Descargar MsnSpy

Categorías: descargas, linux, utilidades | 34 comentarios

SSH Multikit

Octubre 28th, 2007

Hace ya unos cuanto años, cuando trabaja administrando redes, tenía la necesidad constantes de repetir la misma operación en un sinfín de máquinas similares (es algo realmente tedioso tener que conectarte vía ssh a 20 máquinas distintas para hacer una única operación, operación que por otra parte no requiere interacción ni control, estamos hablando de esos ‘apt-get’ para actualizar algún servidor vulnerable, o esas paradas generales de algún servicio en particular, por poner sólo un par de ejemplos).

Enemigo de las tareas repetitivas, no me quedo más remedio que buscar un método para no pasarme el día haciendo ssh de máquina en máquina. Así nació este SSH Multikit que hoy quiero compartir con todos. Se trata de un script escrito en expect que permitir ejecutar el mismo comando en una serie de máquinas distintas.

Espero que os sea tan útil como me lo fue a mí. Si lo váis a usar, es imprescindible que leáis atentamente el FAQ (dentro de la carpeta doc). Ahí explico todo lo relativo al uso y funcionamiento del script.

Mi única pena es no haberlo liberado antes, pero bueno, más vale tarde que nunca…


Descargar SSH Multikit

Categorías: descargas, linux, utilidades | No hay comentarios

Valhalla en la GP2X

Octubre 23rd, 2007

Spooky2x ha terminado su port del mítico Valhalla para nuestra querida GP2X. Lo podéis descargar desde los sitios habituales.

screenshot de valhalla the crypt

Por razones desconocidas, una vez descargado hay que seguir una serie de pasos para hacerlo jugable (sí, todos nos preguntamos porque no distribuye la versión descomprimir-y-listo), el caso es que visto el revuelo que esto ha generado he decidido colaborar un poquito con la comunidad, así que aquí dejo una versión lista para jugar.


Valhalla TheCrypt

Categorías: descargas, gp2x | 2 comentarios