miércoles, 30 de diciembre de 2015

Convertir vmdk a dd o raw

Como de costumbre, vamos a ponernos en situación.

Nos entregan unas evidencias que hay que analizar en un disco. Y cuando nos vamos a poner a trabajar sobre ellas, nos encontramos con que nos entregan unas máquinas virtuales de VMWare. Es una faena, porque queremos trabajar con herramientas como FTK o Autopsy. ¿Qué hacemos? Sencillo: instalar otro software de virtualización. 

Es totalmente en serio. Al menos, para la técnica que voy a mostrar aquí hace falta precisamente el producto de Oracle VirtualBox. La razón es que tiene una herramienta que se llama VBoxManage.exe. Con ésta, entre otras cosas, puedes convertir las imágenes al formato dd, también conocido como raw.

Por lo tanto, vamos a la carpeta de instalación de VirtualBox desde el cmd y ejecutamos:

VBoxManage clonehd fichero_vmdk fichero_dd --format raw

Donde el fichero_vmdk es el nombre del mismo y el fichero_dd lo mismo. Esta aclaración es para indicar que es muy recomendable (al menos así lo he hecho yo) usar rutas absolutas. 

Después del tiempo que tarde en convertir los gigas y gigas de datos de los que conste el vmdk, ya tendrás un formato más estándar, con el que trabajar más cómodamente (siempre que no te haga arrancarla, y de lo que ya hablaré en un futuro). Además hay que tener en cuenta otra cosa más: si ese disco de la máquina virtual es dinámico, lo más seguro es que el resultado final te ocupe más. Si en el destino no hay espacio suficiente, tendrás algún mensaje de error (que por desgracia no tengo a  mano). 

viernes, 25 de diciembre de 2015

Felices fiestas - 2015

Siento no haber podido felicitaros las navidades. Por lo tanto...

¡¡FELIZ NAVIDAD!!

Espero que os lo paséis muy bien en estos días tan especiales. Disfrutadlos (sobretodo si estáis de vacaciones).

martes, 3 de noviembre de 2015

RootedCon 2016: Call For Papers

Si bien lo han avisado hace unos pocos días, no he tenido tiempo para comunicarlo.

Ya han abierto los Call For Papers para la RootedCon 2016. Esta próxima no se hará en el hotel Auditorum, como las dos anteriores entregas, sino en la sala 25 de los cines Kinépolis de Madrid. Las fechas serán 3, 4 y 5 de Marzo.

El plazo para enviarlos es el 10 de diciembre del presente año (2015).

Como de costumbre, cuando doy estos avisos, mirad las fuentes oficiales, dado que yo no lo soy.

http://rootedcon.com/noticias/abierto-el-cfp-para-rooted2016.php


viernes, 30 de octubre de 2015

Comando System en Asterisk: Systemstatus devuelve APPERROR

Llevaba tiempo sin publicar. Además, como donde estoy ahora no tengo disponible mi centralita, voy a intentar contarlo lo mejor posible. estaba no tenía disponible la centralita. Después de terminar de escribirlo, he llegado a ella y todo lo que tenía aquí expuesto estaba bien, excepto alguna sintáxis. Sobretodo el poner (o no) comillas, como si de cadenas se trataran, en las llamadas a las funciones de Asterisk

Ahora, tenemos en nuestro home: /home/myUser/ un script, dateFile.sh que hace:

date >> fileDate.log

Con unos permisos:

-rwxr--r-- myUser asterisk

A la hora de trabajar en los contextos en Asterisk, además de usar sus propios comandos, se pueden hacer llamadas al sistema o a scripts que tengamos en él. Por lo que, podríamos tener algo similar a lo siguiente:

[mi_contexto]
exten => s,1,Playback(hello-world)
exten => s,n,System(/home/myUser/dateFile.sh)
exten => s,n,Playback(thank-you-for-calling)
exten => s,n,Hangup

Después, resulta, que miras en los logs y te dice que se ha ejecutado (o, a veces, ni eso), pero mirando en la misma carpeta donde se encuentra el script te encuentras con que no se ha obtenido ningún resultado. Por lo tanto, buscando, te encuentras que el resultado de la operación se guarda en la variable SYSTEMSTATUS.

Por lo tanto, volviendo al contexto (siempre me sale el nombre de ámbito [scope]):

[mi_contexto]
exten => s,1,Playback(hello-world)
exten => s,n,System(/home/myUser/dateFile.sh)
exten => s,n,NoOp("Systemstatus is: " ${SYSTEMSTATUS})
exten => s,n,Playback(thank-you-for-calling)
exten => s,n,Hangup

Y volvemos a pasar el mismo. Ahora, después de lanzarlo, nos devuelve que el resultado es: APPERROR. No es SUCCESS. No es FAILURE.

Resulta, que al buscar qué significa ese error, todos terminan diciendo, más o menos que está indocumentado y que devuelve un resultado distinto de 0 (cero).

¿Y qué hago? No he visto resultados cuando Asterisk ha llamado al script. ¿Y si lo lanzo desde consola? Es importante saber que va a funcionar. Y en efecto, así es. Desde la misma consola funciona.

Bien: para resumir dónde puede estar el problema, volvamos a los permisos asignados. Porque ahí es donde radica el quid de la cuestión.

Nuestro usuario tiene permisos para ejecutar ese script. Asterisk no puede hacerlo. No sólo es cuestión de mirar a qué usuario pertenece dicho fichero, o el grupo al que quieres asignarlo, sino también los permisos de lectura, ejecución, ¿escritura? que quieras asignarle.

Si en vez de tener los permisos de arriba, tuviese:

-rwxr-xr-- myUser asterisk

Y volviésemos a ejecutarlo, ahora ya no nos devolvería ese error tan raro que no da ninguna información. La única pega que alguien podría poner es que lo asigne al grupo de asterisk, en vez de permitir que sean otros. A parte de eso, creo que esto es algo seguro, y, lo más importante de todo: ya hemos obtenido la respuesta de una de las posibles causas de este error.

lunes, 5 de octubre de 2015

Nava negra / ConectaCON 2015

Este fin de semana pasado han sido las Navajas Negras / ConectaCON. Este año han fusionado las dos conferencias en una, y, como los años anteriores, se han realizado en la Universidad de Albacete.

Tal y como hice el año pasado, quedé con Julián (@Txambe) para ir a Albacete en coche.

Una vez llegamos, nos dirigimos directamente a registrarnos y asistir a los talleres que nos interesaban. En mi caso fui a relacionado con Burp y él fue al que daba Pedro (@NN2ed_s4ur0n).

Una vez finalizados los talleres, a la hora de comer, la organización nos tenía preparada la comida con el cátering. Resulta que la gente empezó a comer antes de tiempo porque con la comida ahí a la vista.. Hubo gente que cuando salió del último taller, se encontró con que ya quedaba poca comida. Un buen capón por parte de la organización para todos haciendo que en las próximas comidas las "precintaran" hasta que todo el mundo estuvo listo para comer.

Después de comer, empezamos con las distintas charlas del día.

Yaiza Rubio y Felix Brezo nos hablaron de su herramienta Usufy, que se encarga de recuperar datos de la persona deseada en todas las redes sociales, o fuentes de información de Internet. A todos los efectos, de forma muy resumida,

Deepak Daswani (@dipudaswani) nos habló sobre la recuperación de datos con WhatsUp. Es otra herramienta OSINT, como la anterior. A partir de las fotos obtenidas por esta aplicación, se puede conseguir saber los sitios donde se ha ido desplazando "la victima" y cuándo ha estado en ese lugar.

Más adelante, Jose Antonio, Iván y Álvaro nos presentaron las distintas vulnerabilidades que encontraron en varios routers SOHO, los objetivos que se marcaron, los que consiguieron, sus dificultades... Nos enumeraron una gran variedad de vulnerabilidades que encontraron. Además, nos deleitaron con varias demos.

Más tarde Pablo San Emeterio (@psaneme), nos habló de distintas vulnerabilidades en el código fuente y en los binarios. Entre otros ejemplos, se pueden reseñar el uso de funciones no recomendadas dado su peligro: qué hace el compilador con ellas. ¿Las muestra como que no las conoce?¿Como prohibidas?¿Las deja pasar, pero internamente las cambia para que el resultado sea el mismo, pero de una forma segura?

Después, José Selvi (@JoseSelvi), de pentester.es, nos habló de HTST y SSL: El cómo se puede forzar a tirar de un cifrado SSL, engañando al sistema para que se ponga una fecha u hora distinta a la debería de tener realmente. Entre otros sistemas implicados se encuentran los servicios NTP. También se nombraron las listas de revocación (CRL) y nuevos sistemas más eficientes. Muy remarcable la banda sonora de esta ponencia: Regreso al futuro.

