martes, 10 de mayo de 2016

Un truco para las búsquedas en Facebook

Con frecuencia, los tests de penetración de hoy en día involucran ataques de ingeniería social. Y en estos casos puede ser de gran importancia conocer las relaciones personales y familiares de las pesonas que forman parte de la organización objetivo.

Una tarea en la que Facebook puede ser de utilidad. Así, si el ID de la página de Microsoft es 20528438720 y el de Madrid es 106504859386230, se puede obtener una lista de quienes trabajan en Microsoft y viven en Madrid con

https://www.facebook.com/search/20528438720/employees/present/106504859386230/residents/present/intersect


Y, en teoría, se podría obtener una lista de, por poner un ejemplo de relación familiar, sus hermanas con:

https://www.facebook.com/search/20528438720/employees/present/106504859386230/residents/present/intersect/sisters

Pero cuando lo intento, la página siempre se queda mostrando el típico indicador circular de progreso que no cesa de girar. Y nunca llega a mostrar los resultados.



En general, me ocurre con aquellas relaciones familiares que conllevan distinción de sexo: padres y madres, hermanas y hermanos, etc. O, si queremos citar los operadores utilizados en las URLs de búsqueda de Facebook: brothers, sisters, fathers, mothers, sons, daughters, aunts, uncles, etc. Y también con otras cosas, como las ciudades y otras ubiaciones geográficas (current-cities, current-regions, current-conuntries, hometowns,...).

Con lo de los familiares, al menos para ciertos tipos de relaciones, se puede recurrir a un pequeño truco: Existen otros operadores que no conllevan distinción de sexo: siblings, que engloba a brothers y sisters, parents, que hace lo propio con fathers and mothers, etc. Y también existen dos generadores de conjuntos, females y males, que, junto con el operador de intersección, pueden hacer el trabajo. Las URLs son algo más largas pero funcionan, que es lo que se espera de ellas.

Con esto, para la lista de hermanas de empleados y empleadas de Microsoft que viven en Madrid serviría algo del tipo:

https://www.facebook.com/search/20528438720/employees/present/106504859386230/residents/present/intersect/siblings/females/intersect


Quizá poco a poco, pero con esto sí que van apareciendo los resultados. Resultados que después deben ser objeto de comprobación y cotejo porque, como comentábamos hace poco, la gente suele poner cosas "ingeniosas" en sus datos de Facebook y no es raro que, sin ser cierto, indiquen que trabajan para una empresa popular.

Las aplicaciones seguras de verdad no se olvidan de las cabeceras HTTP

Heartbleed cambió algo en el "mercado" de la seguridad. Es verdad que vulnerabilidades con un llamativo nombre propio las hubo antes (se me viene a la cabeza aquel "Ping de la muerte" de finales del siglo pasado), pero Heartbleed llegó un momento en que el mercado de la seguridad mueve dinero y la publicidad es parte del negocio. Si previamente las cosas eran llamadas MS08-068 o por el estilo, ahora en cuanto se descubre algo, aunque no sea demasiado relevante, se le pone nombre, se le crea una página web e incluso se le compone una canción.

Y es que los nombres son importantes y pueden cambiar la forma en que vemos las cosas. Recuerdo los viejos tiempos, cuando supe por primera vez de las "Active Server Pages" (ASP) o, algo después, de PHP. A ambos sistemas se les categorizaba como "generadores de páginas web dinámicas".

Puede que a primera vista no lo parezca, pero llamarles de ese modo tiene sus implicaciones para la seguridad de los sistemas. Porque puede hacer que los desarrolladores centren su atención en sólo uno de los aspectos de la creación de aplicaciones basadas en estas tecnologías: la generación de páginas web. De código HTML. En otras palabras, en la creación de un documento.

Y, claro, se dejan atrás de otras cosas que también deberían ser parte fundamental del programa. Como la forma en que el documento es transmitido. Porque no se debe olvidar que existe un buen número de cabeceras HTTP cuya configuración puede afectar, y mucho, a la seguridad de la aplicación final.

Aunque ninguna protección es, por sí sola, suficiente para garantizar la seguridad de una aplicación, cosas como la cabecera de HTTP "X-Frame-Options" ayudan a evitar ser víctimas del ClickJacking. Igual que "X-XSS-Protection" puede configurar el comportamiento del navegador (si es que dispone de filtro anti-XSS) ante posibles XSS reflejados. O que "X-Content-Type-Options" puede evitar que el content sniffing se convierta en un problema con ciertas versiones de ciertos navegadores. O que "Cache-Control", o su hermana de HTTP 1.0 "Pragma", puede evitar que información confidencial quede guardada en los "archivos temporales de internet" o como en cada caso se llame. O que "Strict-Transport-Security" permite controlar el uso de HTTPS. Y, para acabar, ahí anda esa solución de carácter general, la Content Security Policy.

Y seguro que me he dejado un montón de cosas en el tintero. Un buen programa (y un buen programador) debería hacer uso de estas herramientas o, como poco, permitir al administrador de la aplicación configurar las cabeceras y avisarle en caso de detectar unos ajustes que pudieran suponer un riesgo.

Ciertamente, tratar con las cabeceras HTTP añade líneas de código. Y las cabeceras tienen sus variantes, derivadas de distintas versiones o de detalles de implementación propios de cada navegador, etc. Es necesario que la implementación tenga todo esto en cuenta y genere valores consistentes entre aquellas cabeceras que estén relacionadas entre sí o que configuran un mismo comportamiento.

Pero nadie dijo que esto de escribir programas fuera sencillo.

domingo, 8 de mayo de 2016

Según Facebook, la NASA es un lugar divertido donde trabajar

A veces uno tiene tiempo y no sabe qué hacer. Así que inicia sesión en Facebook y busca algo interesante. Por ejemplo, acerca de la NASA.

Los primeros pasos ya son conocidos a estas alturas: se pone "NASA" en la barra de búsqueda de la red social, se selecciona entre los resultados la página de la conocida agencia espacial y se localiza en su código fuente la cadena "fb://". Poco después aparecerá su ID.


El ID es, por tanto, 54971236771. Ahora se podría pensar en obtener una lista de empleados de esta organización con la URL:

https://www.facebook.com/search/54971236771/employees

Esto nos daría tanto el personal antiguo como el actual. Si sólo nos interesa quienes trabajan a fecha de hoy en la NASA se podría poner

https://www.facebook.com/search/54971236771/employees/present

Y, para los ya retirados

https://www.facebook.com/search/54971236771/employees/past

¿Que a qué viene todo esto? A una reflexión que quería hacer sobre el valor de la información obtenida en aquellas fases que conllevan obtención de datos. Habrá cosas en las que se pueda confiar y otras en las que no. Y será necesario saber determinar el grado de validez de cada una,

Por ejemplo, quizá sepas que los datos corresponden a una persona con unos determinados nombre y apellidos pero no tengas seguridad de que sea la misma sobre la que intentas informarte. O que los datos sean antiguos y pudieran haber cambiado desde entonces. A estas cosa, que nos dificultan una visión correcta del problema, las podríamos llamar "generadores de ruído".

Parte de este ruído es involuntario. Nadie ha hecho nada para que esté ahí. Quizá en su día fuera "información buena". Pero hay otro, que podríamos denominar "contaminación" que, ya sea con o sin intención de dificultar investigaciones, se ha introducido de forma deliberada. Y para muestra, ahí va un botón:

Igual que se obtuvo el ID de la página de Facebook la NASA, se puede conseguir el correspondiente a la página del puesto de trabajo "Stripper". Su URL es

https://www.facebook.com/pages/Strippers/112231702136450

Y el ID es, ¡oh, sorpresa!, 112231702136450. Por cierto, que ésta página es una de esas ocasiones que he tendrás de ver un topless en una página de Facebook.

Supongo que ya imaginaréis de que va el resto. Sabiendo el ID de la NASA y el ID de la profesión "Stripper", se puede sacar una lista de bailarinas y bailarines exóticos que trabajan en la agencia espacial americana con

