Traducido por [Tosh]
BBK "Big Bro
Killerz"
bigbrokill@hotmail.com
http://www.geocities.com/SiliconValley/Pines/7347/
________________
___
|
____ \ ____ \ / /
| |
| | | | | / /
|
|___//| |___//|/ /
|
____ \| ____ \ /
| |
\ \ | \ \ \
| |
\ \| \ \ \
|
|____| ||____| |\ \
|________/______/
\__\
Web Spoofing
Una Estafa en Internet
Edward W. Felten, Dirk
Balfanz, Drew Dean, and Dan S. Wallach
Informe Tecnico 540-96
Departamento de Ciencias Informaticas, Universidad de Princeton
Introduccion
Este documento describe una ataque de seguridad
en Internet que puede poner en peligro la privacidad de los usuarios de la
World Wide Web y la integridad de sus datos.
El ataque puede ser llevado a cabo en los
sistemas de hoy en dia, poniendo en peligro a los usuarios de los navegadores
mas comunes, incluyendo el Netscape Navigator y el Microsoft Internet Explorer.
El Web Spoofing permite a un atacante crear una
"copia sombra/shadow copy" de toda la World Wide Web. Los accesos a
la Web shadow son encauzados por la maquina del atacante, permitiendo a este
monitorizar todas y cada una de las actividades de la victima incluyendo las
entradas de passwords o numeros de cuenta que haga este. El atacante puede
tambien hacer que datos falsos o engañosos sean enviados a servidores Web en
nombre de la victima, o a la victima en nombre de cualquier servidor Web.
Resumiendo, el atacante observa y controla todo lo que la victima hace en el
Web.
Hemos incluido una version de demostracion de
este ataque.
Ataques
Spoofing
En un ataque spoofing, el atacante crea un
contexto engañoso para asi engañar a la victima de forma que haga una decision
relacionada con la seguridad inapropiada. Un ataque spoofing es como una
estafa: el atacante monta un mundo falso pero convincente alrededor de la
victima. La victima hace algo que podria ser apropiado si el falso mundo fuese
real. Desafortunadamente, las actividades que parecen razonables en el falso
mundo podrian tener efectos desastrosos en el mundo real.
Los ataques spoofing son posibles tanto en el
mundo fisico como en el electronico. Por ejemplo, ha habido varios incidentes
en los que los criminales ponen maquinas expendedoras falsas, normalmente en
areas publicas de grandes almacenes [1]. Las maquinas aceptan las tarjetas ATM
y piden a la persona que meta su codigo PIN. Una vez que la maquina tiene el
codigo PIN de la victima, puede o bien tragarse la tarjeta o "malfuncionar"
y devolver la tarjeta. En cualquiera de los casos, los criminales tenian
suficiente informacion para copiar la tarjeta de la victima y usar el
duplicado. En estos ataques, la gente era engañada por el contexto que veian:
la localizacion de las maquinas, su tamaño y peso, la forma en que estaban
decoradas, y la apariencia de sus pantallas electronicas.
La gente que usa sistemas informaticos a menudo
toma decisiones relacionadas con la seguridad basadas en indicaciones
contextuales que ven. Por ejemplo, puedes decidir teclear tu numero de cuenta
banacario por que crees que estas visitando la Web page de tu banco. Esta
creencia puede surgir por que la pagina tiene un aspecto familiar, por que el
URL del banco aparece en la linea de localizacion del navegador, o por otras
razones.
Para apreciar el rango y severidad de posibles
ataques spoofing, debemos profundizar en dos partes de la definicion de
spoofing: decisiones relacionadas con la seguridad y contexto.
Decisiones relacionadas con la seguridad
Por "decisiones relacionadas con la
seguridad", queremos decir cualquier decision que toma una persona que
pueda llevar a resultados no deseados como una violacion de la privacidad o
manejo no autorizado de datos. El decidir divulgar informacion sensible, como
por ejemplo tecleando un password o un numero de cuenta, es un ejemplo de una
decision relacionada con la seguridad. Elegir el aceptar bajar un documento es
una decision relacionada con la seguridad, ya que en muchos casos un documento
bajado es capaz de contener elementos maliciosos que dañan a la persona que
recibe el documento [2].
Incluso la decision de aceptar la exactitud de
informacion desplegada por tu ordenador puede tener relacion con la seguridad.
Por ejemplo, si decides comprar una accion basada en informacion que recibes de
un teletipo de acciones online, confias en que la informacion que proporciona
el teletipo sea correcta. Si alguien pudiera presentarte precios de acciones
incorrectos, podrian hacerte embarcar en una transaccion que de otro modo no hubieras
hecho, y esto te podria costar dinero.
Contexto
Un navegador presenta muchos tipos de contexto
de los que el usuario podria fiarse para tomar decisiones. El texto y los
graficos de una pagina Web podrian dar una impresion sobre la procedencia de la
pagina; por ejemplo, la presencia de un logo corporativo implica que la pagina
se creo en una cierta corporacion.
La apariencia de un objeto podria sugerir una
cierta impresion; por ejemplo, texto de color verde neon sobre un fondo morado
probablemente venga de la revista Wired. Podrias pensar que estas tratando con
una ventana contextual cuando lo que realmente estas viendo es simplemente un
rectangulo con un borde y colores diferentes que las zonas de alrededor de la
panatalla. Objetos graficos particulares como las file-open dialog boxes son
immediatamente reconocidas como que tienen que tener un proposito. Los usuarios
de Web experimentados reaccionan a dichas indicaciones de la misma forma que
los conductores experimentados reaccionan a las señales de stop sin necesidad
de leerlas.
Los nombres de los objetos pueden sugerir
contextos. La gente a menudo deduce lo que hay en un archivo por su nombre. Es manual.docel texto de un manual de
usuario? (Podria ser otra clase de documento, o podria no ser ni siquiera un
documento.) Las URLs son otro ejemplo. Es MICR0S0FT.COMla direccion de una gran
empresa de software? (Por un momento esa direccion apuntaba completamente a
otro. Por cierto, los simbolos redondos de MICR0S0FT aqui son el numero cero,
no la letra O.) Era dole96.org la campaña presidencial de 1996 de Bob Dole? (No
lo era, apuntaba a un site de parodia).
La gente a menudo toma el contexto segun la
fecha de los hechos. Si ocurren dos cosas al mismo tiempo, naturalmente piensas
que estan relacionadas. Si haces click hacia la pagina de tu banco y aparece un
cuadro de dialogo solicitando un nombre de usuario/password, naturalmente
asumiras que debes teclear el nombre y password que usas para el banco. Si
haces click en un link y comienza a bajarse immediatamente un documento, asumes
que el documento venia del site cuyo link clickeaste. Cualquier suposicion
podria ser incorrecta.
Si solo ves una ventana del navegador cuando
ocurre un evento, podrias no darte cuenta de que el evento fue creado por otra
ventana escondida detras de la que es visible.
Los diseñadores de entornos de usuario modernos
emplean su tiempo intentando concebir indicaciones contextuales que hagan que
la gente actue apropiadamente, incluso si no advierten explicitamente las
indicaciones. Mientras esto es siempre beneficioso, puede hacerse peligroso
cuando la gente esta acostumbrada a fiarse del contexto que no siempre es
correcto.
TCP y DNS Spoofing
Otra clase de ataque spoofing, que no discutiremos
aqui, engaña al software del usuario en una accion inapropiada presentandole
informacion enagañosa [3]. Ejemplos de dichos ataques inclyen el TCP spoofing
[4], en el que los paquetes de Internet son enviados con direcciones de vuelta
falseadas, y el DNS spoofing [5], en el que el atacante falsea informacion
acerca de que nombres de maquina corresponden a que direcciones de red. Estos
otros ataques spoofing son bien conocidos, asi que no los discutiremos mas en
detalle.
Web Spoofing
El Web spoofing es un tipo de estafa electronica
en la que el atacante crea una convincente pero falsa copia de toda la World
Wide Web. La Web falsa es como la real: tiene todas las mismas paginas y links.
Sin embargo, el atacante controla la falsa Web, de manera que todo el trafico
de red entre el navegador de la victima y la Web pasa por el atacante.
Consecuencias
Ya que el atacante puede observar o modificar
cualquier dato que vaya de la victima a los servidores Web, como tambien
controlar todo el trafico de vuelta de los servidores Web a la victima, el
atacante tiene muchas posibilidades. Estas incluyen la vigilancia y el amaño de
datos.
Vigilancia: El atacante puede observar pasivamente el trafico,
anotando que paginas visita la victima y los contenidos de las mismas. Cuando
la victima rellena un formulario, los datos introducidos son enviados a un
servidor Web, de manera que el atacante puede anotar eso tambien, junto con la
respuesta enviada por el servidor. Ya que la mayoria del comercio on-line se
realiza por medio de formularios, esto significa que el atacante puede observar
cualquier numero de cuenta o passwords que la victima meta.
Como veremos abajo, el atacante puede llevar a
cabo la vigilancia incluso si la victima tiene una conexion "segura"
(normalmente por medio de Secure Sockets Layer) al servidor, esto es, incluso
si el navegador de la victima muestra el icono de conexion segura (normalmente
una imagen de un candado o una llave).
Amaño: El atacante es tambien libre de modificar cualquiera de
los datos que viajen en cualquiera de las direcciones entre la victima y el
Web. El atacante puede modificar datos del formulario enviado por la victima.
Por ejemplo, si la victima esta pidiendo un producto on-line, el atacante puede
cambiar el numero del producto, la cantidad, o la direccion a que debe ser
enviado.
El atacante puede tambien modificar los datos
devueltos por un servidor Web, por ejemplo insertando material engañoso u
ofensivo para engañar a la victima o para crear hostilidad entre la victima y
el servidor.
Spoofing de toda la Red
Puedes pensar que es muy dificil para el
atacante el trucar toda la World Wide Web, pero no lo es. El atacante no
necesita guardar todo el contenido de la Red. Toda la Web esta disponible
on-line; el servidor del atacante puede simplemente traer una pagina de la Web
real cuando necesita proporcionar una copia de la pagina a la Web falsa.
Como Funciona
el Ataque
La clave de este ataque es que el servidor Web
del atacante se siente entre la victima y el resto de la Red. Este tipo de
procedimiento se llama "ataque de hombre en medio" en la literatura
de seguridad.
Renombramiento de URL
El primer truco del atacante consiste en
reescribir todas las URLs de alguna pagina Web de manera que apunten al
servidor del atacante en vez de hacia aquellos servidores reales. Asumiendo que
el servidor del atacante este en la maquina www.attacker.org,
el atacante reescribe una URL añadiendo http://www.attacker.org delante de la
URL. Por ejemplo, http://home.net scape.comse
convierte en:
http://www.attacker.org/http://home.netscape.com
(La tecnica de renombramiento
de URL ha sido usada para otras razones por otros dos Web sites, the Anonymizer
y the Zippy filter. Mira la ultima pagina para detalles.)
La ilustracion 1 muestra lo que ocurre cuando la
victima pide una pagina a traves de una de las URLs renombradas. El navegador
de la victima pide la pagina desde www.attacker.org
, ya que la URL comienza con http://
www.attacker.org. La notificacion de la URL le dice al servidor del
atacante a que lugar de la Red ir para coger el documento verdadero.

