سؤال

في الآونة الأخيرة ، تمتلئ سجلات استثناءات Elmah بمحاولات من الأشخاص الذين يستخدمون برنامج أمان DAM ZMEU مقابل الخادم الخاص بي

لأولئك الذين يفكرون "ماذا بحق الجحيم هو Zmeu؟" هذا تفسير ...

"يبدو أن Zmeu أداة أمان تستخدم لاكتشاف ثقوب الأمان في الإصدار 2.xx من PhpmyAdmin ، وهو مدير قاعدة بيانات MySQL قائم على الويب. يبدو أن الأداة قد نشأت من مكان ما في أوروبا الشرقية. مثل ما يبدو أنه يحدث لجميع أدوات أمن القبعة السوداء ، فقد شق طريقه إلى الصين ، حيث تم استخدامه منذ ذلك الحين لهجمات القوة الغاشمة غير الغاشمة على خوادم الويب في جميع أنحاء العالم. "

هيريس رابط رائع حول هذا الهجوم المزعج -> http://www.philriesch.com/articles/2010/07/getting-a-little-sick-of-zmeu/

أنا أستخدم .NET حتى لا يجدون phpmyadmin على الخادم الخاص بي ، لكن حقيقة أن سجلاتي ممتلئة من Zmeu تهاجمها.

يوفر الرابط أعلاه حلًا رائعًا باستخدام HTACCESS ، لكن IM باستخدام IIS7.5 ، وليس Apache. لدي موقع ASP.NET MVC 2 ، لذا فأنا أستخدم ملف Global.asax لإنشاء طرقاتي

هنا هو 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>

سؤالي هل هناك أي شيء يمكنني إضافته مثل هذا في ملف Global.ascx الذي يفعل نفس الشيء؟

هل كانت مفيدة؟

المحلول

إجابة بديلة ل بلدي الآخر ... هذا واحد يمنع 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);
            }           
        }
    }
}

للحصول على هذا الحدث لإطلاق النار ، ستحتاج إلى الرجوع إلى Elmah DLL من مشروعك ، وإضافة أ using Elmah; إلى الجزء العلوي من global.asax.cs.

يبدأ الخط logger.InfoFormat يفترض أنك تستخدم log4net. إذا لم يكن كذلك ، قم بتغييره إلى شيء آخر.

نصائح أخرى

كانت هجمات 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 في الكود لتسجيل المناسبات عند بدء تشغيل المرشح.

لقد عملت هذه الوحدة معي في الاختبار (عندما أرسل قيم المستخدم المناسبة إليها). لم أختبرها على خادم حقيقي حتى الآن. ولكن يجب أن تفعل الخدعة.

على الرغم من أنه ، كما قلت في التعليقات أعلاه ، يخبرني شيء ما أن إرجاع 404 من الأخطاء قد يكون استجابة أقل وضوحًا من السماح للمتسللين بمعرفة أنك على دراية بها. قد يرى البعض منهم شيئًا كهذا يمثل تحديًا. لكن بعد ذلك ، لست خبيرًا في علم نفس المتسللين ، فمن يدري.

كلما حصلت على Zmeu أو phpmyadmin أو forgetten_password أعيد توجيه الاستعلام إلى:

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

أو apnic أو arin]. آمل أن لا يحب المسؤولون في RIPE.NET الخرق.

على IIS 6.0 يمكنك أيضًا تجربة هذا ...

اضبط موقع الويب الخاص بك في IIS لاستخدام الرؤوس المضيفة. ثم قم بإنشاء موقع ويب في IIS ، باستخدام نفس عنوان IP ، ولكن بدون تعريف رأس المضيف. (لقد وصفت لي "موقع Rogue" لأن بعض Rogue Oonce قاموا بتعيين DNS الخاص به لمجاله لحلها إلى موقعي الحكومي الشهير. (لست متأكدًا من السبب) على أي حال ، فإن استخدام الرؤوس المضيفة في مواقع متعددة هو ممارسة جيدة. موقع محدد للحالة عند عدم تضمين رأس مضيف هو وسيلة للقبض على الزائرين الذين ليس لديهم اسم مجالك في طلب HTTP.

على الموقع بدون رأس مضيف ، قم بإنشاء صفحة رئيسية تُرجع حالة رأس الاستجابة من "HTTP 410 Gone". أو يمكنك إعادة توجيهها في مكان آخر.

أي برامج روبوتات تحاول زيارة الخادم الخاص بك بواسطة عنوان IP بدلاً من اسم المجال ستحل هذا الموقع والحصول على الخطأ "410 Gone".

أستخدم أيضًا urlscan من Microsoft ، وقمت بتعديل ملف urlscan.ini لاستبعاد سلسلة ster string user ، "Zmeu".

إذا كنت تستخدم IIS 7.x ، فيمكنك استخدام تصفية الطلب لحظر الطلبات

رؤوس المسح: User-agent

إنكار الأوتار: ZmEu

لمحاولة إذا كان يعمل بدء تشغيل Chrome مع المعلمة --User-Agent "ZmEu"

وبهذه الطريقة ، لم يتم الاحتجاج على ASP.NET ويوفر لك بعض وحدة المعالجة المركزية/الذاكرة ..

أضفت هذا النمط في وحدة إعادة كتابة Microsoft 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: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

الجزء العلوي المدرج ، "^$" هو regex لسلسلة فارغة. لا أسمح للروبوتات بالوصول إلى الصفحات ما لم يتم التعرف عليها مع وكيل المستخدم ، فقد وجدت في أغلب الأحيان الأشياء الوحيدة التي تضرب هذه التطبيقات مع وكيل مستخدم هي أدوات أمان متوقفة.

سوف أنصحك عند منع الروبوتات المحددة للغاية. ببساطة استخدام كلمة عامة مثل "النار" يمكن أن يظهر إيجابيًا من أجل "Firefox" ، يمكنك أيضًا ضبط regex لإصلاح هذه المشكلة ، لكنني وجدت أنه من الأسهل بكثير أن تكون أكثر تحديداً وله فائدة إضافية تتمثل في أن تكون أكثر إفادة للشخص التالي لمس هذا الإعداد.

بالإضافة إلى ذلك ، سترى أن لدي قاعدة لـ Java/1.7.0_25 في هذه الحالة ، كان من المفيد أن يكون روبوتًا باستخدام هذا الإصدار من Java لإلقاء خوادمي. كن حذرًا في حظر وكلاء مستخدمين محددين للغة ، فإن بعض اللغات مثل ColdFusion تعمل على JVM واستخدم وكيل مستخدم اللغة وطلبات الويب إلى مضيف محلي لتجميع أشياء مثل PDFs. قد يقوم Jruby أو Groovy أو Scala ، بأشياء مماثلة ، لكنني لم أختبرها.

قم بإعداد الخادم الخاص بك بشكل صحيح ولا تقلق بشأن المهاجمين :) كل ما يفعلونه هو تجربة بعض الاحتمالات الأساسية لمعرفة ما إذا كنت قد تجاهلت مأزقًا واضحًا. لا جدوى من تصفية هذا المتسلل الذي لطيف بما يكفي لتوقيع عمله من أجلك. إذا كان لديك نظرة فاحصة على ملفات السجل الخاصة بك ، فسترى أن هناك الكثير من الروبوتات التي تقوم بذلك طوال الوقت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top