Hulten & Goodman: Tutorial on Junk e-mail filtering.
Boykin: Personal Email Networks: An Effective Anti-Spam Tool, 2004
Newman et al. : Email networks and the spread of computer viruses, 2002
www.paulgraham.com
Curso: Recuperación de Información
-- ChaTo
Adversarial – IR
Recuperación de información cuando toda la colección, o una parte de la colección, contiene ítems maliciosamente diseñados para afectar los resultados.
Definición de spam
Envío de numerosos mensajes no-solicitados
“Unsolicited Bulk E-mail” (UBE)
Mensajes comerciales son una categoría
“Unsolicited Commercial E-Mail” (UCE)
Pero mensajes no-comerciales también cuentan
Opt-in : yo elijo cuáles mensajes recibir
Opt-out : yo elijo cuáles mensajes dejar de recibir
... después de recibirlos :(
Origen de la palabra “spam”
Carne de cerdo enlatada
Sketch de Monty Python: café donde todo en el menú contiene SPAM. El cliente pide algo sin SPAM, pero el mesero le lee de nuevo el menú completo con SPAM.
El colmo es cuando los vikingos ( ! ) en el café empiezan a cantar “ "SPAM, SPAM, wonderful SPAM, glorious SPAM".
Tipos de spam
SPAM a máquinas de búsqueda (spamdexing?)
Links, blogs, palabras
SPAM por e-mail
SPAM por mensajería instantánea (spim)
SPAM por SMS
SPAM en las News.
SPAM en chats.
Composición del spam por e-mail
Viagra + similares 34%
Seguros 4%
Medicamentos 10%
Préstamos, etc. 13%
Viajes, casinos 3%
Fraude 6%
Pornografía 7%
Diplomas, software 10%
Causas del spam
“Tragedia del bien comunitario”
Cada uno trata de maximizar su utilidad, pero genera una externalidad que minimiza la satisfacción global
La acción del individuo produce una “externalidad”
Dilema del prisionero colectivo
Cada uno elije cooperar (ej.: no contaminar) o no cooperar (ej.: contaminar)
Si todos cooperan, hay un óptimo global
Si uno no coopera , esa persona obtiene un beneficio a costa de los otros
Causas del spam (cont.)
Bien colectivo : e-mail, libre de cargos
Ingenuidad de los que contestan el spam
Costos
Uso de red
Tiempo perdido en leer el spam
Tiempo perdido en borrar el spam
40-80% de los mensajes en USA son spam
Otros usos
Uso malicioso (estafas), usos religiosos/políticos
Obtención de destinatarios
Crawlers orientados a e-mail
Algunos incluso capturan palabras cerca de la dirección para asociarlas al e-mail
Grupos, news, listas de correo, whois, búsqueda exhaustiva con validación (Web Bugs)
Compra de listas de correo
Protección
Esconder la dirección en la Web (ej.: esconderla con javascript)
No dar la dirección real
Creación de los mensajes
Ingeniería social
“old photos”
“I saw your profile”
“re: Request”
Contra-ataque hacia filtros automáticos
V.I.A.G.R.A.
/14GR4, V-IAGRA, V1A-GRA
Uso de HTML
Técnicas más usadas
Enredar las palabras 20%
Partir las palabras 15%
Incluír otras URLs 10%
Falsear el dominio 50%
MIME (text/html distintos) 11%
Texto legítimo al ppio/fin 56%
Fuente: Hotmail, 2004
Envío de los mensajes
Open relays
Máquinas que admiten e-mail de cualquiera a cualquiera
Open proxies: proxies abiertos al puerto 25
Virus de spammer (ej.: SoBig, Mimail)
Cuentas de correo gratis
Protección: imágen con texto
Ataque: pedir a usuarios de otros sitios que decifren la imágen (ej.: sitios de pornografía gratis)
Direcciones “ honeypot ” para capturar mensaje que son 100% spam
Feedback del usuario
Los e-mail son variaciones unos de otros
Se requiere una función robusta para similaridad (ej.: modelo vectorial + heurísticas)
Solución: lista negra de IPs
Algunas listas son demasiado agresivas
Ej.: la red de un cierto ISP tiene un subscriptor que envía spam, al mensaje número 1,000 detectado se bloquea el segmento de red completo
Algunas listas reaccionan muy tarde
Después de que ya muchos mensajes han sido recibidos
Solución: pago por enviar
Pago con test de turing
Recibo el mensaje y envío una imágen con letras
El remitente debe enviarme las letras
Una vez que lo hace, leo su mensaje y lo agrego a lista blanca
Pago con computación
Recibo el mensaje y envío una operación matemática compleja
El remitente debe enviarme la respuesta
Se usa en forma selectiva ( sólo sospechosos )
Más soluciones ...
Pago en dinero por enviar
Micropagos
Autoridad certificadora: les pago y además deposito US$1,000, cuando me quiero ir me devuelven US$1,000 – (US$100 * número-de-reclamos)
Direcciones efímeras
www.sitio.com me pide mi e-mail
Le contesto “ [email_address] “
Una vez que recibo el e-mail de ellos, sólo el sender de ese e-mail puede enviar a esta dirección
Filtrado automático
Se parte con un corpus de mensajes de spam y mensajes no-spam clasificados manualmente
Se entrena un clasificador
El clasificador entrega una probabilidad de que el mensaje sea spam
Filtrado automático (problemas)
En la práctica
Difícil que la gente entrene el filtro
¿Cómo damos un filtro pre-entrenado? (ej.: si le pido a académicos/investigadores que entrenen el filtro, pero sus e-mails son principalmente texto, el e-mail de la gente normal no)
Evaluación
Problema 1: “ falsos negativos ”
Era spam pero el filtro no lo detectó
Equivalente a tener mal recall
Problema 2: “ falsos positivos ”
Era correo válido y quedó como spam
Equivalente a tener mala precisión
Trade-off entre estos dos problemas
Difícil de comparar (¿2%-0.1% ó 0.5%-0.2%?)
Evaluación de filtrado automático spam que pasa el filtro (1-RECALL) falsos positivos (1-PRECISIÓN) filtro muy conservador filtro muy agresivo (óptimo) 1% 1% (valores usados)
Elección de parámetros para el filtro spam que pasa el filtro falsos positivos filtro muy conservador filtro muy agresivo (óptimo) 1% 1% Lo detectado como spam será borrado (> /dev/null), elijo un valor conservador
Elección de parámetros spam que pasa el filtro falsos positivos filtro muy conservador filtro muy agresivo (óptimo) 1% 1% Lo detectado como spam será sólo marcado [SPAM], me arriesgo más
Filtrado bayesiano de spam
Teorema de Bayes
P(B|A) = ( P(A|B) * P(B) ) / P(A)
Teorema de Bayes para filtro de e-mail
Evento “spam” = mensaje es spam
Evento “palabras” = mensaje contiene palabras malas
P(spam|palabras) =
P(palabras|spam) * P(spam) / P(palabras)
Probabilidad de que un mensaje es spam, dado que contiene palabras malas
Naïve bayesiano
Asumimos que las palabras son independientes
P(spam | x, y) = P(spam | x) * P(spam | y)
Probabilidad de que sea spam dado que aparecen las palabras x e y, es el producto de las probabilidades.
Esto no es cierto en general (las ocurrencias de las palabras no son independientes)
Ejemplo
P( credit, thank | spam ) =
0.4 * 0.4 = 0.16
P( credit, thank | nospam ) =
0.2 * 0.4 = 0.08
En ausencia de más evidencia, el mensaje es spam
Más probable si recibo mucho spam
Más probable si las palabras son poco usadas
Problemas de filtros bayesianos
Usuarios tienen que clasificar mensajes
A veces se equivocan clasificando
Degradación del filtro en ciertos casos
Ej.: siempre recibo correo en español, así que todo el correo en inglés lo considero spam. PERO cuando empiezo a recibir correo en inglés el filtro lo considera spam.
Frases “ Click here to enter ”, la frase es buena para separar spam, los términos individuales no .
Lo bueno de los filtros bayesianos
No necesitas guardar los mensajes
Privacidad
Espacio en disco
Buena precisión y recall
Se pueden dar pre-entrenados con un set básico
Otro filtraje automático
Separación lineal de mensajes
Hiper-plano separador Razgo-1 Razgo-N
Otro filtraje automático (cont.)
A veces no son linealmente separables, y además es computacionalmente difícil
Hiper-plano separador Razgo-1 Razgo-N
Mejora de filtros automáticos
No sólo las palabras
Usar otra evidencia:
Frases a mano “free money”, etc.
% de caracteres no-alfanuméricos
Encoding
Attachments
Hora en que fue enviado/recibido
Texto grande en HTML
Texto invisible
Heurística buena: re-definición de tokens
Preservar mayúsculas/minúsculas
“FREE” es peor que “free”
Incluir los signos de exclamación
“WIN!!!!” es peor que “win”
Números precedidos de un $ y con puntos y comas son tokens
$20,000 y US$18.00 son tokens
Marcar los tokens del encabezado
“Subject*Free”, “To*Friend” son tokens
También usado: lematización
Esta heurística ayuda:
Subject*FREE 0.9999
free!! 0.9999
To*free 0.9998
Subject*free 0.9782
free! 0.9199
Free 0.9198
Url*free 0.9091
FREE 0.8747
From*free 0.7636
free 0.6546
Problema: tokens no vistos
Transformación del token, ej.: “Free!!!!”
Subject*Free!!!
Subject*free!!!
Subject*FREE!
Subject*Free!
Subject*free!
Subject*FREE
Subject*Free
Subject*free
FREE!!!
Free!!!
free!!!
FREE!
Free!
free!
FREE
Free
free
Múltiple evidencia (SpamAssasin) 1.3 X_PRIORITY_HIGH Sent with 'X-Priority' set to high 1.0 FROM_ENDS_IN_NUMS From: ends in numbers 1.9 REMOVE_REMOVAL_1WORD BODY: List removal information 0.1 HTML_FONTCOLOR_BLUE BODY: HTML font color is blue 0.1 HTML_MESSAGE BODY: HTML included in message 0.1 HTML_FONTCOLOR_RED BODY: HTML font color is red -4.9 BAYES_00 BODY: Bayesian spam probability is 0 to 1% [score: 0.0048] 0.9 MAILTO_SUBJ_REMOVE BODY: mailto URI includes removal text 0.1 RCVD_IN_SORBS RBL: SORBS: sender is listed in SORBS [200.112.35.101 listed in dnsbl.sorbs.net] 0.1 RCVD_IN_RFCI RBL: Sent via a relay in ipwhois.rfc-ignorant.org [200.112.35.101 has inaccurate or missing WHOIS] [data at the RIR] 1.0 FROM_HAS_ULINE_NUMS From: contains an underline and numbers/letters 0.7 PLING_PLING Subject has lots of exclamation marks 0.5 MIME_BOUND_NEXTPART Spam tool pattern in MIME boundary 1.2 PRIORITY_NO_NAME Message has priority setting, but no X-Mailer Subject: Vier. 25 fiesta gratis en Viña!! [...]Viernes 25 Fiesta GRATIS en VIÑA:: ::No te pierdas este viernes 25, la mejor fiesta de la V Region. Viña y Santiago se reunen en un solo y exclusivo lugar: Puerto Madero, unico con su terraza bailable con vista al mar:: [...] Content analysis details: ( 4.0 points, 3.5 required )
Más heurísticas
HTML
Formularios
Texto en color/grande/chico
Instrucciones para salir de la lista
mailto:email?Subject=remove
To remove, ...
“This is a one time mailing”
Encabezado To: vacío
From terminado en números
Más heurísticas (cont.)
Lista blanca - negra - gris (amigos de amigos)
Mensajes muy grandes no son spam, pero pueden ser virus
Listas a mano, ejemplo de SpamBouncer:
* ^From:.*[^-_0-9a-z](ABACHA|
momoh abdul|
Rebecca Abdulmalik|
remmy abu|
Abdulsalami Abubakar|
Haruna Abubakar|
FRANK ABUDU|
(¡300 líneas más!)
Pesos para las reglas
Cuando hay 500 reglas o más, ¿cómo se asignan los pesos?
Método 1: algoritmo genético
Individuo = vector de pesos de las reglas
Aptitud = f( falsos_negativos, falsos_positivos)
Cruce = intercambio de reglas
En cada generación cada individuo es testeado contra todos los mensajes para ver su probabilidad de sobrevivir -> LENTO
Pesos para las reglas (cont.)
Mejor: red neuronal con retropropagación de gradiente (el truco más antiguo en la caja de herramientas).
Reglas SPAM NO SPAM Si el resultado es correcto, se refuerza positivamente Si el resultado es incorrecto, se refuerza negativamente El corpus completo pasa por el perceptron k=15 veces (cada vez en orden aleatorio) El resultado son pesos positivos y negativos
Análisis de enlaces
Nodos = Usuarios
Enlace desde u1 a u2 si:
u1 envió un mensaje To:u2
u1 envió un mensaje Cc:u2
Caracterización enlaces
Difícil de obtener datos
Boykin: Personal Email Networks: An Effective Anti-Spam Tool, 2004
Newman et al. : Email networks and the spread of computer viruses, 2002
Intercambio de correo interno en una universidad (entre miembros de la misma universidad, descartando mensajes hacia/desde el exterior)
Estadísticas grafo E-Mail
¡ Es scale-free ! --- Grado promedio = 3.4
Reciprocidad (cuántos de los que yo le escribo me escriben también) 0.23
Correlación(grado interno,grado externo)=0.5
Detección spam con grafo Boykin & Roychowdhury '04
Grafo típico de SPAM
Spammers en rojo
Direcciones comunes al centro
Grafo típico de NO-SPAM
Hay muchos triángulos, que son comunidades
Detección spam con grafo ...
SPAM
Bajo coeficiente de clustering
NO-SPAM
Alto coeficiente de clustering
Muchos triángulos y cuadrados
Software
SpamAssasin
Incluye un daemon para acelerar el proceso, si está corriendo, el mensaje es enviado de ida y vuelta al daemon
SpamBouncer
Reglas basadas en procmail
Bogofilter
Principalmente bayesiano sobre el texto
¿Cuando termina el SPAM?
Beneficio de enviar mensaje = $b per mensaje
b = (costo envío) * (tasa respuesta) * (profit)
Si una fracción de los usuarios usa un filtro que es 99% efectivo, la tasa de respuesta baja
Ejemplo: 10% de los usuarios usa filtro => un 9.9% de los mensajes de SPAM será perdido, los spammers pierden ahora un 9.9% del negocio
Ejemplo: 50% de los usuarios usa filtro => 49.5% de los mensajes de SPAM se pierden, el beneficio ahora es la mitad, quizás en estas condiciones ya no es negocio
Conclusion
Problema difícil
¿Por cuánto tiempo será problema?
Mientras haya la posibilidad de avisar casi-gratis y la gente siga comprando
La tasa de respuesta tiene que descender
Solución autoritaria : “ si alguien contesta un spam, se le cierra la cuenta ”, porque nos perjudica a todos
1 comments
Comments 1 - 1 of 1 previous next Post a comment