08 septiembre 2014

Reversing: ¿algo más allá de los 0s y 1s?

Durante todos los cursos formativos de Reversing que he tenido el placer de impartir, tanto en la NoConName como en la RootedCON, siempre intento transmitir a los alumnos la necesidad de saber leer el código. Sí sí, me refiero a coger un binario, leer sus instrucciones y saber abstraerse de modo que se entienda, en un "vistazo rápido", qué es lo que está haciendo una cierta parte de código.

Esto es cada día más una necesidad, si pensamos en la gran cantidad de binarios con intención maliciosa que corren por la red, cada vez más personalizados con lo que los método automáticos de análisis de muestras maliciosas dejan de ser útiles, y que un analista debe analizar de manera manual. Así pues, vamos a ver un ejemplo sencillito de por qué aprender a leer ensamblador es bueno! :)

Hoy vamos a analizar el binario "reversing.exe", firma MD5 d1287fdcc585c09b532d3c953378d745., que es un crackME, es decir, un programa especialmente desarrollado para practicar la ingeniería inversa (es decir, se permite inspeccionar su código binario y analizarlo, aspecto que no está tan claro su legalidad conforme a la legislación de ciertos países). La procedencia del mismo no voy a hacerla pública yo, os la dejo de deberes. Desde aquí un abrazo fuerte a su autor y amigo, lector asiduo de este blog y muy buen profesional ;). Lo primero siempre a la hora de analizar un crackME es ejecutarlo, para ver qué pinta tiene. En este caso, nos encontramos con esta pantalla:

Aparece una terminal donde se pide la introducción de un número de serie. En función del desarrollado del crackME, nos podemos encontrar que también se pide el nombre de usuario, o incluso nada (estos suelen tener "truco" para resolverlo ;)).  Antes de empezar a poner las manos en la masa, veamos qué ocurre si ponemos algún texto cualquiera como número de serie, y aceptamos:


El programa nos informa de que el número de serie introducido es inválido, ¡vaya!. Hubiera estado muy bien haber acertado a la primera, pero parece que hoy no toca... Bueno, pues ¡vamos a empezar el análisis fino! El primer paso siempre será ver a qué nos vamos a enfrentar: lenguaje de programación, si tiene alguna protección (packer), etc. Esto servirá para definir el análisis que tengamos que realizar, junto con las herramientas a utilizar. Le pasamos, en mi caso, el PEiD, que me informa de que al parecer es un binario normal y corriente, sin protecciones adicionales:


Visto lo cual, vamos a echarle un vistazo al código binario a ver qué nos encontramos. Para ello, podemos cargarlo en una herramienta de análisis estático, como el Win32Dasm (soy un clásico, perdonadme), o una herramienta de análisis dinámico, como el OllyDBG. En mi caso, me voy a decantar por la segunda pero no voy a ejecutarlo, simplemente voy a "leer" el código.

En la imagen superior se muestra lo que nos aparece dentro del debugger OllyDBG. El debugger siempre nos para en la "primera" instrucción que se va a ejecutar del binario, que es la que se encuentra en el "Program Entrypoint". Vamos a observar un poco en detalle el código que nos encontramos.

Como veis, lo primero que hace el binario es llamar a la función de Windows GetTickCount(). Esta función devuelve el número de milisegundos transcurridos desde el encendido del ordenador. Este valor devuelto se almacena en el registro EAX, que en la instrucción de después guarda en una variable en memoria (dirección 0x4030AF). Tras esta asignación, hay una llamada a la dirección 401051. Esta función contiene el siguiente código:

Lo primero que hay es un "XOR EAX, EAX", que quiere decir que pone un 0 en EAX. ¿Por qué el compilador no ha puesto entonces "MOV EAX, 0", que es una instrucción de ensamblador para poder asignar valores a los registros del micro? La respuesta es sencilla: por optimización. Un "XOR EAX, EAX" ocupa menos bytes y consume menos ciclos (o sea, se ejecuta antes) que un "MOV EAX, 0" en una arquitectura x86. Después de este XOR, aparece una llamada a IsDebuggerPresent(), que devuelve un 0 ó 1 en función de si el programa se está ejecutando bajo debugger. Si el valor de EAX es 0, el "OR EAX, EAX" también será 0, con lo que la bandera de cero estará activada, y el salto condicional "JE" de después se ejecutará, con lo que llevará la ejecución a 40105D (es decir, dentro de la misma función). Después observad que hay varias llamadas a otros lugares. Si leyéramos cada una de ellas, veríamos que hay cierto código que hace "cosas" que a priori no sabemos muy bien para qué las hace. ¿Hará falta profundizar en cada una de estas llamadas y analizarlas en detalle? Pues no lo sabemos todavía, así que si es necesario, mejor dejarlo para el final, ¿no?. Para ir acabando el artículo, voy a centrarme en las dos últimas que son las que presentan algo de chicha. El código de ambas funciones, 0x4010A3 y 0x40110B, se presentan respectivamente a continuación:



Fijaos en la última llamada. Aparece una llamada a CompareStringA(), que es una función para comparar dos cadenas. Las dos cadenas que se comparan son las almacenadas en las variables 0x403136 (String2) y 0x4030C2 (String1). Si nos centramos ahora en el código de la primera función (0x4010A3), se observa una llamada a wsprintfA(), que es una función para imprimir cadenas, seguro que la conocéis si habéis programado en C. En este caso, observad con detalle sus parámetros: el primer parámetro 0x4030B8, es un puntero a una cadena, el segundo es el formato en el que debe de "imprimir" esa cadena, que es %.08X, es decir, hasta 8 carácteres hexadecimales; y el tercero es dónde ha de imprimirlo, que en este caso es otra variable cadena en la dirección 0x403136, que es la que coincide con el parámetro de entrada a la función CompareStringA() que se ha comentado anteriormente.

Si leemos un poco más hacia atrás del wsprintf, observad que aparece como parámetro de la función GetVolumeInformationA(), que sirve para recuperar información sobre el disco duro donde está montado el raíz del sistema. Concretamente, coincide con la variable donde se guarda el número de serie del volumen del disco duro raíz.

Observad que hasta ahora, no ha sido necesario ejecutar el binario y simplemente hemos "leído" su código, analizando y observando lo que va a suceder cuando se ejecute. Sabemos que si no se ejecuta bajo debugger, el programa llega un momento en que recoge información del disco duro donde se está ejecutando, y compara su número de serie del volumen con otra cadena. ¿Será la otra cadena la que nos permite introducir como clave el crackME? ¡Vamos a probarlo!

Pero... ¡antes tenemos que saber cuál es el número de serie de nuestra unidad raíz! ¿Y cómo se sabe esto? Pues muy fácil, mediante el comando "vol C:" en la consola de Windows XP, obtenemos la respuesta. Así que ahora ya podemos ejecutar "reversing.exe" tranquilamente, e insertar el número de serie del volumen proporcionado por el comando anterior (¡ojo! sin el guión intermedio, recordad el formato de la llamada wsprintfA). Y voilá:


¡Reto resuelto!

Cabe decir que si no hubiera sido la solución, podríamos haber seguido estudiando el código en estático, como hemos hecho, o bien empezar a analizar el código en binario, para ver "en caliente" que está pasando durante la ejecución del binario. Como veis, el "ensayo y error" es la forma de ir avanzado poco a poco en este "arte" de la ingeniería inversa.

Yo siempre lo digo, que además del inglés y el español, también "hablo" ensamblador x86. En el próximo curso de Reversing & Exploiting organizado por Securízame, y del cual tengo el honor de formar parte del profesorado junto con las figuras de primer nivel en sus respectivos campos, detallaré algunas cosas más sobre la abstracción de código ensamblador a código de alto nivel para entender qué hace un binario concreto, así como enseñaré algunos trucos y las técnicas más comunes para "atacar" ciertos tipos de binarios.

Y tú, ¿a qué esperas para aprender a "hablar" ensamblador? ¡Apúntate ya! ;)


Colaboración por cortesía de Ricardo Rodríguez
Leer más...

07 septiembre 2014

Enlaces de la SECmana - 240

Leer más...

05 septiembre 2014

Recursos sobre APTs

Pasa el tiempo y el concepto APT, si bien ha perdido el hype inicial, se ha convertido en algo bastante común. Hemos pasado de acciones aisladas que sorprendían al mundo, a ser un problema muy real con el que muchas empresas (y no necesariamente de perfil alto) lidian día a día.

Mucha gente se acerca a preguntar sobre el tema, al principio eran curiosos, ahora es gente que le toca enfrentarse al problema o intentar mitigarlo.

Empezar a investigar sobre asuntos APT no siempre es fácil, todo el mundo es capaz de llegar a Stuxnet e incluso a la operación Aurora, pero tener una visión global y más amplia requiere leer y documentarse más.

Recientemente di con un proyecto llamado APTnotes que tiene como misión recopilar toda la información técnica que se haya liberado sobre incidentes de tipo APT.

Además, la tienen clasificada por año, lo que permite coger un documento técnico del 2008 y compararlo con uno del 2012 y tratar de ver en perspectiva la evolución.

Como no podía ser de otra forma, hay extensa información sobre Stuxnet, Duqu, Flame o la operación Aurora. Con análisis del malware asociado a los incidentes desde un punto de vista técnico.

En definitiva, un excelente proyecto que debes guardar en tu bookmark ya mismo
Leer más...

03 septiembre 2014

Programando plugins para Immunity Debugger




Muchas veces, cuando hemos de hacer ingeniería inversa a algún tipo de software o intentar explotarlo, nos damos cuenta de que las herramientas que están a nuestro alcance se ven limitadas debido a uno u otro motivo. 

Es en estos casos en los que el hecho de saber programar y trabajar con herramientas que se puedan extender fácilmente nos permitirá seguir haciendo nuestro trabajo, a la vez que podemos aportar nuestro granito de arena a la comunidad liberando aquello que desarrollemos. 

En esta situación me encontré el otro día cuando estaba preparando una de las prácticas para el nuevo curso de "Reversing y Exploiting avanzado en Windows y Linux", en el que daré el módulo de "Exploiting en Windows".

El problema que tenía era bastante trivial. Sin embargo, fue una buena oportunidad para volver a echarle un ojo a la documentación de los plugins de Immunity Debugger. La situación era la siguiente: había encontrado unos ROP Gadgets en cierta DLL que, en principio, me iban a permitir explotar la aplicación. Sin embargo, esta DLL no se cargaba al iniciar la aplicación, con lo que no podía establecer un breakpoint en la dirección que me interesaba al iniciarse la aplicación. Estoy seguro que hay muchas otras maneras de aproximar este problema como, por ejemplo, seguir el flujo de ejecución del programa hasta la carga de la DLL o, muy posiblemente, ya exista, por defecto, un modo de establecer este tipo de breakpoints. Pero como ya he dicho, no necesito muchas excusas para ponerme a programar algo que me parezca interesante y que me pueda ayudar en otras situaciones en las que sí sea necesario acabar programándose un plugin específico para tareas más complejas. Sobre el tema de seguir el flujo de ejecución del programa, era algo que quería evitar ya que en mi módulo de exploiting en Windows no será necesario tener (casi) ningún tipo de conocimiento sobre reversing, de modo que nos abstraeremos de este tipo de tareas para centrarnos específicamente en técnicas de exploiting. El tema de reversing se lo dejamos a Sergi y Ricardo con sus respectivos módulos, que son ellos los expertos :)

Lo primero que necesitamos es Immunity Debugger. Este software nos permite depurar los programas que vamos a investigar. Está basado en el clásico OllyDBG. Lo cierto es que cualquier de los dos debuggers os puede servir, sin embargo, yo acostumbro a utilizar Immunity ya que soporta una grandísima herramienta llamada mona.py. 

En el curso veréis alguna de sus funcionalidades que, seguro, os sorprenderán! Al menos, a mí me dejaron bastante impresionado explicadas de boca del propio Peter, cuando nos las enseñó en el training que dio en Madrid para la RootedCon de este año.

Una vez tengamos Immunity instalado (instalad también la versión de Python que os pide), nos podemos hacer una idea de como funciona cargando cualquier programa que tengáis por ahí. En mi caso, el problema lo tenía con la versión de Winamp que explotaremos en el curso. La podéis descargar (aquí). Instaladla.

Para depurar un programa, abrid Immunity (ejecutadlo como administrador si estáis en Windows mayores a XP) y clicad F3 o id a "File->Open". Id al directorio en el que se ha instalado Winamp (en Windows 7, "C:\Program Files (x86)\Winamp") y abrid el ejecutable "winamp.exe". Deberíais ver algo parecido a lo siguiente:



 En mi caso, he reordenado algunas de las "Views" para tener siempre a la vista aquello que es interesante. Podéis jugar con ello.

¿Dónde estaba mi problema? Pues que quería poner un breakpoint en la DLL in_mod.dll en la dirección 0x12f02bc3 pero ésta no está mapeada al iniciarse la aplicación, así que si intentamos poner un breakpoint en esa dirección nos dará un error.



Visto el "problema", vayamos a la solución. 

La idea es tener un trigger cada vez que una DLL nueva se cargue y si es la que buscamos, añadir el breakpoint en la dirección que nos interesa. Para ello programaremos un plugin (llamados PyCommands en Immunity Debugger). Lo primero que necesitamos es obtener la documentación necesaria para saber qué funcionalidades tenemos disponibles. 

Para ello, en el directorio del depurador ("C:\Program Files (x87)\Immunity Inc\Immunity Debugger\Documentation") tenemos la "documentación". Si estáis en Windows 7, abrid cualquier de esos archivos HLP y disfrutad de los resultados:


lol.

Bueno, siempre podremos ver la documentación online, no? Upps, 404. lol.

Tiremos entonces de la bendita WayBack Machine! Ahora ya tenemos algo parecido a documentación. Aunque sólo sea una API Reference. A partir de esta guía y de la API Reference posiblemente podréis hacer todo aquello que os propongáis. A pesar de la poca profesionalidad por parte de Immunity Inc, lo cierto es que las funcionalidades de la API son muy completas y, además, tenéis muchos ejemplos de plugins en el directorio de PyCommands de Immunity. Ya os aseguro que los vais a utilizar como guia si queréis programar cualquier cosa :)

Lo primero que necesitamos es un modo de controlar que DLL se cargan. Para ello, utilizaremos la clase LoadDLLHook. Para utilizar esta clase tendremos que crearnos una clase propia que herede de ésta, en la que sobrescribiremos ciertos métodos. Quedaría algo tal que así:




Este es nuestro esqueleto. Tenemos nuestra clase DLLHook que hereda de LoadDLLHook, una clase propia de la API de Immunity, para la que sobrescribiremos el método run(). En el método __init__() de nuestra clase (el constructor) llamamos al constructor de la clase de la que heredamos.

El método main() es el principal método de cualquier PyCommand. Es lo primero que se ejecutará al cargarse el plugin. Como veis, retornamos una cadena. Esta cadena se mostrará en la UI de Immunity, en el marco inferior. Lo importante es que instanciamos nuestra clase DLLHook y llamamos al método heredado add(). Este método nos permite crear un hook. Este hook es de tipo LoadDLLHook, así que lo que nos permite es interactuar programáticamente con el depurador cada vez que ocurra un evento LoadDLL, o sea, cada vez que se cargue una DLL. 

