Aplicación vulnerable iOS del proyecto OWASP

  • July 23, 2017
  • tuxotron
  • iGoat

    *iGoat*

    iGoat es un proyecto perteneciente a la fundación OWASP inspirado en WebGoat. Dicho proyecto contiene vulnerabilidades de forma intencionada y no es sólo para el investigador de seguridad, sino también para desarrolladores. Esto es, porque parte del ejercicio no sólo consta de atacar y comprometer la aplicación, sino que también está diseñado para (con comentarios en el código) arreglar las vulnarabilidades, así que puedes atacar, arreglar o ambos.

    Este proyecto está diseñado en modo cliente/servidor. El cliente está escrito en Objective-C y corre sobre cualquier dispositivo con iOS 9+, o puedes usar un emulador, y el servidor está escrito en Ruby y lo puedes correr en cualquier sistema con Ruby, de forma local o remota.

    Actualmente iGoat está en su versión 3.0 y cubre más de 25 vulnerabilidades agrupadas en varias categorías. El código del proyecto está en Github.

    Aquí tenéis un vídeo de introducción al proyecto:

Latch SDK para Go ¡NO OFICIAL!

  • July 10, 2017
  • tuxotron
  • Latch

    *Latch*

    Hace tiempo que empecé a leer y juguetear con el lenguaje de programación Go, pero por falta de tiempo nunca llegué a programar nada con él, simplemente seguí el tour que tienen online.

    Ultimamente, quizás por la popularidad que Go está ganando (éste sí que creo que le puede toser a Java en un futuro cercano), tenía ganas de realmente familiarizarme con él, así que la semana pasada me puse manos a la obra y me voví a hacer el tour y leer algo de documentación. Lo siguiente era escribir código. Pensando que implementar, me dio por mirar Latch de ElevenPath a ver si tenían un SDK para Go, y parece que no, así que a eso me puse y le dediqué la tarde (y la noche) del domingo a crear una librería para Go.

    Todo el código está en Github. Para poder usarlo necesitas Go instalado. Yo he usado la version 1.8.3 sobre Ubuntu Linux, aunque también lo he probado en MacOS con la version 1.8 y el código parece funcionar. Como refencia he usado la documentación y el SDK oficial para Python y Java. La version de la API que uso es la 1.6, aunque en la documentación hace referencia a la 1.3 y los SDKs usand la 1.0 y 1.1. No sé que diferencia hay entre cada version o si 1.6 es estable o no.

    Hay un par de cosas pendientes de implementar:

    1. Las cabeceras X-11paths- no veo que se usen en ningún lado, las he añadido a la firma de la petición, pero no a las cabeceras del request.
    2. Convertir la respuesta del servidor a JSON. Ahora mismo devuelve un cadena de texto con la respuesta del mismo.

    Cómo bien dice el título, esta es una SDK NO OFICIAL, y yo no tengo ningún tipo de afiliación o relación con ElevenPath, excepto la amistad con algunos conocidos :). Y cómo decía al principio, este es un proyecto de fin de semana con el objetivo de aprender Go. Si alguien lo usa y encuentra algún error o tiene alguna sugerencia, soy todo oidos ;)

    Aunque el uso del SDK (si estás familiarizado con Latch) es trivial, escribiré una nueva entrada con algunos ejemplos y quizás incluso haga un vídeo donde podamos ver la integración del SDK con un servicio REST y el uso de la aplicación móvil.

    Happy coding!

