domingo, 28 de octubre de 2012

Crónica: Asegur@IT Camp 4

Un año más, Informática 64 ha organizado el evento anual Asegur@IT Camp, este año su cuarta edición. Del mismo modo, la logística ha ido de la mano de Eventos Creativos.

Para empezar, el evento se realiza en un camping  / carabaning: El escorial. Para llegar, entre otros posibles medios, se puede coger un autobús, el 664, desde el intercambiador de Moncloa. Por ejemplo, el mismo viernes a las 17:55. Precisamente eso es lo que hice. A esa hora, llegué dársena, en la isla 1, y al llegar al autobús, le indiqué al conductor que me avisase de la llegada a la parada del camping. Precisamente allí estaba otro compañero que también iba al evento:  Pablo.

Una vez nos establecimos en el bungalow fuimos a la cafetería donde se encontraban los otros dos compañeros de alojamiento: Jorge y Umberto.

Total, que después de pulular un buen rato por allí ya fuimos a la cantina a ver si había llegado más gente. Así, me encontré con Chema, Pablo González, Nikotxan... Conocimos a más gente que iba a presenciar el evento... Vamos, lo típico: conocer a la gente, sentarse a cenar y charlar contando anécdotas, la vida, cosas técnicas... Lo típico en un evento de estos!! Después de cenar, un poco de discoteca y la habitación a seguir charlando y (si acaso), a comer y beber cosas que no muy buenas para el colesterol y la tensión.

Sábado 28

Este es el día. Durante prácticamente todo el día, ponencias y más ponencias. Con el hashtag de tweeter #aseguraitcamp4, se comentaban cada unas de las ponencias. Creo que la gran mayoría de los comentarios eran míos. Y, me da la sensación de que los últimos que fui escribiendo se perdieron en el ciberespacio.

Total, que Pablo González se encargaró de hacer prácticamente todas las presentaciones hasta la hora de comer, aunque en la primera también le ayudó a presentar Niko.

La primera ponencia, la hizo Josep Albors, Habló de los distintos dispositivos móviles, de lo falibles que somos los humanos ("el banco te pide todas las coordenadas de la tarjeta, y se las entregas", "un ayuntamiento pierde 200.000€ y..."), los usos de las aplicaciones móviles, los permisos que piden, de dónde se bajan, , móviles zombies o botnets, robos de tokens de bancos... Virus Total y su compra por parte de Google. Así, la conclusión es que hay que vigilar mucho lo que se instala, tener aplicaciones que monitoreen el móvil por si las moscas... Y, si acaso, incluso alguna herramienta de rastreo y administración remota por si se pierde el móvil.

La siguiente ponencia, la hizo Jose Miguel Aguayo. Ésta se puede resumir en que en un entorno empresarial, te puede interesar que el móvil no pueda hacer una serie de cosas. Por lo tanto, para tenerlo tan controlado como el resto de equipos, haría falta instalar un servidor que le aplica dichas políticas. Ese tipo de servidores se llama MDM. Acaba siendo algo así, a mi parecer, como unas GPOs para móviles. Se guarda en el terminal como un XML y... bueno. Hay más formas, pero, sobretodo, para un parque muy grande de terminales, haría falta uno de estos.

La tercera: Rafater. Una de las que no tenían mucho componente tecnológico. Esta era sobre dibujo gráfico en el ordenador. Sobre cómo hace sus viñetas para los comics que publica. Y... ¡¡menudos dibujos!! Digamos que no es que fueran muy aptos. Una encuesta rápida: ¿Qué preferís: Militares, vampiros o...? Evidentemente, habiendo casi 40 personas, de las cuales sólo había una chica, salió la tercera opción. Aunque mostró de los otros dos, se centró más en la tercera.