Algo que parecía un poco complejo, se ha convertido en algo trivial, verdad? Ahora sólo necesitamos comprobar qué DLLs se van cargando y establecer el breakpoint en la dirección que queramos cuando nuestra DLL se cargue. 

El método run(), a pesar de que la documentación no nos diga absolutamente nada, es el que se ejecuta siempre que una DLL se cargue. Esto lo podemos saber si nos miramos el código fuente de la API (desde la propia documentación online), veríamos el siguiente comentario: "# function that will be runned once the hook is triggered". No les hubiera costado mucho añadir esta línea a la documentación, no? En fin... 

Sin embargo, tenemos un problema. Cuando ejecutamos este método no se nos pasa el nombre de la DLL que se ha cargado, sólo el estado de los registros en el momento de cargarse (los podéis ver a través del parámetro "regs"). Así pues, lo que hice fue obtener el nombre de las DLLs cargadas en el momento en el que el hook se ejecuta. Para ello, tendremos que utilizar las funciones de la clase Debugger. Con esta clase podremos obtener los módulos cargados (método getAllModules()), establecer breakpoints (método setBreakpoint()) y muchas otras cosas.

El código quedaría así:



En este paso hemos añadido unas cuantas cosas. La primera es importar la clase Debugger y crear una instancia (imm) como variable interna de la clase DLLHook. A continuación, se ha modificado el método run().
Primero obtenemos todos los nombres de los módulos cargados a través del método getAllModules(), que retorna un diccionario en el que las claves son los nombres de los módulos. Si nuestra DLL ya se ha cargado, añadimos el breakpoint en la dirección que queramos con el método setBreakpoint(), que recibe la dirección en la que añadir el breakpoint como un entero (0x12f02bc3 en hexadecimal es 317729731 en decimal).

Recordad que el método run() se ejecuta siempre que se cargue una DLL con lo que esta comprobación se realizará por cada DLL cargada. Este proceso ralentiza un poco el proceso de carga del binario, así que a la que se añade el breakpoint, lo que hacemos es desactivar el hook (primero lo desactivamos vía el método disable() de la clase LoadDLLHook y después lo eliminamos con UnHook()) para que la carga de DLL se haga sin que nosotros interceptemos las llamadas y agilicemos el proceso significativamente.

Como véis, ha sido bastante fácil, no? A continuación tenéis el código un poco más bonito y genérico. También lo podéis encontrar aquí.



Ahora sólo tenemos que guardar este código en un archivo .py y ponerlo en el directorio PyCommands dentro del directorio de instalación de Immunity. Ahora, una vez abráis el depurador, cuando salte el breakpoint del entry-point del programa, podéis ejecutar el PyCommand. Por ejemplo, si lo habéis llamado "break_on_load.py", sólo tenéis que escribir "!break_on_load" en la consola de Immunity (el marco inferior) y listo!

Este ejemplo ha sido muy simple. Se pueden hacer cosas bastante más complejas. Por ejemplo, aquí hice un PyCommand que se encarga de buscar ciertas instrucciones siguiendo diferentes flujos de ejecución una vez el programa ha cascado. Este PyCommand puede servir para encontrar "trampolines" que nos permitan saltar a direcciones de memoria que controlemos, dependiendo de los registros que controlemos, una vez hayamos explotado.


Ya sabéis, si queréis aprender estas y otras cosas con algo más de profundidad, no dudéis en apuntaros al curso de reversing y exploiting ;)

Un saludo,
newlog!


Contribución por cortesía de Albert López
Leer más...

01 septiembre 2014

Comiendo con Steve Wozniak



Quien sigue a Steve Wozniak por twitter, estará al tanto de sus movimientos y sus citas con fans que registra en FourSquare. Pues bien, hoy os quiero contar que he tenido el gran placer de ser uno de esos afortunados que ha podido compartir mesa con Steve y conocerle un poco más.

El escenario fue el Mandarin Gourmet en Cupertino, a escasos metros de los Headquarters de Apple, empresa que él mismo cofundó con Steve Jobs, y desde la que contribuyeron en gran medida a ser gran protagonista de la Historia de la Informática.

Aprovechando un viaje a San Francisco, contacté con Steve para encontrarnos en alguna parte en el Sillicon Valley. La agenda de Steve es muy apretada, y da un montón de vueltas alrededor del Mundo, pero justo la semana que le propuse, estaría en Estados Unidos. Así pues, nos sentamos a la mesa con su esposa, Janet Wozniak, y con otro fan italiano, que Steve aprovechó para contentar en la misma ocasión con sus aventuras del pasado.

Estoy seguro que muchas veces habéis escuchado la pregunta. Si pudieras estar a solas con “tu artista favorito”, ¿qué le preguntarías? Pues eso mismo me pasó a mí. Pese a haberle entrevistado hace años cuando vino a Campus Party 2010 en Valencia, los cinco primeros minutos de dicha comida se me olvidó hasta el idioma. 

Sin embargo, Steve está acostumbrado a romper el hielo en este tipo de situaciones, y le gusta llevar la voz cantante de la conversación. Había leído historias muy curiosas sobre él en el libro de Cyberhades “Microhistorias: Anécdotas y Curiosidades de La Informática”…. como cuando haciendo Blueboxing llegaron a llamar al Vaticano y hablaron con el Papa! o cuando Steve Jobs recurrió a él trabajando en Atari y le pidió que diseñara e implementara un juego con el menor número de chips posible y que les pagarían 1000 dólares por cada chip menos que utilizasen si la cantidad inferior era menor a 50 (que creo que quedó en 45 al final)…. 

Parte de la conversación estuvo dedicada a repasar este tipo de anécdotas, que sin desmerecer la excelente redacción del libro de Cyberhades, que sea el propio Wozniak quien te las cuente genera una sensación que no soy capaz de relatar con palabras de este planeta.

Nos contó igualmente anécdotas de cuando trabajaba en Hewlett-Packard, diseñando calculadoras y sobre cómo se había solucionado un problema relacionado con el cómputo de cálculos con diferentes operandos, entre los que aparece la raíz cuadrada, haciéndolo mucho más eficiente que el equivalente de Texas Instruments, su principal competencia en aquella época.   

Estuvimos hablando también sobre su vida actual, en la que confesó que ya no tiene tiempo para el hacking hardware del que en una época fue un referente, y que se la pasa viajando alrededor de todo el mundo, dando conferencias y haciendo otro tipo de trabajo relacionado con la informática.
  
Muy simpática y agradable su esposa y fiel escudera Janet, que le ayuda a gestionar su agenda y redes sociales, imagino que entre otras tantas actividades. Hace unos meses le regaló por su cumpleaños un Tesla, que tenían aparcado en la puerta del restaurante,… y al que reconoció que no le ha querido meter mano ni para ganar el “Bug Bounty” de los 10.000 dólares, ni por mera curiosidad. Nos estuvo contando los miles de servicios que el fabricante les daba, entre otros localización GPS y monitorización del estado de los sistemas del coche, actualizaciones de firmware, etc,… que me pusieron los dientes largos y los pelos de punta por la cantidad de "posibles delitos" que se me pasaron por la cabeza.

Sorprende la calidad humana y la accesibilidad de Steve, que gozando de la popularidad que tiene, y moviéndose en los círculos que se mueve, te ofrece una accesibilidad y una llaneza extremas, haciéndote sentir cómodo en todo momento. Fue curioso, porque me preguntó que a qué me dedicaba (y aparte de llevarle una camiseta y una taza de Securizame de regalo) estuve contándole que participaba asiduamente como speaker en Congresos de Seguridad en España y Latinoamérica. Le conté uno de los proyectos de los que me siento más orgulloso, y que vosotros lectores de SbD, seguro conocéis, respecto a seguridad y domótica, la integración de mi “Skynet” casero, y la cantidad de cosas que hace mi bot. 

