jueves, 11 de septiembre de 2014

Informática Forense





Es una realidad que cada vez está más instaurado en nuestra sociedad el cybercrimen y es por eso que de forma paralela crece la necesidad de evolucionar entorno a la investigación de incidentes de seguridad. La Informática forense nació como una herramienta clave en los procesos judiciales a causa de la necesidad de aportar pruebas de ámbito tecnológico que demuestren , ya sea como objetivo final, o como medio , que se ha cometido una infracción de seguridad por parte de un intruso y en la mayoría de los casos, un cybercrimen. Evidentemente la informática forense va mucho más allá de el ámbito judicial, y son muchas las empresas que estñan haciendo uso de esta técnica a nivel profesional.

El análisis de la memoria volátil (RAM) combinado con los tradicionales de memoria persistente es una opción muy robusta y que puede ayudar en gran medida a responder las principales preguntas que se formula el analista y por tanto la organización 

  • que
  • cuando
  • donde
  • quien
  • como
  • porque


Los análisis de memoria volátil tiene diversas ventajas. Principalmente reducen el volumen de datos a investigar pero también nos revela trazas importantes como la información de procesos en ejecución o conexiones activas de red, además, aprovechar la RAM nos permite contrarrestar técnicas anti-forenses.

El auge del crecimiento de dispositivos con sistemas Linux o basados en el kernel del mismo (por ejemplo Android) ha echo aumentar el numero de ataques a estos sistemas, y por tanto, en consecuencia, aumenta también la necesidad de combatir estos ataques.. 

El proceso se divide en 3 partes, primero 

  1. Volcado de Memoria (Conseguir una imagen completa de la memoria RAM). 
  2. Análisis de la Memoria (a partir de diversas herramientas, el investigador puede analizar la memoria obtenida en el paso anterior).
  3. Conclusiones (donde se establecen las respuestas a las preguntas iniciales que el investigador persigue responder).

Vamos ahora a repasar estas tres fases empezando por el volcado. El módulo del kernel fmem crea un nuevo pseudo-dispositivo en tiempo de ejecución en /dev/fmem lo cual es una gran ventaja sobretodo en clientes que necesiten que la actividad empresarial no se pare y se obtengan los datos necesarios para el análisis forense en tiempo real y a partir de ahí pueda seguir con normalidad el funcionamiento de la empresa. Crash y volatility son dos módulos kernel para este propósito y para sistemas android podemos disponer de la herramienta de volcado LIME, para hacer un volcado de la memoria volátil en la tarjeta SD o sobre la red local. Me ha parecido una gran solución el volcado desde máquinas virtuales, ya que es cierto que pausando la maquina se puede obtener el volcado de memoria que existía en ese preciso instante y además, está a la orden del día el exponencial uso de servicios cloud, con el respectivo aumento del uso de maquina virtuales en la nube y susceptibles de poder ser atacadas. Si la evolución de los entorno SAAS y cloud computing sigue en auge el volcado de memoria se podrá simplificar en un futuro.
Bajo mi punto de vista la mejor herramienta en la fase de Análisis es Volatility, la herramienta utilizada como testing , y parece que los resultados que ofrece son excelentes, siendo considerada la mejor herramienta para el análisis de RAM en Linux. Volatility ofrece unos 35 plugins diferentes, de los que por ejemplo destacan la posibilidad de mostrar las conexiones activas de red o mostrar todos los módulos de kernel cargados. Por ejemplo, analizando y generando el volcado de memoria de la imagen de disco victoria-v8.sda1.img se observó como el intruso utilizó netcat para transferir datos por la red e incluso se identifica su ip gracias al plugin linux_netstat.


Definitivamente podemos afirmar que existen herramientas de mucha utilidad para realizar análisis forense de un sistema informático. Después de los datos aportados considero que es básico poder realizar el volcado/análisis de memoria Ram y que tiene muchas ventajas y aceleran el proceso de investigación.

miércoles, 10 de septiembre de 2014

Filosofia de Diseño DCU