Tras el descanso, nos presentaron una característica de Windows Server 2012. Esta ponencia era para contar un poco una nueva característica de la versión recién salida del horno: El Dynamic Access Control. Si teniendo un Directorio Activo, queremos controlar el acceso a los datos compartidos en un servidor controlándolo por departamento, y tenemos 30 departamentos. ¿Cómo lo harías? ¿Crearías 30 permisos porque tenemos 30 departamentos? ¿O, teniendo en cuenta que un usuario tiene en sus datos del objeto usuario un departamento, permitirle o no acceder según ese dato? Así, dicho muy rápido, acaba siendo eso. Teniendo en cuenta una serie de condiciones a partir de los atributos del objeto de usuario, se pueden poner unas reglas u otras, permitiendo hacer que una regla te evite tener que hacer 30.

En la siguiente, Pablo González nos hizo una presentación sobre Metasploit (¡a ver si aprendo de una vez!!) con un poco de teoría y, después, una demo con máquinas virtuales. Estuvo muy chula y muy instructiva. Espero tener pronto en mis manos el libro que ha escrito sobre Metasploit.

La siguiente fue Nikotxan. Se hizo en dos partes: una primera, en la que nos contó muy rápido el inicio de Cálico Electrónico, el primer capítulo, uno antiguo en el que salía por primera vez... XXXXXX (ahh!!!, eso dejo que lo veáis más adelante). Y, después de comer, nos presentó (¡nos estrenó en primicia!), el último capítulo de la 4ª temporada a día de hoy.

Después nos hicieron unas pruebas de concepto a partir de las cuales, con un servidor proxy como podía ser SQUID, un AP y poco más, se conseguía infectar un móvil haciendo una ataque tipo MITM. Esta ponencia de infección de móviles a través de javascript y conexiones wireless la dio Ioseba Palop.

¿Un posible descanso? En algún momento se hizo uno, eso lo puedo asegurar.

La siguiente, la de Chema. Nos contó un montón de cosas sobre IPv6. Recordando cada una de las analogías que tienen las direcciones de la v6 con respecto a la v4. O lo posibles ataques que se pueden producir al tener activada la primera si sólo se está usando la segunda (y más antigua, de la cual ya no existen más direcciones públicas).

La última ponencia la dieron Cyberhades: Historias sobre Microsoft y Apple. Cómo empezaron, cómo se tiraron los trastos a la cabeza en algún momento, qué hacían para conseguir sus objetivos... Y  Vamos. Muchas, muchas anécdotas no muy conocidas. Estuvo muy interesante.

Y.... ahí acabaron las ponencias. Una vez entregadas las encuestas, nos llevamos el libro de Informática 64 "Esquema Nacional de Seguridad con Microsoft" y un pendrive de Cálico Electrónico.

Después de eso, más o menos lo de siempre: un buen descanso, cena en el restaurante del camping (algo más especial que la de la cafetería), discoteca (con un gran equ... po d... mús... ca... qu... ib.. ... l..s mi... mar... llas...), bungalow con bebida incluida y a la camita.

El resto de esta mañana ya no tiene misterio: adecentar un poco la habitación, desayunar, despertar a los rezagados porque si pierden el bus, tienen que esperar dos horas y media... y pierden el tren. Y ya. Despedida de las chichas de Eventos Creativos, de Chema y de los compas que no van en bus... Y ya. Vale, sí. Acabaría del todo en el mismo memento en el que los demás que vamos juntos al intercambiador de Moncloa nos despedimos allí.

Me lo pasé muy bien y espero poderlo repetir el año que viene. Queda mucho, pero, a ver si es posible. Que nunca se sabe...

El siguiente evento, dentro de una semana: La NoConName 2012!!! ¿¿Nos veremos por allí?? ¡¡Espero que sí!!

lunes, 15 de octubre de 2012

Particionando Android

¿Cuántos de vosotros habéis instalado Linux a manubrio alguna vez? Supongo que la pregunta debería de ser: ¿Cuántos de vosotros habéis particionado alguna vez una unidad X desde Linux?

