domingo, 10 de octubre de 2010

Comparativas de OSs para servidores

Overview


Una de las materias que estoy haciendo éste año es Sistemas Operativos, donde vemos fundamentos básicos de los mismos como: administración de procesos, scheduling de procesador, scheduling de memoria, administración de I/O, memoria virtual, seguridad y demás.



El régimen de cursada es bastante standard pero la materia no es promocionable y como parte de la aprobación de la misma es necesario, además de los 2 parciales teórico/prácticos, la presentación de trabajos prácticos con temas relacionados a la materia. Están relacionados a Windows features y no a problemas o características generales de los sistemas operativos actuales.



Es criterio de la cátedra hacer las prácticas sobre sistemas operativos de Microsoft, y en parte se debe a que la universidad es Solutions Provider de éste último. Pero en éste trabajo práctico que nos encomendaron el espectro de sistemas operativos y los targets de los mismos se abrió bastante. Alcanzó a sistemas operativos que estoy más habituado a usar o que en algún momento usé (FreeBSD, Solaris, Ubuntu, Debian GNU/Linux, Red Hat GNU/Linux, Mac OS X, iOS) y a algunos otros que no he tenido el placer de utilizar y creo que resultaría interesante probarlos (Plan 9, Inferno OS, MOSIX, OpenSolaris, OpenIndiana, StormOS).



Dentro de esa vorágine de nombres pocos conocidos para algunos y más que consanguíneos para otros, se encuentran los que nos tocó como grupo (3 compañeros y yo) para que realizaramos una investigación con las siguientes características:


a) La empresa


  • Algunos detalles de la empresa. Respaldo. Partners

  • Sus orígenes y evolución

  • Segmento del mercado al que apunta con el producto


b) Producto - Puertas adentro

  • Características generales del sistema

  • Características del sistema de archivos

  • Características de la administración de memoria

  • Características de la administración de procesador

  • Características de seguridad

  • Facilidades para desarrolladores

  • Puntos fuertes y débiles frente a otros productos de la competencia


c) Producto - Puertas afuera

  • Difusión y presencia en el mundo

  • Posibilidad de soporte a usuarios

  • En que casos se recomienda la instalación de éste producto

  • Costos del producto



Para finalizar se debía presentar una comparativa haciendo énfasis en los factores más importantes dentro del segmento de mercado en que compiten los productos evaluados.



Los productos que a nosotros se nos fueron dados para evaluar y comparar fueron:


  • Debian GNU/Linux

  • FreeBSD

  • Red Hat GNU/Linux




Haciendo un democrático y aleatorio sorteo con nombres en papelitos, quedó definido que yo debía hacer las comparativas de los tres sistemas operativos, elaborar la presentación y hacer el documento que debíamos entregar a la cátedra como resumen del trabajo práctico.



Como resultado de éste trabajo quedó el siguiente PDF con el trabajo completo:


Trabajo Práctico Especial - Comparativa de Productos (Casullo-Gatti-Marcos-Vivar)



Espero que les guste el PDF y les sea útil si están necesitando evaluar éstos sistemas operativos para una próxima instalación de un servidor.



"Buena vida y poca vergüenza!" Hasta la próxima randomnautas!

sábado, 9 de octubre de 2010

Volver a bloggear: tarea ardúa!

Retomemos un poco



Pasó mucho tiempo desde la última vez que posteé algo en el blog y mucha agua por debajo del puente. Básicamente me perdí en el laburo y otras yerbas, pero nunca dejé de estar conectado y surfear éste universo.

Hagamos un borrón y cuenta nueva! Se puede decir que ahora si estoy terminando la facultad y aunque para mi falta mucho es evidente que estar en 5to año es estar un poco más cerca. Como tantas cosas han cambiado voy a empezar a comentarles a que me estoy dedicando actualmente y cuales son mis nuevas pasiones informáticas para que se vayan acostumbrando a ver noticias relacionadas a ellas en el blog: seguridad en informática y iOS Development.



Seguridad en Informática




Éste año tuve que encarar las últimas materias de la universidad y dentro de ese paquete de asuntos pendientes estaba la materia Seminario de Informática II que hace ya unos años cambió de nombre por Seguridad en Informática.

La razón por la que empecé a estudiar Ingeniería en Informática fue para saber bién como funcionaba el mundo de las computadoras y la información que éstas manipulaban. Si me apasionaran las computadoras per se, hubiese estudiado Ingeniería Electrónica.

Programar cosas y que éstas sean usadas por la gente es algo que quiero hacer desde que tenía trece o catorce años. Sin embargo, lo que siempre quise hacer o quiero hacer es dedicarme a buscar vulnerabilidades (de ser posible explotarlas con fines educativos), experimentar con nuevas tecnologías y hacer cosas locas a través de Internet.

Como trabajo práctico anual de la materia Seguridad en Informática tenemos que establecer un convenio legal con una empresa para revisar la seguridad de su aplicación web y como ésto afecta su presencia en Internet. A mi me surgió la posibilidad de hacerlo con el sitio de una organización gubernamental muy importante de la ciudad en la que vivo. Tuve que esperar la firma del convenio legal y mientras tanto sucedieron muchas cosas en el penetration test.

Primero tuve que hacer pruebas de SQL Injection básicas y no brindaron resultados alentadores ya que los errores se mostraban con una pantalla de error genérica. Luego con un proxy de por medio no pude enviar información modificada al servidor.

La frustación fue en aumento a medida que me encontré con nuevas barreras.

