google translator

jueves, 8 de marzo de 2012

Cargando tu dispositivo... y divirtiéndote


Al hilo de mi anterior post, Cargar tu dispositivo de forma segura, estuvimos comentando el otro día de rizar más el rizo.

En el post, yo explico cómo crearte un "prolongador" que anule las líneas de datos del conector, para evitar que te roben los contenidos de tu tarjeta flash del móvil. Pero ¿Y si me apetece fastidiar un poco a los listillos que quieren apoderarse de mis ficheros? ¿Y si me apetece que se lleven fotos, sí, pero las que yo quiero, para fastidiarles un poco? Fácil, fácil ;) Cogemos un pendrive de esos que tenemos tirados por ahí de 1Gb, lo desmontamos y le quitamos el conector USB, que nos quede sólo la placa con los chips. Ahora, soldamos al conector hembra de nuestro prolongador (el que va al conector macho del cargador) los 4 pines, para que tenga alimentación y datos.




De esta manera, la tensión sigue pasando hasta nuestro dispositivo para cargar la batería, pero cuando pida datos, va a ir al pendrive que hemos acoplado al conector. Así, cualquier script de copia, se llevará los datos del pendrive y podremos regodearnos pensando en la cara que pondrán al ver las burradas que hemos podido prepararles.

Pero, si tenemos ese típico día en que la filantropía invade nuestro cerebro y nuestra alma (vamos, que consigue ejecutarse en ring 0 en nuestra cabeza) y a nuestra maltrecha neurona le da por parafrasear a Kennedy con aquello de "No preguntes qué puede hacer la humanidad por tí. Pregunta qué puedes hacer tú por la humanidad", podemos llegar a pensar que sí, que hemos fastidiado a los chicos malos con nuestra colección de bizarradas varias, pero cualquier otra persona que pique les puede proporcionar material bueno con el que divertirse.

Dejando al margen troyanos, xploits, virus y demás que podemos meter en el pendrive para intentar inutilizar el sistema, que dependen del sistema operativo y de varios factores más, podemos intentar jugar más sucio y [Modo Chuck Norris ON] ¡¡¡dejarles sin espacio en el disco duro del equipo!!! [Modo Chuck Norris OFF]

Pongamos que han metido un disco de 500Gb en el equipo que rastrea los teléfonos y queremos llenarlo. Es cuando sacamos los 500 pendrives de un giga, los metemos en un hub USB gigante, dentro de una mochila, y los ponemos en el cargador. ¡¡Toma ya, copiad basura a vuestro disco y llenadlo!! Pero no, creo que no va a ser esa la solución. Mejor comprarnos un pendrive de 1Tb de los que se acaban de presentar en sociedad hace 2 meses (buscad por Google) y nos gastamos una pasta en un pendrive sólo para jugar y no aprovecharlo. No, todavía no soy millonario. Habrá que pensar en otra solución.

Entonces me acuerdo de los ficheros dispersos, que, como casi todo, suena mal en castellano y son mas conocidos como sparse files.

Este tipo de ficheros son muy utilizados en la virtualización, para indicar que tienen un tamaño de XXX gigas cuando en realidad sólo ocupan XXX megas. El típico caso de ficheros vmdk de VMWare al crear máquinas virtuales. Realmente el archivo ocupa 2 Gb en disco, pero a la máquina le hace creer que tiene 10 Gb disponibles.

Como explica la Wikipedia:

Esto se consigue escribiendo una breve información (metadatos) representando los bloques vacíos en el disco en vez del actual espacio "vacío" que constituye el bloque, utilizando así menos espacio en disco. El tamaño del bloque completo se escribe en el disco como el tamaño real sólo cuando el bloque contiene "datos reales" (no vacíos). Al leer los archivos dispersos, el sistema de archivos de forma transparente convierte los metadatos que representan los bloques vacíos en bloques llenos de bytes ceros en tiempo de ejecución, por lo que la aplicación no es consciente de esta conversión.

¿Y cómo creamos este tipo de ficheros? ¿Cómo modificamos el contador de espacio para que engañe a la hora de copiarlo? Usando la herramienta mkFile.exe, de la gente de Colinux, y que se puede descargar de aquí.

Partimos de un fichero creado con el notepad, prueba.txt, que contiene únicamente una línea de texto: "Esto es una prueba"



Mirando sus propiedades, vemos que ocupa 18 bytes, aunque su espacio en disco es de 4Kb, por el tamaño de la unidad de asignación del disco.



Entonces es cuando hacemos magia con el mkFile. Primero, vemos su menú de opciones:

Usage: mkFile.exe [-s] [-r] [-k] [-m] [-g] filename filesize
where filename is the name of the file to create
filesize if the size of the file.
-s means create a sparse file ( only supported on ntfs 5 or greater )
-r means resize an existing file
-k -m -g means the size is in KB, MB, or GB

Entonces, si queremos convertir nuestro fichero de texto en una mole de 1Gb, tendríamos que teclear el siguiente comando:

mkFile.exe -s -r -g prueba.txt 1

Así, le indicamos que queremos crear un fichero sparse (-s), que queremos redimensionar uno ya existente (-r), que queremos darle el tamaño final en Gb (-g), el nombre del fichero a redimensionar (prueba.txt) y el tamaño final en Gb (1).



De nuevo, miramos las propiedades del fichero, a ver cómo ha cambiado.



Vemos que ahora el fichero ocupa en disco 64Kb, pero el tamaño que dice que tiene es de 1Gb. Comprobemos si es verdad que va a darnos todo el giga de datos si intentamos copiarlo. Hacemos un copy de toda la vida y vemos que tarda bastante más de lo que debería si fuesen 64Kb.



Tenemos un nuevo fichero llamado pruebamodificada.txt Pedimos propiedades de ese fichero y ¡¡voilá!! tenemos que el tamaño es de 1Gb como antes pero que esta vez el fichero SÍ ocupa 1Gb en disco.



Hemos conseguido que, ocupando el fichero de origen 64Kb, el de destino ocupe 1Gb, es decir, 16384 veces el fichero de origen.

Ahora, en lugar de con un fichero, que queda muy bien pero no sirve para llenar un disco entero, lo hacemos con un grupo de ellos. Supongamos que tenemos unas fotos del Gran Chuck Norris. Todas son jpg, y ocupan 59K (Venga, me habéis pillado, es la misma renombrada...). Nos hacemos un script en un momento en batch (sí, con dos cojo...) para que coja todos los ficheros jpg del directorio y los pase por el mkfile.

@echo off
for %%G in (c:\nosecnofun\*.jpg) do (
mkfile -s -r -m %%G 60
)

Y lo ejecutamos. Aquí tenemos el antes:



y aquí el después.





Ahora, imaginad esto en un pendrive de 2Gb, metiendo 2000 ficheros de 64K y subiendo cada fichero a 1Gb o más... disco lleno.

Ah, y lo más divertido del tema, que el fichero, pese al tamaño, sigue siendo igual que el original, por lo que se puede abrir y ver el contenido, en esta ocasión, a nuestro querido Chuck.

Gracias a Apocalipsis por refrescarme la memoria con el mkfile, que la edad y el castigo a las neuronas no perdona :)

lunes, 5 de marzo de 2012

Cargar tu dispositvo de forma segura


La semana pasada estuvimos en la Rooted Con en Madrid y hubo una cosa bastante graciosa. Un armarito ofrecía cargar el móvil gratis (como las maquinitas del aeropuerto o estaciones de tren) y, como la gente tiene demasiado vicio con el Twitter, el Facebook, el Tuenti, Gmail y el estar conectado todo el día en general, ya sea por juegos o por navegar, hubo bastante gente que utilizó el servicio.

Hasta aquí, todo correcto y agradecidos del servicio que ofrecían a la gente, que así no necesitaban pasar el "síndrome de abstinencia" por tener el otro síndrome, el de la "Bandeja de entrada vacía". Pero ¿Sólo cargaban el móvil o había algo más? Justo me comentaban eso el jueves en uno de los descansos, hablando con un compañero.

El sábado, justo antes del cierre de la Rooted, subió un participante, a poner unas diapositivas sorpresa (todavía no están disponibles). En ellas, informaba del número de terminales Android, iPhone y Blackberry que se habían conectado, cómo habían creado un script de obtención de datos de cada uno de ellos cada 5 minutos y lo que habían podido sacar.

En el caso de las Blackberry y Android, copias completas de sus carpetas de Dropbox, Evernote y fotografías de la tarjeta. Con los iPhone, el sistema es diferente y no permite acceder a los datos de usuario, pero ofrece información del IMEI y cosas que también deberían ser confidenciales.