https://www.facebook.com/search/112231702136450/employees/54971236771/employees/intersect

O

https://www.facebook.com/search/112231702136450/job-liker-union/employees/54971236771/employees/intersect

Todo va en una línea. No sé lo que hará Blogger con lo que escribo.

La verdad es que no salen demasiados resultados, pero algunos hay. Además, posiblemente haya varias páginas de profesiones con para "stripper", así que podemos hacer la búsqueda no por ID sino por cadena de texto

https://www.facebook.com/search/str/stripper/pages-named/employees/54971236771/employees/intersect

Y ahora sí que hay un montón


Seguro que a estas personas les pareció divertido poner este tipo de cosas.


La moraleja es que si alguien intentara obtener datos de empleados de la NASA, o de otras organizaciones populares, posiblemente debería mirar primero, en lugar de en Facebook, en LinkedIn, donde se suele mentir menos sobre los puestos de trabajo y mucho más sobre el nivel de Inglés hablado y escrito.

NOTA: No sé si a alguien le extrañará, pero en la NASA parecen trabajar más strippers hombres que mujeres, como puede comprobarse con las siguienes URLs, que aplican el operador "intersect" a tres operandos:

https://www.facebook.com/search/str/stripper/pages-named/employees/54971236771/employees/females/intersect

Y

https://www.facebook.com/search/str/stripper/pages-named/employees/54971236771/employees/males/intersect

jueves, 5 de mayo de 2016

No hace falta que tú lo hagas (9)

No quería acabar esta tanda de posts sobre Facebook sin mencionar otra fuente de fuga de datos relativos a personas que no han hecho nada para merecerlo. Porque no sólo de amigos se rodea uno.

Los grupos a que pertenece un usuario permiten determinar aficiones, gustos y actividades a las que se dedica tiempo. Y puede encontrarse un enlace que los muestra en la página del perfil, bajo el menú de "Más" ("More" en inglés).


En este caso aparecía sólo uno a un grupo de compra-venta de artículos. Relativamente poco revelador salvo. quizá. si en él aparecieran anuncios o comentarios realizados por la persona. Y las URL de búsqueda de Facebook también permiten localizar este tipo de cosas.

Para empezar, se necesita el ID del grupo, que puede ser obtenido de forma similar al de un usuario: mirando el código fuente de la página y buscando "fb://":

El número que sigue a "fb://group/" es lo que buscamos. Y armados con él es posible encontrar los posts publicados en él con una URL del tipo:


https://www.facebook.com/search/_ID del grupo_/stories-in

Por su parte, los posts publicados por una persona pueden localizarse con 

https://www.facebook.com/search/_ID de la persona_/stories-by
Y ahora viene lo bueno... el lenguaje de las URL permite obtener la intersección de dos conjuntos de resultados. Dicho en román paladino: aquellos elementos que son comunes a ambos. Y para ello se proporciona un operador llamado "intersect". Y, por lo general, este lenguaje utiliza lo que se llama "notación polaca inversa". O sea, que primero se ponen los operandos y al final se pone el operador, quedando

https://www.facebook.com/search/_ID del grupo_/stories-in/_ID de la persona_/stories-by/intersect


¡Quién sabe! Puede que en alguno de ellos haya una dirección o un teléfono u otro dato. Pero eso quedaría fuera del ámbito de esta serie.

Si en lugar de posts escritos por esta persona se deseara encontrar comentarios o posts a los que hubiera hecho un "like" bastaría con cambiar "stories-by" por "stories-commented" o "stories-liked".

Pero los grupos dan para más. Porque en el listado anterior no aparecía más que un grupo público. Pero con una URL de consulta como

https://www.facebook.com/search/_ID de la persona_/groups

... apareció además un grupo cerrado:


Y además uno con un nombre sugerente: "Family". Las relaciones, los comentarios, las informaciones publicadas en él o de él derivadas podrían ser consideradas "de alta calidad". Y si no se establecieron bien las configuraciones de privacidad, por muy "cerrado" que sea, los contenidos, parcicipantes, etc. podrían ser visibles para cualquiera...

Así, se podría obtener un listado de miembros con:

https://www.facebook.com/search/_ID del grupo_/members
... una lista de los sitios que estos miembros han visitado con 

https://www.facebook.com/search/_ID del grupo_/members/places-visited
etc., etc., etc., etc

No hace falta que tú lo hagas (8)

Dejamos el post anterior en el punto en que tocaba hablar de cómo la información publicada por tus "amigos" en Facebook puede revelar información sobre tí. Sigamos con ello.

En las pruebas realizadas para esta serie se tenía una persona que apenas publicaba nada que no fuera exclusivamente para sus amistades de la red social. Si se examinaban las fotos en su perfil, sólo aparecían dos. En ambas, con su pareja si bien el nombre de ésta no aparecía por ningún lado.

Sus historias publicadas eran también dos, aquellas en las que había colocado ambas imágenes en su perfil, como se podía comprobar con la URL de búsqueda:

https://www.facebook.com/search/_pon aquí el ID de la persona_/stories-by

Y sin embargo...

Para empezar, la gente puede publicar una foto tuya en Facebook. Y existe una URL para localizar aquellas fotos de una persona, las haya subido quien las haya subido, siempre que tengas permisos para verlas:

https://www.facebook.com/search/_pon aquí el ID de la persona_/photos-of

Con eso, del par de fotos inicial pasó a unas cuantas decenas. Y en ellas aparecían, por poner un ejemplo, tags que incluían el nombre de su pareja y, por supuesto, enlazaban con su perfil.

Y hablando de tags, se puede localizar todas aquellas fotos en las que etiquetaron a alguien con:

https://www.facebook.com/search/_pon aquí el ID de la persona_/photos-tagged
Claro que las fotos pueden ser antiguas y quizá en algunos casos sea difícil reconocer quién es quién. No es problema normalmente porque, como es sabido, cuando dejas el ratón en el nombre de una persona, Facebook marca su cara. Como en la imagen en que aparecen Mark Zuckerberg con  Kevin Systrom (cofundador de Instagram):


Las fotografías antiguas pueden mostrar la evolución de una persona: ¿perdió algunos kilos en su día? ¿los cogió? ¿llevaba gafas y ya no (lentillas u operación quizá)? Y las personas en ellas etiquetadas ayudan a determinar cómo evolucionaron las amistades reales y las relaciones personales.

Y Facebook las va guardando.

Con los videos se puede hacer lo mismo. Simplemente, susitúyase "photos-of" o "photos-tagged" por "videos-of" o "videos-tagged". Las historias, por su parte, también pueden estar etiquetadas y quizá alguien escribió una sobre algo en lo que la persona estudiada participó. Para comprobarlo, se puede visitar:

https://www.facebook.com/search/_pon aquí el ID de la persona_/stories-tagged

Quizá aparezca algo sobre alguna ocupación, actividad, afición o pasión: fútbol, música, arte, tradiciones,... Y quizá alguna foto relacionada con ella...


Por ir acabando, leer lo que de la persona se dice en historias y comentarios puede ser muy revelador. Quizá aparezca algún detalle que ponga en el camino de nuevas pistas y averiguaciones. En definitiva, en Facebook como en tantos otros sitios, no es sólo lo que tú digas, sino también lo que los demás digan de tí o publiquen sobre ti.


No hace falta que tú lo hagas (7)

Después de unos cuantos posts con olor a ley orgánica y otra normativa, en éste volvemos a cosas más "informáticas". Sin abandonar, eso sí, el tema de la privacidad y cuanto sobre nosotros se puede encontrar en Internet sin que hayamos hecho nada para ello.

Cuando empezaba esta serie se vio como Shodan tiene indexados datos sobre personas físicas. Y lo malo (o lo bueno, según toque) de los datos es que suelen llamar a más datos. De modo que tomé una de las personas cuyo nombre y dirección eran proporcionados por este buscador y realicé comprobaciones sobre su existencia en redes sociales. En particular, y a los efectos de esta serie, en Facebook.

Encontrar su perfil fue fácil. Si ponías su nombre en Google era de lo primero que te aparecía. Si lo hacías en la barra de búsqueda de Facebook... lo mismo. Pero cuando se consultan los datos de su perfil no aparecía nada. Quiero decir, ningún dato:


Y eso no permitía comprobar que era la misma persona de la que Shodan hablaba.

Pero no hay peor enemigo que un buen amigo, Y de amigos está Facebook lleno, de modo que me preparé para una sesión de búsquedas en esta red social.

Facebook proporciona varias formas de realizar consultas, siendo una de las más interesantes las URLs de búsqueda. Algo complicadas a veces, pero muy flexibles. En este caso, el primer paso consistió en determinar el ID que Facebook asigna a este usuario, el cual puede se obtenido mirando el código fuente de la página de su perfil y localizando la cadena "fb://":


En este caso, aparecía "fb://profile/" seguido de un número. Este número es el ID y se puede utilizar para muchas cosas. Por ejemplo, para obtener un listado de los amigos del objetivo. La URL en este caso sería:

https://www.facebook.com/search/_pon aquí el id del objetivo_/friends


A medida que iba revisando datos, se observaba que la mayor parte de sus amistades vivía o trabajaba en Lucena, una localidad de Córdoba (España). Lo cual daba una primera pista sobre dónde vivía esta persona y coincidía con lo que Shodan reportaba.

Otro dato relevante que aparece es el de las fechas desde las cuales dos personas tienen amistad en Facebook. Desde luego, una cosa es la amistad o el conocimiento en el mundo real y otra cosa lo que quede reflejado en la red social. Pero sí es interesante determinar si hay momentos puntuales en los que, en un corto plazo de tiempo, una persona hace muchas "amistades virtuales". Estos momentos suelen ser tiempos de cambio: quizá un nuevo círculo de amistades, quizá un nuevo lugar al que se asiste, quizá un trabajo, quizá un cambio de residencia, puede que el inicio de un curso... Un posterior análisis de las características comunes de las nuevas amistades a veces puede aclararlo.

Podría ser interesante saber dónde trabajan estos amigos. O dónde estudiaron. O los sitios que han visitado. Para eso pueden usarse consultas como:

https://www.facebook.com/search/_pon aquí el id del objetivo_/friends/employers
https://www.facebook.com/search/_pon aquí el id del objetivo_/friends/schools-attended
https://www.facebook.com/search/_pon aquí el id del objetivo_/friends/places-visited

Por presentar un ejemplo de respuesta, la última de las peticiones de la tabla proporcionó un dato llamativo:

¡Muchos sitios eran de Málaga! Eso puede significar una pista relevante que puede poner en el camino de averiguar más cosas. Muchos amigos que viven en, o visitan, Málaga. ¿Sitio de veraneo? ¿Algún trabajo? ¿Quizá el lugar donde estudió la carrera? En este caso, algunas comprobaciones parecían indicar que se trataba de esto último.

Resumiendo lo que va por ahora: se puede obtener información sobre una persona a partir de la relativa a sus amigos en Facebook.

Y, por supuesto, también a partir de la información que estos amigos publican sobre el objetivo. Pero eso se verá en el siguiente post.

miércoles, 4 de mayo de 2016

No hace falta que tú lo hagas (6)

Más de una vez he leído que la normativa de protección de datos en España es muy restrictiva y protege mucho los derechos de las personas. Si lo dicen, cierto será. Pero cuando ésta se enfrenta a otros derechos, y en particular, al derecho a conocer, las cosas se complican.

En el post anterior adelantaba que las Universidades ofrecen muchas veces una gran cantidad de información sobre quienes trabajan o estudian (o trabajaron o estudiaron) en ellas. Y es que se trata de un nivel formativo cursado ya por personas mayores de edad y en el que confluyen muchos intereses. Entre ellos, la competencia, que debería ser siempre sana, entre estudiantes por becas, matrículas de honor, etc. o la del personal por la promoción o adquisición de puestos de trabajo.

Así, la Ley Orgánica 4/2007, que supone una modificación de la Ley Orgánica de Universidades, establece en el punto 3 de su disposición adicional vigésimo primera, relativa a la protección de datos de carácter personal, que  "No será preciso el consentimiento de los estudiantes para la publicación de los resultados de las pruebas relacionadas con la evaluación de sus conocimientos y competencias ni de los actos que resulten necesarios para la adecuada realización y seguimiento de dicha evaluación".

En otras palabras, que las notas de los exámenes pueden publicarse en el tablón de anuncios... o en Internet. Y en ambos casos las prácticas son de los más dispares. Desde quienes sólo ponen el DNI y la calificación, omitiendo nombres:
... hasta quienes sí que los ponen:

... pasando por quienes ponen el nombre y sólo una parte del DNI

Incluso dentro de una misma Universidad pueden encontrarse criterios contradictorios. Tanto como para que en una que establece en su código tipo que

La publicidad de los resultados de las pruebas relacionadas con la evaluación de los conocimientos y competencias de los estudiantes en páginas web sólo se realizará en espacios privados de trabajo de los estudiantes. Asimismo, se adjuntará la cláusula informativa del anexo XII en los documentos con dichos datos.

... después se pueda encontrar páginas como ésta


Por si eso de "código tipo" le suena a alguien a chino, podría decirse que se trata de códigos de conducta o deontológicos a los que las propias organizaciones se someten en materia de protección de datos de carácter personal. La Agencia Española de Protección de Datos tiene una página en la que habla de ellos y se muestra aquellos que han sido registrados.

En todo caso, que se ponga o no el nombre muchas veces no es relevante porque estos datos pueden aparecer juntos en otros sitio. Como en notificaciones que se hacen mediante publicación en un boletín oficial por no haber sido posible practicarlas por otros medios (quizá una multa de tráfico que no saben cómo hacer llegar a su destiantario):

... o en resoluciones de expropiación forzosa, en los que, además aparecen los bienes, habitualmente terrenos, a expropiar. Y muchas veces no se expropia toda la propiedad, sino sólo parte de ella, con lo que se dan pistas sobre el patrimonio de la persona
... o en listados de becas o ayudas, que las que pueden inferirse nociones sobre el nivel adquisitivo o las condiciones familiares o las capacidades y actividades de las personas que las reciben.

Cámbiese lo de "Erasmus" por otra cosa y, quizá añadiendo algún operador "site", para obtener cosas de lo más variado:


Y esto si eres o has sido estudiante, que la información muchas veces queda publicada durante largo tiempo (y después sigue en la cache de los buscadores o en archive.org y sitios similares). Porque si trabajas en la Universidad tus datos pueden aparecer en otros sitios. Como los curriculums vitae presentados para algún proyecto o alguna beca. Y ahí también andará tu fecha de nacimiento, si tienes carné de conducir y vehículo propio (:-)), qué cosas has hecho, etc. O en publicaciones en boletines oficiales de tu nombramiento o participaciones en procesos selectivos o concursos de mérito a los que te presentaste para obtener mejor puesto de trabajo, listados de asistentes a cursos y eventos...

Buena parte de lo dicho en el párrafo anterior es también aplicable a quienes trabajan para organismos públicos. E incluso para otras organizaciones y agrupaciones...


Dicho lo dicho, y con los seis posts que van por ahora, la lista de "cosas sobre ti que pueden circular por Internet sin que tú hagas nada" queda así:
  • DNI
  • Nombre y apellidos
  • Fecha de nacimiento o edad
  • Dirección
  • Características de tu vivienda
  • Otras propiedades
  • Teléfono
  • Tus estudios universitarios, si es el caso, y cómo te fue en ellos
  • Datos sobre nivel económico, condiciones familiares, etc
  • Tu trabajo actual o quizá los anteriores, así como otras actividades relacionadas con tu ámbito profesional.
  • Tu proveedor de Internet
  • Tu dirección IP
  • Datos de tu router (lo que revele éste en sus respuestas: marca, modelo, ...)
Por cierto, que la Agencia Española de Protección de Datos tiene un informe muy interesante relacionado con la aplicación de la normativa sobre Transparencia. Una lectura de lo más recomendable.