Me desvelé muchas noches a la espera de encontrar algún agujero en su implementación de seguridad en la base de datos, y luego de casi una semana haciendo Blind SQL Injection encontré una URL en la que no se filtraba bien un dato que se pasaba como parámentro y tranquilamente podría haber sido estático en el CSS del sitio.

Empecé a armar un DER inverso de cada base de datos para entender como era la estructura de las mismas. Luego con una consulta más rebuscada en la inyección me di cuenta que podía consultar otras bases de datos que estaban en el mismo servidor.

En resumidas cuentas, logré bypassear las restricciones que tenía el servidor de base de datos y realizar las consultas que necesitara. Así logré sacar cuentas de usuarios y contraseñas de ésta entidad gubernamental pero aún no tenía el convenio firmado y era problemático tener esa información tan sensible sin el pertinente respaldo legal.

Probando si la aplicación era vuelnerable a XSS, pude hacer cosas divertidas como sacar cookies e insertar iframes en las páginas y dentro de esos componentes mostrar imágenes de LOL CATZ.



Con éstos resultados más que positivos me dediqué a crear el correspondiente informe gerencial que la materia requería para entregar a la organización a la cual estábamos auditando. Correcciones más, correciones menos la cátedra de la materia me dijo que estaba en condiciones de presentar el reporte. Por eso mismo me dediqué a llamar, mandar mails y señales de humo a mi contacto de la organización, que dicho sea de paso yo venía haciendo todas las semanas, para que firmaran cuanto antes el convenio.

Luego de casi 3 semanas de tratativas y al regreso de las vacaciones de mi contacto se me informa vía mail que el convenio, que desde primer momento se había estipulado informalmente llevar a cabo, no iba a ser concretado por cuestiones internas de la organización. Con lo cual los 3 meses de trabajo, las noches de desvelos, las inyecciones de Blind SQL, y los ataques de XSS no me servían de nada como parte del trabajo de la materia. Sin embargo, la cátedra se apiadó de mi y me aceptó el reporte como si fuera la organización.



Y ahí en adelante el bichito de hacer pentesting se instaló en mi y ahora estoy involucrado en el mundo de la seguridad en informática aunque me gustaría estarlo más (luego les voy a contar de la EkoParty 2010) y dedicarme full-time a ésto.



A continuación les dejo unos eBooks relacionados a la Penetration Testing en aplicaciones web.



Syngress Penetration Testers Open Source Toolkit Volume 2 - ISBN 1597492132 (Oct 2007)

http://gog.gateit.net/books/Syngress.Penetration.Testers.Open.Source.Toolkit.Volume.2.Oct.2007.ISBN.1597492132.pdf



APress - SQL Server Security Distilled 2nd Edition - ISBN 1590592 (Sep 2008)

http://gog.gateit.net/books/Apress.SQL.Server.Security.Distilled.2nd.Edition.Sep.2008.ISBN.1590592190.chm



APress - Expert Shell Scripting - ISBN 143021841 (Jan 2009)

http://gog.gateit.net/books/Apress.Expert.Shell.Scripting.Jan.2009.ISBN.143021841X.pdf



iOS Development




A principios de Febrero de 2010, entré a trabajar en una empresa de Mar del Plata en el área de mobile ya que antes había hecho trabajos de desarrollo de aplicaciones para dispositivos móviles. Si bien nunca había desarrollado en Objective-C para iOS, no me resultó difícil empezar a escribir mis primeras líneas de código.

Se hicieron varias aplicaciones en la empresa, pero no fue necesario hacer muchas para saber y entender que desarrollar en Objective-C y Cocoa Touch era algo que me gustaba mucho.

En futuras ediciones voy a dar explicativos y tutoriales de como resolver cuestiones básicas para nuevos desarrolladores de Objective-C.

Hoy por hoy estoy desarrollando aplicaciones para iOS en Lateral View (http://www.lateralview.net) y la verdad que me siento muy cómodo afrontando desafíos.

Por cuestiones de confidencialidad no podemos contar quienes son nuestros clientes ni de que se tratan las aplicaciones, pero sepan que estamos haciendo cosas divertidas, atractivas y robustas!

Hay empresas con intenciones de apostar a lo mobile y en los últimos meses muchas empresas han estado tanteando el ambiente y la fauna informática de Mar del Plata para ver la factibilidad de venir a tomar desarrolladores iOS.



A continuación les dejo unos links con eBooks sobre desarrollo para iOS que son útiles para aquellos que desean iniciarse en el mundo del Objective-C y Cocoa Touch.



APress - iPhone Games Projects - ISBN 1430219688 (Jun 2009)

http://gog.gateit.net/books/Apress.IPhone.Games.Projects.Jun.2009.ISBN.1430219688.pdf


APress - iPhone Advanced Projects - ISBN 1430224037 (Nov 2009)

http://gog.gateit.net/books/Apress.IPhone.Advanced.Projects.Nov.2009.ISBN.1430224037.pdf


APress - iPhone User Interface Design Projects - ISBN 1430223596 (Dec 2009)

http://gog.gateit.net/books/Apress.IPhone.User.Interface.Design.Projects.Dec.2009.ISBN.1430223596.pdf


APress - Learn Xcode Tools For Mac OS X And iPhone Development - ISBN 143027221 (Jan 2010)

http://gog.gateit.net/books/Apress.Learn.Xcode.Tools.For.Mac.OS.X.And.IPhone.Development.Jan.2010.ISBN.143027221X.pdf