Share on Google+Share on FacebookTweet about this on Twitter

ATENCION: Los ejemplos que se van a mostrar y “tutoriales” tan solo tienen carácter educativo. En ningún aspecto comparto filosofías de invasión a la intimidad, ataques contra un sistema informático o cuestiones similares. En la medida que sea posible siempre se usarán ejemplos y formas que puedan ser usados por cualquier persona, de forma que pueda verificar los contenidos escritos. No obstante, por motivos más que obvios, materiales como contraseñas, nombres de usuarios o de hosts, serán omitidos o modificado en las capturas de pantallas realizadas (o las lineas escritas). Es decir, los ejemplos serán completamente reales, los datos mostrados a vosotros necesarios para poder pertrechar estos ejemplos no siempre lo serán (Sí lo serán los resultados). Para que esto conste de forma clara, todo material sensible modificado o falso estará resaltado en ROJO. Por motivos de seguridad, todo el material que sea expuesto aquí (exceptuando software propietario o libre, citaciones expresas o código de terceros) tanto texto, imágenes y código son propiedad del autor y está completamente prohibido su reproducción completa o parcial en otros lugares, espero que se comprenda.

ATENCIÓN!! El Phishing creado para este capítulo tan tiene carácter didáctico, no se permite su uso fuera de este ámbito. El Phishing es completamente ilegal.

 

Web Spoofing

Aunque el Phishing no es más que un tipo de Web Spoofing, podemos afirmar sin duda alguna que es la práctica más común. Por Web Spoofing entendemos la modificación o suplantación de una página web que evidentemente no es nuestra. Phishing es la suplantación de una web con fines íntegramente delictivos, para poder obtener datos de usuarios que infelizmente caen en las redes de estas páginas y no son capaces de diferenciar lo uno de lo otro. Es decir, el Phishing es tan solo una singularidad dentro de Web Spoofing, aunque es sin duda su mayor uso.

Aquí tendríamos que hacer una diferencia muy importante. Desde mi punto de vista, el Spoof implica la modificación de algo que es nuestro, como son los casos que hemos visto: IP Spoofing (Modificamos nuestra IP), MAC Spoofing (Modificamos nuestra MAC), Phishing (Modificamos nuestra web)… pero en ningún caso estamos modificando aquello que no lo és. Es decir, no estamos modificando la IP de un usuario, no estamos modificando la MAC de un usuario, no estamos modificando la Web de un usuario. Esto es algo muy importante de entender, con Spoofing tan solo engañamos. Existen técnicas para modificar aquello que no está bajo nuestra “propiedad”, como pueda serlo XSS, envenamientos… técnicas que serán relatadas en otros artículos. Hablemos por tanto tan solo de Spoofing.

Los objetivos de Web Spoofing son claros:

  • Phishing, obtención de credenciales de otros usuarios
  • Reivindicaciones y Mofa
  • Estafa

Como hemos dicho el objetivo principal y sobre lo que vamos a centrarnos principalmente es el Phishing. Para que un ataque de Phishing se lleve a cabo son necesarias 4 fases. Primero un atacante debe de copiar lo más fidedignamente posible la página web que desea suplantar, al menos tan solo en apariencia, no es necesario un plagio completo de todo el site. Segundo, debe de modificar dicha web para que el usuario al introducir sus datos, estos queden almacenados de algún modo para poder recuperarlos el atacante. La tercera fase es realizar un proceso de URL Spoofing y por último utilizar alguna técnica que le permita engañar a los usuarios para acabar en su web falsa.

Redactar sobre Web Spoofing o Phishing es un problema. Mi intención es la de explicar, enseñar y así poder evitar ataques similares. El problema es que igualmente que esto puede servir con fines didácticos, cualquier persona podría adaptar estas letras sin problema alguno para pertrechar un ataque real, al igual que con los Spoofing expresados anteriormente. A diferencia del resto, hoy en día está de moda el Phishing, y la ingenuidad de las personas es aun demasiado alta. Si combinamos esto con las secciones siguientes (En particular con eMail Spoofing) sería dejar demasiado facil a un usuario mal intencionado poder realizar un ataque efectivo. Por ello al menos, voy a omitir todo código php y realizar algunos pequeños cambios para dejar claro que esto tan solo tiene fines didácticos. Aun así se incluirá al final del todo de esta sección, el enlace a una web creada con fines didácticos de lo que podría ser un Phishing en toda regla, y se incluirá del mismo modo un enlace al archivo donde se podrán obtener las identificaciones introducidas.

Para esta ocasión quería basarme en lo que sería un Phishing sobre

, una red social en España. Me puse en contacto con el gabinete legal de ellos y no les pareció una buena idea. Como les comuniqué, es normal, normalmente se es reacio a que puedan leer vulnerabilidades de sus propios servicios. Así que aunque tenga que modificar el artículo ya redactado, será sobre FaceBoock, la red social mayor que existe ahora mismo.

 

