2010-10-02 33 views
10

recientemente mis ELMAH anotaciones de excepción están llenos de intentos de personas que utilizan tanto la presa software de seguridad Zmeu contra mi servidordetener los ataques Zmeu con ASP.NET MVC

para aquellos pensando “¿qué diablos es Zmeu?” He aquí una explicación ...

"ZmEu parece ser una herramienta de seguridad utilizada para descubrir agujeros de seguridad en la versión 2.xx de PHPMyAdmin, un administrador de bases de datos basado en web MySQL. La herramienta parece haberse originado en algún lugar de Europa del Este. Como lo que parece sucederle a todas las herramientas de seguridad black hat, llegó a China, donde se ha usado desde entonces para detener ataques de fuerza bruta contra servidores web en todo el mundo. "

Aquí hay un gran enlace acerca de este ataque molesto ->http://www.philriesch.com/articles/2010/07/getting-a-little-sick-of-zmeu/

Estoy usando .net por lo que no van a encontrar PHPMyAdmin en mi servidor, pero el hecho de que mis registros están llenos de ataques ZmEu es tedioso.

El enlace de arriba proporciona una gran solución con 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

Aquí está la seugestion HTAccess

<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 este en el archivo Global.ascx que hace lo mismo?

+0

Sí, estoy obteniendo esto también. Tal vez algún tipo de HttpModule lo haría. Pero luego, hostigar a los piratas informáticos podría no ser una buena idea, quizás los 404 sean la mejor respuesta. – codeulike

+1

zmeu significa dragón en rumano. es un grupo de hackers rumanos :), las personas que realizan ataques generalmente no firman sus ataques y hacer las reglas de reescritura para bloquear esos pings no es realmente la solución –

+1

Bien, ¿por qué no reescribir al% {REMOTE_ADDR};) – ekerner

Respuesta

6

Una respuesta alternativa a my other one ... esto detiene específicamente Elmah de registrar los errores 404 generados por ZmEu, mientras que deja el comportamiento de los demás sitios sin cambios. Esto podría ser un poco menos visible que devolver los mensajes directamente a los piratas informáticos.

Puede controlar qué tipo de cosas Elmah inicia sesión en various ways, una forma es agregar esto al 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 al fuego, tendrá que hacer referencia a la DLL Elmah de su proyecto, y añadir un using Elmah; a la parte superior de su Global.asax.cs.

La línea que comienza logger.InfoFormat asume que está utilizando log4net. Si no, cámbialo a otra cosa.

4

Los ataques de ZmEu también me molestaban, así que investigué 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 luego añadir una página htm adecuada a su proyecto para 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 de filtro en.

Este módulo me ha funcionado en las pruebas (cuando envío la derecha userAgent lo valora). Todavía no lo he probado en un servidor real. Pero debería hacer el truco.

Aunque, como dije en los comentarios anteriores, algo me dice que devolver errores 404 podría ser una respuesta menos llamativa que dejar que los hackers sepan que usted está al tanto de ellos. Algunos de ellos podrían ver algo así como un desafío. Pero entonces, no soy un experto en psicología hacker, así que quién sabe.

+0

Esto La página también enumera los nombres de muchos otros bots similares: http://johannburkard.de/blog/www/spam/effective-spam-bot-blocking.html – codeulike

1

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

Indica tu página web en IIS para utilizar los encabezados de host. Luego cree un sitio web en IIS, usando la misma dirección IP, pero sin definición de encabezado de host. (Etiqueté el sitio "Rogue Site" debido a que algunos delincuentes configuraron su DNS para que su dominio se resolviera en mi sitio gubernamental popular. (No estoy seguro de por qué) De todos modos, usar encabezados de host en múltiples sitios es una buena práctica. un sitio definido para el caso cuando no se incluye un encabezado de host es una forma de atrapar visitantes que no tienen su nombre de dominio en la solicitud HTTP.

En el sitio sin encabezado de host, cree una página de inicio que devuelva un estado del encabezado de respuesta de "HTTP 410 Gone". O puede redireccionarlos a otra parte.

Cualquier bot que intente visitar su servidor por la dirección IP en lugar del nombre de dominio resolverá este sitio y obtendrá el error "410 Gone ".

También uso el URLscan de Microsoft y modifiqué el archivo URLscan.ini para excluir al usuario de la cadena angent, "ZmEu".

3

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]. Espero que los administradores de ripe.net no quieran ser pirateados.

0

Configure su servidor correctamente y no se preocupe por los atacantes :) Todo lo que hacen es probar algunas de las posibilidades básicas para ver si ha pasado por alto una trampa obvia. No tiene sentido filtrar a este hacker que es tan amable de firmar su trabajo por usted. Si observa detenidamente sus archivos de registro, verá que hay tantos bots haciendo esto todo el tiempo.

1

Si está utilizando IIS 7.x se puede utilizar Filtro de solicitudes para bloquear las solicitudes

Cabeceras de escaneo: User-agent

Denegar Cuerdas: ZmEu

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

De esta forma, asp.net nunca se invoca y le ahorra algo de CPU/memoria.

0

que añade este patrón en Microsoft módulo de reescritura de URL:

enter image description here

enter image description here

enter image description here

^$|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:[email protected]|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 

aparece el uno por “^ $” es la expresión regular para una cuerda vacía. No permito que los bots accedan a las páginas a menos que se identifiquen con un agente de usuario. En general, descubrí que las únicas cosas que afectaban a mis aplicaciones sin un agente de usuario eran las herramientas de seguridad que habían sido deshonestas.

Te aconsejaré cuando bloquear bots sea muy específico. Simplemente usando una palabra genérica como "fuego" podría aparecer positivo para "firefox". También puede ajustar la expresión regular para corregir ese problema, pero me resultó mucho más simple ser más específico y eso tiene el beneficio adicional de ser más informativo para la siguiente persona para tocar ese ajuste.

Además, verás que tengo una regla para Java/1.7.0_25 en este caso resultó ser un bot que usaba esta versión de java para cerrar mis servidores. Tenga cuidado al bloquear agentes de usuario específicos del idioma como este, algunos lenguajes como ColdFusion se ejecutan en la JVM y usan el agente de usuario de idioma y las solicitudes web a localhost para ensamblar cosas como archivos PDF. Jruby, Groovy o Scala pueden hacer cosas similares, pero no los he probado.