ASP.NET MVCでZMEU攻撃を停止します
-
27-09-2019 - |
質問
最近、私のELMAH例外ログは、私のサーバーに対してDAM ZMEUセキュリティソフトウェアを使用している人々からの試みでいっぱいです
「Zmeuとは何ですか?」と考えている人のためにこれが説明です...
「Zmeuは、WebベースのMySQLデータベースマネージャーであるPhpMyAdminのバージョン2.XXでセキュリティホールを発見するために使用されるセキュリティツールのようです。このツールは、東ヨーロッパのどこかから生まれたようです。すべてのブラックハットセキュリティツールに起こっているように見えるように、それは中国に向かいました。そこでは、世界中のWebサーバーに対する非停止ブルートフォース攻撃のために使用されてきました。」
この迷惑な攻撃についての素晴らしいリンク - > http://www.philriesch.com/articles/2010/07/getting-a-little-sick-of-zmeu/
.netを使用しているので、彼らは私のサーバーでphpmyadminを見つけることはありませんが、私のログがいっぱいであるという事実は、疲れているようになります。
上記のリンクは、htaccessを使用した優れた修正を提供しますが、ApacheではなくIIS7.5を使用しています。私は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ファイルにこのように追加できるものはありますか?
解決
代替の答え 私のもう1つ ...これは、エルマがZmeuによって生成された404エラーの記録を具体的に止め、残りのサイトの動作を変更せずに残します。これは、ハッカーに直接メッセージを返すよりも少し目立たないかもしれません。
エルマがどのようなものをログインするかを制御できます 色々な方法, 、1つの方法は、これを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またはforgotten_passwordを取得するたびに、クエリを次のようにリダイレクトします。
<meta http-equiv='refresh' content='0;url=http://www.ripe.net$uri' />
またはapnicまたはarin]。 Ripe.netの管理者がハッキングされるのが好きではないことを願っています。
IIS 6.0では、これを試すこともできます...
ホストヘッダーを使用するようにIISでWebサイトを設定します。次に、同じIPアドレスを使用してIISでWebサイトを作成しますが、ホストヘッダー定義はありません。 (私は私の「Rogue Site」とラベル付けしました。なぜなら、一部のRogue Oonceは彼のDNSを彼のドメインに配信して私の人気のある政府サイトに解決したからです。ホストヘッダーが含まれていない場合に定義されたサイトは、HTTPリクエストにドメイン名を持っていない訪問者を捕まえる方法です。
ホストヘッダーのないサイトで、「HTTP 410 Gone」の応答ヘッダーステータスを返すホームページを作成します。または、他の場所でリダイレクトすることもできます。
ドメイン名ではなくIPアドレスでサーバーにアクセスしようとするボットは、このサイトを解決し、エラー「410 Gone」を取得します。
また、MicrosoftのURLSCANを使用し、URLSCAN.iniファイルを変更して、ユーザーAngent String「Zmeu」を除外しました。
IIS 7.xを使用している場合は、リクエストフィルタリングを使用してリクエストをブロックできます
スキャンヘッダー: User-agent
文字列を否定: ZmEu
動作する場合に試してみるには、パラメーターでChromeを開始します --User-Agent "ZmEu"
このようにして、ASP.NETが呼び出されることはなく、CPU/メモリを保存します。
Microsoft URLの書き換えモジュールにこのパターンを追加しました。
^$|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で実行され、LanguageユーザーエージェントとWebリクエストを使用してLocalHostにPDFのようなものを組み立てます。 Jruby、Groovy、またはScalaは同様のことをするかもしれませんが、私はそれらをテストしていません。
サーバーを適切にセットアップし、攻撃者を心配しないでください:)彼らがすることは、あなたが明らかな落とし穴を見落としているかどうかを確認するためにいくつかの基本的な可能性を試すことだけです。あなたのために彼の作品に署名するのに十分なほど素晴らしいこのハッカーをフィルタリングするポイントはありません。ログファイルを詳しく見ている場合は、常にこれを行っているボットがたくさんあります。