Fase 1: Creación de un site igual al del objetivo

Como ya he explicado, en el Phishing no importa recrear la web (que puede ser compleja) completamente, el objetivo es tan solo engañar al usuario que accede a ella. El hábito de un usuario normal es visitar la web e incresar su usuario y su contraseña para acceder. Si nos equivocamos, lo normal será volver a introducir los datos. Es decir, normalmente no nos preocupamos de ir a otros enlaces como “ayudas”, “Ha olvidado la contraseña” ni similares. Dado qeu ese comportamiento se repite para el 99% de los usuarios, tan solo tenemos que hacer creer al usuario que la web que está visitando es realmente ella. Dado que no tenemos por detrás una base de datos original, es evidente que se introduzcan los datos que se introduzcan, jamás logrará el usuario acceder al site, lo cual hace que sea común redirigir a dicho usuario despues de enviar los datos al site original para que no sospeche.

¿Pero como se puede copiar un site?

Dependiendo del grado de exactitud que necesitemos, puede ser más rápido o más lento el proceso:

  • Clonación de un site completamente independiente (físicamente estéticamente claro, no funcionalmente)
  • Creación de un site completamente dependiente al original, exceptuando la página de acceso.

En primer lugar, la clonación de todo un site de forma manual, o incluso a través del propio navegador, no es factible. Con clonar un site me refiero a crear un site con el mismo contenido que el original, enlaces, imágenes… pero accediendo a todo ese contenido de forma local. Es decir, podemos plasmar una imagen en nuestro Phishing, pero esta puede venir desde nuestro propio host donde tenemos alojados el Phishing o cargarla directamente desde el Host original. Crear una clonación tiene sus ventajas, por ejemplo es independiente a cualquier cambio que pueda realizar el site original, dado que scripts, html, imágenes y otros de tu propio site estarán almacenados en tu host, no en el de ellos. Por otro lado, es posible navegar por las diferentes secciones del site sin redirigirse al site original, que de otro modo produciría que un usuario que accediese a otro enlace perder el Phishing.

Pero todo no es positivo. La creación completa (o al menos lo más fiel posible) de un site (una página web) incluye tener en nuestro host muchísima más información, lo que produce un aumento considerable de espacio en disco, de ancho de banda usado y que además, es posible que el site original tenga conexiones más veloces que las nuetras, lo que haría que la navegación por nuestro site sería mucho más lenta para el usuario víctima. Por supuesto, la clonación, no es tan sencilla de llevar a cabo, y la mejor forma de hacerlo suele ser a través de un Web Spider, o quizás sea suficiente con wget.

Un proceso manual incluiría ir buscando uno a uno cada elemento e ir almacenándolos, después editarlos para que cada ruta especificase una ruta relativa a nuestra clonación y así poder montar la web. Pero esto evidentemente no es muy práctico. Yo voy a usar Teleport en Windows para este caso y para el segundo Firefox en Windows. Tampoco voy a detallar paso a paso que hacer, puesto que si se ha llegado aquí, presupongo que uno sabe más o menos moverse por cualquier programa o al menos comprende lo que está haciendo:

El tamaño de todo el site descargado para Tuenti, no llega a los 3MB y son más de 400 archivos. En el caso de Facebook, son más de 5000 archivos y unos 200MB. Esto os da una idea de lo bueno y malo de este proceso. 3MB pueden ser asumibles, 200MB para un Phishing es algo impensable. En contra partida, podemos navegar por gran parte de la web sin abandonar nuestro site clonado. En la siguiente imagen se puede observar esto:

En el ejemplo se puede ver que no solo se está emulando el site principal, sino que se puede navegar por el site y que al menos aparentemente todo muestra ser exactamente igual al original. Como puede verse en la barra de direcciones se conserva incluso la misma estructura de carpetas y archivos, aunque en el ejemplo se está haciendo una exploración en local, es decir, no se ha subido nada a ningun servidor externo.

Hay que tener en cuenta que la clonación jamás será exacta. Podemos extraer imágenes, contenido audiovisual, scripts… pero todo aquello que queda detrás y procesado tan solo por el servidor (como por ejemplo contenido dinámico, php, bases de datos…) no puede ser emulado de ningún modo. Es decir, podemos calcar pixel a pixel si deseamos el aspecto visual, pero nada más.

En el caso de la clonación de FaceBook, es un site demasiado complejo (sin entrar en bases de datos o PHP), 200MB sería demasiado para un Phishing, y más para un ejercicio. Quizás sea más. Quizás nosotros tan solo necesitamos lo fundamental, es decir, la pantalla de inicio de sesión y nada más. El resto del contenido podría ser simplemente enlazado con la web original, y mantener tan solo en nuestros servidores el html principal. De este modo ganamos en velocidad, comodidad, ahorramos en ancho de banda, en espacio… En contrapartida, estamos a merced de lo que haga el site original o peor aun, que la víctima pueda acceder a algún contenido desvinculado de nuestro site falso, lo que produciría que este se quedase fuera del Phishing.