Introducción


Mi propósito en este artículo es introducir DCU desde un punto de vista teórico-práctico, peor sobretodo incidir en que es una técnica que me ha sido de gran utilidad en la creación de proyectos.
Antes de Comenzar cualquier proyecto de software es importante determinar qué filosofía de diseño se llevará a cabo, en este caso se ha escogido una filosofía de diseño DCU (Diseño Centrado en el Usuario), ya que se pretende que las aplicaciones resultantes puedan resolver necesidades concretas de los propios usuarios, consiguiendo de esta forma una mayor satisfacción y una experiencia de uso con el mínimo esfuerzo por parte de estos.




La mayoría de los procesos que hacen Diseño Centrado en el Usuario suponen las siguientes etapas: 

Etapas

  • Conocer a fondo los usuarios finales, deberemos definir un 'target' y analizar si se ajusta bien a el modelo de aplicación que se quiere desarrollar. 
  • Diseñar un producto que resuelva sus necesidades y se ajuste a sus capacidades, expectativas y motivaciones
  • Poner a prueba el diseñado, normalmente usando test de usuarios 


El motivo de la elección de este tipo de Metodología es evidente, se está destacando constantemente desde distintos medios la importancia de las aplicaciones móviles en la sociedad actual, es evidente como ha aumentado su utilización en el día a día de los usuarios, por lo tanto,, si existe un elemento importante en esta ecuacuón,es la experiencia de usuario y sin olvidarse de la usabilidad, ambos son factores muy importantes. 
La clave del diseño DCU, es que se debe tener en cuenta el usuario en todas las fases de creación de los aplicativos, para empezar en un proceso previo de 'brainstorming' ya se ha tenido en cuenta del usuario considerablemente 





Características


A continuación vamos a listar las principales características comunes de la mayoria de patrones DCU, no existe una pauta única para desarrollar esta filosofia de proyecto pero si que se pueden agrupar diversos puntos que deben coincidir si queremos basarnos en el diseño DCU de forma correcta.

  • Está orientado a los usuarios del producto, que participan durante todo el proceso.
  • Se aplica durante todas las fases del desarrollo.
  • Iterativo
  • Multidisciplinar
  • EL objetivo principal és la usabilidad, siempre orientada hacia el usuario.

Aplicando DCU


Creo que es de gran utilidad conocer algunas herramientas o fuentes de datos que nos permitan augmentar nuestra productividad utilizando herramientas,m y ene ste caso no iba a ser menos.
A continuación vamos a alejarnos de los estándares ISO y a centrarnos en algunos proyectos que se han basado en ellos pero con un enfoque mucho más práctico:

UsabilityNet
Proyecto fundado por la Union europa para promover usabilidad y diseño centrado en el usuario. En su web Podemos encontrar herramientas muy útiles y es interesante el echo de que podemos enfocar nuestro producto desde diferentes perfiles ( global organisations, local groups,etc...).
De las herramientas me gustaria destacar la 'Methods Table' dond epodemos seleccionar los métodos más apropiados en función de tres condiciones:

  • Tiempo/recursos limitados
  • Sin acceso directo a los usuarios
  • Experiencia/habilidades limitadas




Trump
El proyecto TRUMP define 10 métodos concretos a partir de ISO 13407

  1. Reunión con los interesados
  2. Contexto de uso
  3. Escenarios de tareas
  4. Evaluar sistema existente
  5. Requisitos de usabilidad
  6. Prototipado en papel
  7. Guías de estilo
  8. Evaluar prototipo
  9. Evaluación de la usabilidad
  10. Recopilar opinión



Usability Planner
Basándose en ISO PAS 18152, se trata de una herramienta web, podemos seleccionar que métodos vamos a usar para dar soporte a un diseño centrado en el usuario. Opcionalmente, usability planner nos permite priorizar las etapas del projecto en las cuales queremos máximizar la usabilidad. Vamos a ver un screenshot de la propia web con las incipales etapas:





sábado, 13 de julio de 2013