Pude comprobar en su mirada, cómo le brillaban los ojos cuando le hablaba de todos los módulos que integré, el reconocimiento facial hecho con OpenCV, que identifica al habitante que entra en casa, la activación de la alarma automáticamente, el aire acondicionado, las persianas y toldos por X10 según esté o no de vacaciones, y según los datos de la estación meteorológica de la terraza, así como el control automático y monitorización de mi querida Roomba a través de bluetooth. Mientras relataba todo esto, me interrumpía constantemente con dudas sobre lo que le explicaba, y al final de la comida, dijo que había disfrutado con cosas como las que le había contado, y que le había resultado muy gratificante "compartir historias, en ese rato, con otro hacker tan loco como él" (aunque obviamente a millones de años luz de lo que hacía Wozniak). 

Quedé en enviarle un link al video de la charla que dí en RootedCON en 2012, y un video “no oficial” que me grabó @mfvitale en Ekoparty con los últimos 30 minutos de "Welcome to your secure /home, $user" (ya que el video oficial no está disponible en el archivo de la página de Ekoparty).

Por ésta y por otras tantas situaciones vividas, os aseguro que este será un viaje que permanecerá en mi memoria para siempre. 
Leer más...

31 agosto 2014

Enlaces de la SECmana - 239




Leer más...

27 agosto 2014

Taller de Seguridad Perimetral en Navaja Negra #NN4ED con @cyberoam







Como ya anunciamos en Security By Default, y está ya en boca de todos, la cuarta edición del Congreso de Seguridad Navaja Negra, está a la vuelta de la esquina!! 

Aunque ya lo ha comunicado la organización de Navaja Negra, en la edición de este año, Cyberoam (como patrocinador del evento) y Securízame (como colaborador), tendrán participación activa en un taller de Seguridad Perimetral de dos horas de duración.

En este taller, cuyo título oficial es: "Securízate! Buenas Prácticas de Configuración de Sistemas de Seguridad Perimetral", daré un subset del curso que he dado en otros eventos de seguridad, como el ACK Security Conference en Colombia, PeruhackCON 2013, o No cON Name en 2012, y que está en la web de Securízame para ser impartido online en su totalidad, cuando haya aforo suficiente, así como disponibilidad de fechas en mi agenda, cosa que está bastante complicada últimamente.

En este taller, normalmente, suelo contar cómo configurar o disponer, en la topología de una red, diferentes herramientas, libres o comerciales, que nos ayudan a disponer de un control y de una monitorización mayor de la actividad de nuestras redes, así como la prevención de diversos ataques, a nivel perimetral, no confiando en los posibles fallos de seguridad o defectos en la configuración, que incorporen las aplicaciones o servicios expuestos a Internet tras dichas barreras de contención.

En esta ocasión, y con una duración de dos horas, mostraré cómo llevar a cabo varias de esas labores, como configurar correctamente, entre otras cosas, una política de reglas de firewall, IPS, WAF, Antispam, análisis de tráfico saliente, QoS, etc,... de la forma más óptima posible (según mi experiencia), utilizando como base un appliance CR25iNG del fabricante Cyberoam.

El taller será de acceso libre y gratuito (hasta llenarse el aforo) e incluido en la entrada, al igual que los demás (que por cierto también tienen una pinta increíble), de manera que permitirá a los asistentes aprender Buenas Prácticas de configuración de sistemas de seguridad perimetral, incluidos dentro de los UTM de Cyberoam.

Como punto importante, es que el sponsor ha ofrecido un dispositivo Netgenie, el hijo menor de Cyberoam, orientado al mercado SOHO o casero, para ser sorteado al final del taller, entre los asistentes al mismo.

Nos vemos en Albacete a primeros de Octubre y espero que disfrutéis el taller!!



Leer más...