Cinco mujeres que cambiaron nuestras vidas

  • July 7, 2017
  • tuxotron
  • Ada Lovelace

    *Ada Lovelace*

    Ada Lovelace

    Ada Augusta Byron King, hija del Poeta Lord Byron y apasionada por las matemáticas, hoy en día tiene el honor de ser considerada la primera persona que creó un algoritmo para ser procesado de forma automática por una máquina. Ada nació el 10 de diciembre de 1815 en Londres y murió a los 36 años, el 27 de noviembre de 1852. Poco después de su nacimiento, sus padres se divorciaron, y Ada se iría a vivir con su madre, Annabela. Lo último que Annabela quería es que Ada desarrollara el mismo carácter que su padre e intentó apartarla de la poesía lo máximo posible y para ello usó las matemáticas.

    El apellido de Lovelace lo adquirió Ada después de su matrimonio con William King, quien más tarde adquirió el título de “Earl of Lovelace”. Ada a través de la amiga de su madre, Mary Somerville, acabaría conociendo a un inventor Charles Babbage. Pasado un tiempo, Babbage le enseñó a Ada el proyecto en el que estaba trabajando: La máquina diferencial, aunque Babbage tenía otro proyecto todavía más ambicioso: La máquina analítica.

    Ada trabajó muy de cerca con Babbage en La máquina analítica y fue este proyecto el que haría que Ada hiciera historia en la informática tal y como la conocemos a día de hoy. Después de una presentación que Babbage dió en Turing sobre La máquina analítica, Luigi Federico Menabrea, publicaría un documento llamado “Borrador de La Máquina Analítica”. Dicho documento estaba escrito en francés y Ada se encargó de traducirlo al inglés, pero además de la traducción del mismo, Ada añadiría algunas modificaciones al texto, ya que ella era la persona que, junto con Babagge, mejor conocía La máquina analítica. Entre dichas modificaciones, Ada añadió un apartado (la nota G) en el que especifica un algoritmo para el cálculo de los Números de Bernoulli, usando La Máquina Analítica.

    Este documento es el primer texto de la historia, conocido hasta la fecha, en el que se encuentra un algoritmo para ser procesado por una máquina de cálculo, y por lo tanto convierte a Ada Lovelace en la primera programadora de la historia, aunque hay alguno que cuestiona esta atribución, incluso hay un lenguaje de programación llamado Ada en su honor.

    Joan Clarke

    *Joan Clarke*

    Joan Clarke

    El gran Alan Turing no estuvo sólo en su lucha para descifrar la máquina Enigma, a su lado tuvo a la única mujer que logró formar parte de su equipo y que además fue muy importante para el éxito final. Esa mujer se llamaba Joan Clarke (con el que incluso se llegó a prometer, aunque ella sabía que Turing era homosexual). Joan Elizabeth Lowther Clarke nació en Londres el día 24 de Junio de 1917. Clarke consiguió entrar en la Universidad de Cambridge donde realizó los estudios de Matemáticas.

    Una vez comenzada la Segunda Guerra Mundial, el gobierno Británico comenzó a buscar entre la población a los mejores en habilidades como matemáticas, ajedrez e incluso Egiptología. Era fundamental descifrar los mensajes alemanes creados con la máquina de cifrado Enigma para poder ganar la guerra. Joan fue una de estas personas que logró destacar y fue enviada al famoso Betchley Park, donde se estaba formando un equipo de descifradores de códigos para vencer a Enigma. A pesar de todas sus habilidades fue asignada a un puesto de secretaria. Afortunadamente destacó poco a poco y pronto logró su primer ascenso, pero como no se podía ascender a una mujer directamente a un puesto de criptoanalista, se le asignó como “lingüista” (cuando ella no hablaba ningún otro idioma). Este nuevo puesto la puso en contacto directo con los criptoanalistas del famoso “Hub 8”, donde estaba Alan Turing.

    Pronto Turing reconoció rápidamente las habilidades para la criptografía de Joan. El objetivo era descifrar la máquina Enigma Naval (la más compleja de todas), la cual cifraba sobre todo los mensajes de los submarinos alemanes (estos estaban haciendo estragos en el Atlántico). La mayor parte de su trabajo se centraba en hacer “ingeniería inversa” a las Enigmas capturadas así como a las tablas de códigos y mensajes cifrados. Para lograrlo contaban con la ayuda de la máquina de descifrado “Bombe”, desarrollada por Alan Turing y Gordon Welchman.

    Debido al secreto que ha rodeado (y aún rodea) todos los descubrimientos en Bletchley Park, no podemos estar seguros de todas las contribuciones que Joan Clarke pudo realizar durante su trabajo de criptoanalista. Sí sabemos que desarrolló un método de descifrado para los mensajes enviados específicamente para oficiales de los submarinos alemanes “U-Boat”, crítico para un momento de la guerra en la que toda Gran Bretaña se estaba quedando sin comida debido a la invasión alemana de Francia. Millones de vidas se salvaron y la guerra se acortó en tiempo considerablemente gracias al descifrado de la máquina Enigma.

    Clarke se retiró en 1952, pero como le ocurrió a la mayoría de los que trabajaban en Bletchley Park, no fue reconocida por el gran trabajo realizado para su país y el mundo en general. Joan Clarke tiene su merecido homenaje en la gran película “Descifrando Enigma” caracterizada por la actriz Keira Knightley.



    Grace Hopper

    *Grace Hopper*

    Grace Hopper

    Grace Brewster Murray Hopper entre otras muchas atribuciones fue quien inventó el compilador, herramienta indispensable de cualquier programador. Nació en Nueva York el 9 de diciembre de 1906 y murió en Arlington, Virginia el 1 de enero de 1992. Grace Hopper, también conocida como “Amazing Grace”, estudió matemáticas y obtuvo además de un máster, un doctorado en la prestigiosa Universidad de Yale. En 1943, durante la segunda guerra mundial, Hopper se alistó en la reserva de la marina de los EEUU. Debido a sus conocimientos en matemáticas, en 1944, fue asignada como teniente a trabajar en la oficina de ordenanza de proyectos de computación en la Universidad de Harvard, dónde aprendería a programar el ordenador Mark I. Durante este periodo, Hopper también trabajó en el Mark II y III. Durante su trabajo con el Mark II, un día hubo un problema con el ordenador, debido a que una polilla había obstruido un relé. Hopper describió el proceso de cómo encontró el problema, y aunque nunca usó el término “debugging” (depuración), describe perfectamente la definición del mismo. Término que se le atribuye a Hopper. En 1949 fue empleada por Eckert–Mauchly Computer Corporation, donde se uniría al equipo de desarrollo del UNIVAC I (primer ordenador comercial producido en los EEUU). Durante este periodo, Hopper propuso el uso de “palabras” para programar, a lo que le respondieron que eso era imposible, porque los ordenadores no entendían palabras, sino números. Dicha idea no fue aceptada hasta 3 años más tarde, cuando en 1952 publicaría su primer trabajo sobre compiladores, ella ya estaba trabajando en el primer compilador de la historia, el compilador A, cuya primera versión fue el A-0. En 1959 Hopper participó una conferencia de 2 días sobre lenguajes de sistemas de datos. De ésta nació un nuevo lenguaje llamado COBOL, el cual era una extensión de FLOW-MATIC, también conocido como B-0, compilador creado por Hopper, con algunas mejoras tomadas de COMTRAN, lenguaje desarrollado por IBM. Hopper también tuvo una gran influencia en el desarrollo de estándares dentro de la marina norteamericana. Estos fueron asumidos por la Oficina Nacional de Estándares de EEUU, actualmente conocida como Instituto Nacional de Estándares y Tecnología (NIST).



    Margaret H. Hamilton

    *Margaret H. Hamilton*

    Margaret H. Hamilton

    En el gran logro de la Humanidad de llegar a la Luna hubo un gran equipo de hombres y mujeres, pero Margaret H. Hamilton tuvo la gran responsabilidad de ser la persona que diseñó y programó el software que lo hizo posible. Nació el 17 de noviembre de 1936, y se graduó en Matemáticas. Comenzó su carrera como interina en MIT, desarrollando software de predicción del tiempo para los ordenadores PDP-1 y LGP-30. Más tarde entre 1961 y 1963, trabajaría en un proyecto llamado SAGE. Éste era un sistema de detección de aeronaves “no amigas” para las fuerzas aéreas de los EEUU. Gracias a los conocimientos adquiridas aquí, Hamilton are candidata perfecta para el primer programa Apollo de la NASA subcontratado al MIT que se desarrollaba en el Laboratorio Draper.

    En 1965 Hamilton lideraba el equipo que desarrollaba el software del sistema de a bordo de la nave espacial Apollo. Proyecto que inicialmente no era parte ni del presupuesto ni de los objetivos establecidos. Más tarde esto cambiaría y a mediados de 1968, eran ya más de 400 personas, trabajando en el software del Apollo. Este era el software que llevó el hombre a la luna en el Apollo 11. Hamilton cuenta cómo trabajaba día y noche y fines de semana sin parar, programando parte de dicho sistema, específicamente las rutinas de control de errores.

    Cuenta la historia que tres minutos antes de que el Apollo aterrizara en la Luna, el ordenador de abordo empezó a lanzar mensajes de desbordamiento de procesos (executive overflows) y había que decidir si se continuaba o no con el aterrizaje lunar. Como todos sabemos la operación siguió en marcha y el aterrizaje se llevó a cabo con éxito. Según Hamilton, lo que el ordenador indicaba es que tenía muchos procesos que ejecutar y no podía hacerlo en tiempo real, por lo que el sistema avisaba de ello y empezaba a desechar los procesos con menor prioridad (el Apollo disponía de un sistema multitarea preventivo).



    Susan Kare

    *Susan Kare*

    Susan Kare

    Cuando el ordenador personal estaba aún en las primeras fases de su nacimiento, la línea de comandos era la única vía de interacción con el sistema. No existían interfaces gráficas como hoy día hasta el día que apareció el famoso Apple Macintosh en 1984, después de que Apple copiara la idea de la interfaz gráfica a Xerox (creada por Doug Engelbart) y la hiciera el estándar de sus sistema Macintosh. Hoy día todo esto nos parece algo natural, usar iconos, escribir con un tipo de letra, etc. Pero posiblemente nada seria igual sin la influencia de Susan Kare.

    Susan Kare nació en 1954 en Ithaca, Nueva York. Se licenció en la NYU con un doctorado en Arte y su primer trabajo fue en la Costa Oeste, en el Fine Arts Museum de San Francisco. Un día recibió una llamada de un amigo suyo llamado Andy Hertzfeld (programador de gran parte del Sistema Operativo Macintosh) para contarle que en la empresa Apple, estaban buscando un diseñador gráfico para su nuevo sistema operativo: Mac OS.

    El primer trabajo de Susan en Apple fue crear los tipos de letras básicos para el entorno gráfico. Hasta ahora los tipos de letras no eran más que píxeles sencillos que se limitaban a mostrar letras, pero con Steve Jobs como jefe, y su conocida afición a la caligrafía, no sería tarea fácil. Por lo tanto Susan compró un bloc de notas con cuadrículas y empezó a crear diferentes formatos de tipos de letras un poco más sofisticados, añadiendo más espacios entre ellas, resaltando los bordes, añadiendo el tipo cursiva, tipo negrita lo cual terminó dando un aspecto más artístico a los texto mostrados en pantalla. Este fue el origen de algunos tipos de letras (“fonts”) que aún usamos actualmente como: Chicago, New York, San Francisco, Mónaco o Génova.

    Aparte de los tipos de letra, usando la misma técnica, se dedicó a diseñar diferentes tipos de iconos que representaban una acción en pantalla. De hecho ella la responsable de iconos tan conocidos hoy como la papelera de reciclaje, las tijeras para cortar un texto/imagen, el cubo de pintura, el Mac feliz (que apareció en las pantallas de todo usuario de Macintosh durante 18 años), el símbolo de la tecla “Command” de los Macintosh, el reloj que aparece mientras el ordenador está realizando un acción y un largo etc. Además de los tipos de letras y los iconos, también diseñó el formato de las ventanas, bordes, etc.

    En definitiva, el gran logro de Susan fue pensar en cada icono como la representación comprensible e intuitiva de una acción concreta (tijeras = cortar). Susan acompañó a Steve Jobs en su aventura con la empresa NeXT. También ha diseñado iconos para Windows, IBM OS/2, logos para muchas “startups” e incluso ha creado diversos productos para el MOMA. Todo este trabajo de diseño, ha dado forma al escritorio gráfico tal y como lo conocemos a día de hoy.