Trabaja de forma Cooperativa con Sourceforge y subclipse (parte 1)

Siempre surgen necesidades cuando se  afronta cualquier proyecto, y ya sabemos que si se trata de desarrollar alguna aplicación más si cabe, y si encima se trata de hacerlo mediante la colaboración de un extenso equipo de desarrolladores más todavía... Hoy en día ya existen diferentes herramientas estandarizadas para el trabajo cooperativo, las más conocidas son tortoise o sourceforge
El objetivo de esta entrada no es otro que explicar brevemente como configurar eclipse para programar aplicaciones android de forma colaborativa utilizando el complemento subclipse para eclipse, que probablemente sea el mejor y más utilizado plugin para este propósito, considerado incluso mejor que el oficial de Eclipse (subversive)
Vamos a intentar resumir al máximo, ya que el propósito de este escrito es orientar y ayudar, nunca dar todo ya masticado a los lectores.... ( confío en que la mayoría de los que lean esto y se interesen por este tipo de ocnfiguraciones ya tienen cierto nivel, o al menos quieren adquirilo )



0 -  Pre-Requisitos
 Es evidente que los pre-requisitos del sistema son tener Eclipse,Java y el SDK de android bien configurados e instalados... sino es así pasaros por la entrada de este blog que lo explica de forma muy facil y resumida.

