Pregunta

Recientemente mis ELMAH anotaciones de excepción están llenos de intentos de personas que utilizan este modo represar el software de seguridad Zmeu contra mi servidor

para aquellos que estén pensando “¿qué diablos es Zmeu?” Aquí es una explicación ...

“Zmeu parece ser una herramienta de seguridad utilizada para el descubrimiento de los agujeros de seguridad en la versión 2.x.x de phpMyAdmin, un administrador de base de datos MySQL basado en la web. La herramienta parece haberse originado en algún lugar de Europa del Este. Al igual que lo que parece suceder a todas las herramientas de seguridad sombrero negro, que hizo su camino a China, donde se ha utilizado desde entonces para detener los ataques de fuerza bruta no contra servidores web en todo el mundo.”

Aquí está una gran eslabón de este ataque molesto -> http://www.philriesch.com/articles/2010/07/getting-a-little-sick-of-zmeu/

Im usando .NET por lo que no voy a encontrar phpMyAdmin en mi servidor, pero el hecho de que mis registros están llenos ofZmEu ataca sus tedioso devenir.

El enlace de arriba proporcionan un gran arreglo mediante HTAccess, pero estoy usando IIS7.5, no Apache. Tengo un MVC 2 sitio asp.net, así que estoy usando el archivo Global.asax para crear mis rutas

Esta es la HTAccess seugestion

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/path/to/your/abusefile.php
RewriteCond %{HTTP_USER_AGENT} (.*)ZmEu(.*)
RewriteRule .* http://www.yourdomain.com/path/to/your/abusefile.php [R=301,L]
</IfModule>

Mi pregunta, ¿hay algo que puedo añadir como esta en el archivo Global.ascx que hace lo mismo?

¿Fue útil?

Solución

Una respuesta alternativa a mi otro ... éste se detiene específicamente Elmah de la tala de los 404 errores generados por Zmeu, dejando el resto de su comportamiento sitios sin cambios. Esto podría ser un poco menos visible que devolver mensajes directamente a los piratas informáticos.

Se puede controlar qué tipo de cosas registros ELMAH en diversas maneras , una forma es la adición de esto a la Global.asax

void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
    if (e.Exception.GetBaseException() is HttpException)
    {
        HttpException httpEx = (HttpException)e.Exception.GetBaseException();
        if (httpEx.GetHttpCode() == 404)
        {
            if (Request.UserAgent.Contains("ZmEu"))
            {
                // stop Elmah from logging it
                e.Dismiss();
                // log it somewhere else
                logger.InfoFormat("ZmEu request detected from IP {0} at address {1}", Request.UserHostAddress, Request.Url);
            }           
        }
    }
}

Para este evento de fuego, que tendrá que hacer referencia a la DLL Elmah de su proyecto, y añadir un using Elmah; a la parte superior de sus Global.asax.cs.

La línea de salida logger.InfoFormat supone que está utilizando log4net. Si no, cambiarlo a otra cosa.

Otros consejos

Los ataques fueron Zmeu me molesta demasiado, así que busqué en esto. Se puede hacer con un HttpModule.

Añadir la siguiente clase a su proyecto:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Security.Principal;
//using log4net;

namespace YourProject
{
    public class UserAgentBlockModule : IHttpModule
    {

        //private static readonly ILog logger = LogManager.GetLogger(typeof(UserAgentBlockModule));

        public void Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
        }

        void context_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication application = (HttpApplication)sender;
            HttpRequest request = application.Request;
            if (request.UserAgent.Contains("ZmEu"))
            {
                //logger.InfoFormat("ZmEu attack detected from IP {0}, aiming for url {1}", request.UserHostAddress, request.Url.ToString());
                HttpContext.Current.Server.Transfer("RickRoll.htm");
            }

        }

        public void Dispose()
        {
            // nothing to dispose

        }

    }
}

y luego añadir la siguiente línea al web.config

<httpModules>
    ...
   <add name="UserAgentBlockFilter" type="YourProject.UserAgentBlockModule, YourProject" />
</httpModules>
y

... a continuación, añadir una página htm adecuado para su proyecto por lo que hay un lugar para redirigirlos a.

Tenga en cuenta que si estás usando log4net se puede comentar en las líneas log4net en el código para registrar las ocasiones en las patadas filtro.

Este módulo ha trabajado para mí en la prueba (cuando envío los valores userAgent derecho a ella). No he probado en un servidor real todavía. Pero debe hacer el truco.

A pesar de que, como ya he dicho en los comentarios anteriores, algo me dice que la devolución de errores 404 podría ser una respuesta menos visible que dejar que los hackers saben que usted es consciente de ellos. Algunos de ellos podrían ver algo así como un reto. Pero entonces, yo no soy un experto en la psicología de hackers, por lo que sabe.

En cuanto tenga un Zmeu o phpMyAdmin o forgotten_password vuelvo a dirigir la consulta a:

<meta http-equiv='refresh' content='0;url=http://www.ripe.net$uri' />

[o APNIC o arin]. Estoy esperando que los administradores en ripe.net no les gusta ser atacado.

En IIS 6.0 también se puede probar esto ...

Fija tu sitio web en IIS para uso cabeceras de acogida. A continuación, crear un sitio web en IIS, utilizando la misma dirección IP, pero sin definición de encabezado de host. (Etiqueté mío "Rogue Sitio" porque algunos oonce pícaro establece deliverately su DNS para su dominio a voluntad de mi sitio gobierno popular. (No estoy seguro de por qué) De todos modos, el uso de encabezados de host en varios sitios es una práctica buena. Y tener un sitio definido para el caso en que no se incluye ningún encabezado de host es una forma de visitantes de captura que no tienen su nombre de dominio en la petición HTTP.

En el sitio sin encabezado de host, crear una página de inicio que devuelve un estado de cabecera de respuesta "HTTP 410 No". O bien, puede redirigir a otra parte.

Cualquier robots que intentan visitar el servidor de la dirección IP en lugar del nombre de dominio resolverán el este sitio y obtener el error "410 Gone".

también uso de Microsoft URLscan, y modificar el archivo URLscan.ini para excluir la cadena angent usuario, "Zmeu".

Si está utilizando IIS 7.X podría utilizar filtrado de solicitudes para bloquear las peticiones

Scan encabezados: User-agent

Denegar Cuerdas: ZmEu

Para probar si funciona iniciar Chrome con el parámetro --User-Agent "ZmEu"

Esta asp.net manera que nunca se invoca y su le ahorra un poco de CPU / memoria ..

He añadido este patrón en Microsoft URL del módulo de reescritura:

introducir descripción de la imagen aquí

introducir descripción de la imagen aquí

introducir descripción de la imagen aquí

^$|EasouSpider|Add Catalog|PaperLiBot|Spiceworks|ZumBot|RU_Bot|Wget|Java/1.7.0_25|Slurp|FunWebProducts|80legs|Aboundex|AcoiRobot|Acoon Robot|AhrefsBot|aihit|AlkalineBOT|AnzwersCrawl|Arachnoidea|ArchitextSpider|archive|Autonomy Spider|Baiduspider|BecomeBot|benderthewebrobot|BlackWidow|Bork-edition|Bot mailto:craftbot@yahoo.com|botje|catchbot|changedetection|Charlotte|ChinaClaw|commoncrawl|ConveraCrawler|Covario|crawler|curl|Custo|data mining development project|DigExt|DISCo|discobot|discoveryengine|DOC|DoCoMo|DotBot|Download Demon|Download Ninja|eCatch|EirGrabber|EmailSiphon|EmailWolf|eurobot|Exabot|Express WebPictures|ExtractorPro|EyeNetIE|Ezooms|Fetch|Fetch API|filterdb|findfiles|findlinks|FlashGet|flightdeckreports|FollowSite Bot|Gaisbot|genieBot|GetRight|GetWeb!|gigablast|Gigabot|Go-Ahead-Got-It|Go!Zilla|GrabNet|Grafula|GT::WWW|hailoo|heritrix|HMView|houxou|HTTP::Lite|HTTrack|ia_archiver|IBM EVV|id-search|IDBot|Image Stripper|Image Sucker|Indy Library|InterGET|Internet Ninja|internetmemory|ISC Systems iRc Search 2.1|JetCar|JOC Web Spider|k2spider|larbin|larbin|LeechFTP|libghttp|libwww|libwww-perl|linko|LinkWalker|lwp-trivial|Mass Downloader|metadatalabs|MFC_Tear_Sample|Microsoft URL Control|MIDown tool|Missigua|Missigua Locator|Mister PiX|MJ12bot|MOREnet|MSIECrawler|msnbot|naver|Navroad|NearSite|Net Vampire|NetAnts|NetSpider|NetZIP|NextGenSearchBot|NPBot|Nutch|Octopus|Offline Explorer|Offline Navigator|omni-explorer|PageGrabber|panscient|panscient.com|Papa Foto|pavuk|pcBrowser|PECL::HTTP|PHP/|PHPCrawl|picsearch|pipl|pmoz|PredictYourBabySearchToolbar|RealDownload|Referrer Karma|ReGet|reverseget|rogerbot|ScoutJet|SearchBot|seexie|seoprofiler|Servage Robot|SeznamBot|shopwiki|sindice|sistrix|SiteSnagger|SiteSnagger|smart.apnoti.com|SmartDownload|Snoopy|Sosospider|spbot|suggybot|SuperBot|SuperHTTP|SuperPagesUrlVerifyBot|Surfbot|SurveyBot|SurveyBot|swebot|Synapse|Tagoobot|tAkeOut|Teleport|Teleport Pro|TeleportPro|TweetmemeBot|TwengaBot|twiceler|UbiCrawler|uptimerobot|URI::Fetch|urllib|User-Agent|VoidEYE|VoilaBot|WBSearchBot|Web Image Collector|Web Sucker|WebAuto|WebCopier|WebCopier|WebFetch|WebGo IS|WebLeacher|WebReaper|WebSauger|Website eXtractor|Website Quester|WebStripper|WebStripper|WebWhacker|WebZIP|WebZIP|Wells Search II|WEP Search|Widow|winHTTP|WWWOFFLE|Xaldon WebSpider|Xenu|yacybot|yandex|YandexBot|YandexImages|yBot|YesupBot|YodaoBot|yolinkBot|youdao|Zao|Zealbot|Zeus|ZyBORG|Zmeu

En la parte superior aparece una “^ $” es la expresión regular para una cadena vacía. No permito que los robots de acceso a las páginas a menos que se identifican con un agente de usuario, he encontrado más a menudo las únicas cosas que golpea mis estas aplicaciones con un agente de usuario eran herramientas de seguridad falso ido.

Yo le avisará cuando los robots de bloqueo ser muy específico. Simplemente usando una palabra genérica como “fuego” podría estallar positivo para “Firefox” También puede ajustar la expresión regular para arreglar ese problema pero me pareció mucho más simple para ser más específicos y que tiene la ventaja añadida de ser más informativo a la siguiente persona tocar ese entorno.

Además, verá que tengo una regla para Java / 1.7.0_25 en este caso, que pasó a ser un robot usando esta versión de Java para cerrar de golpe mis servidores. No ser agentes específicos de usuarios de lengua de bloqueo cuidadosas de este tipo, algunos idiomas como ColdFusion se ejecutan en la JVM y utilizar el agente de usuario web y el lenguaje peticiones al servidor local para montar cosas como archivos PDF. Jruby, Groovy, o Scala, pueden hacer cosas similares, sin embargo no los he probado.

Configurar el servidor correctamente y la preocupación acerca de los atacantes no haga :) Lo único que hacen es tratar algunas posibilidades básicas para ver si usted ha pasado por alto una trampa obvia. No tiene sentido el filtrado de éste hacker que es lo suficientemente bueno como para firmar su trabajo para usted. Si usted tiene una mirada más cercana a los archivos de registro que se ve hay tantos robots que hacen esto todo el tiempo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top