Dependiendo del site, se podría realizar desde Firefox y usar la opción “Guardar Como…”. Como tan solo sería necesario la “cara”, nos basta con guardar únicamente la página HTML, de forma que los enlaces se conserven tal cual están. Haciendo este procedimiento pasamos a tener tan solo 1 archivo html de 30KB, el resto del contenido se cargaría desde la web original de FaceBook, lo cual es una ventaja. El problema es que si modificasen algo en el HTML, el site falso podría dejar de funcionar correctamente:

Como se puede apreciar tanto en la URL como en el destino del enlace seleccionado (aunque no aparezca, se está señalando la imagen grande de arriba “facebook”, y como se ve, no está apuntando a ninguna ruta local, sino al enlace real. Tan solo con dicho html tenemos lo mínimo necesario para poder realizar el Phishing.

Por otro lado, usar la mínima expresión a la hora de crear el Phishing, tiene la ventaja de que las URL señaladas a cada enlace corresponden a las originales, luego todas ellas no incurren en el problema de tener que usar URL Spoofing (Que se verá en la fase 3º). Una vez terminado este sencilo proceso, deberíamos de tener una copia (ya sea completa o parcial) del site objetivo, en este caso ejemplo, de Facebook. Tan solo bastaría subir nuestro site a cualquier hosting o copiarlo a nuestra carpeta principal de nestro servidor web. Si cualquiera accediese a ella en este punto, tendríamos una pantalla de acceso exactamente igual a la original, aunque si introduciésemos culaquier dato o fuesemos a cualquier enlace, nos redirigiría al site original.

 

Fase 2: Modificación

La segunda fase podría considerarse realmente el Web Soofing o Phishing. En realidad podría crearse la web desde cero si por cualquier aspecto no fuese posible “clonar” la web objetivo. El problema que ello tendría que posiblemente en algún detalle esta sería diferente a la original. Cuanto más fidedigna sea la copia, mejor resultado tendrá para un atacante, puesto a fin de cuentas todo objetivo es que el usuario no se de cuenta del engaño.

Pero tal y como hemos llevado el ejemplo, no serviría de nada. El objetivo es que el usuario cuando introduzca los datos en nuestro site falso, estos de alguna manera puedan ser accedidos después por el atacante. Ahora mismo se me ocurren tres formas para hacerlo:

  • Tener una BD debajo del site donde almacenar los nombres de usuarios y contraseñas
  • Tener un motor SMTP debajo del site para enviar por correo al atacante los datos
  • Escribirlos directamente en un archivo en nuestro servidor

El más eficiente de todos para un atacante sería almacenarlo todo en una base de datos, en la cual podría además registrarse fecha/hora o cualquier otra información de utilidad. La desventaja es que el atacante tendría que tener disponible no solo algún tipo de hosting (ya sea local o no), sino que posiblemente soporte para PHP y bases de datos. No voy a explicar como sería este caso por varias razones. Principalmente porque he dicho que por cuestiones de seguridad no voy a transcribir nada en PHP, luego prácticamente cualquiera de los 3 casos lo veríamos igual. Segundo porque tendríamos que estar manejando bases de datos y sería extendernos más de lo necesario.

En segundo lugar tendríamos una solución mucho más cómoda para el atacante. Cada vez que un usuario cometiese el error de caer en la trampa, el atacante recibiría un correo electrónico con las credenciales de dicho usuario. Esto que puede parecer algo muy complejo no lo es en absoluto, tan solo es necesario usar por debajo php para enviar un correo o programar un pequeño motor SMTP con los datos de nusetro correo gmail (por ejemplo) para realizar la tarea. No pensar en una web como algo estático. Cuando un usuario ingresa los datos, dispararía una serie de acciones que acabarían con el envío de un correo al atacante.

En último lugar y el que usaremos aquí consistiría en registrar los datos introducidos por el cliente en un archivo de texto. Principalmente usaremos este método para que aquél que lo desee, al final de estas letras pueda verificar que efectivamente funciona, y que la única diferencia de un Phishing real a este es el fin por el que se ha creado. Aun así como he dicho no se incluirá le código PHP para ello, sería demasiado fácil para quien pueda tener malas intenciones.

Visto esto, tendríamos que pensar como podríamos realizar esto. En mi caso concreto, las modificaciones realizadas al código fuente de mi Facebook.html han sido mínimas:

  • Modificación de la barra de título para dejar claro que es un Phishing didáctico, sustituyendo “Bienvenido a Facebook en Español (España)!” por “ESTE SITE/PHISHING TAN SOLO TIENE FINES DIDACTICOS”
  • Modificación del valor por defecto de “correo electronico” y “Contraseña” por: “Introduce correo de prueba” y “Introduce contraseña de prueba”
  • Renombrar Facebook.html por index.html para evitar la necesidad de apuntar a un html
  • Modificación de la acción que se realizaría al entrar en facebook por mi propio código
  • Creación e incorporación de mi código php, que escribirá los datos introducidos en un archivo de texto y redirigirá al usuario de nuevo a esta entrada

Mi intención es clara, que nadie pueda usar este Phishing didáctico para otros fines.

Sobre cada uno de los pasos realizados, sería entrar en programación html y php, y para ello ya tenemos innumerables libros que nos explican como hacer lo que deseemos hacer. Es decir, no voy a ir ahora explicando como realizar dichas modificaciones, no es el objetivo de estas letras. La cuestión es que al acabar, deberíamos de tener el Phishing completado. A partir de este momento, tan solo se trataría de aplicar diferentes técnicas para poder engañar de forma más fiel al incauto. ¿Por qué? En este momento lo que tenemos creado es lo siguiente:

Automáticamente nos llama la atención la extraña dirección que he usado. Dado que todo el Phishing lo tengo alojado en un hosting, tengo la posibilidad de crearlo en un subdominio o meterlo dentro de la ruta que yo desee. De este modo primero oculo por ahora la ubicación del Phihing, y la segunda la importancia de la fase 3º que aun no hemos hablado de ella. Tan solo verificar por la imagen que el site es tal y como se ha descrito y a su lado un documento de texto con los 3 primeros datos pruena introducidos.


Fase 3º: URL Spoofing

Podríamos dedicar en este mismo artículo un apartado específico para URL Spoofing, dado que no deja de ser un Spoofing más. Pero creo que su ámbito debe de ser también el de Web Spoofing, a fin de cuenta URL Spoofing podría ser perfectamente otra singularidad más de este. Sea como sea he preferido incluirla aquí.

A fin de no entrar en matices técnicos sobre URI, URL o URN, podemos definir de forma simple que una URL (dentro de internet) no es más que la dirección de un recurso, y el URN el recurso en sí. URI por tanto sería el conjunto entre URL y URN. Esto no tiene mayor complicación:

URI: blog.theliel.es/favicon.ico, URL: blog.theliel.es, URN: favicon.ico

Tener en cuenta que aunque a veces se omita el URN no implica que no exista, tal es el caso de los html tipo index.html, en los que su nombre se omite por defecto, pero están presentes igualmente.

Con esto, el término de URL Spoofing queda claro. Sería la técnica de modificar de algún modo o hacer parecer nuestra URL como otra, con el fin normalmente de aproximar al máximo nuestra URL con la de un site original.

Imaginar por ejemplo que tengo alojado el Phishing en:

“http://blog.theliel.es/docencia/66666666666666666666666666666666666”.

Evidentemente cualquier usuario que accediese a mi Phishing lo primero que podría notar extraño es el por qué está intentando acceder a “facebook.com” y en vez de ello está accediendo a un dominio diferente y una extraña sucesión de seises consecutivos. Evidentemente esto choca enormemente y sería complicado que un usuario pudiese percatarse de la trampa. Con URL Spoofing se trataría de modificar lo máximo posible dicha URL para asemejarse lo más posible al original. Y para esto existen numersas técnicas que son usadas por los atacantes:

  • Uso de nombres de archivos y estructuras de carpetas similares al site original
  • Usar dominios o subdominios lo más aproximados posible al original, o al menos ser inteligentes en su elección, uso de los ccTLD
  • Aprovecharse de los IDN (Nombres de dominios internacionales)
  • Ejecución de Scripts en el site para ocultar la verdadera URL del Phishing
  • Usar técnicas de redirección
  • Envenenamientos DNS

Algunas de dichas técnicas son simples, otras tremendamente complejas o costosas. La mayoría de los Phishers (Si es que ese nombre existe) no suelen complicarse tanto la vida, y tan solo se quedan en los dos primeros puntos. Un ataque más sofisticado posiblemente implicaría el uso de los puntos listados más abajo.

Tal y como estamos exponiendo el problema, lo primero sería reconstruir la URL de forma similar a la de la original. Si miramos la URL de tuenti (la de facebook no tiene ninguna “carpeta” anadidad a ella, tenemos que es la siguiente:

“http://www.tuenti.com/?m=login”

luego tan solo tendría que renombrar o mover los archivos en mi servidor a otra carpeta, siendo esta nueva carpeta llamada “?m=login”

blog.theliel.es/?m=login

Así me he evitado una parte, pero aun queda la otra… que es más complicada de eliminar. Lo cual pasaríamos al punto segundo, como poder modificar el dominio, o como podría un atacante intentar engañarnos. El problema es que un dominio no puede modificarse, con lo que la primera opción a la que se recurre es al uso de subdominios con la esperanza de no notar demasiado el cambio. En nuestro ejemplo podríamos intentar hacer alguna variante tal que así:

“http://tuenti.theliel.es/?=login”, “http://acceso.tuenti.theliel.es/?=login”, “http://www.tuenti.theliel.es/?=login”…

creo que se comprende perfectamente la idea. Evidentemente esto no es demasiado profesional cuando se requierer realizar un Phishing perfecto, pero en cambio es el sistema usado la gran mayoría de las veces, y aunque suene ridículo, suele funcionar bastante bien para los atacantes. Existe multitud de trucos a este aspecto. Por ejemplo otra práctica habitual es sustituir el nombre del dominio por su equivalente en IP, dado que a fin de cuenta un nombre de dominio no es más que una IP asociada a ella. Es decir, se puede expresar la dirección real de “facebook” en este caso de cualquiera de estas dos formas:

http://www.facebook.com

http://69.63.189.11

Las dos formas son completamente válidas, solo que con la segunda forma, el nombre queda completamente oculto. Luego una buena forma de ocultar la URL sería usar su equivalente IP. Y por último, otra técnica para intentar “esconder” la URL o al menos hacerla menos visible sería el uso de la sintaxis para introducir autentificación en una web, FTP… la forma que tendría esta tipo de dirección sería algo así:

http://facebook@theliel.es/

http://acceso:facebook@theliel.es/

Cuando se expresa una URL de dicho modo, lo que se está enviando a la web theliel.es que se desea acceder con el nombre de usuario “facebook”. En el segundo caso sería exactamente lo mismo, solo que en este caso el nombre de usuario sería “acceso” y la contraseña “facebook”. La idea de esto no es iniciar sesión en dicho lugar Phishing con credenciales de ningun tipo, sino de nuevo ocultar en la medida de lo posible la URL para que el objetivo no se percate. Se podría construir una URL con los dos métodos anteriormente explicados:

http://facebook@188.121.46.128/

Otra forma común de intentar engañar es con el uso de caracteres que se traducen por otros en la web. Por ejemplo, el caracter “%20” se traduce en una URL como un espacio. el %20 corresponde al número ascii 0x20, que corresponde al espacio. Es decir, se podría construir la URL de una web, codificada directamente en ASCII, de esa forma se ocultaría también cualquier cosa que no nos gustase

“http://facebook%2E74%68%65%6C%69%65%6C” se podría traducir como “facebook.theliel.es”, claro está que este sería un ejemplo extremo. Esto suele ser muy común más que nada para evitar ver los puntos de separación (Expresados en ASCII como %2E), los espacios (%20), las barras (%2F)….

Otra técnica ampliamente usada es la elección de dominios que puedan llegar a ser confundibles. El dominio no podemos modificarlo, pero que sucede si en vez de registrar theliel.es hubiese registrado el dominio “theliel.com”? Sería ya un paso. Pero y si el dominio registrado es por ejemplo “facebook.co.uk” “facebook.es” (En caso de que facebook.es no estuviese ya registrado), “facebook.org”, “facebook.com.es”… es evidente que el dominio ya se parecería muchísimo más al original, y por consiguiente llamaría menos la atención.Y es que gracias a los dominios ccTLD, aquellos que tienen dos letras tan solo, que son asignados solo uno a cada pais, tienen esta ventaja. ¿Ventaja? Claro. Normalmente registras un dominio. Pero la gran mayoría de TLDs son los ccTLD, si existe uno por cada país, el abanico es mucho más amplio que tan solo los gTLD. Esto quiere decir que aun cuando existan dominios como “facebook.org” “facebook.com” o muchos otros registrados todos a la misma entidad, seguro que tendremos multitud de ellos disponibles en ccTLD. En caso de facebook sin ir mas lejos, creo que tiene registrado a su nombre todos los gTLDs (si no se me escapa alguno), pero ni mucho menos tiene registrados todos los ccTLD. Sería facil mirar alguno que fuese similar.

Para quien no lo sepa, TLD se traduce como Top Level Domain, es decir, la parte más derecha de una URL. Estos se clasifican principalmente en 3. TLDs reservados, TLDs genéricos (gTLD) y TLD de paises (ccTLD). Dentro de los reservados tendríamos .test, .arpa… Dentro de los ccTLD .es, .fr, .gb… Y dentro de los gTLD los clásicos .com, .org, .net…

Una técnica mucho más refinada es aprovecharse del uso de los IDN. Dado que cada país posee un ccTLD, es igualmente razonable que la ICANN no solo permita la escritura o el registro de URL en el alfabeto nuestro, Latino, que posiblemente sea el alfabeto más usado del mundo. Con alfabeto me refiero ni mas ni menos a A B C D… pero incluso en algo tan sencillo como esto, rápidamente recordamos que nosotros tenemos la “eñe”. Sería justo por tanto que la ICANN nos permitiese poder usar la “eñe” en un dominio: “www.coño.es” en vez de “www.cono.es”. Pero esto tan solo es la punta del iceberg. Si se permiten otros alfabetos, podemos pensar que existen URLs en chino, árabe, cirílico…

¿Que importancia tiene esto? Una enorme. Si se permiten caracteres pertenecientes a otros alfabetos, podríamos construir una url incluso IGUAL a una legítima. ¿Como es esto posible? Porque es posible que en un alfabeto una letra tenga la misma representación gráfica que en otro alfabeto, pero en cambio el código UNICODE de dicho caracter sea completamente diferente, con lo que a efectos prácticos ambas direcciones pueden convivir. El mejor ejemplo de esta técnica sería registrar el siguiente dominio:

“fаcebook.com”

A efectos gráficos el nombre es exactamente el mismo!! pero no lo es. La “a” no pertenece a la “a” latina, sino al caracter “a” cirílico. Nuestra “a” corresponde al valor UNICODE U+0061, mientras que la “a” cirílica “а” corresponde al código UNICODE U+0430. Esta técnica es muy sofisticada y como puede apreciarse casi imposible de detectar.

Pero aun podemos complicar más el URL Spoofing y dar un paso más allá. A fin de cuentas el uso de IDN no siempre es posible si no existe algún carácter con correspondencia en un alfabeto u otro o no podemos registrar dicho dominio por la razón que sea. Una solución más compleja pero más versátil sería el uso de Scripts creados en JavaScript, ActiveX, extensiones para firefox… para, de algún modo, evitar que el objetivo de un atacante pueda darse cuenta de la dirección real. Existen 3 prácticas mayoritarias en este aspecto, en los que su efetividad depende más que de cualquier otra cosa del navegador usado y como esté configurado.

La primera sería la clásica apertura de Popups, ventanas emergentes Mediante una simple llamada en JS (No voy a escribir en estos casos código alguno), es posible cerrar la página actual (para que no se pueda leer la URL real) y acto seguido reabrirla sin barra de dirección. Esto la mayoría lo ha visto muchas veces, sobre todos en los tiempos de la hegemonía de Internet Explorer y la publicidad emergente. Gracias a dios, con los navegadores actuales este tipo de prácticas quedan tan solo efectivas para un reducido número de personas.

La segunda opción implicaría haciendo uso de JS algún otro lenguaje, la aplicación de una pequeña “capa” (por así decirlo) a la barra de direcciones. Es decir, literalmente se pegaría una imagen con la URL del sitio original encima de la barra de direcciones de nuestro navegador. De este modo se oculta URL real y aparenta ser la URL legítima. Alguna vez he podido apreciar este tipo de Phishing, pero sinceramente no sabría ahora mismo como crear el código necesario para realizarlo. Pero como hemos dicho, depende enormemente de la configuración de nuestro navegador y de cual usemos.

La tercera opción, es similar a la segunda. En este caso se insertaría un objeto (se llama así) texto en nuestra barra de direcciones, que al tener el fondo blanco y en el texto la URL legítima, a todos los efectos nusetra URL parecería completamente real. Este escenario es peor que el segundo, dado que percatarse de ello sería mucho más complicado. Al final de la sección hablaremos de las medidas a tomar en cada caso.

Llegados a este punto tan solo quedarían dos técnicas para poder realizar un URL Spoofing. Realmente las dos técnicas implicarían algo más que Spoofing. Ya dije que para mi el Spoofing es engaño, modificar algo que tenemos, jugar con nuestras cartas… en cambio las dos técnicas restantes: Redirecciones y Envenenamiento, implicaría cambios más radicales por así decirlo. Sería necesario modificar o inyectar código propio en otro site en el caso de las redirecciones, o modificar el caché DNS de los usuarios. Estas dos cuestiones se tratarán en los envenenamientos y en XSS. En cambio si existe una redirección típica que si podemos comentar aquí, y que por cierto es la más usada. En realidad se aprovecha normalmente de forma conjunta con eMail Spoofing.

En HTML existen formas de poder ir hacia otro lugar, lo conocemos simplemente como enlace. Pero una cosa es el destino al que deseamos llegar y otra el texto del enlace. Así por ejemplo podría escribir:

http://www.facebook.com

http://www.facebook.com

Y aun cuando en las dos direcciones se puede leer exactamente lo mismo, la primera lleva al site original de facebook y la segunda a mi blog. Esto que parece tan simple es usado constantemente, todos los días en millones de correos fraudulentos. Aunque parezca mentira, la gran mayoría de todos los problemas de seguridad existentes son debidos tan solo a la malinformación del usuario, de una mala praxis. Imaginar por ejemplo que en vez del ejemplo mostrado, el segundo enlace en vez de ir a mi blog, fuese a mi Phishing.

 

Fase 4º: El gancho

Aun cuando el atacante tiene todo perfectamente planeado y preparado queda lo más obvio. Que un usuario caiga en la trampa y visite dicho lugar. La forma más simple de producir esto es por medio de eMail Spoofing, que será tratado más adelante. Otros medios usuales es la mensajería instantanea, virus, foros, blogs… Por ejemplo, podría enlazar mi blog a un supuesto enlace a Facebook para promocionarlo, pero la verdad es que iría directo a la trampa. Como digo veremos esto en gran detalle en eMail Spoofing.

 

Llegados a este punto, el atacante comenzaría a recibir nombres y usuarios sin parar de las víctimas, y lo peor de todo es que una vez todo en marcha, el proceso es todo automático. Tan solo la buena educación y el cuidado hacen que este tipo de ataques tenga el menor impacto posible.

Para quien quiera verificar como podría ser un Phshing real, quitando algunos detalles como ya he explicado, puede verlo aquí, así como el documento de texto donde quedarán almacenados los credenciales introducidos:

 

http://theliel.webege.com/DIDACTICO_FACE/

http://theliel.webege.com/DIDACTICO_FACE/fac.txa (es un archivo txt renombrado a txa por razones que ahora no importan)

 

Bueno, pero ahora… ¿como evitar el Phishing?

Evitar el Phishing es algo fundamental estos días de hoy, en los que posiblemente el Phishing se lleve la mayor parte de los actos no civilizados (por así decirlo). Si comprendemos cada paso que debe de dar un atacante para poder realizar un Phishing de forma satisfactoria, podemos ver claramente cada uno de los pasos que podemos realizar nosotros para evitarlo. Es cierto que nosotros como usuarios o como Webmasters, no podemos hacer nada evitar que alguien pueda simplemente copiar un sitio. Es cierto que no podrán montar debajo la base de datos o el código php que sea necesario, pero al menos la apariencia física es imposible de evitar. Por otro lado tampoco podemos evitar que un atacante modifique a su gusto su propio site para intentar que caigamos. Pero a partir de aquí, por listo que pueda ser el atacante, podemos impedir sin mucha complicación cualquier tipo de Phishing, y es aquí donde reside nuestra “defensa”. Al explicar las diferentes técnicas de IP Spoofing o de ganchos, un usuario debería de ser más que capaz por tanto de saber diferenciar un site real de uno que no lo es. Voy a dar algunas indicaciones básicas:

  • Uso de conexiones seguras siempre que sea posible
  • Usar un Navegador que sea fiable
  • Conocer las URL legítimas de los sitios visitados de forma habitual
  • No fiarse de las redirecciones, comprobarlas siempre
  • No permitir por defecto Scripts de ninguna clase
  • No permitir por defecto Cookies de ninguna clase

 

El uso de conexiones seguras a día de hoy es fundamental, sobre todo cuando vamos a ingresar en algúna web que requiera de credenciales. Por regla general soy extremadamente crítico con aquellas web que no usan sistemas de certificados SSL/TLS cuando se trata de datos confidenciales. En caso de Webs como redes sociales parece que aun no está muy implantado el uso de conexiones seguras, pero jamás deberíais acceder a alguna web de banca electrónica si esta no está amparada por un certificado digital que la acredite. De esto hablaremos en otro artículo.

Un navegador fiable es fundamental. Muchas web de Phishing pueden aprovechar agujeros de seguridad o vulnerabilidades de estos por ejemplo para poder modificar la URL que aparezca en nuestro navegador. Cualquier truco es válido a la hora de que el site falso pase por el original. Actualmente el navegador más veloz a la hora de renderizar una web es Chrome (De Google) con mucha diferencia. No obstante Firefox es un navegador mucho más sofisticado y con posibilidades, maduro y con una escalada imparable en su gran uso. También hay que tener en cuenta que actualmente Firefox no soporta multiprocesador, lo cual quiere decir es que en cuanto esté terminado el soporte completo para este, sy velocidad se multiplicará aproximadamente x3, a la par de su seguridad. Si tengo que escoger uno sin duda alguna es Firefox, después Chrome, después Opera, IE y para terminar Safari. Safari es mejor navegador que IE en realidad, pero es mucho más vulnerable también.

No sucede nada por conocer las URL visitadas de forma habitual. Si sabemos que la URL de facebook es “http://www.facebook.com” es esa, no es otra. Aquí hay que explicar algo para aquellos que no lo sepan. Una URL se lee siempre de derecha a izquierda. No estoy hablando de la URI que hablamos más arriba, tan solo de la URL. La otra parte de la URI, la URN si se lee de izquierda a derecha. Como digo una URL se debe de leer de derecha a izquierda, cada sección separada por un punto es un dominio/subdominio. Por ello, se llama TLD a los dominios .es .com .org etc, dado que es lo primero que encontramos si leemos de derecha a izquierda: “Top Level Domain”. De este modo podemos decir que todos los dominios de primer nivel son aquellos que están justo después del primer “.”. “theliel.es” sería un dominio de primer nivel. Es evidente que prácticamente cualquier site estará alojado en un dominio de primer nivel. Esto es un indicativo fundamental. Si hacemos caso a esto, prácticamente ninguna variante de las que hemos hablado con anterioridad sería válida. A esto debemos sumar que ningun site original usaría su IP directamente para acceder a su site. La única razón por la que esta podría ser usada sería ante problemas de DNS, pero esto a día de hoy es prácticamente impensable. Otro motivo por el cual jamás fiarse de una URL dada en IP.

“http://facebook.theliel.es”, “http://facebook@theliel.es”, http://facebook@188.121.46.128/

Los tres ejemplos anteriores, si leemos de derecha a izquierda nos encontramos con el truco. En el primer caso se está accediendo primero a un dominio de primer nive .es, y después a un subdominio de este llamado facebook. Evidentemente facebook nunca sería un subdominio.

En el segundo ejemplo, el primer dominio que nos encontramos es de nuevo “theliel.es”, da igual lo que exista a la derecha, el dominio es ese. Además, dependiendo del navegador que usemos, puede incluso darse cuenta de esta pequeña trampa, pues nos advertirá de que el site al qu ese quiere acceder no requiere de autentificación.

El tercer caso es el mismo que el segundo… tan solo con la modificación del dominio “theliel.es” por su IP. Da igual a quien corresponda la IP, lo mejor no es fiarse, o si se está seguro de la legitimidad de dicha IP, una consulta ping sobre el dominio en cuestión nos devolverá la IP de dicho dominio. Si no coincide listo. Otra opción sería verificar la IP en un servidor Whois y comprobar a quien pertenece dicha IP

Las redirecciones es un problema con mayúsculas. Parece increíble que a estas alturas los usuarios no se fijen en la dirección de destino real, no lo que podemos leer como texto. Antes de seguir un enlace del cual no estamos seguro su procedencia, comprobar el destino del enlace. Cualquier navegador hace esto, tan solo se necesita pasar el ratón sobre el enlace para que nos aparezca (normalmente debajo del navegador) el salto a efectuar. Esta práctica es diaria cuando se intentan realizar ataques de eMail Spoofing. Cuando tratemos esto más adelante se comprenderá mejor.

El uso de Scripts o Cookies es algo normal en internet. Pero dichas cookies y Scripts pueden ser usados de forma maléfica contra nosotros. Es cierto que a día de hoy prácticamente cualquier web requiere aunque sea de pequeños scripts para poder desde visualizar correctamente el contenido a ejecutar cualquier acción. Pero aun así, desde mi punto de vista es mejor prevenir que curar. Soy más partidario de las listas blancas que de las listas negras. Es decir, mis políticas siempre son las mismas: Partir de un sistema completamente cerrado e ir abriendo lo que se va necesitando. En este aspecto, implicaría bloquear por defecto todas las cookies y todos los scripts, e ir habilitando tan solo aquellos que van siendo necesario. Aquellos que conozco y comprendo que son seguro los puedo habilitar de forma indefinida. Esto que parece un chiste, es la causa de que prácticamente cualquier PC del mundo, tenga alguna cookie de seguimiento o espía. Además, gracias a código en JS malicioso y aprovechando vulnerabilidades de webs, de navegadores… aparecen problemas mayores como XSS, URL Spoofing, exploits… La regla siempre debería de ser de bloque total, y solo habilitar cuando sea estrictamente necesario. Si estamos seguros de la “legitimidad” del sitio y nos fiamos, permitimos para siempre dicho script o dicha cookie. Para tal, personalmente uso NoScript y Cookie Monster (Los dos para Firefox)

Evitar el Phishing es algo simple si se tiene algo de cuidado. No hace falta mucho, tan solo conocer que es, como funciona y el objetivo que se busca. Si se sabe todo ello, evitarlo es facil.

 

Para terminar del todo con Web Spoofing, citar un par de detalles más. El Phishing no es el único Web Spoofing que se conoce. Aunque normalmente el objetivo es el explicado, a veces el objetivo no es la obtención de datos de los usuarios, sino que tiene fines reivindicativos, de mofa o incluso de estafa. Por ejemplo si estoy completamente en contra del LHC, una forma de mostrarlo o criticarlo sería crear un site igual que el oficial pero con contenidos de protesta. Si se quiere mofar sobre por ejemplo una ley o algo similar podría realizarse un Web Spoofing para calcar un blog o un site de dicho político en el que se hablase jocosamente sobre ello.

Una última utilización de Web Spoofing sería cuando tan solo se pretende crear un negocio, alguna clase de venta… de algo que no existe. Pongamos por ejemplo que creo un site prácticamente igual y copiado a Amazon. En él publico libros o productos que quiera. El proceso es todo muy similar al original, solo que dicha web tan solo es una mera estafa, o a lo mejor es real, y se aprovecha del nombre, diseño, métodos… de otra que ya existe.