1 -  Obtener Subclipse:
Hay que acceder al la página oficial (http://subclipse.tigris.org) de subclipse y copiar al portapapeles la url de eclipse update site ( reslatado en amarillo):



2- Instalar Subclipse en Eclipse:
- Abrimos el IDE Eclipse y pulsamos en Help-> install from site
- Pulsamos en Add, en name escribimos subclipse y enganchamos la url que hemos copiado anteriormente
- Marcamos todo el paquete que aparecerá más abajo y  seguimos los pasos hasta tener instalado subclipse. Recordad aceptar la license.
- Finalmente será necesario reiniciar Eclipse.


En las próximas entradas veremos como integrar eclipse/subclipse con proyectos open source  de sourceforge. Y lo más interesante para programadores freelance solitarios... ese concepto que tanto me gusta y que tan poco se conoce.. la 'auto'-colaboración ... que intriga verdad?.. pues más novedades pronto, no cambien de canal!!!!

Configuración básica Eclipse para Android


Vamos a realizar una guía rápida para configurar un sistema windows 7 Enterprise 64 bits para poder desarrollar aplicaciones en Andooid mediante el IDE Eclipse en su versión Kepler. el objetivo de la entrada es que con pocos pasos podamos orientarnos en la instalación y así sea de más facilidad para usuarios que se inicien en estos lindes.


1- Descargar y configurar Java: 
Es obligatorio realizar la descarga desde internet explorer ya que desde otros navegadores como por ejemplo chrome o Firefox nos descargaremos por defecto la versión de 32 bits.

2- Descargar Eclipse:
En este caso hay que elejir la versión standard de Eclipse y sobretodo fijarnos en que sea la de 64 bits.

3- Descargar el SDK de android y integrarlo en eclipse:
Es necesario seguir los siguientes pasos:


  1. Inicia Eclipse y selecciona ayuda > Instalar Nuevo Software... En el cuadro de dialogo que aparece, haz click en la pestaña Software disponible.
  2. Haz clic en Añadir URL.
  3. En el diálogo que aparece, escribe la siguiente URL en su campo correspondiente:
https://dl-ssl.google.com/android/eclipse/
Nota: si tienes algún problema durante la descarga del plugin, prueba "http" en lugar de "https" al inicio de la URL. (Se prefiere https por motivos de seguridad).
Haz clic en Aceptar.
  1. De vuelta en la vista de Software Disponible, deberías poder ver el listado de plugins por URL, con las respectivas herramientas anidadas ya seleccionadas para su instalación. Pulsa el botón  Instalar.
  2. En la subsiguiente ventana de instalación, todas las herramientas deberían aparecer marcadas. Pulsaremos Siguiente.
  3. Lee y acepta las normas de uso y haz clic en Finalizar.
  4. Cuando acabe la instalación, reinicia Eclipse

    ¡Hecho! Si no has encontrado ningún problema, la instalación se ha completado satisfactoriamente. Si es la primera vez que instalas Eclipse, en la página web de Android Installing the SDK (en inglés) podrás encontrar información adicional para estos primeros pasos

miércoles, 11 de enero de 2012

Entender Android...sus inicios!!




Introducción
El motivo de esta entrada es compartir un poco el concepto y alcance que puede tener el concepto tan escuchado hoy en día y que ha provocado que aune una gran parte de mis esfuerzos intelectuales en aprender esta tecnología emergente. Evidentemente hablo de Android.
Espero aclarar algunos conceptos tanto a aquellos que os paráis a leer por primera vez algo relacionado con esta tecnología, así como aquellos que debido a sus conocimientos previos no han necesitado esta información previa histórica, aunque ya veréis que para todos va a ser interesante (eso espero....)

Que es mejor... android o iphone?? Es la gran pregunta que corre hoy en día por la mente de muchos usuarios ante los ataques comerciales de las operadoras telefónicas, cuya respuesta es muy compleja, y sinceramente no me atrevo a contestar. Entre otras cosas, no me gustaria influenciar con mi opinión personal... pero puedo aseguraros que está claro que a nivel informático... de entrada parece mucho más útil un androide, que una manzana mordida, pero para gustos los colores.
Este post, no va a ser un intento de comparativa, sino que nos vamos a basar en la historia de Android, y en sus características principales:

Entonces nos realizamos las siguientes preguntas:

¿Cual es la verdadera HISTORIA de Android?

¿Como es su arquitectura?

¿Que es Android?


Evidentemente està claro que hay que saber de donde venimos antes de definir donde vamos, por eso vamos a responder a la primera pregunta. La necesidad de la segunda se debe a que como todo ser humano ( no droide...) cuando vamos a construir una casa por ejemplo... diseñamos su arquitectura y la comprendemos y una vez tengamos estás dos preguntas minimamente respondidas, habrá llegado el momento de plantearnos ¿Que es android? Y la verdad es que en ese momento estaremos preparados para ver la proyección de la tecnología y plantearnos si nos interesa realmente o no.... dicho lo cual:

¿Cual es la verdadera HISTORIA de Android?
En julio de 2005 Google compró una pequeña empresa con sede en Palo Alto
(California) llamada Android INC. Esto disparo los rumores. Se especulaba con
la posibilidad de que la Google estuviera desarrollando su propio teléfono libre,
independiente de las operadoras, que obtendría beneficios de la publicidad en
las búsquedas de personas.
En 2007 se creó la Open Handset Alliance (OHA), que se trataba de un consorcio de 34 empresas del mundo de las telecomunicaciones dispuestas a innovar en la experiencia de uso de los disositivos móviles. Hasta ese momento liderado básicamente por la empresa Finlandesa Nokia con su systema operativo Symbian, cuyas prestaciones ha quedado demostrado que tenian mucho margen de mejora.

Como efeméride, hay que destacar que en agosto de 2008 la OHA lanza el “Android SDK 0.9 beta”. Para situarnos un poco más, SDK quiere decir Software Development Kit. El primer terminal que salio al mercado fue el HC G1 (Dream en España) en septiembre de 2008.
El 5 de enero de 2010 Google empezó a comercializar el Nexus One ( mi primer móvil AnDroide... que recuerdos), incorporaba la versión 2.1 de Android.


¿Como es su arquitectura?



Atención al primer bombazo para los informáticos más conversos a la ideología del pingüino!!! Como podeis ver, la capa más baja del sistema es el Kernel de LINUX. Desde aquí se interactua con el Hardware, se gestionan los drivers y los servicios base del sistema como seguridad, gestión d ememoria, gestión de procesos, etc...

En el segundo nivel de la arquitectura encontramos Las Librerías y la Maquina virtual (Android runtine). Las primeras contienen información necesaria para que las app puedan acceder desde la capa superior (App Framework). Estas librerías están programadas en C/C++. La maquina Virtual, tambien conocida ocmo DALVIK, le sirve a android para adaptarse a las necesidades de los dispositivos móviles mediante su propio bytecode. Al compilar una app, primero se llama al compilador normal de Java y después se traduce el bytecode de java al bytecode de Dalvik. Generanod un ejecutable con extensión .dex

Las dos últimas capas coexisten de forma estrechamente relacionada. La capa Aplication Framework hace referencia básicamente a las librerias estandard, escritas en java y ampliamente documentadas mediante Javadoc. La capa superior de Aplicaciones hace referencia a la experiencia de usuario final. Comprendiendo las app por defecto de los dispositivos android, así como las que podamos añadir a nuestros móviles mediante el market.


¿Que es Android?
Android es un conjunto de herramientas y aplicaciones destinadas a dispositivos
móviles. Está desarrollado por la Open Handset Alliance (capitaneada por
Google) y sigue la filosofía de código abierto.
Incluye un sistema operativo, librerías de abstracción y aplicaciones finales.
Sus principales características son:

- Kernel basado en Linux (2.6).
Framework de aplicaciones que permite reutilizar y reemplazar sus
componentes.
- Navegador web integrado basado en Webkit.
- Gráficos optimizados 2D (librería propia) y 3D (basados en OpenGL ES).
- SQLite para almacenamiento de datos.
- Soporte multimedia para los formatos más utilizados de sonido, vídeo e
imagen (MPG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF).
- Soporte para telefonía GSM*.
- Soporte Bluetooth*.
- Soporte EDGE*.
- Soporte 3G*.
- Soporte Wifi*.
- Soporte para cámara*.
- Soporte GPS*.
- Soporte compás*.
- Soporte acelerómetro*.
- Gran entorno de desarrollo que incluye: documentación, emulador de
dispositivos, herramientas de debug y análisis de uso de memoria/CPU,
plugin para el entorno de desarrollo Eclipse y varias utilidades complementarias.


(*) si el sistema lo soporta.

Para mí... Como comentario final. Me gustaría destacar que si hay algo que me atrae de Android, es que tiene detrás a un Padre Adoptivo muy potente. Que google se haya mojado con esta tecnología es digno de admirar y me da una confianza infinita. Android me parece una pieza de ajedrez muy versátil en el mercado, con muchos movimientos, similar una DAMA, peor lo más importante de esta pieza, es que la mano que la mueva para reaalizar una jugada es una gran maestro a la altura del mismisimo Kasparov....

A veces me pregunto si el verdadero profeta de nuestra época fue Issac Asimov... y... Las máquinas (Androides) nos vana dominar.

sábado, 31 de diciembre de 2011

Mi primer post

Buenas a todos,


Por fin!!! se ha echo realidad!! parece que he tomado la decisión que tenia de fondo hace tiempo, poder expresarme vía web, y volver a regenerar las inquietudes que quedaron sueltas con la clausura de callosenlosdedos(web de programación de videojuegos de la cual era el administrador). La principal misión de este Blog no va a ser otra que plasmar una inquietud creciente en mi, que es la de programar app's para android. No es que quiera realizar grandes proyectos pero siendo informático y programador es normal que quiera investigar en estos campos, además siempre he tenido esa faceta de autoaprendizaje, ya que notese que será todo a base de leer manuales y tutoriales por internet.


En resumen, me gustaría resaltar que van a ser aplicaciones muy sencillas, empezando por un 'hello world' y un videotutorial de como instalar el entorno de trabajo ideal para android. Sobretodo espero que lo que yo quiero ir aprendiendo sea de utilidad para los internautas curiosos en esta tecnología y que pueda plasmarlo en este Blog de la forma más clara posible.


Dicho esto... Adelante con las hachas... y al Ataque!!!!!!!!!!!!!!!