La pregunta es ¿Cómo evitarlo? La respuesta es clara: No conectando tu móvil al primer cargador que ves. Así de sencillo. Pero claro, por circunstancias propias de cada uno, puede que no sea posible (comercial en el aeropuerto que se queda sin batería y le queda todavía un día de llamadas y trabajo, por ejemplo). Ahí la solución es conectarlo, pero apagado. ¿Y si rizando el rizo, necesitas cargar la batería pero no puedes apagar el móvil porque estás esperando una llamada muy importante de un cliente o de tu jefe?. Ahí es más complicado, porque, como contaba al principio, dejas totalmente expuesto tu teléfono.

Desconozco si hay manera de cortar toda la comunicación de datos mediante software, ya que no tengo ninguno de los 3 tipos de terminales que menciono (sí, sigo con un Nokia de toda la vida), pero podemos "hackear" el sistema físico para evitar este problema.

Lo primero, reconocer el terreno. Tenemos que los iPhone se cargan con sus conectores específicos, típicos de todos los dispositivos Apple. Android y Blackberry tiran más de estándares, y usan sistemas USB, de los de toda la vida.


Lo siguiente, es saber qué hace cada una de esas patitas, para saber cuales hay que descartar y cuales no. Para ello, hay una página de referencia muy buena en donde tenemos información de casi cualquier conector del que busquemos su patillaje www.pinouts.ru De ahí, sacamos el "pinout" de iPhone y el de USB, aunque este último, también aparece en la Wikipedia. También alguno de Blackberry que no utiliza conectores estándar sino una especie de minijack.

Lo siguiente, es comprar un conector macho y otro hembra del modelo que necesitamos para nuestro terminal y cable para conectarlos. Eso, en vuestra tienda de electrónica favorita, seguro que encontráis (bueno, los de Apple seguramente no, o no serán tan baratos).

Ahora, toca invocar a las habilidades que cada uno tenga con el soldador. Son componentes pequeñitos, por lo que recomiendo soldador de 11W, no el típico de 35W y que, si no eres muy manitas con él, pidas ayuda a alguien.

Caso iPhone
Mirando el esquema del enlace anterior, sacamos que las patillas 1, 2, 15, 16, 29 y 30 son GND, por lo que en teoría pueden ir juntas. Por si acaso, y para no jugárnosla, no las vamos a juntar (salvo 29 y 30 que vienen juntas en el esquema)
Para alimentación, tenemos 18, 19-20 y 23. Deduzco que la alimentación la cogerá de USB, tal y como hacen los cargadores de ordenador para los teléfonos y los iPods, por lo que la patilla importante será la 23. Si queremos cubrirnos las espaldas, conectamos todas (sin juntarlas, porque esto si que puede suponer cortocircuitar la placa y provocar daños tanto al teléfono como al equipo).

Así, tenemos el esquema siguiente de soldaduras


Caso Android / Blackberry / móvil por USB
En este caso, es más fácil que en el caso de Apple, ya que el USB únicamente lleva 4 cables. Vcc, GND, D+ y D- Aquí el truco está en conectar únicamente la alimentación, pines 1 y 4.


De ambas maneras, lo que conseguimos es una especie de prolongador de la parte de alimentación (Vcc y GND) evitando la conexión de datos, por lo que nuestro dispositivo será totalmente sordo a instrucciones que le puedan mandar y mudo, porque cualquier cosa que intente enviar, no llegará a ninguna parte. En resumidas cuentas, cortamos la transmisión de datos.

Siendo un poco mañoso, un "adaptador" de este tipo puede medir 4~5 cm, o incluso menos, por lo que es muy cómodo de llevar en cualquier lado, incluso en la propia funda del teléfono o en la cartera. Pocos "firewalls por hardware" pueden decir lo mismo ;)

Como siempre, estos esquemas llevan licencia "Cañaware", es decir, si te ha sido útil, págate unas cañas ;) Y si montas una nueva linea de productos en tu empresa para venderlos, acuérdate de nosotros.

miércoles, 22 de febrero de 2012

Descuidos de seguridad, accesos no autorizados


He estado dos días en Madrid, haciendo un curso con la empresa. El domingo llegué a mi hotel y como buen adicto a mi mail que soy, abro el portátil, me conecto al wifi del hotel y ¡Oh, sorpresa!, me sale un portal cautivo. Mirando en la típica documentación que hay en todas las habitaciones descubro que cobran ¡¡¡3 euros la hora de internet!!! y ¡¡¡10 euros el día!!! Como soy alérgico a los atracos, desisto de la wifi del hotel y reviso más en la lista de las encontradas. Y hay otra abierta, XXXX_Guest a ver que nos depara...