La última charla del día fue por parte de Mark Ven Heuser: De esta charla no se supo de qué iba hasta aquel mismo instante. De las muchas cosas de las que nos habló, fue sobre la problemática del uso de IPv6, tanto en el lado público como en el privado. Sobretodo el hecho de que "los cambios son difíciles". O, la discusión sobre la necesidad del uso de IPv6 en una empresa: ¿Es realmente necesario pasar a la versión 6 para una red privada?

Al finalizar la ponencia, nos fuimos a cenar todos juntos. La organización también nos tenía preparada esta comida. Después, tuvimos la oportunidad de hacer más networking.

Al día siguiente, después de un desayuno, Julián y yo fuimos a nuestros respectivos talleres. De hecho, al que yo quería ir había mucha gente deseando asistir, por lo que estuvimos en la puerta (equivocada) bastante antes de tiempo. Hasta que Julián se encontró con un tweet que indicaba que ya había gente allí. Casi me da un algo, pero llegué a tiempo para poder asistir y, además, conseguir un Arduino para la práctica.

El taller estuvo bastante chulo, pero hubo ciertos momentos de no enterarse de si las cosas funcionaban o no. Vamos. que en algún instante terminé en modo "no me entero, no me entero, no me enteroooo"

Después del taller, una vez más, magnífica comida preparada por parte de la organización.

Después de comer, empezaron las charlas.

La primera del día fue por parte de Ángel Suárez: Arranque de Linux seguro. Las distintas formas en las que se puede conseguir arrancar de forma segura, los distintos sistemas que se cargan al arrancar un Linux, qué sucede si hay particiones cifradas...

Después, Dani (@cr0n), de la organización, nos habló sobre Scapy, distintas funciones que tiene para simular sistemas de red, independientemente de la pila de protocolos. Aunque es fácil de usar, no es una herramienta de botón gordo... Incluso se hablaron de automátas de Mealy y de Moore.

Más adelate, tuvimos la presentación de la empresa SIA.

Más adelante, Carlos García (@cg_sanchez) nos hablo sobre SDR. Con un simple pincho USB para TDT, se puede conseguir escuchar frecuencias para las que, en teoría, su driver no está diseñado. Eso sí, depende de la marca que funcione o no. Cosas que se pueden escuchar: beepers (buscas), datos de aviación, tren, barcos... Y muchos más. Frecuencias que se nombraron: 433MHz, 868Mhz, 1090 MHz...

La siguiente charla, Abel Valero (@sanguinawer) y Segio Llata (@sergiollata) nos hablaron sobre la ingenieria inversa en máquinas virtuales y sus instrucciones. Era un reto de un CTF del que obtuvieron el resultado esperado.

Mirolav Stampar nos habló de su experiencia como voluntario en la organización que desarrolla SqlMap. No nos habló de cómo funciona la herramienta, pero sí de cómo la gente que utiliza la herramienta se comporta: los que donan, los que dicen que la herramienta falla y exigen que se arregle (pero, no toman la iniciativa de decir "mira, esto falla y te lo he arreglado")...

Al terminar, se hizo una pequeña presentación del próximo CyberCamp y... ¡una subasta de hackers!! Estuvo muy divertida la puja.

Una vez finalizada la charla, nos fuimos a cenar  otra vez. Después de la cena, tuvimos la oportunidad de asistir a los talleres nocturnos. Entre otros, Lorenzo (@lawwait) habló sobre UTMs. En mi caso, asistí al taller relacionado con aprender a memorizar de una manera efectiva, impartido por Alberto Cartier. Cuando terminó, estuve pululando un poco más por la sala, donde me indicaron que había un grupo de compañeros haciendo lockpicking. Hice una prueba con una cerradura de entrenamiento (después de unas pocas instrucciones), y conseguí que funcionase. Claro, viendo los cilindros...

Ya para el día siguiente, la primera ponencia fue por parte de David Barroso (@lostinsecurity), OPSEC: Seguridad operacional. Averiguar datos de una situación, persona o grupo de personas a partir de otros. Me recordó un poco a Locard. Puso de manifiesto diversos casos reales, a partir de los cuales, se llegó a descubrir quién era responsable de una situación en concreto a partir de las pistas que dejaron (usar una captura muy similar, comprar unos móviles que casualmente se usaron en un presunto delito y justo después de cometerse desactivarlos....). Como de costumbre, se puso de manifiesto el balance entre seguridad y usabilidad.

