La mayoría de nosotros esta familiarizados con ese tipo de abusos, pero creo que somos pocos los que todavía nos sorprendemos con algunos tipos de fraude. En esta ocasión me toco ser testigo de un tipo de abuso que no conocía y es el robo de anuncios (en mi caso específico de Adsense e Impresionesweb). Investigando por internet no encontré información al respecto así que me gustaría de alguna manera poder documentar mi experiencia para prevenir a otros webmasters sobre este tipo de delitos.
Tengo varias páginas web que están funcionando y trabajando sin problemas, una de ellas es una comunidad de usuarios que se dedican a hacer Linksharing, esta cuenta con más 12.000 usuarios registrados, 11.000 posts, mas de 30.000 mensajes. Por suerte sigue creciendo y en este momento tengo 4.000 visitas diarias en dicha comunidad. Como servicio para monetizar mi trafico utilizo Adsense y nunca obtuve una gran suma de dinero, solo lo justo como para pagar los gastos inherentes a mantener un sitio. En otras palabras es una comunidad pequeña pero con un buen tráfico.
Ayer entre a mi cuenta de Google Analytics para ver como era el progreso de las visitas y ya que estaba decido entrar también a mi cuenta de Google Adsense. Primero reviso Analytics y veo que mantengo mi trafico con un promedio de 4000 visitas diarias, luego de eso paso a revisar como va el estado de mi cuenta en Adsense. Luego de entrar me lleve una gran sorpresa, y fue extremadamente grande, ya que vi que hacia 2 semanas no tenia impresiones en pantalla de mis avisos, algo sumamente extraño porque según Analytics tenía mis 4000 visitas. Al ver esto me dirijo a mi comunidad para ver si es que los anuncios se estaban mostrando y corroboro que efectivamente si se mostraban. Me quede un rato pensando para tratar de pensar que estaba haciendo mal hasta que decido enviar un mail al soporte de Adsense. Cuando estaba escribiendo el mail decido ir a ver el código fuente de mi página para poder copiar el código y pegarlo en el mail que estaba escribiendo para que el soporte me diga que estaba sucediendo con ese anuncio. En el momento que abro mi página principal con el Bloc de Notas y me dirijo a copiar el código del anuncio quede petrificado. El motivo fue que el anuncio que tenía no era el mío, el número de publicista era otro. Comencé a revisar todas las paginas donde tengo anuncias y efectivamente el numero de cliente estaba cambiado en todos. Ante mi asombro decido revisar otra página que se encuentra dentro del mismo server y también estaban cambiados los números de publicista.
Me dedique a restaurar todos los códigos y acto seguido envié un correo a Adsense (aunque todavía me arrepiento). Luego de un tiempo recibo un mail diciendo que mi cuenta fue suspendida hasta nuevo aviso para investigar qué era lo que estaba sucediendo. Lamentablemente yo sé lo que sucede cuando Google Adsense envía mensajes de este tipo, lo menos que puede pasar es que el dominio quede inhabilitado para mostrar anuncios. En definitiva, salí perdiendo por donde se mire.
Como dije antes, no encontré documentación de este tipo de delitos, tampoco sé cómo se llama la técnica, supongo que Ad Stole o Ad Change… la verdad que probé miles de combinaciones, en inglés y en castellano y no encontré nada al respecto así que para comodidad mía y de los lectores la llamare Ad Stole. No hace falta ser muy inteligente para darse cuenta que esto puede llevarse a través de cualquier ataque. Siempre que el ataque de acceso o entregue una Shell, el atacante tendrá en su poder todos los sitios, que estén alojados en ese servidor, para hacer lo que le plazca, llámese Deface, Robo de información, “Ad Stole”, etc.
En resumen, voy a tratar de enumerar algunas normas de seguridad que se deben seguir para evitar cualquier tipo de ataques en la aplicación o en el servidor y así ahorrarse disgustos y pérdidas económicas:
1 ) Evaluar los riesgos
2 ) En lo posible, usar un servidor propio, donde cada uno pueda controlar todos los servicios y las políticas.
3 ) Siempre tener actualizadas todas las aplicaciones que corran en el servidor.
4 ) Buscar cada cierto tiempo en internet si hay algún tipo de amenazas para las aplicaciones que se usan (recomiendo Milw0rm y Securityfocus).
5 ) Si se usa un servidor compartido, tratar de ver cuáles son los puntos vulnerables del mismo e informar a los administradores para que traten de solucionarlo.
6 ) Probar si la aplicación es segura contra ataques XSS, RFI, LFI, SQLi, etc. Si no sabe de que se trata, puede utilizar aplicaciones como XSS Me, SSS, Paraos Proxy, SQL Ninja, etc.
7 ) Si se utilizan aplicaciones en PHP, puedes tomar estas precauciones (no son todas pero si las más importantes):
* asegurarse de tener activado y configurado correctamente el modo seguro (SAFE MODE),
* registers_globals tiene que estar apagado, de esta forma se pueden evitar la mayoría de los ataques RFI y LFI,
* allow_url_fopen debe estar apagado,
* ajuste las directivas magic_gpc_quotes según lo que su sitio necesite (usualmente apagado),
* open_basedir debería estar activado y configurado correctamente,
* log_errors debe estar activado,
* es aconsejable que display_errors este apagado,
* error_log declarado en /var/log/php/errors,
* filter.default_flags seteado en cero,
* con disable_functions deshabilite las funciones proc_open , popen, disk_free_space, diskfreespace, set_time_limit, leak, tmpfile, exec, system, shell_exec, passthru, show_source, system, phpinfo. (Abajo voy a poner en condigo como deben declararse estas cosas).
* Utilizar strip_tags, str_replace, etc para evitar la mayoría de los ataques XSS.
8 ) PHP y MySQL fueron diseñados para trabajar mejor en Apache. Trate de no usar otros servidores en lo posible.
9 ) Utilice PHP 5 y aplique todos los parches de seguridad necesarios.
10 ) De la menor cantidad de privilegios posibles, para ello puede ayudarse con aplicaciones como PHPsuExec, php_suexec o suPHP
11 ) Estudie la lista oficial de directivas php.ini en www.php.net
12 ) Utilizar, SI O SI, archivos .htaccess para prevenir el uso de exploits.
13 ) Regularmente revisar los registros de acceso para ver si no hay actividad sospechosa. No se debe confiar en las graficas, siempre ver el “raw logs” o registros en crudo para ver todos los detalles.
14 ) Configurar correctamente los filtros de Apache mod_security y mod_rewrite para bloquear ataques PHP.
15 ) Si su aplicación utiliza MySQL, asegúrese que la cuenta esta configurada con acceso limitado.
16 ) Configure cuidadosamente de forma manual la configuración de MySQL ya que la configuración por defecto es bastante insegura. Visitar este link para más información.
17 ) Si estas en un servidor compartido y usted puede ver los nombres de las bases de datos de otros usuarios, entonces ellos también ven las suyas. Esto es estar un paso más cerca de poder entrar. Informar al soporte técnico del Servidor. Un buen ISP limitara el acceso a cada usuario a sus propias bases de datos estrictamente.
Así que bueno… espero que mi experiencia les pueda servir de algo y traten de cuidar la seguridad de su información. Como ven, nadie esta exento de este tipo de cosas.
Fuente: