Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de Virtualización a nivel de sistema operativo en Linux. Docker utiliza características de aislamiento de recursos del kernel Linux, tales como cgroups y espacios de nombres (namespaces) para permitir que "contenedores" independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales.
Resumiendo Docker, es parecido a usar maquina virtuales pero eliminando la capa de emulación de la virtualizaciones convencionales.
Buenas de nuevo, pues aquí tenemos la última entrega sobre Android y como usar IDA Pro para depurar Apps en tiempo de ejecución. Para ello lo primero que debemos de conocer es la arquitectura sobre la cual vamos a trabajar, en nuestro caso ARM.
Registros en ARM
La arquitectura ARM utiliza 16 registros, entre los que podemos encontrar argumentos a funciones, el contador del programa, puntero a la pila, etc. A continuación enumeramos cada uno de ellos junto con su descripción:
R0 a R3: argumentos de la función, también podemos encontrarlos como a0-a3.
R4 a R9: para las variables locales.
R7: número de llamada al sistema.
R10 (sl): límite de la pila.
R11 (fp): Fame Pointer
R12 (IP): Intra Procedure.
R13 (sp): Stack Pointer como RSP en x86_64.
R14 (lr): Link Register.
R15 (PC): Contador de Programa (como RIP en x86_64 y EIP en x86).
No hace falta ser un manitas en esto de la informática para conseguir suplantar la identidad de una empresa y conseguir las credenciales de acceso con un poco de ingenio e ingeniería social. Y sobre todo cuando existen aplicaciones que lo hacen por ti simplemente agregando la URL del sitio web que quieres clonar, como es el caso de HTTrack, una aplicación desarrollada para dos tipos de personas, bien puede servir para un auditor de aplicaciones web que quiera analizar el sitio a auditar de manera offline, o para un cibercriminal que quiera suplantar la identidad de una página para conseguir datos que puedan interesarle como las credenciales de acceso.
Esta aplicación multiplataforma que está disponible para Windows, Linux y OS X tiene un uso muy sencillo y es que, solamente tendremos que indicarle el nombre del proyecto, la ruta donde guardarlo y la URL del sitio a clonar. Después de esto, tendremos el sitio clonado idéntico al original y ya nosotros tendríamos que configurarlo a nuestro gusto para recibir los datos que el usuario introduzca y añadirle un poco de astucia a la hora de engañar.
HTTrack nos brinda varias opciones a la hora de hacer el clonado, en este caso vamos hacer una copia del sitio web.
También podemos definir una serie de opciones a la hora de realizar el clonado del sitio como puede ser filtrar archivos, modificar cabeceras o especificar el número de conexiones que se hará por si la aplicación contiene algún tipo de control. Tampoco entraré en mucho detalle sobre estas opciones y lo dejaré en vuestras manos para que juguéis con la aplicación.
En mi caso, voy a realizar un clonado de la página web Steam, una plataforma de videojuegos que cuenta con más de 125 millones de usuarios registrados y que es muy común encontrarse con alguien que intente hacer phishin de este sitio para conseguir cuentas y luego venderlas.
Si le echamos un vistazo a la URL que le indico que quiero que haga el clonado http://store.steampowered.com/ podemos comprobar que esta URL no navega por HTTPS por lo que engañar en este caso a un usuario podría ser un más fácil que a la hora de hacer login que lo veremos más adelante. Como dije anteriormente aquí entraría el ingenio del cibercriminal a la hora de engañar al usuario para conseguir que acceda a este sitio web como podría ser, con acortadores de URL estilo https://goo.gl/ y rezar para que cuando el usuario haga click en la URL acortada no mire la barra de direcciones, o también conseguir un nombre de dominio semejante como podrían ser http://store.steampovvered.com/ (nótese las dos "v" en vez de una "w").
Una vez le digamos que empiece al clonar podemos ver como HTTrack va visitando el sitio web completo para descargarse los archivos en el equipo local.
Ya clonado, vamos a comparar los dos sitios a ver si conseguimos ver algo diferente.
Sitio web original de Steam
Sitio web clonado de Steam
Como podemos comprobar el sitio web es idéntico al original. En este caso el login de esta aplicación web si contiene HTTS por lo que navegará por el protocolo SSL y además contiene un certificado EV SSL que explicaré al final del post. En este caso el cibercriminal le sería algo más complicado engañar al usuario pero nunca imposible ya que la mayoría de los usuarios navegan por Internet sin mirar la barra de direcciones por lo que no saben si realmente están el sitio web legítimo o no. En estos casos lo que se suele hacer es, cuando el usuario introduce su usuario y contraseña y le llega al cibercriminal, este le redirige al sitio web original indicándole que las credenciales introducidas no son válidas.
El login en este caso tendrá el siguiente aspecto.
Login original de Steam
Como podemos comprobar la navegación cambian a HTTPS y vemos el cuadrado verde con el candado garantizando la identidad de la empresa Valve, no quedaría duda de que es el sitio web original. Nuestro sitio web clonado quedaría de la siguiente manera.
Login clonado de Steam
De nuevo son idénticos y no se consigue apreciar ningún cambio significativo por lo que el usuario no se daría cuenta realmente de no ser porque mire la URL.
¿Cómo prevenir un ataque de phishing?
Poniendo este caso como ejemplo, lo mejor para prevenir este tipo de ataques es mirar siempre la URL a la que accedemos por terceros en los que desconfiamos como puede ser por email, foros o desconocidos. Verificar el candado verde que nos garantiza la identidad de la empresa y la navegación por HTTPS que nos dice que los datos irán cifrados en todo momento. En el caso de que la URL esté acortada, podemos ver a donde apunta con knowurl.
Tipos de certificados
Como dije antes, el candado verde significa que es un certificado EV, es decir, existe un tercero que verifica y valida la identidad de la aplicación web. También existe el certificado normal que lo que garantiza es que los datos en todo momento van cifrados y no se podrán extraer. Por supuesto, el certificado EV es más caro a la hora de adquirirlo.
Luego podemos encontrarnos y seguro que os habréis topado con alguno, los llamados certificados autofirmados. Estos certificados no tienen un tercero que lo firme y verifique la identidad del sitio web y cuando vamos a navegar por su sitio nos dice "Esta conexión no es de confianza o no está verificada" en mi caso, me ha pasado mucho con la Junta de Andalucía.
En estos casos, tenemos tres opciones. La primera es no confiar en el sitio web y no navegar por él. La segunda sería, entender los riesgos y navegar aunque, podríamos ser vulnerables a un ataque de MiTM (Man-in-the-middle). Y la tercera opción sería importar el certificado en nuestro navegador y poder navegar por el sitio web y que los datos vayan cifrados así evitando un ataque MiTM. Para hacer esta última opción se tendría que confiar plenamente en el sitio web.
DISCLAIMER: No me hago responsable del uso que se le de a la aplicación explicada que se ha hecho con fines educativos. Esta aplicación está desarrollada para descargar sitios web y analizarlos de forma offline.
El pasado día 19 de febrero se celebró en el instituto IES Fidiana la primera edición de las jornadas de seguridad informática para formación profesional Security High School con la colaboración de ANPHACKET, SVT Cloud Services y los amigos de Hack&Beers donde se contó con la presencia de más de 200 asistentes.
En dicha jornada estuvieron presentes ponentes como;
Miguel Ángel Arroyo, fundador de Hacking-etico.com, Security Business Manager en SVT Cloud Services y presidente de ANPHACKET que nos ofreció una charla titulada "Hacking modo IKEA: móntate tu propio exploit" donde nos mostró un desbordamiento de buffer para poder tener el control de un software y finalmente añadir shellcode para conseguir una shell de Windows.
Francisco Barcos, inspector del grupo de delitos tecnológicos del Cuerpo Nacional de Policía de Córdoba y miembro de ANPHACKET nos mostró en su ponencia como trabajan dentro del departamento de delitos tecnológicos, cascos donde tuvieron que intervenir y un aparato muy curioso llamado Cellebrite que lo usan en su departamento. A su vez, nos habló de la aplicación Volatility donde nosotros os hablamos hace poco de ella aquí.
Manuel Camacho, colaborador de hacking-etico.com, Senior Security Consultant en SVT Cloud Services y miembro de ANPHACKET nos enseñó "Wifrikeando" sobre redes Wifi que nos mostró que por mucho que tengamos sistemas WPA/WPA2 con WPS activo podrían conseguir nuestra contraseña sin sudar mucho. También nos enseño una perfecta aplicación para Tablets o móviles Nexus llamada NetHunter desde donde también podemos realizar ataques.
Además de estas ponencias, también contamos con otras realizadas por el alumnado de diferentes institutos de Córdoba como por fueron, "Ganando una partida al Counter Strike" realizada por los alumnos del IES Fidiana que nos enseñaban como conseguir que nuestros rivales perdiesen la conexión para así poder ganar la partida. "El phising, la pesca de los despistados" por los alumnos del IES Medina Azahara donde nos concienciaban que el phising es una de las técnicas más utilizadas para conseguir nuestros datos más preciados. "Esteganografía, ocultando información" hecha por los alumnos del IES Lope de Vega que nos mostraba como ocultar información en una fotografía donde a priori, parecía una imagen normal y corriente. Por último "Un troyano RAT para Android" donde un alumno nos enseñó lo fácil que era controlar un Android con un simple troyano.
Dichas jornadas sólo fueron el principio de lo que viene en unos días, el primer congreso de seguridad informática "Qurtuba Security Congress" que se va a celebrar en Córdoba los próximos días 10 y 11 de abril organizado por ANPHACKET en la Facultad de Derecho y Ciencias Económicas y Empresariales de Córdoba. Más de 400 asistentes, ponentes de lujo, talleres, sorteo de cursos, streaming y numerosos patrocinadores y colaboradores, entre los que cabe destacar los amigos de HangoutON que mantendran informados a toda la comunidad por medio de streaming a todos aquellos que no puedan asistir.
No sólo contamos con Qurtuba los días 10 y 11 de abril, sino que también tenemos un Hack&Beers by Qurtuba el Jueves 9 a las 18 de la tarde en la discoteca Palazzio. Toda la información y entradas la podéis encontrar en la Web qurtuba.es
En Qurtuba podremos ver ponentes de la talla de Lorenzo Martínez o Pablo González entre muchos otros de gran prestigio, pero mejor vemos el video que han realizado los amigos de HangoutON para ver la cantidad de profesionales que participan en el evento.
Cada vez me adentro más en la rama del análisis forense en sistemas Microsoft Windows y es por ello que hoy os traigo una nueva entrada al blog después de llevar mucho tiempo ausente sobre los procesos que corren en tiempo real en nuestro sistema operativo Windows.
Muchas veces me he preguntado que procesos se ejecutarán al instalar un programa del cual no me fío mucho y seguro que muchos de vosotros también os los habéis preguntado. Como bien sabéis, una parte fundamental de un análisis forense es la de tener una copia de seguridad siempre de la imagen real del disco duro que vayamos analizar y trabajar a partir de dicha copia. También es de vital importancia intentar trabajar con herramientas que vayan por linea de comandos ya que son más ligeras y se modifica menos la memoria RAM por lo cual, os traigo una herramienta nativa de Windows llamada tasklist que va por linea de comandos y sirve para conocer los procesos que se encuentran corriendo en el sistema. Si la usamos sin ninguna opción nos mostrará una lista muy parecida a la pestaña de Procesos del Administrador de tareas, pero en nuestro caso la utilizaremos con la opción /SVC para así poder saber que servicios dependen de los procesos que corren en el momento y que nos muestre solamente el nombre del proceso, PID y al servicio que pertenece. Por supuesto, todos estos resultados podemos arrojarlos a un archivo de texto añadiendo > nombredelfichero.txt que se guardara en la ruta en la que nos encontremos en ese mismo instante.
Salida del comando tasklist
Salida del comando tasklist con la opción /SVC
Salida del comando tasklist con la opción /SVC
Como podemos observar en la salida del comando tasklist con la opción /SVC nos muestra solamente lo que queremos saber sobre los procesos y sus servicios a los que pertenece junto al PID por lo que de esta manera, podemos comprobar en un análisis forense si el sistema infectado tiene algún proceso en ejecución malicioso y más tarde comprobar alguna conexión que pudiese tener con el exterior con otra aplicación nativa de Windows llamada netstat. Añadir que en alguna ocasión deberemos utilizar herramientas que utilicen sus propias APIs para detectar procesos y conexiones ocultas ya que muchas veces el malware avanzado es capaz de modificar el retorno de las llamadas a las APIs de Windows y no veríamos nada extraño con las herramientas propias de Windows. Es por esto que es recomendable utilizar herramientas que implementen sus propias funciones de acceso a los datos.
Al igual que tasklist, Process Explorer también permite comprobar los procesos que corren de en un equipo en tiempo real y archivos DLL que se han abierto o cargado pero esta vez en un entorno gráfico. Uno de los beneficios de que se visualice gráficamente es que podemos ver los procesos en su estructura jerárquica. Así, sin un proceso es el padre de otro aparecerá identado. Process Explorer nos muestra dos pantallas al abrirlo. En la parte superior nos mostrará todos los procesos activos, PID, nombre de la compañía etc.. Mientras que en la parte inferior nos mostrará diferente información dependiendo del modo en el que tengamos Process Explorer como podría ser; identificadores que ha abierto el proceso seleccionado en la parte superior, los archivos DLL y los asignados en memoria que el proceso ha cargado..
Procces Explorer
Una de las cualidades que contiene esta herramienta no nativa de Windows, es la integración de VirusTotal para poder analizar los procesos que están corriendo en el momento sobre nuestro sistema. Este análisis se realiza gracias a que Process Explorer envía hashes de los archivos y no el propio archivo para que nos muestre el resultado del scan que tienen almacenado en la BBDD de anteriores scans y muestra el resultado de los 57 antivirus que poseen.
Process Explorer mostrando una amenaza por VirusTotal en un servicio
Puede pasar que en la columna de VirusTotal aparezca "Unknown". Eso quiere decir que dicho archivo y versión nunca fueron subidos a VirusTotal pero, nosotros mismos podemos subirlo haciendo click en Options > VirusTotal.com > Submit Unknown Executables.
Enviando ejecutables desconocidos a VirusTotal.com
Para enviar un archivo a VirusTotal manualmente basta con hacer doble click sobre el proceso que queramos enviar para que analicen y hacer click en "Submit" en la pestaña que se nos abrirá.
Enviando a VirusTotal un proceso
A continuación os dejaré que significa cada color en los procesos que aparecen en Process Explorer.
En el día de ayer un ejercito de hackers se reunió en las instalaciones del Centro de Viveros de la Universidad Rey Juan Carlos de Móstoles para asistir a la primera Hack&Beers Madrid de la mano de Pablo González y Juan Antonio Calles.
El evento había despertado mucha expectación y se congregaron allí más de 50 hackers, entre los que había 4 mujeres, todo un logro, ya sabéis: "No Woman No Win" Cartel de lujo de ponentes con Daniel Martínez, Rafael Sánchez y Juan Antonio Calles Y entre el público personalidades tan conocidas en el mundo de la seguridad como Angelucho , Claudio Caracciolo o Chema Alonso entre otros muchos.
Uniformes de trabajo de los organizadores y comenzábamos la Hack&Beers Madrid.
Comenzaba Juan Antonio Calles su charla sobre "Hacking without hacking" y nos enseñaba diferentes técnicas sobre el proceso de Information Gathering sobre como utilizar los operadores de Google Hacking o el uso de Web tan interesantes como: netcraft.com , cuwhois.com , chatox.com y archive.org entre otras.
Seguía nuestro amigo Daniel Martínez como su charla "Conociendo Rapsberry Pi y Desarrollo de Aplicaciones" donde nos enseñó como montar un fake AP con un Rapsberry Pi con su propio servicio Web para robar credenciales mediante Ingeniería Social.
Por último era el turno de Rafael Sánchez con su charla sobre Seguridad en IPv6, donde dió un repaso a las peculiaridades del protocolo y nos mostró un ejemplo de tunelización de tráfico IPv6 sobre IPv4.
Y tras finalizar la parte del Hack nos fuimos de Beers para hacer networking de calidad entre todos los asistentes. Grandes profesionales y mejores personas !!
Todo un éxito el evento que será el primero de muchos en Madrid.
Pronto tendréis el Making off del evento con mucho hacking, muchas beers y sobre todo muy buen rollo. Podéis ver todos los tweets del evento con el hashtag #hbmad.
Gracias a todos por vuestras ganas y gracias sobre todo a Pablo y Juanan !!
Cada día son más los juristas que intervienen en ponencias de Seguridad, prueba de ello es la magnífica intervención del Fiscal de Delitos Informáticos en Gipuzkoa, Jorge Bermudez, en lapasada RootedCon 2014. Esto ha hecho ver a muchos las necesidades que se encuentran a día de hoy en la justicia en el campo de la Seguridad de la Información .
El artículo de hoy va dirigido a un profesional de la materia, uno de nuestros amigos que no falta nunca a una cita de Seguridad en las Hack&Beers, él es nuestro abogado particular, Rafael Perales Cañete, el cual nos ha contestado muy amablemente a unas serie de preguntas.
Rafael se define como un abogado 2.0, lleva ejerciendo en su despacho - Derecho más Informática D+I - desde 1996. Dentro de su extenso curriculum podemos dectacar que es miembro de la APEP (Asociación Profesional Española de Privacidad) y de ENATIC (Expertos nacionales de la Abogacía TIC). Entre sus especialidades se encuentran el Derecho Administrativo, Privacidad y Protección de Datos y actualmente está ampliando su campo a la seguridad de la información.
Rafael nos cuenta que "no pierde contacto con el resto del derecho, ya que la seguridad de la información y todas las ramas del derecho tienen que ver con las tecnologías de la información y la comunicación".
Sus comienzos en la Seguridad Informática.
"Desde que vi un ordenador. Un compañero en la mili me enseñó a modificar el antiguo comand.com en formato hexadecimal y a cambiar la orden copy por delete" - menudo compañero peligroso - "A partir de ahí ya empecé a ver la primigenia ingeniería social que incitaba a ejecutar archivos ocultos en los antiguos disquetes de 3.5"
"Mi preocupación por la seguridad ha ido pareja a la progresiva adquisición de conocimientos informáticos: mientras más sabía más comprendía las vulnerabilidades, y de igual forma me daba cuenta de que los usuarios solamente usaban la tecnología parcial e inconscientemente" - Rafael se planteó estudiar informática pero al final se decidió por el derecho. Los códigos, las leyes y la jurisprudencia sustituyeron a los libros de informática.
Percepción de la realidad de los colegas de profesión.
Según Rafael habría que distinguir entre dos tipos de abogados: los que utilizan la tecnología TIC "voluntariamente" y a los que “se les ha obligado” a utilizarla. Nos comenta que "El grupo que le gusta y usa las nuevas tecnología tiene un nivel bajo y sólo a nivel de usuario" - no llegan al aprobado - "El resto literalmente se queja constantemente de la 'modernidad' " - los puntúa con un valores por debajo de cero -.
Las necesidades que Rafael percibe entre colegas de profesión son totales, nos comenta que no hacen copias de seguridad, tienen ordenadores antiguos con programas desactualizados - apuesto que XP forever -, envían sentencias penales por cuentas de correo públicas y sin cifrar y un largo etcétera.
Comenta sobre sus colegas que "No tienen percepción de la realidad, temen de forma difusa 'lo que te pueden hacer' pero prefieren ignorarlo". Un abogado le comentó literalmente "he dejado de leer lo que pones en la revista porque me da miedo y parece que no puedo hacer nada de lo que hago".
Medidas de Seguridad que utiliza Rafael.
Las medidas de seguridad que utiliza Rafael son dignas de admiración, más de un administrador de sistemas debería recapacitar. Aquí van algunas de las que utiliza:
Copias del sistema.
Discos clonados.
Cifrado de discos.
Copias en Usb y hd de portátiles.
Antivirus de pago.
Firewall.
Antimalware
Nos comenta que hace caso de las medidas que pone el RD 1720/2007, las que le aconsejan sus informáticos y las que le damos el equipo de Hack&Beers. Como dice Rafael, "Todas son pocas, no se puede asegurar nunca al 100%" y hace alusión a una frase muy conocida en el mundo de la seguridad y que he utilizado en alguna jornada de Hack&Beers "una frase que te oído y que me parece genial es 'la seguridad de un sistema es igual a la seguridad de su punto más débil'"
Otra de las medidas que también utiliza Rafael, y en los tiempos que corren me parece fenomenal, es la siguiente, y cito sus palabras textuales ante la pregunta de por qué no utiliza Whatsapp: "Respecto a lo de Whatsapp lo utilizo con un dispositivo con número de tarjeta y con tres contactos en la libreta del teléfono"
El abogado de la Hack&Beers y las vulnerabilidades presentes en su profesión.
"Me encanta que me llaméis el abogado de H&B, quiero aprender más sobre tecnología y quiero enseñaros más sobre derecho: nuestra simbiosis será perfecta, y es la nueva filosofía de mi despacho (Derecho más Informática)"
Las vulnerabilidades que ve presentes en el ámbito de su profesión son todas las que nos podamos imaginar:
Envio de la declaración de un imputado por whatsapp.
Redes inalámbricas desprotegidas o con configuración por defecto.
Ausencia de copias de seguridad.
Ausencia de antivirus.
Encuentra también mucha falta de formación en aspetos como certificados digitales y nos comenta que "ya mismo tendremos que firmar mucho digitalmente para relacionarnos con la Administración electrónica y con los juzgados vía LexNet y PenalNetyni siquiera saben lo que es eso". Curiosamente "algunos llaman 'la tarjetita' al certificado ACA –Autoridad de la Certificación de la Abogacía- presente en el chip criptográfico de nuestro carnet colegial"
El derecho siempre va por detrás de la sociedad.
Respecto a vacíos legales y necesidades presentes en la actualidad, Rafael nos comenta la ponencia del fiscal Jorgue Bermudez comentada anteriormente, donde nos dice: "Ha definido muy bien el problema del 197.3 del Código Penal que penaliza a todos los hackers sin distinción". Rafael encuentra incongruencias en la legislación, "como la de la Ley 25/2007, de conservación de datos, que la hace inoperante al tratar solo de delitos graves".
También explica que existe mucha normativa: firma digital, administración electrónica, protección de datos, etc … y que algunas leyes nacen ya antiguas, como ejemplo nos comenta la regulación del RLOPD de los soportes informáticos.
Sin embargo hay un poco de esperanza y comenta que "Surgen y aparecen tímidamente las TICs en la legislación: por ejemplo en la LAU se incorpora la posibilidad de que arrendador y arrendatario puedan notificarse por correo electrónico, en la ley de sociedad de capital se regula la convocatoria web de una junta general..."
Todos estos temas son objeto de estudio en su despacho Derecho más Informática D+I, podéis encontrar mucha más información en su Web http://derechomasinformatica.es/
Curiosidades en un caso real con un dispositivo Android.
Rafael nos comenta uno de los últimos casos en los que ha estado trabajando: "caso de mula de paypal, con una conexión WiFi y usando ingeniería social hicieron que instalasen un programa en un dispositivo Android para pagar la cuota de Whatsapp y tomaron su número de cuenta corriente para realizar estafas en su nombre"
Necesidad de formación en Seguridad de la Información.
Rafael comenta que la formación sobre Seguridad de la Información "Es uno de mis caballos de batalla en la comisión para los alumnos del Máster de la Abogacía y de la Escuela de Prácticas, obviamente también en la Universidad de Córdoba. En nuestra ciudad no son receptivos a ningún tipo de formación ni en seguridad informática ni en el uso de TICs. Los abogados ven esencialmente al ordenador como una máquina de escribir y al correo electrónico como un sustituto del fax"
Nos comenta un caso curioso de una joven abogada , la cual le preguntó hace unos meses que dónde compraba los códigos (Código Penal, Civil, Estatuto Trabajadores, etc) "¡Ella no tenía base de datos de legislación y no sabía manejar la que pone el Colegio de Abogados en la Biblioteca. No saben buscar por Internet ni los boletines oficiales..."
Casos de delitos informáticos más comunes.
"Por ahora lo que más me consultan son sobre aportación de pruebas en soportes digitales. Surgen casos sobre injurias, ciberacoso, difusión de pornografía infantil... Los compañeros me consultan y ni siquiera me pasan los asuntos porque no consideran que sea necesario un abogado especialista en TICs"
Conclusiones.
"Venimos del siglo XIX, continuamos en dicho siglo y caminamos hacia el precipicio."
Pues con esas palabras se despide Rafael y le damos la enhorabuena porque es un placer tratar con personas tan interesadas y comprometidas con la seguridad de la información. Espero os haya resultado interesante.
Un handshake desde el equipo de Hack&Beers !!
"Todavía no he visto un abogado que defienda y asesore a los hackers"
A continuación vamos a describir el proceso de Pentesting de una aplicación en Android para lo cual vamos a hacer uso de una serie de herramientas contenidas dentro de una distribucción de pentesting para Android especializada en análisis forense llamada Santoku (nombre de un tipo de cuchillo japonés). Los pasos a seguir en dicho proceso son los siguientes:
A. PROFILING
En esta primera fase tratamos de obtener toda la información posible de la aplicación tratandola como una caja negra (Black Box), es decir, sin tener conocimiento alguno de que es lo que hace la aplicación ni como está implementada. Debemos obtener información sobre:
El desarrollador de la aplicación: ¿quién es? ¿qué tipo de aplicaciones ha desarrollado?
Dependencias del código: ¿qué recursos necesita? ¿podemos saberlo de primera hora en la ficha de la app? En el apartado de permisos podemos ver si necesita acceso para escribir en la tarjeta externa o si necesita acceder a la posición GPS, etc.
Otras aplicaciones del mismo desarrollador, para así analizar su código y encontrar posibles similitudes.
Permisos que solicita la aplicación.
Con esta información podemos sacar en claro el tipo de aplicación que estamos tratando y si es sospechosa de tener algún tipo de malware, greyware... ya que si solicita muchos permisos sospechosos para la funcionalidad de la aplicación o el desarrollador no tiene buena reputación, podemos inferir muchas cosas.
Para llevar a cabo esta fase nos valemos de la información que podemos encontrar en Play Store o en la Web (caso que la tenga) del desarrollador, así como en foros con buena reputación. En este punto no ha hecho falta aún que instalemos la aplicación.
Para llevar a cabo todo el proceso de pentesting hemos cogido una aplicación que lleva poco tiempo en Play Store pero que está teniendo numerosas descargas, ya que es de un local de moda de la zona.Vamos pues a buscar toda la información que podamos.
Desarrollador
En Play Store justo debajo del nombre de la app vemos el nombre del desarrollador y buscando por Internet vemos que es una empresa dedicada a la programación con aproximadamente un año de experiencia y afincada en la Costa del Sol.
Otras Apps
En la siguiente imagen podemos ver otras aplicaciones que ha desarrollado, las cuales son similares a las de la app objetivo, todas tratan sobre creación de eventos e informar a los usuarios que tienen la app instalada, lo cual hace pensar que haya mucho código fuente común.
Permisos
En la ficha de la app vemos los permiso que supuestamente solicita, más adelante comprobaremos estos requisitos cuando analicemos la apk. Lo que resulta sorprendente que una app que se supone tan sólo sirve como reclamo publicitario, necesite saber nuestra posición por medio del GPS o conocer el número con el que hablo e incluso poder activar el micrófono.
Recordad que en esta fase tan sólo estamos obteniendo información de fuentes públicas, sin necesidad de instalarnos la aplicación, es semejante a la entrada que publicamos hace unos meses sobre obtener información de una dominio al que queremos hacer un pentesting (Analizando objetivos sin hacer ruido) pero en nuestro caso es una aplicación Android.
B. ANÁLISIS ESTÁTICO
En esta fase vamos a analizar el código fuente por medio de ingeniería inversa, para ello usaremos, entre otras herramientas, la herramienta apktoolque ya vimos en una entrada anterior (Ingeniería Inversa de una APK maliciosa). Una vez hecho esto obtendremos posibles direcciones URI no modificables, posibles errores en la lógica de la aplicación e incluso podríamos encontrar usuarios o claves dentro del código que los desarrolladores en la fase de testeo han olvidado eliminar.
Analizaremos los permisos que nos solicita la app, de manera que compararemos los permisos con los vistos en la etapa de Profiling. Para ello vamos a usar el paquete de herramientas Androguard, concretamente androlyze.py.
En esta fase utilizaremos la APK pero sin llegar a instalarla, para ello vamos a descargarnos la aplicación desde el PC sin necesidad de instalarla desde el Play Store. Utilizaremos por la siguiente dirección Web (http://directapks.com) e indicaremos el nombre del paquete de la aplicación que podemos ver en la URL de Play Store de la app. De esta forma se nos descarga la APK a analizar.
Una vez descargada la APK vamos a irnos a nuestra distribucción de pentesting para Android especializada en análisis forense llamada Santoku (nombre de un tipo de cuchillo japonés) y empezaremos todo el proceso.
Búsqueda de URI
Descomprimimos la APK con apktool como ya vimos en la entrada de Ingeniería Inversa a una APK maliciosa y nos disponemos a buscar direcciones interesantes dentro de todos los ficheros de código de la carpeta descomprimida de la APK.
Para la búsqueda usamos el comando grep haciendo uso de expresiones regulares y eliminando aquellas referencias a direcciones conocidas de la librería de Android:
En la imagen anterior podemos ver algunas de las direcciones de acceso de la aplicación, como vemos son accesos a apis de google y otras apis de otra dirección. Con un poquito de imaginación podríamos hacer muchas cosas más como buscar acceso a URL http o buscar vulnerabilidades de los sitios a los que accede, etc.
Análisis de Permisos
El siguiente paso será analizar los permisos de la aplicación, para ello ejecutaremos el framework Androguard. El echo de utilizar este framework es porque es una herramienta aún más potente que las utilizadas anteriormente.
Pues bien, nos vamos a la carpeta de Androguard dentro de Santoku y vamos a utilizar la herramienta Androlyze, para ello ejecutamos: python androlyze.py -s y se nos abrirá la interfaz de comandos, donde pondremos lo siguiente:
Este comando destripa topa la APK y nos devuelve tres objetos para poder trabajar con ellos.
a: objeto que representa a la aplicación (APK).
d: objeto que representa al fichero classes.dex (DalvikVMFormat), que son las clases de la aplicación en formato de la máquina virtual Davilk.
dx: objeto que tiene un análisis del fichero classes.dex (VMAnalysis).
Una vez destripada la APK tan sólo tenemos que utilizar los cientos de posibilidades de esta para obtener información. Vamos a ver algunos ejemplos:
a. Obtener información general de la APK: a.show() donde podemos encontrar los siguientes apartado:
FILES: ficheros de recursos de la aplicación
PERMISSIONS: permisos de la aplicación junto con su descripción y la gravedad del mismo.
MAIN ACTIVITY: actividad principal de la APK.
ACTIVITIES: resto de actividades de la aplicación.
SERVICES: servicios de la aplicación.
RECEIVERS: recibidores de la aplicación que sirven para recibir intenciones del sistema o de otras aplicaciones, de manera que haya intercambio de información
PROVIDERS: proveedores de la aplicación donde almacenar información.
La salida que nos da de los permisos es muy útil porque nos informa de los peligros de estos como vemos a continuación.
Vemos en rojo aquellos permisos que podrían comprometer nuestro teléfono junto con la descripción del mismo. En azúl la actividad principal, aunque también la podemos obtener mediante a.get_main_activity(). Y por último vemos en amarillo el nombre de un servicio que no sabemos para que puede usarse y sería objeto de análisis.
b. Obtener sólo permisos de la APK: a.get_permissions()
c. Podemos subir un escalón más y ver las clases y métodos que utilizan cada uno de los permisos: show_Permissions(dx)
En la imagen vemos una parte de las clases y métodos que utilizan el permiso de localización GPS (ver color rojo). Cada una de las líneas resultantes muestran los siguientes datos según colores:
Clase donde se utiliza el permiso, de color azúl - LocationHub
Método dentro de la clase, de color verde - getLastKnowLocation
Dentro del método anterior debe haber una instancia del objeto de la clase de color amarillo - LocationManager
Y por último la llamada a un método del objeto anterior que realmente es quien utiliza el permiso, de color naranja - getLastKnownLocation
Ahora sólo toca analizar estos métodos y ver si hay algún posible error o cosa rara. Para ver el código JAVA seleccionamos CLASS y METHOD comentados anteriormente. Ahora buscamos objeto y método que utilizan el permiso dentro del código java correspondiente tal como vemos en la siguiente imagen. Hemos hecho uso de source() una vez elegida la clase y el método.
Nota importante: Para poder ver el código java hay que usar en la función AnalyzeAPK el decompiler "dad", sino nos dará error.
Si quisiéramos saber desde donde se llama a este método y a quien llama este método, tan sólo pondríamos lo mismo pero en vez de source, ponemos pretty_show() y al final aparecerán con T los métodos desde donde se llama y con F los métodos a los que llama.
Podríamos seguir analizando código fuente sin parar y aprovechar al máximo las posibilidades de Androguard, pero creo que ya os hacéis una idea de la potencia del framework. Aquí os dejo enlaces relacionados con Androguard donde podéis encontrar muchas más herramientas y posibilidades:
TO BE CONTINUED...
Pues bien, hasta aquí las dos primeras fases del pentesting de una aplicación en Android, espero que lo encontréis interesante tanto como yo y que os pongáis manos a la obra a probar vuestras APKs.
En mi primera publicación voy ha hablaros de una herramienta que a mi me llamó mucho la atención cuando supe de su existencia, se trata de la herramienta dnsenum. Antes de explicaros de que va, voy hacer una breve introducción a lo que sería un servicio DNS instalado en un servidor primario y como hace sus transferencias de zonas a uno secundario.
Cuando nosotros instalamos un servicio de DNS en un servidor primario, lo hacemos con la idea de facilitarnos el trabajo y no tener que recordar tantas direcciones IP ya que una de las funciones que realiza es la de traducir nombres en direcciones y viceversa. Un equipo cliente teclea el nombre del host remoto a un servidor DNS y este le contesta con la dirección IP correspondiente. A la hora de instalar y configurar este servicio, en ocasiones se hace la misma instalación en un servidor secundario para que en caso de que falle el primario, éste pueda resolver nombres a través de las transferencias de zonas que le delega el primario, aunque a veces esto no es tan bonito. A causa de una mala configuración podemos dejar al descubierto el archivo de zona de nuestro dominio. Y muchos de vosotros os preguntaréis ¿Qué peligro tendrá eso? pues bueno, el peligro basicamente es que en la fase de recopilación de información de un atacante o un test de intrusión, saber la estructura interna de una empresa puede significar un ahorro de trabajo muy grande y un avance considerable pudiendo conocer los subdominios, rangos de direcciones IP, hosts, registros MX etc...
El objetivo de esta herramienta es conseguir esa transferencia de zona que el servidor DNS primario le brinda al secundario, recordamos que la transferencia de zona siempre la inicia el servidor secundario. El uso de dnsenum es muy sencillo, basta con llamarlo y escribir acto seguido el nombre del dominio, por ejemplo "dnsenum ejemplo.com". En caso de que la transferencia de zona nos llegue, quiere decir que la configuración del servidor no tiene definido un servidor secundario(o ninguno en caso de no tener un servidor secundario) para realizar dicha transferencia. Vamos
a ver un claro ejemplo con un servidor DNS bind9 del cual intentaremos
conseguir la transferencia de zona con dnsenum que lo lleva incorporado
la famosa distribución dirigida a la auditoría Kali.
El nombre de dominio que tengo en el servidor DNS es "joseluissanchez.local", por lo que llamaremos la aplicación en Kali simplemente escribiendo dnsenum joseluissanchez.local. Al no tener ningún servidor habilitado para la transferencia de zona me la dará sin ningún problema.
Como podemos ver, recibimos todos los registros que tiene la zona del dominio pudiendo ver rangos de direcciones IP, subdominios, también podemos deducir que quizás tengan un servicio de correo por los alias pop3, imap, smtp.. En este caso la zona del dominio no contiene muchos registros, en otras ocasiones nos podemos llegar a encontrar una transferencia de zona con miles de registros.
¿Cómo solucionar este problema? En caso de tener el servicio de bind9, basta con poner dentro de la configuración de la zona que tiene que tener el archivo named.conf.local lo siguiente;
allow-transfer { 192.168.23.10; };
Pero.. ¿los que no tienen un servidor secundario al que le pueden hacer las transferencias están librados de este problema? ¡ERROR! deberán hacer el mismo paso anterior pero de la siguiente manera;
allow-transfer { "none"; };
De esta manera cualquier intento de transferencia de zona que no sea al servidor secundario o ninguno en caso de haberlo indicado así, no se realizará con exito y nos saldrá el siguiente mensaje.
Espero que haya sido de vuestro agrado la primera publicación por mi parte. Si queréis que hablemos de algún tema específico Edu o yo, siempre podeis escribirnos a nuestro email que lo teneis a la derecha.
En primer lugar daros la bienvenida a este nuevo blog de seguridad cuyos autores son @Joseliyo_Jstnk y un servidor @eduSatoe. Espero que sirva de punto de reunión entre aquellos que nos apasiona la seguridad informática y el mundo del hacking... siempre ético por supuesto !!
Hoy os vengo a presentar una distribución linux que nos va a ayudar mucho a la hora de hacer nuestras pruebas de intrusión, se trata de Metaesploitable: una máquina virtual linux, basada en Ubuntu, la cual nos ofrece unos servicios que están listos para ser vulnerados. Dicha distribución se suele utilizar para crearnos un laboratorio de prueba y aprender así sobre aspectos de seguridad, herramientas de testeo y técnicas de penetración, todo ello dentro del marco de la legalidad, ya que las pruebas de hacking las haremos contra esta máquina.
Lo primero que haremos es descargarnos la máquina virtual de la distribución Metaesploitable2 y cargarla sobre VMWare Player, también podríamos hacerlo sobre VirtualBox. Aquí el link de descarga de la versión 2:
Una vez descargada, descomprimimos el .zip de la nueva máquina y la abrimos desde VMWare Player. Si nos fijamos, aparece como máquina Ubuntu y con 512MB de memoria RAM. Arrancamos dicha máquina con Play Virtual Machine y entramos con los siguientes credenciales:
User: msfadmin Password: msfadmin
Importante: Antes de arrancar la máquina debes configurar la tarjeta de red de Metaesploitable2 para que se vea en toda tu red, debéis seleccionar la opción de Bridged, para que así simule la conexión al router directamente, como si dicha máquina estuviera conectada físicamente a tu router.
Una vez dentro de dicha máquina hacemos ifconfig para obtener la ip de la máquina Metaesploitable2 y así saber la dirección ip a la que atacar. El siguiente paso es arrancar otra máquina virtual con Kali Linux o desde una máquina física que esté en el mismo rango de red que la máquina Metaesploitable2. La información que obtenemos es la siguiente 192.168.0.204/24
Nos vamos a nuestra máquina Kali Linux y comprobamos que estamos en la misma red ( (192.168.0.203/24). Ahora tan solo tenemos que utilizar algún escáner de puertos como Nmap y ver que encontramos:
nmap -sV 192.168.0.204
El resultado del escaneo es el siguiente:
Y llegados a este punto sólo se trata de dejar volar la imaginación, ya tenemos información de los servicios que corren en el servidor objetivo (nuestro Metaesploitable2). Ahora sólo tendríamos que buscar posibles vectores de ataque, como buscar un exploit que afecta a un servicio porque tenga una versión que tiene una vulnerabilidad, un ataque de fuerza bruta, testear servicios en busca de "missing configuration" y un largo etcetera de posibilidades.
Espero que os haya servido y explotéis mucho vuestros Metaesploitables en vuestros laboratorios de hacking ético.
Saludos!!
@eduSatoe
"Vive como si fueras a morir mañana. Aprende como si fueras a vivir siempre"
La seguridad en los dispositivos móviles es algo de vital importancia hoy en día, tomando en cuenta que ya no es como hace muchos años donde lo más que podían robarnos eran los números de nuestros contactos y la información en nuestros mensajes de texto.
Hoy en día, y con los smartphones, solemos guardar infinidad de fotografías, realizamos conexiones con nuestras entidades bancarias, etc. Por eso es algo que no debemos descuidar.
Hace algún tiempo los chicos de XDA developer encontraron una manera de "saltarse" o romper el patrón de bloqueo de los terminales Android, así que como primera entrada del blog he decidido publicarla.
(imagen de movilzona.es)
Supongamos que nos "encontramos" un terminal Android y tiene el patrón de desbloqueo. La forma de "saltarnos" el patrón es la siguiente (damos por echo que se tienen que tener nociones básicas sobre el ADB de Android y que el terminal tiene que estar rooteado). Disponemos de dos métodos:
Primer método
En consola y a través de ADB, luego de conectado el dispositivo, se deben introducir los siguientes comandos:
adb shell cd /data/data/com.android.providers.settings/databases sqlite3 settings.db update system set value=0 where name='lock_pattern_autolock'; update system set value=0 where name='lockscreen.lockedoutpermanently'; .quit
Segundo método
Aún más fácil que el anterior, pero también a través de ADB, solamente requiere ejecutar la siguiente orden:
adb shell rm /data/system/gesture.key
una vez realizado cualquiera de los dos métodos no necesariamente desaparecerá el patrón de bloqueo al encender la pantalla del dispositivo, si no que podremos ingresar cualquier patrón aleatorio y se desbloqueará el terminal.
Un fallo muy importante en la seguridad de Android, ya que muchos contamos con este patrón para desbloquear el terminal.