Más adelante, Arán Lorca (@4r4nL) nos habló de las distintas vulnerabilidades que encontró en un UTM y cómo fue capaz de, prácticamente, destriparlo. Teniendo en cuenta las distintas particiones cifradas del sistema, consiguió descifrarlas, manipularlo para conseguir actualizaciones y distintas características no contratadas en el mismo... No se indicaron marcas, pero ahí quedó la cosa. ¿Se podría conseguir hacer lo mismo con los UTMs de otras empresas?

Después tuvimos una pequeña charla comercial de 15 minutos por parte de Sophos.

Después del desayuno, Pepelux (@pepelux) nos habló una vez más de VoIP y los peligros que tiene no controlar cómo se configuran las centralitas Asterisk. Cómo terminan comprometidas de tal forma que otros usuarios que no deberían de poder usarla terminan sacándole provecho económico. La cosa es que estuve hablando con él en el desayuno, preguntándole cosas, y casi, casi le reviento una parte de la charla porque estaba muy relacionado con cómo evitar precisamente eso. xD. Nos hizo una demo en la que pude participar: conseguir que se marque un número de teléfono (mi móvil) y que saliera un origen distinto. Se esperaba otro comportamiento más, pero no pudo ser. :( Sobretodo, hay que acordarse muy bien de que SIP puede llegar a hacer llamadas con comando INVITE, sin REGISTER, si no se tiene cuidado. Y así se consigue que te carguen las llamadas a tí. Por eso es muy importante tener definidas unas políticas que permitan controlar, al menos, que los usuarios puedan hacer ciertas llamadas (o no) y a qué hora pueden hacerlas.

Más adelante, Deloitte CyberSOC hizo aparición para mostrar sus cursos de formación.

Para terminar las ponencias, Chema Alonso (@chemaalonso) volvió a hablar de Tacyt y cómo funciona su BigData, pudiendo hacer búsquedas de las aplicaciones de móviles.

Y, ya para terminar el evento, se hicieron los distintos sorteos y entrega de premios del CTF. Entre otros premios, cursos impartidos por Securizame (@Securizame), la empresa de Lorenzo (@lawwait). Hubo un juego que varios intentamos hacer y no lo conseguimos. Resulta que unos de los compañeros, lo terminaron... Tirando del servicio de CPUs de Amazón.

Para finalizar el evento: nos fuimos a ponernos las botas al hotel Universidad, donde nos pusieron un montón de comida muy, muy rica

Me quedo con que también me encontré con un montón de compañeros de otros años, con los que pude compartir muy, muy buenos momentos. Espero poder vernos el año que viene... O en un próximo evento.










miércoles, 15 de julio de 2015

Call For Proposals: No Con Name 2015 con cambios a la vista

Hoy mismo nos ha llegado a la lista de correo de la No Con Name el siguiente mensaje por parte de Nico Castellano:

Os quiero dejar un regalito y es el link del Call For Proposals para este 2015. Con esto os dejo unos comentarios antes de que cojáis la maquinita automática, anunciando algunas novedades antes de que preguntéis:
- Este año la entrada a la CON será gratuita. Aunque esto no quiere decir que tengamos que hacer alguna artimaña para obligar al asistente a que se comprometa a asegurar su plaza.
- No hemos confirmado fechas (aunque solo nos falta un OK) las fechas serán más o menos las de siempre (siempre las hacemos en las mismas fechas)
De lo relativo a la CON:
- El formato va a ser totalmente distinto, vamos a potenciar los talleres/workshop o como lo llaméis, esto quiere decir potenciar los hands-on labs, menos palabras, menos powerpoint y más tecla, código y participación "ven con tu portátil y sentémonos a aprender todos de todos".
- No quiere decir que dejamos de lado las ponencias, pero si que quedarán en otro lugar, así que si no es algo que creáis que realmente merezca la pena, no presentéis (con esto no quiero decir que os echéis atrás a la primera, escribidnos si tenéis dudas)
- No os cortéis.
El enlace: https://www.noconname.org/cfp2015/
Por lo tanto, ya sabéis!! Si tenéis algo que proponer... ahí lo podréis hacer.

Como de costumbre, recuerdo que todos los temas oficiales del evento, habrá que remitirse a sus contactos oficiales.

lunes, 6 de julio de 2015

Acceso SSH denegado: ¿Qué ha pasado?

Como ya sabréis, tengo una raspberry con un port de FreePBX para procesadores arm. Pues resulta que recientemente he tenido problemas para acceder por consola ssh. Hacía una temporada que no intentaba acceder por ahí, y desde hace una semana y pico que llevo intentándolo, pero nada.

¿Qué he hecho? Varios intentos, bastante infructuosos, la verdad.

El primero de todo, ha sido extraer la tarjeta del dispositivo, ponerla en mi flamante equipo nuevo, tirar de la herramienta FTK (Forensics ToolKit) desde Windows, y extraer algunos ficheros que podían ser de interes:
  • /var/log/ entero. Quería tener todos los logs posibles. En la búsqueda que hice de los que me parecían más importantes no encontré nada.
  • .bashrc_history de mis usuarios. Tampoco había nada que me ayudase.
  • Fichero de configuración del servicio de ssh: por si alguna cosa había cambiado. Nada.
Y yo como loco buscando qué había podido pasar. Intenté hacer varios cambios editando algunos ficheros de confirguación del ssh, pero no hubo éxito. Por lo tanto, ya me puse a hacer un backup a través de la consola de administración de la centralita y después, con Kali, hacer una imagen de la tarjeta. Incluso, con la imagen ya hecha, me atreví a hacer cambios en la configuración del servicio: permitir a root acceso directo, entre otros. 

También eliminé las claves que te guarda el putty al acceder al ssh. Y, aún ofreciendo guardarlas de nuevo, no hubo manera. 

Como no se me ocurría qué más hacer, me he puesto a buscar, y he encontrado una idea muy interesante: intentar acceder por sftp. Y, en efecto, así sí que accedo perfectamente. Por lo tanto, queda mirar qué está sucediendo. 

Haciendo memoria, y con alguna búsqueda más, me he dado cuenta de que una de las últimas veces que entré por ssh hice una actualización (una pena que el bashrc_history no te diga cuándo se ha producido cada línea). Voy a hacer un intento: "eliminar" las claves de ssh (renombrándolas, claro), pondré un fichero en la carpeta /etc/cron.d/ para que ejecute un script:






Todo esto, a ciegas. A ver qué resultado da. Después, a la vuelta, os cuento.

Algunos de estos consejos los he seguido a través de los siguientes enlaces:
Después de conseguir hacerlo funcionar (cuidado: asegúrate de que los ficheros contienen los datos, que me encontré con que uno de ellos se me había quedado vacío). Ahora, me está dando problemas incluso para que me ofrezca el usuario y la contraseña. Mensajes como "connection refused" o "Software caused connection abort" son algunos de ellos, dependiendo de qué cliente usase. 

Por lo tanto, volveré a cargar la tarjeta en el ordenador y haré una lectura, a ver qué más datos puedo sacar. 

Mirando los logs de /var/log/auth.log he podido encontrar comensajes  como:

sshd[13400]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key
sshd[13400]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key
sshd[13400]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
sshd[13400]: fatal: No supported key exchange algorithms [preauth]


Por lo que buscaré dos cosas: si hay algo que se haya hecho o pasado a la hora de lanzar cron y qué claves hay en la carpeta del servicio ssh.


Lo primero que me encuentro es que el fichero /var/log/dpkg.log está vacío desde marzo. 

---

La mala pata de que todo lo de arriba no me funcionase, hizo que me tocase buscarme un televisor o monitor para poder ver qué me mostraba. Tuve que terminar haciendo dos cosas:

  • Eliminar el hash de mi usuario root y el mortal: aún con el usuario root, no me permitía cambiar la contraseña del mortal sin ejecutar la siguiente opción.
  • Resetar las claves de ssh: no sé por qué, pero me tocó volver a generar las claves.
Una vez se ah conseguido que la contraseña de root funcionase, ya están las decisiones a gusto del consumidor:
  1. Cambiar directamente la contraseña del usuario mortal.
  2. Cambiar la configuración de ssh para que te permitiese que root accediese y después de realizar los cambios de contraseñas de tus usuarios mortales, acordarse de volver a impedir que root pudiera acceder desde una conexión remota. 
Es más,  me tocó comprarme un teclado inalámbrico para poder escribir mientras lo miraba en el televisor. Incluso un lío más: como no tengo uno con HDMI, me tocó llevarme la rasp a casa de mis padres. Y la compra del teclado tampoco es una molestia teniendo en cuenta que para otro proyecto que tengo en mente me iba a hacer falta. 
Siento mucho que este post sea uno de esos tan caóticos. Pero que al menos, le pueda ayudar a alguien que le haya pasado lo mismo.