Mmmh… Bueno. Para los que no lo hayan hecho, vamos a verlo. Y para los que sí lo hayan hecho, os lo refresco, por si las moscas. Lo haré a mi manera. Por lo tanto, puede que no sea del todo exacto, pero, para realizar la tarea básica, puede bastar.

Lo primero de todo, y muy, muy importante. Las operaciones que haremos aquí harán que los datos se pierdan. Por lo tanto, cualquier dato al que le tengas mucho aprecio y que se encuentre en el equipo que utilices para realizar todas estas operaciones, hazle un backup. Por si las moscas. Cualquier cosa que suceda, no me responsabilizo. Vamos, típico disclaimer de exoneración de responsabilidad.

Lo siguiente: ahora mismo (justo cuando estoy editando estos párrafos), no puedo asegurar que vaya a funcionar del todo. Léete todo antes de realizar cualquier operación.
Paso 1: Localizar la unidad que queremos particionar. En Linux, los dispositivos se encuentran en la carpeta /dev.

Si es un dispositivo IDE, su nombre será hdX donde X será a, b, c o d según la posición donde se encuentre instalado en la placa base. Si tiene un número, ése indica la partición detectada.

Si es un dispositivo SATA, USB… su nombre empezará por sdX. La X será abc… no se hasta cuándo terminará, la verdad. Y no se en qué se basa para asignarlas. Lo normal es que vaya asignando según vayan haciendo falta y de manera consecutiva. Pero, no sería raro que alguna vez me haya puesto otra que no me esperaba.

Paso 2: Ejecutar el comando fdisk para realizar la partición. Lo podemos lanzar de esta manera:

fdisk /dev/sdb

Donde el parámetro que necesita fdisk es el dispositivo, y no la partición.

Paso 3: Manipular la tabla de particiones elimando las que hagan falta, creando nuevas, indicando el sistema de ficheros que planeamos alojar, y guardando los cambios (o saliendo sin guardalos).
--

Un ejemplo práctico. Tenemos una nueva tarjeta microSD en nuestro flamante super Android Modelo Cojojundo XYZ con una ROM CyanogenMod9 (vale, ahora acaba de salir el 10, es un ejemplo!). . Queremos particionar la tarjeta por cualquier motivo. El que más os guste.

Termial en Android - Donde 'au' debía de ser 'su' 
Abriremos el emulador de terminal que tengamos instalado (repito: necesitamos un terminal instalado en el móvil), y elevar privilegios con su.

Ahora, necesitaremos saber cómo identifica el móvil las tarjetas. Un problema: no es hdX ni sdX. Una opción para saberlo sería googlear. ¿Para qué, si lo puedo decir yo? Las tarjetas las identifica en