Conecto con la red, y veo que me da una IP privada


Abro navegador y ¡zas, en toda la boca! certificado digital no válido, en la IP 1.1.1.1 Un momento, esa IP me suena de algún adaptador virtual por defecto.


Bueno, miro el certificado, no veo nada raro y como me gusta el riesgo, lo acepto


Curioso, otra pantalla de login. Esos colores me recuerdan algo. Así que, venga, vamos a probar, por si suena la flauta, las credenciales por defecto que traen esos aparatos. Usuario cisco y password cisco

De repente se abre otra pestaña del navegador, con la web de un fabricante japonés de coches. Miro la pestaña anterior, en la que he metido las credenciales.



¿¿Login successful?? ¿Pero qué clase de técnico ha instalado esto que no ha quitado las credenciales por defecto? Bueno, será que estoy en una red cerrada, que sólo puedo acceder a la web que me ha dejado, como suele montar algún banco en sus oficinas para que la gente haga transacciones online, pero filtrando todo lo que no sean sus propias webs. También deduzco eso de la palabra Guest en el SSID. Abro Google, y entra. Miro las webs de los principales periódicos y entran bien. Entonces, entro en una de mis cuentas de correo de pega (para registrarme en foros dudosos) y entra perfectamente, sin que salte ningún certificado no válido ni en Gmail ni en Hotmail. Así que descartado mitm, entro en mi correo por la puerta grande y me pongo a navegar por varias webs que tenía que consultar, sin ningún tipo de problema en la navegación. Y durante 2 días :)

Cuando ya he acabado de leer mis cosas, lanzo un escaneo de red, simplemente para ver qué hay por ahí y me empieza a devolver varios nombres de servidores. Ahí apago, yo sólo quiero navegar, no quiero reventar nada ni problemas.

En resumen, tenemos una empresa que se ha gastado una pasta en un punto de acceso, en una instalación y en unos sistemas que se supone que son seguros. Y lo son, hasta que al técnico que lo ha puesto, se le olvida quitar credenciales por defecto. Desconozco si esa red inalámbrica tiene como fin que los visitantes se conecten mientras esperan o si es de empresa. La palabra Guest en el SSID no hace pensar que sea de empresa, sino para invitados. Dejando al margen las credenciales, no es nada seguro que una persona que va a visitar tu empresa (en este caso comprar un coche) pueda ver los servidores de la empresa mientras navega en internet). Lo lógico es que, en estos tiempos que corren en que hasta los cepillos de dientes tienen wifi, desde muchas empresas ofrezcan a los clientes o visitantes un acceso wifi para que puedan leer su correo, navegar o lo que necesiten. A mi me ha tocado montar lo mismo en algún cliente. Pero ese servicio añadido no debe poner en riesgo la seguridad de la empresa, por lo que es recomendable que funcione en una VLAN diferente.

Recapitulando:
- BIEN por la empresa que quiere dar un servicio añadido a los clientes
- BIEN por querer controlar esos accesos con usuario y password, para evitar que cualquiera se cuele a la conexión y navegue sin autorización
- MAL que el técnico haya dejado las credenciales por defecto. Suele ser bastante habitual que se olviden de eliminarlas o cambiar el password por defecto, y si no, jugar un rato con Google o con Shodan puede dar grandes momentos de diversión.
- MAL, MUY MAL, que ese wifi no esté aislado del resto de la empresa, dejando que cualquier persona con acceso (por muy visitante o cliente que sea) pueda ver los servidores y los equipos de la gente que trabaja ahí. Sniffers hay para todo tipo de plataformas, así que en un momento dado, ese "señor tan majo que está leyendo su correo" puede estar capturando tráfico o lanzando ataques contra nuestra empresa.

Lo lógico en estos casos, es montar una VLAN independiente, con salida directa a internet, que aisle al visitante del resto de la red corporativa. Esto lo permiten todos los switches y routers, por lo que no es excusa no haberlo hecho. Si se puede y el presupuesto lo permite, lo ideal sería utilizar un firewall por hardware, utilizando una de las bocas de zonas para conectar esa red inalámbrica y gestionar el ancho de banda y la navegación. Si un cliente está esperando a ser atendido, no me importa que lea su correo o las ultimas noticias, pero no es muy lógico que pueda ver pornografía o descargar con el emule.

Evidentemente, puede que la ciudad no haya sido Madrid, que la empresa no vendiera coches e incluso que no estuviera en un hotel ;)