_________________________________________________________________________
Figura 1: Un ejemplo de transaccion de Web
durante un ataque de Web spoofing. La victima pide una pagina Web. Los
siguientes pasos ocurren: (1) el navegador de la victima pide la pagina desde
el servidor del atacante; (2) el servidor del atacante pide la pagina del
servidor real; (3) el servidor real le da la pagina al servidor`del atacante;
(4) el servidor del atacante reescribe la pagina; (5) el servidor del atacante
le manda la version reescrita a a victima.
Una vez que el servidor del atacante ha pillado
el documento real necesario para satisfacer el pedido, el atacante reescribe
todas las URLs del documento del mismo modo especial empalmando http://www.atacker.org/ delante. Entonces
el server del atacante le da la pagina reescrita al navegador de la victima.
Ya que todas las URLs de la pagina reescrita
apuntan ahora a www.attacker.org,
si la victima sigue un link de la nueva pagina, la pagina sera de nuevo pillada
a traves del servidor del atacante. La victima continua atrapada en la Web
falsa del atacante, y puede seguir links por siempre sin abandonarla.
Formularios
Si la victima rellena un
formulario de una pagina de la Web falsa, el resultado parece que haber sido
bien manejado. El spoofing de formularios funciona naturalmente ya que los
formularios estan estrechamente integrados en los protocolos de Web basicos:
los envios de formularios estan codificados en URLs y las respuestas son HTML
ordinario. Ya que cualquier URL puede ser "spoofeada", los
formularios tambien.
Cuando la victima envia un formulario, los datos
enviados van al servidor del atacante. El servidor del atacante puede observar
e incluso modificar los datos enviados, haciendo cualquier edicion maligna que
se desee, antes de pasarlo al servidor real. El servidor del atacante puede tambien
modificar los datos que vuelven como respuesta a el formulario enviado.
Las conexiones "Seguras" no ayudan
Una angustiosa
propiedad de este ataque es que funciona incluso cuando la victima pide una
pagina por medio de una conexion “segura”. Si la victima hace un acceso de Web
“seguro”(un acceso Web usando el Secure Sockets Layer) en una Web falsa, todo
parecera normal: la pagina sera mostrada, y el indicador de conexion segura
(normalmente una imagen de una candado o llave) se encendera.
El
navegador de la victima reporta que tiene una conexion segura por que la tiene.
Desafortunadamente la conexion segura es a www.attacker.org y no al sitio que
la victima piensa. El navegador de la victima piensa que todo va bien: se le
dijo que accediese a una URL en www.attacker.org asi que hizo una conexion
segura a www.attacker.org. El indicador de conexion segura solo da una
sensacion falsa de seguridad a la victima.
Comenzando el Ataque
Para
empezar un ataque, el atacante debe de algun modo atraer a la victima a la Web
falsa del atacante. Hay varios modos de hacer esto. Un atacante podria poner un
link a una Web falsa en una pagina Web popular. Si la victima tiene el mail del
navegador activado, el atacante puede mandar un mail a la victima con un
indicador a la Web falsa, o incluso los contenidos de una pagina en una Web
falsa. Finalmente, el atacante puede engañar a un motor de busqueda Web para
que indexe parte de la Web falsa.
Completando
la Ilusion
El
ataque como se ha descrito hasta aqui es bastante facil, pero no es perfecto.
Hay todavia algun contexto permanente que puede dar a la victima pistas de que
el ataque se esta llevando a cabo. Sin embargo, es posible para el atacante el
eliminar practicamente todas las pistas restantes de la existencia del ataque
Dicha
evidencia no es muy dificil de eliminar por que los navegadores son muy
manejables. La habilidad de una pagina Web para controlar el comportamiento de
un navegador es a menudo deseable, pero cuando la pagina es hostil puede ser
peligroso.
La Barra de Estado
La
barra de estado es una sola linea de texto situada debajo de la ventana del
navegador que muestra varios mensajes, normalmente sobre el estado de
transferencias Web pendientes.
El
ataque como se ha descrito hasta aqui, deja dos tipos de evidencia en la barra
de estado. El primero, cuando el raton se situa sobre un link, la barra de
estado muestra la URL a la que el link apunta. Asi, la victima podria darse
cuenta de que una URL ha sido reescrita. Segundo, cuando una pagina se esta
cargando, la barra de estado muestra brevemente el nombre del servidor que se
esta contactando. Asi, la victima podria notar que se esta mostrando
www.attacker.org cuando en realidad se esperaba otro nombre.
El
atacante puede cubrir ambas indicaciones añadiendo un programa JavaScript a
cada una de las paginas reescritas. Ya que los programas JavaScript pueden
escribir en la barra de estado, y ya que es posible vincular acciones JavaScript
a los eventos relevantes, el atacante puede arreglar las cosas de modo que la
barra de estado participe en la estafa, mostrando siempre a la victima lo que
debia haber aparecido en la barra de estado en la Web real. Asi el falseado
contexto se hace incluso mas convincente.
La Linea de Localizacion
La
linea de localizacion del navegador muestra la URL de la pagina que esta
mostrando en ese momento. La victima puede tambier teclear la URL en la linea
de localizacion, enviando al navegador a esa URL. El ataque como se ha descrito
hasta aqui hace aparecer una URL reescrita en la linea de localizacion, dando a
la victima una posible indicacion de que se esta cometiendo un ataque.
Esta
pista puede ser ocultada usando JavaScript. Un programa JavaScript puede
ocultar la linea de localizacion real y reemplazarla por una linea de
localizacion falsa que parece correcta y se encuentra en el lugar esperado. La
linea de localizacion falsa puede mostrar la URL que la victima espera ver. La
linea de localizacion falsa puede tambien aceptar entradas de teclado,
permitiendo a la victima teclear URLs normalmente. Las URLs tecleadas pueden
ser reescritas por el programa JavaScript antes de que se acedan a ellas.
Viendo el Codigo Fuente
del Documento
Hay
una pista que el atacante no puede eliminar, pero es poco probable que sea
notada.
Usando
la opcion de “ver codigo”del navegador, la victima puede mirar el codigo HTML
de la pagina actualmente mostrada. Buscando URLs reescritas en el codigo HTML,
la victima puede detectar el ataque. Desafortunadamente, el codigo HTML es
dificil de leer para usuarios novatos, y muy pocos navegantes se molestan en
mirar el codigo HTML de los documentos que estan visitando, asi que esto provee
muy poca proteccion.
Una
pista parecida esta disponible si la victima elige la opcion “ver informacion
del documento”del navegador. Esto mostrara informacion incluyendo la URL real
del documento, permitiendo posiblemente a la victima darse cuenta del ataque.
Como arriba, esta opcion no se usa casi nunca asi que es muy poco probable que
proporcione mucha proteccion.
Bookmarks
Hay
varias formas de que la victima pueda dejar accidentalmente la Web falsa del
atacante durante el ataque. Accediendo a las bookmarks o saltando a una URL
usando la opcion “Abrir localizacion”del navegador podria llevar a la victima
de vuelta a la Web real. La victima podria entonces volver a entrar a la Web
falsa pulsando el boton “Back”. Podemos imaginar que la victima podria ir
entrando y saliendo de una o mas Webs falsas. Por supuesto, las bookmarks
pueden tambien funcionar contra la victima, ya que es posible el añadir un
bookmark de una pagina de la Web falsa. El saltar a dicha bookmark llevaria a
la victima de vuelta a la Web falsa.
Traceando al Atacante
Algunas
personas han sugerido que este ataque puede ser disuadido encontrando y
castigando al atacante. Es cierto que el servidor del atacante debe revelar su
localizacion de modo que pueda llevar a cabo el ataque, y la evidencia de esa
localizacion estara disponible practicamente seguro despues de que se detecte
un ataque.
Desafortunadamente,
esto no ayudara mucho en la practica ya que los atacantes irrumpiran en la
maquina de alguna persona inocente y lanzaran el ataque alli. Se usaran maquinas
robadas en estos ataques por la misma razon que la mayoria de los ladrones de
banco realizan sus huidas en coches robados.
Remedios
El
Web spoofing es un ataque de seguridad peligroso y practicamente indetectable
que se puede llevar a cabo en la Internet de hoy en dia. Afortunadamente hay
algunas medidas de proteccion que puedes tomar.
Solucion a Corto-plazo
A
corto plazo, la mejor defensa es el seguir una estrategia de tres partes:
1.
deshabilita la opcion de JavaScript en tu navegador
de modo que el atacante no podra ocultar la evidencia del ataque;
2.
asegurate de que la linea de localizacion de tu
navegador este siempre visible;
3.
presta atencion a las URLs mostradas en la linea de
localizacion de tu navegador, asegurandote de que siempre apunten al servidor
al que piensas que estas conectado.
Esta
estrategia disminuira significativamente el riesgo de ataque, aunque podrias
aun ser victima si no eres consciente de mirar la linea de localizacion.
Actualmente,
JavaScript, ActiveX y Java tienden a facilitar el spoofing y otros ataques de
seguridad, asi que recomendamos que los deshabiliteis. Haciendolo causara que
pierdas cierta funcionalidad, pero puedes compensar mucha de esta perdida
habilitando selectivamente estas caracteristicas cuando visites un site de
confianza que los requiera.
Solucion a Largo-plazo
No
conocemos una solucion a largo-plazo totalmente satisfactoria para este
problema.
El
cambiar los navegadores de modo que muestren siempre la linea de localizacion
ayudaria, aunque los usuarios aun tendrian que estar atentos y saber como
reconocer URLs reescritas.
Para
las paginas que no son traidas via conexion segura, no hay mucho mas que se
pueda hacer.
Para
las paginas traidas via conexion segura, un indicador de conexion-segura
mejorado podria ayudar. En vez de indicar simplemente una conexion segura, los
navegadores deberian decir claramente quien esta al otro lado de la conexion.
Esta informacion deberia ser mostrada con un lenguaje claro, de forma
entendible para los usuarios novatos; deberia decir algo como “Microsoft
Inc.”en vez de “www.microsoft.com”.
Todo
acercamiento a este problema parece depender de la vigilancia de los usuarios
de Web. Aunque podamos realmente esperar que todo el mundo este atento es
siempre discutible.
Trabajos
Relacionados
Nosotros
no inventamos la tecnica de reescritura de URL. Previamente, la reescritura de
URL ha sido usada como una tecnica para proporcionar servicios utiles a gente
que los ha pedido.
Sabemos
de la existencia de dos servicios que usan la reescritura de URL. El
Anonymizer, escrito por Justin Boyan en Carnegie Mellon University, es un
servicio que permite a los usuarios el navegar por la Red sin revelar sus
identidades a los sites que visitan. The Zippy filter, escrito por Henry
Minsky, presenta una vision divertida de la Red con dichos de Zippy-the-Pinhead
insertados aleatoriamente.
Aunque
nosotros no inventamos la reescritura de URL, creemos que somos los primeros en
darnos cuenta de su total potencial como un componete de un ataque de
seguridad.
Agradecimientos
La
parte de reescritura de URL de nuestro programa de demostracion esta basada en
el codigo de Henry Minsky para el Zippy filter. Agradecemos a David Hopwood sus
utiles comentarios sobre ataques spoofing, y a Gary McGraw y Laura Felten sus
comentarios sobre el borrador de este documento.
Para Mas
Informacion
Mas
informacion disponible en nuestra pagina web en http://www.cs.princeton.edu/sip
, o del Profesor Edward Felten en felten@cs.princeton.edu o en el (609)
258-5906
Referencias
[1]
Peter G. Neumann. Computer-Related Risks. ACM Press, New York, 1995.
[2]
Gary McGraw and Edward W. Felten. Java Security: Hostile Applets, Holes and
Antidotes. John Wiley and Sons, New York, 1996.
[3]
Robert T. Morris. A Weakness in the 4.2BSD UNIX TCP/IP Software. Computing
Science Technical Report 117, AT&T Bell Laboratories, February 1985.
[4]
Steven M. Bellovin. Security Problems in the TCP/IP Protocol Suite. Computer
Communications
Review 19(2):32-48, April 1989.
[5]
Steven M. Bellovin. Using the Domain Name System for System Break-ins.
Proceedings of Fifth Usenix UNIX Security Symposium, June 1995.
[6]
Web site at http://www.anonymizer.com
[7]
Web site at http://www.metahtml.com/apps/zippy/welcome.html