/dev/block/vold/*

donde el asterisco será un número, como, por ejemplo, 179:8. A ver. El problema está en que no conseguí hacer funcionar esto del todo desde el móvil la primera vez que lo hice. No se si es que no guardé bien la tabla, pero el resultado que obtenía era raríiiisimo.
También hará falta saber dónde está montada. Normalmente se indentifica ejecutando

mount

y obtendremos el listado de los dispositivos montados en qué carpetas.

Sigo contando el proceso que hice (o que debería de haber hecho [esta segunda vez, lo voy a repetir mientras lo escribo], a ver si ahora me sale a la primera).

fdisk /dev/block/vold/179:8

Nos pide que introduzcamos el parámetro deseado. Pulsaremos "m" (sin comillas) para pedir la ayuda. Queremos eliminar las particiones que nos solicite, Para ello pulsaremos la letra "d". Pondremos una a una cada una de las particiones que tenemos. Se pueden ver si, estando en el prompt que nos pide hacer una acción, ponemos una "p". Así:

Imprimiendo las particines existentes
Imprimiendo las particines existentes
Eliminando las particiones de la tarjeta microSD
Eliminando las particiones de la tarjeta microSD 
Posiblemente, lo mejor sea guardar con "w" (lo veremos casi al final), y continuar por aquí. Si te sale otra partición "rara" o "enana", podrás eliminarla y ahora, sí que sí, intenta continuar.

Y ahora creamos las particiones. Le diremos que queremos que sean primarias,("p", de primaria y, otra vez, sin las comillas), un número de partición, en mi caso será 1 y 2, y un tamaño, yo pondré 7GB y 8GB respectivamente. Con un ejemplo debería de bastar:

Creando nuevas particiones, 7GB y 8 GB
Creando nuevas particiones, 7GB y 8 GB 
Una vez tenemos las particiones hechas, tendremos que seleccionar el tipo de sistema de ficheros que alojaremos para cada una de las particiones realizadas. Para ello, podremos buscar con la "l" (L minúscula) el listado con los códigos necesarios:
Listando los distintos tipos de particiones disponibles
Listando los distintos tipos de particiones disponibles 
que serán los que más te plazcan. Para que la partición sea visible con el terminal conectado al USB será necesario utilizar el código C (antes estaba usando el 7). Se podrá cambiar utilizando el "paramétro" "t":

Cambiando los tipos de particiones
Cambiando los tipos de particiones 
Para terminal con el fdisk,

Ahora, sólo queda salir presionando la tecla "w". Si te arrepientes de cualquier cambio, puedes salir introduciendo como parámetro la "q" (¿se ve que es una Q minúsucla?).

¿Guardando tabla de particiones?
¿Guardando tabla de particiones? 
Mmmh.... Pues... no. No me ha funcionado. Se ha quedado tal y como lo tenía antes de escribir este post. Es decir, al conectar el USB, se muestra la partición de esa tarjeta con el fichero ya que tenía dentro.

A reiniciar, entre cada operación, sí que han empezado a salir. Por lo tanto, la clave parece estar en que cuando se eliminan las particiones, tenemos que reiniciar el terminal y continuar con el proceso por donde lo hemos dejado.

He de reconocer que cuando lo hice la primera vez, lo acabé haciéndolo desde una VM, pero es muy raro. Sin reiniciar dice que sí, que está hecho, pero... No se.

Ahora que parece que están las particiones, puedo hacer el formateo.

mkfs.vfat -F 32 /dev/block/mmcblk1pX

donde la X será el número de partición.

Si te sale un error como "value too large for defined type" se resuleve... con el comando

newfs_dos /dev/block/mmcblk1p1
Lo he encontrado aquí.

Total, y para resumir:
- desmontar las particiones de la tarjeta:
- fdisk: eliminar partciones con "d". Reiniciar por si las moscas.
- fdisk: crear las particiones. Ojo: acordarse de poner el símbolo "+" (más) antes del valor del tamaño y las unidades (muy importante). Indicar el tipo de particion si se quiere cambiar.
- fdisk: ¿Reiniciar?
- Formatear (si se deja)

Y ya está!!

Soy consciente de que es mucho lío lo que he puesto. Esa es la razón del resumen. Y también que la primera vez que lo hice hace unas semanas fue haciendo trampa: conectando el adaptador de microSD a SD y después, desde una VM particionándolo. En principio, el comando newfs_dos debería de funcionar bien. El resto, os lo dejo a vosotros!!

Update, 2013-08-21: He actualiazdo los estilos. Se me habían puesto horrorosos.

viernes, 12 de octubre de 2012

El defacement físico

Hoy es festivo y, como podréis ver, a estas horas (casi las 7:15 de la mañana) y estoy sentado en el ordenador escribiendo un post. ¡Que nooo! Ya sabéis que muchas de mis publicaciones están programadas!!

Como muchos sabréis, estoy apuntado a la lista de distribución de la Rooted.

Hoy, nos han enviado un enlace con un análisis muy curioso de un defacement físico que se ha hecho famoso en el mundo entero.

Se trata, nada más y nada menos, que... la restauración del Ecco Homo.

Aquí os dejo el análisis.

¿Se han dado más casos parecidos como los de la pobre Cecilia, que con la mejor de sus intenciones, no acabó de salir del todo bien el trabajo que estaba haciendo?

miércoles, 10 de octubre de 2012

Cain y sus ficheros de texto


Esta entrada es una de esas que, sin estar escrita, lleva muchiiiisimo tiempo en la bandeja de borradores. Y me da la sensación de que va siendo hora de escribirla. ¿No? Incluso, me da la sensación de que no va a ser muy larga. ¡A ver qué sale!

También recordar lo típico: cualquier cosa aquí expuesta, el que la haga, que apechugue con las consecuencias, que yo no me hago responsable. Puede ser legar, puede no serlo... Lo dicho: yo no me responsabilizo de nada. He dicho.

Ahora. Empecemos.

Lo primero de todo. ¿Sabemos qué es el Cain (& Abel)? Supongo que sí, ¿no? Entre otras cosas, permite hacer ataques MITM, obtener hashes de contraseñas, obtener sus correspondencias con el texto claro... Y seguro que tiene muchas más de las que desconozco.

Ahora bien. Para algunas cosas cuesta bastante utilizarlo. Otra forma de verlo es que tiene algunas opciones que no son tan conocidas, y le dan más versatilidad.

Por ejemplo:

Queremos intentar realizar un ataque MITM. Para ello, se necesita hacer un escaneo de toda la red, y, una vez tengamos el listado los equipos "victima", realizar el ataque.

Cain escaneando la red


Al final, después de acabar la operación, obtendremos el listado de las direcciones IP encontradas junto con sus direcciones MAC. Además, también nos mostrará el fabricante (teniendo en cuenta que se obtiene a partir de la MAC). La historia está en que ese scan puede cantar mucho en una red. ¿Qué podemos hacer? Existe una fórmula. Nos cogeremos una consola, por ejemplo, un cmd. Con éste, iremos haciendo ping a cada una de las direcciones IP que se correspondan con nuestro netid. Y tomaremos nota de la dirección IP que corresponda con la dirección física que nos de el comando arp.

¿Has entendido todo hasta aquí? ¿Tienes todo listo?

Muy bien. Ahora, con el Cain cerrado, vamos a su carpeta de instalación

C:\Program Files (x86)\Cain

y abrimos, con permisos administrativos, el fichero HOSTS.LST.

Por lo tanto, con una modificación como esta:

Fichero HOSTS.LST con un resultado más

Obtendríamos un resultado como este, que, a todos lo efectos es un elemento más en la lista que ya teníamos:

Nuevo equipo, con su hostname

En este caso, aparece el hostname, que es el tercer campo con el que trabaja este fichero, separando cada uno de los campos por "punto y coma" (;).

Tenemos más cosas que se pueden manipular con los ficheros de texto. De hecho, lo anterior es un relleno que no tenía pensado contar. En realidad, este post viene por lo siguiente. Por ejemplo, se han publicado un montón de hahses de MD5. Por lo tanto, vamos a insertarlos desde la aplicación. Seleccinamos cracker, escogemos MD5 (es el ejemplo, se escogerá el que tenga que ser), botón derecho sobre el listado de la derecha, add to list,...

Introducir hash MD5

Te permite introducir sólo un hash, en un instante determinado. ¡Pero quiero poner 200.000! ¿Qué hago? Repetiré la misma opción anterior, pero, en esta ocasión, el fichero a manipular será el MD5.LST.

Hashes MD5 en el MD5.LST

Ahora, después de haber puesto unos pocos hashes, conseguimos:

Cain y los hashes puestos en el MD5.LST

Como habréis observado, he dicho que tenían que ser "unos pocoshashes. ¿Por qué? Porque estos ficheros se cargan en memoria cuando arrancas el programa. Si intentas cargar un fichero que ocupe 200MB, o más (por poner un ejemplo. podrían ser 100MB o 1GB, lo mismo da), podrías no conseguir lanzarlo y te quedarías... a verlas venir. 

Hay más opciones que me gustaría explorar: saber en qué fichero se utiliza el caracter de tab para separar las columnas, en cuál el "punto y coma" (;)... qué carácter se utiliza para que separe las contraseñas de los hahses...

Pufff!! Lo que ha dado de si el hecho de que en una ocasión quisiera abrir un archivo gigantesco para romper un montón de MD5. 

¿Conocéis más truquitos en Cain que no sean tan conocidos (por los que llevamos poco tiempo en esto)?

miércoles, 3 de octubre de 2012

UPesk!! My Windows passwd in plan text

Esto es lo que quise publicar el 30 de Agosto, desde el móvil y no salió a la luz vete tú a saber por qué. ¿Querría hacer algo especial o investigar algo y no pude o se me olvidó? No lo se. Aquí dejo lo que tenía escrito:

******

¿Tu portátil tiene lector de huellas? ¿Es de la marca UPEK? ¿Utilizas su gestor de login, UPEK Protector Suite? Entonces,  ¡¡estás de enhorabuena!! ¡¡Tu contraseña se habrá guardado en texto plano!! Al menos,  es lo que se puede desprender del siguiente tweet:

Use a laptop fingerprint reader? Your Windows password may be stored in the registry in plain text. http://t.co/4FTefju0 -- Steve Werby (@stevewerby)

******

Total: que mucho ojo. Posiblemente lo que quise hace es buscar si eso también sucedía con otros lectores. No se. Este lo dejo aquí como uno de esos posts poco sustanciosos de los que me están saliendo últimamente.

martes, 2 de octubre de 2012

TNS:Listener not found

Hay un error muy curioso con Oracle. Trasteando un poco con una BB.DD de Oracle, no conseguía acceder a ésta. Y eso que estaba el servicio levantado (aunque en el pantallazo aparezca el servicio OracleXETNSListener iniciado, en esos momentos, no lo estaba y no arrancaba):


Servicio de Windows: Oracle, tnsnames...

¿Qué pruebas hice? Lo primero de todo, al ver que no conseguía acceder al servicio, arranqué una consola y lancé

tnsping localhost

Recibiendo un mensaje de error con código ORA-12541: TNS no listener.

¿Y eso? La cosa es que accediendo a los servicios de Windows, tal y  como aparece arriba, falta alguno de los de Oracle por arrancar. El OracleXEClrAgent y OracleXETNSListener. El agent no dio problemas para lanzarlo. El listener… Aaaaah, amigo. Ese es el quid de la cuestión. Por mucho que se le dijera que lo levantara, daba un mensaje de alerta indicando que algunas veces había servicios que sólo se arrancaban unos segundos para luego pararse.

Por lo tanto, se te ocurre buscar en Google ese código. Y, fundamentalmente, lo que dicen, es que se compare el fichero tnsnames.ora con el de listener.ora. Los comparas y…

tnsnames.org

listener.ora

Y uno no se da cuenta de algo extraño: el nombre que hay en HOST no se correponde con el que daría %computername%. Por lo tanto, se sigue jugando con distintos comandos referidos a Oracle y no hay forma. Hasta que se cae en la cuenta de que el nombre, que se asigna a través del DNS junto con el DHCP, no coincide con el que se tiene actualmente. Si cambíasemos el ant_localhost (pon aquí el hostname que más te guste) por, directamente, localhost, al intentar arrancar el servicio, éste funcionaría. Por lo tanto, al volver a lanzar el comando:

tnsping localhost

obtendríamos un resultado positivo. Y, si intentásemos arrancar, por ejemplo, el SqlDevelopper, ahora sí que obtendríamos el árbol de las distintas conexiones. De todas formas, también ha hecho falta arrancar una nueva versión de éste último. Sólo por si las moscas (pidiendo una versión de java al lanzarlo por primera vez).

¿Qué otras cosas curiosas os han pasado que se puedan contar?