domingo, 4 de marzo de 2012

Rooted CON 2012


Ya termino la 3ª edición de la rooted CON y por fin he conseguido dormir más de 7 horas seguidas, por lo tanto, toca organizar ideas y dar una valoración a este evento del que tantas ganas tenía de formar parte.

Comenzaré, mencionando a la organización: Sencillamente impecable. En general, me hicieron sentirme como en casa y el capo del evento, a.k.a. PatoWC, con el que nunca había hablado, es tan buena persona como conocimiento tiene del mundillo y sólo espero que pronto se ponga las pilas y saque la certificación que me prometió ;). Por supuesto la foto de rigor no debe faltar:





Los ponentes, absolutamente todos, inmejorables. El nivel que tenemos en España no le tiene envidia a nadie de fuera. Sin embargo quisiera hacer mención especial a estas personas (ponencia):

    • Carlos Díaz y Fco. Jesús Gómez (CMD: Look who's talking too). Sorprendente su charla. No los conocía, pero no me extraña que trabajen para el gran hermano (Telefónica) y me quedo con la idea que quisieron transmitir, DNS a saco.

    • Chema Alonso y Manu "The Sur" (Owning "bad" guys {and mafia} with Javascript botnets), en su linea. Todos conocemos a Chema por su trayectoria y desde luego dio un recital de bonets.

    • Epsylon (XSSer, the cross site scripting framework). Tampoco le conocía pero fue increible todo lo que expuso sobre su herramienta para XSS. En futuras ediciones de la rooted deberían seguir contando con él, tiene mucho en la cabeza y es bueno que lo comparta. No me cabe duda que será uno de los grandes.

    • Gerardo García Peña (Enfoque práctico a la denegación de servicio). Aunque pudiera parecer que está peor que Juana la loca, supo exponer rigurosamente que es un DOS. 

    • Jaime peñalba a.k.a. NighterMan (Live Free or Die Hacking), no tengo palabras para evaluar a este personaje, solo puedo decir que fue la mejor ponencia, me puso los pelos de punta. Espero volver a verlo en otros eventos similares y desde hoy seguiré todavía más de cerca sus pasos aunque para ello tenga que saltar por impresoras, videos o tostadoras XDD.

    • Raúl Siles y José Antonio Guasch (Seguridad de aplicaciones web basadas en el DNIe). Un buen trabajo que me hizo tomar conciencia del DNIe y de todo lo que queda por mejorar.

    • José Picó y David Pérez (Nuevos escenarios de ataque con estación base falsa GSM/GPRS). Cada vez que en la sala se oía el nombre de Taddong, absolutamente todos desconectábamos el móvil. Madre mía que pareja, desde hoy no tengo móvil y me currado un terminal nuevo con dos yogures vacíos y un cuerda de lana, pero aun así no me extrañaría que ellos mismos me hicieran un MITM en la mitad de la cuerda jeejje. Bromas a parte, desconocía el hacking en comunicaciones móviles y desde luego, taddong, es un referente sin duda.

Todos estos eventos tienen un fin y el fin es que las empresas, por desgracia, aun no tienen conciencia de que tienen que invertir más si o si en seguridad informática y que como no se pongan las pilas pronto es muy posible que se arrepientan por no tomar el tema en serio, sobre todo cuando tengan que rascarse el bolsillo por no hacer bien su trabajo en la protección de datos.

Por la parte que me toca, intentaré hacer llegar el mensaje a todos los que me sea posible aun a riesgo de no conseguir nada.

Para concluir el post, quiero recordar a las personas con la que he hecho amistad y que para mi han sido igual de importantes que el resto, así que un saludo muy especial para Carlos Díaz, Adrian Ramírez, Javier Partido y Agustín.

Nos veremos pronto amigos!!

sábado, 1 de octubre de 2011

La teoría Z


Jamás pensé que en el estudio de temas relacionados con empresa, empresario y empleado, encontraría tanto disfrute de su lectura y estudio.

Uno de esos temas ha sido entre otros el de la Teoría Z. 

Esta teoría surgió en los años setenta y proviene de la cultura japonesa.

William Ouchi, norteamericano, hijo de padres japoneses, describe los principios de esta teoría en su libro Theory Z, en el 1981, siendo un auténtico best seller.

Ouchi denominó a su teoría "Teoría Z", porque va más allá de teorías actuales como son la teoría X e Y, de Duglas McGregor (teoría que es posible que en próximos post relate).

Estos principios fundamentales son los siguientes:
  • Compromiso de empleo para toda la vida: 
    • Cuando una empresa japonesa contrata a un nuevo empleado, se compromete a tenerle contratado hasta que se retire.
  • Lentitud en la evaluación y en la promoción: 
    • El proceso de evaluación es sumamente lento, pudiendo pasar hasta 10 años para que un ejecutivo reciba un ascenso importante. Durante ese periodo, las personas del mismo nivel recibirán los mismos ascensos y aumentos de sueldo. 
    • La lentitud el proceso dificulta los juegos corporativos de corto plazo. Se propicia una actitud abierta a la cooperación, al rendimiento y la evaluación , pues se favorece la posibilidad que el nivel de desempeño real salga finalmente a la luz. 
    • Los ejecutivos jóvenes no se sienten atraídos por hacer carrera a costa de otros, ni de presionar para que se tomen decisiones.
  • Consenso en la toma de decisiones: 
    • Se trata de que participen y se involucren en las decisiones todos los que puedan resultar afectados por ella. 
    • A pesar del mayor tiempo que se requiere, hay mayores posibilidades de que todos apoyen la decisión plenamente. 
    • Cuando se debe tomar una decisión importante, se encarga la elaboración de la propuesta a la persona de menos edad y experiencia. 
    • De este modo, no se pierde la vitalidad ni se pierde el proceso de cambio. Por supuesto, los directivos saben cuales pueden ser las mejores decisiones y el joven se esfuerza al máximo por encontrarlas. Se inculcan los mismos valores y creencias. 
    • Los errores generan además, buenas ideas.
  • Responsabilidad colectiva: 
    • La responsabilidad del éxito o el fracaso de la organización la comparten todos sus miembros como grupo. Ninguno es más responsable que otro.
  • Control informal e implícito: 
    • Dentro de la organización no cabe esperar que los más jóvenes manifiesten su desacuerdo, o se rebelen con sus superiores. Lo que, sin embargo, cabe esperar es que los empleados acudan a actos sociales de los directivos y que allí puedan manifestar su desacuerdo de forma sutil y amable. 
    • La organización japonesa solo acepta jóvenes que todavía se encuentran en la etapa formativa de su vida, los hace participar en múltiples grupos y, de ese modo, les inculca el sentimiento de solidaridad y camaradería.
  • Total cuidado de los empleados: 
    • La influencia de la empresa llega a casi todos los aspectos de la vida de sus trabajadores, financia actividades sociales, vacaciones en grupos, e incluso parte de su vivienda y transporte.

Este último principio es el que más me llama la atención y tiene mucho que ver con otro tema importantísimo, la motivación, y es que, para que en la relación empresa-trabajador se consigan excelentes resultados es vital que las personas se encuentren motivadas. 

Concluyendo que es gerundio. Si está demostrado que el Management japonés da buenos frutos, ¿Por qué apenas se aplica en las empresas Europeas?.

Los siguientes enlaces profundizan más sobre esta teoría (lectura más que recomendada):


sábado, 24 de septiembre de 2011

Ofuscación de código interpretado

Según la wikipedia, la ofuscación es:
En computación, la ofuscación se refiere al acto deliberado de realizar un cambio no destructivo, ya sea en el código fuente de un programa informático o código máquina cuando el programa está en forma compilada o binaria, con el fin de que no sea fácil de entender o leer.

Pues con esta definición en mente,  vamos a ofuscar el código del proyecto correspondiente al post anterior titulado "Decompilación de código interpretado". Para ello usaremos una herramienta gratuita llamada Eazfuscator.NET que proporciona unos resultado excelentes, casi a la altura de algunos de pago.

Esta herramienta se integra perfectamente en el entorno de desarrollo de Visual Studio:




Ofuscando el código al generar la versión release del proyecto:  




Si decompilamos el ejecutable que se ha generado con eazfouscator y lo comparamos con el de la entrada anterior, se observa que ahora ya no es tan trivial seguir el código, es más, resulta casi imposible entender nada:




En resumen, esta es un buena técnica de protección de código frente a un posible ataque de ingeniería inversa, pero no nos engañemos, no hay nada infalible y menos esto. Sin embargo sí da un cierto grado de tranquilidad en el despliegue de este tipo de código.

domingo, 18 de septiembre de 2011

Decompilación de código interpretado


Hace tiempo que quería escribir una entrada al blog que tratase de la decompilación de ejecutables, cuyo código es interpretado, como los que generan lenguajes conocidos como .NET o Java.

En este caso lo haremos con .NET y sin duda alguna, el mejor decompilador .NET es .NET Reflector de la compañía Red Gate. 

Sin embargo, no hace mucho tiempo que dejó de ser gratuito. Por lo tanto me puse a buscar alternativas y me encontré con ILSpy. Una alternativa que aunque joven, promete y mucho, además de ser open-source.

ILSpy servirá perfectamente para ver un ejemplo de decompilación .NET, donde descubriremos las vulnerabilidades de este tipo de lenguajes, para así, en sucesivas entradas, ver que técnicas tenemos disponibles para proteger un poco más este tipo de aplicaciones. 

Usaremos como ejemplo el típico winform de acceso a una aplicación, con un código de desbloqueo que es fijo dentro del ejecutable (HardCode). 
En donde al pulsar el botón Unlock nos mostrará en otra ventana, si el código es correcto o no:




Cargamos ILSpy, abrimos el ejecutable en cuestión y navegamos un poco por la estructura jerárquica del ensamblado y enseguida vemos que en Form1 hay un método cuyo nombre no puede ser más obvio "buttonUnlock_Click". Situándonos en esa referencia observaremos como en el marco derecho de la aplicación, se muestra el contenido del método desensamblado, poniendo de manifiesto la debilidad de estos lenguajes:




ILSpy acaba de nacer, pero tiene un gran futuro por delante, por todo ello, personalmente os animo a usarlo y apoyarlo todo lo que podaís.

En próximas entradas, hablaremos de la técnica de ofuscación de código como medida de seguridad ante este tipo de aplicaciones de decompilación.

Práctica de Lenguajes de Programación

Han pasado casi cinco meses desde mi última publicación y el motivo de ello no es otro que las prioridades que se asignan a la cosas (Familia, Trabajo, Estudios, ...) y claro por último, entradas al blog.

Intentaré hacer un esfuerzo y publicar como poco una vez por semana. No quiero perder el habito de escribir en el blog.

La entrada que nos ocupa no es otra que compartir la práctica de la asignatura de Lenguajes de programación del 2011, que en este caso es el desarrollo de un juego de mesa (Monopoly) y que lo que se pretende es la comprensión y aplicación de conceptos básicos del paradigma de programación orientado a objetos (POO) usando como lenguaje JAVA.

Espero que por lo menos sirva como orientación a la hora de encarar vuestras futuras prácticas y sobre todo me encantaría recoger todas las críticas 'constructivas' que se os ocurra.

Sin más dilación, anexo los enlaces de las descargas: