прекращение атак ZmEu с помощью ASP.NET MVC - PullRequest
10 голосов
/ 02 октября 2010

В последнее время мои журналы исключений в elmah полны попыток людей, использующих таким образом программное обеспечение защиты ZmEu для моего сервера

для тех, кто думает: «Что, черт возьми, ZmEu?», Вот объяснение ...

«ZmEu, по-видимому, представляет собой инструмент безопасности, используемый для обнаружения дыр в безопасности в версии 2.xx PHPMyAdmin, веб-менеджера баз данных MySQL.Похоже, что инструмент появился в Восточной Европе.Подобно тому, что, похоже, происходит со всеми инструментами безопасности Black Hat, он попал в Китай, где с тех пор использовался для непрерывных атак методом грубой силы против веб-серверов по всему миру ».ссылка об этой надоедливой атаке -> http://www.philriesch.com/articles/2010/07/getting-a-little-sick-of-zmeu/

Я использую .net, поэтому они не найдут PHPMyAdmin на моем сервере, но тот факт, что мои журналы полны ZmEu-атак, становится утомительным.

Ссылка выше обеспечивает отличное решение, используя HTAccess, но я использую IIS7.5, а не Apache.У меня есть сайт asp.net MVC 2, поэтому я использую файл global.asax для создания моих маршрутов

Вот 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>

Мой вопрос, есть ли что-нибудь, что я могу добавитькак это в файле Global.ascx, который делает то же самое?

Ответы [ 7 ]

6 голосов
/ 25 октября 2010

Альтернативный ответ на мой другой ... этот, в частности, запрещает Elmah регистрировать 404 ошибки, сгенерированные ZmEu, оставляя поведение остальных ваших сайтов неизменным. Это может быть немного менее заметно, чем возвращать сообщения прямо хакерам.

Вы можете контролировать, какие вещи Elmah регистрирует в различными способами , одним из способов является добавление этого в 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);
            }           
        }
    }
}

Чтобы это событие сработало, вам нужно сослаться на DLL Elmah из своего проекта и добавить using Elmah; в начало вашего Global.asax.cs.

Строка, начинающаяся с logger.InfoFormat, предполагает, что вы используете log4net. Если нет, измените его на другое.

4 голосов
/ 25 октября 2010

Атаки ZmEu меня тоже раздражали, поэтому я посмотрел на это.Это можно сделать с помощью HttpModule.

Добавьте следующий класс в ваш проект:

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

        }

    }
}

, а затем добавьте следующую строку в web.config

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

... и затем добавьте подходящую страницу htm в свой проект, чтобы можно было куда-то перенаправить их.

Обратите внимание, что если вы используете log4net, вы можете комментировать строки log4net в коде, чтобы регистрировать случаи, когдафильтр включается.

Этот модуль работал для меня в тестировании (когда я отправляю ему правильные значения userAgent).Я еще не тестировал его на реальном сервере.Но это должно сработать.

Хотя, как я сказал в комментариях выше, что-то подсказывает мне, что возвращение ошибок 404 может быть менее заметным ответом, чем уведомление хакеров о том, что вы о них знаете.Некоторые из них могут воспринимать что-то подобное как вызов.Но тогда я не специалист по психологии хакеров, так что кто знает.

2 голосов
/ 02 мая 2011

Всякий раз, когда я получаю ZmEu, phpMyAdmin или забытый пароль, я перенаправляю запрос:

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

[или apnic или arin].Я надеюсь, что администраторы на сайтеспен.net не любят, когда их взламывают.

1 голос
/ 04 сентября 2017

Я добавил этот шаблон в модуль перезаписи URL-адресов Microsoft:

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: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

Верхний из перечисленных, «^ $» - это регулярное выражение для пустой строки.Я не разрешаю ботам получать доступ к страницам, если они не идентифицируются с пользовательским агентом. Я обнаружил, что чаще всего единственными объектами, поражающими мои приложения без использования пользовательского агента, были средства безопасности, которые стали мошенническими.

Я посоветую вампри блокировке ботов нужно быть очень конкретными.Простое использование общего слова, такого как «огонь», может дать положительный результат для «firefox». Вы также можете настроить регулярное выражение для решения этой проблемы, но я обнаружил, что гораздо проще быть более конкретным, и это дает дополнительное преимущество, заключающееся в большей информативности для следующего человека.прикоснуться к этому параметру.

Кроме того, вы увидите, что у меня есть правило для Java / 1.7.0_25, в данном случае это был бот, использующий эту версию java, чтобы захлопнуть мои серверы.Будьте осторожны, блокируя языковые пользовательские агенты, подобные этому, некоторые языки, такие как ColdFusion, работают на JVM и используют языковой пользовательский агент и веб-запросы к localhost для сборки таких вещей, как PDF-файлы.Jruby, Groovy или Scala могут делать подобные вещи, однако я их не проверял.

1 голос
/ 12 марта 2014

Если вы используете IIS 7.X, вы можете использовать фильтрацию запросов для блокировки запросов

Заголовки сканирования: User-agent

Запретить строки: ZmEu

Чтобы проверить, работает ли он, запустите Chrome с параметром --User-Agent "ZmEu"

. Таким образом, asp.net никогда не вызывается и экономит вам ресурсы процессора / памяти.

1 голос
/ 08 февраля 2011

В IIS 6.0 вы также можете попробовать это ...

Настройте свой веб-сайт в IIS для использования заголовков узлов.Затем создайте веб-сайт в IIS, используя тот же IP-адрес, но без определения заголовка узла.(Я назвал мой «Жулик-сайт», потому что некоторые мошенники умышленно установили свой DNS для своего домена, чтобы разрешить его для моего популярного правительственного сайта. (Я не уверен почему). В любом случае, использование заголовков узлов на нескольких сайтах - хорошая практика.сайт, определенный для случая, когда заголовок хоста не включен, - это способ поймать посетителей, у которых нет вашего доменного имени в HTTP-запросе.

На сайте без заголовка хоста создайте домашнюю страницу, котораявозвращает статус заголовка ответа «HTTP 410 Gone». Или вы можете перенаправить их в другое место.

Любые боты, которые пытаются посетить ваш сервер по IP-адресу, а не по доменному имени, разрешат этот сайт и получатошибка «410 Gone».

Я также использую URLscan от Microsoft и изменил файл URLscan.ini, чтобы исключить пользовательскую строку «ZmEu».

0 голосов
/ 07 мая 2011

Настройте сервер должным образом и не беспокойтесь о злоумышленниках :) Все, что они делают, - это пытаются использовать некоторые базовые возможности, чтобы увидеть, не заметили ли вы очевидную ловушку.Нет смысла отфильтровывать этого хакера, который достаточно хорош, чтобы подписать его работу для вас.Если вы присмотритесь к своим лог-файлам, то увидите, что так много ботов делают это постоянно.

...