چگونه وب سایت های آلوده و ارسال کننده هرزنامه ها و اسپم را در سرور شناسایی کنیم؟

Avatar
نویسنده: باقری
یکشنبه 16 فروردین 1394
مطالعه: ۱۳ دقیقه ۰ نظر ۵۷۰ بازدید

همه کاربران اینترنتی بارها با مشکلات آزار دهنده اسپم و هرزنامه ها روبرو هستند و علی رغم وجود ده ها راهکار و پیش بینی های مختلف سرویس دهنده های بزرگ اینترنتی مانند جی میل ( gmail ) ، یاهو ( yahoo ) و غیره ، خیلی بعید است که از آندسته کاربرانی باشید که تابحال مشکل اسپم شما را کلافه نکرده باشد. با این حال برخی از کاربران تصور می‌کنند که اشخاص حقیقی در پشت رایانه‌های خود اقدام به ارسال این ایمیل‌ها می‌نمایند. در صورتی که اسپمرها از ایمیل‌ سرورها و یا حساب‌های ایمیل هک شده و یا حتی حفره های امنیتی در وبسایت‌ ها  اقدام به ارسال اسپم می‌نمایند.  بیشتر مدیران سرورهایی که توسط اسپمرها به کار گرفته شده است حتی تا زمانی که صدای اعتراض کاربرانشان مبنی بر عدم دریافت ایمیل‌هایشان در مقصد بلند نشده است، از این امر آگاه نمی‌شوند. یا زمانی متوجه این مشکل می‌شوند که آی‌پی سرور در blackList های عمومی ثبت شده باشد. در این زمان است که مدیر سرور بصورت مداوم به جستجوی عامل اسپم پرداخته تا سرور را از این مشکل نجات دهد. اما چگونه می‌توان عامل اسپم را در سرور شناسایی نمود؟
در این مقاله چند راه برای یافتن اسپمر و اکانت آلوده برروی سرور معرفی می‌گردد.

علائم وجود مشکل اسپم برروی سرور:

  • سرور کندتر شده و منابع بیشتری مصرف می‌نماید.
  • ایمیل‌های ارسالی از روی سرور به مقاصد خود نمی‌رسند.
  • پیغام‌هایی در دایرکت ادمین مبنی بر ارسال تعداد زیاد ایمیل توسط یکی از کاربر ها دریافت می‌گردد.
  • آی‌پی سرور در بلک لیست ها ( blacklist ) ثبت می شود.
  • حجم بسیار بالایی از فضای سرور با ایمیل های برگشتی اشغال می گردد.
  • صف انتظار طولانی برای ایمیل های ارسالی

اسپمر ها ( spammer ) از چه روش‌هایی بیشتر استفاده می‌کنند؟

  • SMTP Spam
  • سایت‌های هک شده
  • اسکریپت‌های perl که برروی سرور بارگزاری می‌نمایند. (این مورد در این مقاله پوشش داده نمی‌شود)

در روش SMTP اسپمرها به یکی از حساب‌های کاربری معتبر تعریف شده برروی سرور دسترسی یافته و از طریق آن اقدام به ارسال ایمیل می‌نمایند.
این مورد به روش‌های گوناگون مانند brute force نمودن حساب‌های کاربری یا به کمک انواع بد افزار ها برروی رایانه شخصی کاربر صورت می پذیرد. البته در صورتی که از رمز های عبور امن استفاده شود احتمال سواستفاده از طریق brute force بسیار دشوار خواهد بود.

استفاده از وبسایت‌های هک شده یکی از متداول ترین روش ها در میان هکر ها می‌باشد.
در این حالت با استفاده از bot ها به صورت خودکار اقدام به اسکن وبسایت‌ها برای یافتن حفره‌های امنیتی رایج نموده ، پس از یافتن وبسایت با حفره امنیتی سریعا از طریق بارگزاری یک فایل حاوی کدهای مخرب  و اجرای آن، از منابع سایت سوء استفاده می‌کنند.
همچنین ممکن است رایانه مدیر سایت نیز آلوده شده و هنگام بارگزاری مطالب و فایل‌های سایت، کدهای مخرب نیز برروی سایت بارگزاری شده و اجرا گردند.

شناسایی اسپم

شناسایی اسپم عموما کمی دشوار می‌باشد. خصوصا زمانی که کاربران زیادی برروی سرور فعال هستند. در اولین حرکت بهتر است تا با مراجعه به دایرکت‌ادمین  بخش email accounts و صفحه email usage ریز ایمیل های ارسالی را مرور نمائید و موارد مشکوک را مورد بررسی قرار دهید. همچنین پیغام‌هایی مانند زیر در message system  در دایرکت ادمین  به شناسایی اسپم کمک می‌کنند:

Warning: 600 emails have just been sent by <username>

مورد دیگری که شاید از دست دایرکت‌ادمین بر بیاید بخش Mail Queue administration است.
اگر بخش Mail Queue باز نمی‌شود تقریبا می‌توان یقین نمود که سرور با مشکل اسپم روبرو می‌باشد. این بدان معنی است که آنقدر پیغام‌های ایمیل در صف انتظار ارسال هستند که این صفحه نمایش داده نمی‌شود.
اگر چنانچه این صفحه باز شد و مشاهده نمودید که تعداد زیادی ایمیل در انتظار ارسال ‌است و بیشتر آنها از یک فرستنده و یا یک گیرنده هستند شاید بهتر باشد تعدادی از این ایمیل‌ها را با کلیک برروی mail ID بررسی بفرمایید. توجه فرمائید که معمولا لیست انتظار به چندین صفحه گسترش خواهد یافت.
البته بهترین راه بررسی لاگ‌های Exim (سرویس ارسال ایمیل به خدمت گرفته شده توسط directadmin) می‌باشد. برای آشنایی بیشتر با این سرویس، می‌توانید به مقاله Exim چیست ؟ مراجعه کنید.

بررسی لاگ Exim :

برای بررسی لاگ اگزیم لازم است تا ابتدا به سرور از طریق ssh متصل شوید. شما می‌توانید از مقاله آموزش نرم افزار putty کمک بگیرید. مسیر قرار گیری لاگ‌ها به شرح زیر است.

/var/log/exim

 

اخرین بخش لاگ‌ها در فایلی به نام mainlog ذخیره می‌گردد.
پس از اتصال ابتدا برای مشاهده تعداد ایمیل‌های در صف ارسال از دستور زیر استفاده نمایید.

[root@server]# exim -bpc
1069713

 

در مثال فوق در حدود یک میلیون ایمیل در انتظار ارسال هستند. البته این عدد می‌بایست با توجه به تعداد کاربران سرور تحلیل گردد، ولی در این مثال به احتمال زیاد سرور با مشکل اسپم روبرو است.
سپس با استفاده از دستور زیر 10000 خط انتهایی mainlog را چاپ نمایید.

دستور چاپ کردن 10000 خط mainlog

[root@server]# tail -n 10000 mainlog | more

 

با زدن دستور فوق 10000 خط انتهایی لاگ‌ها به صورت صفحه به صفحه در ترمینال چاپ شده و با زدن space می‌توانید به صفحه بعدی بروید.
ممکن است در بین لاگ‌ها پیغامی همانند زیر مشاهده نمایید:

2013-12-28 23:48:27 1Vx2g2-0001EU-Cq ** [email protected] F=<> R=lookuphost T=remote_smtp: SMTP error from remote mail server after  RCPT TO:<[email protected]>;: host aspmx.l.google.com [172.28.15.27]: 550-5.1.1 The email account that you tried to reach does not exist. Please tryn550-5.1.1 double-checking the recipient's email address for typos orn550-5.1.1 unnecessary spaces. Learn more  atn550 5.1.1 http://support.google.com/mail/bin/answer.py?answer=6596 l2si45202725een.62 - gsmtp
2013-12-28 23:48:27 1Vx2g2-0001EU-Cq Frozen (delivery error message)

اهمیت Source Addres ایمیل

در این پیغام  همانطور که قابل مشاهده میباشد، با یک ایمیل بازگشت داده شده (  bounce e-mail ) روبرو هستیم. در حالت عادی  وجود ایمیل‌های بازگشت داده شده امری عادی می باشد، اما اگر با تعداد بسیاری زیادی از آن روبرو باشیم لازم است تا  مبدا و مقصد ایمیل ها رو بررسی نمائید در صورتیکه از یک source address (حساب کاربری ارسال کننده ایمیل) که در این مثال [email protected] است تعداد زیاد مشابهی را ملاحظه می فرمائید می بایست حساب کاربری ایمیل را به عنوان یک حساب مشکوک یادداشت نمایید تا بعدا بیشتر آن را مورد بررسی قرار دهید.

مورد دیگری که ممکن است در لاگ‌ها مشاهده کنید به صورت زیر می‌باشد:

2013-12-29 00:00:47 1Vqqlt-0002LF-0d ** [email protected] F=<[email protected]>; R=lookuphost T=remote_smtp: SMTP error from remote mail server after initial connection: host smtp.secureserver.net [172.21.10.17]: 554-m1pismtp01-029.prod.mesa1.secureserver.net n554 Your access to this mail system has been rejected due to the sending MTA's poor reputation. If you believe that this failure  is in error, please contact the intended recipient via alternate means.

 

پیغام فوق گویای این است که آی‌پی سرور در مقصد بلاک شده است. البته ممکن است تحلیل این مسئله بسته به سرور مقصد، کمی متفاوت باشد.

مثال‌های زیر مواردی هستند که می‌بایست در فایل لاگ به دنبالشان باشید:

مثال الف:

2013-12-27 11:34:51 1VwUkl-0006D4-Co <= [email protected] U=apache P=local S=3436 T="R0L3x AND v14rga" from <[email protected]>; for [email protected] 2013-12-27 11:34:52 1VwUkl-0006D4-Co => [email protected] F=<[email protected]>; R=lookuphost T=remote_smtp S=3576 H=172.11.80.170 [172.11.80.170] C="250 2.0.0 Ok: queued as E19AA22B0173"
2013-12-27 11:34:52 1VwUkl-0006D4-Co Completed

 

مثال ب:

2013-12-27 20:36:10 1VwdCb-0001ze-5c <= [email protected] H=([172.25.100.95]) [172.25.100.95] P=esmtpa A=login:[email protected] S=100156 [email protected] T="FREE MONEY EVERYDAY - £1 MILLION IN UNDER 7 YEARS" from <[email protected]>; for [email protected]

 

ارسال شدن ایمیل از webserver

در مثال الف ، عبارت “U=apache” بیانگر این میباشد که ایمیل از طریق وبسرور ارسال شده است. البته اگر سرویس suphp و یا mod_ruid2 برروی سرور فعال باشند، دیگر نام آپاچه در این بخش ثبت نخواهد شد. در این صورت نام کاربری ثبت شده در دایرکت ادمین در این فیلد ثبت خواهد شد که می توان به کمک اکانت ارسال آلوده را شناسایی نمود. دقت تمائید در این حالت محتوای فیلد F یا ارسال کننده لزوما واقعی نمی باشد و ممکن از  اطلاعات غیرواقعی  استفاده شده باشد که از طریق دامنه آن امکان شناسایی کاربر وجود ندارد.
متغیر T مربوط به عنوان ایمیل بوده که در این مثال اسپم بودن آن به درستی مشخص می‌باشد.

ارسال شدن ایمیل از SMTP

در مثال ب ، عبارت “P=esmtpa” را مشاهده می‌نمایید که نشان می‌دهد ایمیل از طریق smtp ارسال شده است. آی‌پی ارسال کننده به صورت  “H=([172.25.100.95]) [172.25.100.95]”  نمایش داده شده و حساب کاربری ای که از آن جهت ارسال استفاده شده به صورت “A=login:[email protected]“ درج گردیده است که در این حالت شما می توانید بسادگی اکانت آلوده را شناسایی نمائید. همچنین از عنوان ایمیل مثال ب نیز واضح است که ایمیل ارسالی اسپم می‌باشد.

پس از بررسی لاگ‌ها می‌توانید با استفاده از دستور زیر به بررسی بیشتر موارد مشکوکی که یادداشت نموده‌اید بپردازید.

دستورات کاربردی برای موارد مشکوک به اسپم

[root@server]# tail -n 10000 mainlog | grep [email protected] | more

 

و یا

[root@server]# tail -n 10000 mainlog | grep user | more

 

هعمچنین می‌توانید با دستور زیر کلیه اطلاعات مربوط به یک mail ID را در ترمینال چاپ نمایید:

[root@server]# tail -n 10000 mainlog | grep user | more

 

با دستور زیر می‌توانید در بین لاگ‌ها عنوان یکی از ایمیل‌ها را جستجو نمایید:

[root@server]# tail -n 10000 mainlog | grep -i "FREE MONEY EVERYDAY" | more

 

با دستور زیر می‌توانید ایمیل‌های در صف انتظار را در خروجی ترمینال و به صورت صفحه به صفحه چاپ نمایید:

[root@server]# exim -bp | more

 

در صورت تمایل به مشاهده اطلاعات ( header ) یک ایمیل خاص، می‌توانید با استفاده از دستور زیر و mail ID این مورد را بررسی بفرمایید:

[root@server]# exim -Mvh 1Vx7MK-0007RR-Re

 

نمونه از خروجی این دستور، به شکل زیر خواهد بود:

198P Received: from apache by your.servername.com with local (Exim 4.72)
(envelope-from <[email protected]>;)
id 1Vx7MK-0007RR-Re
for [email protected]; Sun, 29 Dec 2013 04:48:12 +0100
038  Date: Sun, 29 Dec 2013 04:48:12 +0100
057I Message-Id: <[email protected]>;
030T To: [email protected]
051  Subject: Exper tP harma cy
059  X-PHP-Script: www.example.com/components/com_module/x.php for 172.27.17.218
028F From: [email protected]

 

From Apache :

بخش “from apache” نشان دهنده این است که ایمیل توسط وبسرور ارسال شده و بخش “X-PHP’Script” نام فایل اسکریپتی را نمایش می‌دهد که از طریق آن ، ایمیل ارسال شده است. این فیلد به یافتن عامل مخرب در اسکریپت کمک به سزایی می‌نماید.
اگر ایمیل از طریق SMTP‌ ارسال شده باشد راه‌حل بسیار ساده خواهد بود. تنها کافی است اطلاعات ورود به حساب کاربری لو رفته را تغییر داده و به کاربر مربوطه اطلاع دهید که مشخصات حساب ایمیل افشا شده است.
در صورتی که اسپم از طریق وبسرور ارسال می‌گردد می‌توانید موقتا حساب کاربری مربوطه را مسدود نمایید. این مورد به اضافه شدن اسپم جدید به صف ارسال جلوگیری می‌نماید.

اکنون می‌توانید جستجو برای اسکریپت مخرب را آغاز نمایید.
متاسفانه بخش “X-PHP-Script” همواره در لاگ‌ها وجود نداشته و یافتن اسکریپت ارسال کننده اسپم می‌تواند امری دشوار باشد. خصوصا اگر هاست مربوطه دارای تعداد فایل‌های زیادی باشد.
همچنین ممکن است بیش از یک اسکریپت مخرب وجود داشته باشد. به عنوان مثال کاربرانی که از نسخه‌های بسیار قدیمی اسکریپت استفاده می‌نمایند ممکن است چندین bot اقدام به هک سایت و بارگزاری اسکریپت مربوط به خود نموده باشد.
یکی از راه‌ها جستجو برای فایل‌های کد شده base64 است که بسیار متداول می‌باشد.
برای این امر وارد مسیر پوشه public_html‌ مربوط به کاربر شوید:

[root@server]# cd /home/username/domains/example.com/public_html

 

سپس با استفاده از دستور زیر فایل‌های کد شده base64 را لیست نمایید:

[root@server]# find . -name '*.php' | while read FILE; do if grep 'eval(base64_decode' "$FILE"; then echo "$FILE" >> maybeinfected; fi ; done

 

دستور فوق کلیه فایل‌های php موجود برروی هاست را جستجو کرده و نام فایل‌هایی که به صورت base64 کد شده اند را در فایلی به نام maybeinfected ذخیره می‌نماید.

در صورتی که می‌دانید مشکل اسپم تقریبا از چه زمانی آغاز شده است می‌توانید با استفاده از دستور زیر فایل‌هایی را که به عنوان مثال در 3 روز گذشته تغییری در آن ایجاد شده لیست نمایید، باید دقت نمائید که ممکن است فایل های اصلی اسکریپت مورد استفاده که احیانا رمز گذاری شده اند نیز در این جستجو نمایش داده شوند.

[root@server]# find . -type f -user apache -ctime -3 | more

 

بخش –user apache

این قسمت جستجو را به فایل‌هایی که مالک آنها apache است محدود ساخته که در صورت تمایل می‌توانید آن را از دستور فوق حذف نمایید.

ممکن است در لیست حاصل شده نام‌های غیر عادی مانند x.php، 424.php، sys2674123.php و … مشاهده نمایید که این فایل‌ها نیازمند بررسی بیشتر خواهند بود.

البته این نکته حائز اهمین خواهد بود که حذف فایل اسکریپت مخرب تنها یک راه حل موقت بوده و در صورتی که اسکریپت بروزرسانی و حفره امنیتی اصلاح نگردد احتمال بسیار زیادی وجود دارد که مجدد به ایم مشکل گرفتار گردد.

خالی نمودن صف ارسال ایمیل

شما می‌توانید با استفاده از دستورات زیر صف انتظار ارسال ایمیل را خالی نمایید تا هزاران ایمیلی که هنوز در انتظار ارسال هستند حذف گردند.
یکی از دستورات  قابل استفاده جهت این امر به صورت زیر می‌باشد:

[root@server]# exim -bp | awk '{ print $3 }' | xargs exim -Mrm

 

این دستور به صورت کامل کلیه ایمیل‌های در انتظار ارسال را حذف نموده و در کل سریعترین راه خالی نمودن صف ارسال می‌باشد. با این وجود در صورتی که تعداد ایمیل‌ها زیاد باشد ممکن است، اجرای دستور مدتی به طول بیانجامد.

البته شما می‌توانید  با استفاده از دستور زیر اقدام به حذف تنها ایمیل‌های ارسال شده از طریق حساب کاربری [email protected]  از لیست ارسال نمایید.

[root@server]# exiqgrep -i -f [email protected] | xargs exim -Mrm

 

همچنین می‌توانید نام کاربری ایمیل را از دستور فوق حذف نموده و حذف ایمیل‌ها را تنها به نام دامنه سایت محدود نمایید.

پس از اجرای دستور فوق می‌توایند مجددا با exim –bpc بررسی نمایید چه تعداد ایمیل در صف انتظار حضور دارند.
اگر همچنان تعداد زیادی ایمیل در صف انتظار وجود داشته باشید احتمالا این پیغام‌ها freeze شده اند که می‌توانید با استفاده از دستور زیر آنها را حذف نمایید:

[root@server]# exipick -zi | xargs exim -Mrm

 

ممکن است هنگام حذف با پیغام خطای زیر روبرو شوید:

exim: malformed message id <[email protected]>; after -Mrm option

برای رفع این خطا ابتدا با استفاده از دستور زیر mail ID ایمیل را که باعث ایجاد خطا شده است پیدا نمایید:

[root@server]# exim -bp | exiqgrep -i
Line mismatch: 50h       1VwxAB-0005m5-7R <[email protected]>;

 

با استفاده از دستور زیر این ایمیل را به صورت جداگانه حذف نمایید:

[root@server]# exim -bp | exiqgrep -i
Line mismatch: 50h       1VwxAB-0005m5-7R <[email protected]>;

 

سپس مجددا اقدام به حذف ایمیل‌های در انتظار نمایید. البته ممکن است چندین بار این خطا تکرار شود که در هر بار می‌بایست ایمیل ایجاد کننده خطا را به صورت جداگانه حذف نمایید.

در حالت کلی اسپمر ها از شیوه های بسیار متنوعی برای ارسال اسپم استفاده می کنند که یافتن آنها امری بسیار زمانبر می باشد، رعایت برخی اصول از جمله بروزرسانی منظم اسکریپت های مورد استفاده و عدم استفاده از نرم افزارهایی که از پشتوانه مناسبی برخوردار نیستند و همچنین محدود نگه داشتن تعداد ایمیل ارسالی مجاز هر کاربر می تواند در بررسی بهتر این مسئله مفید واقع گردد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


ارسال دیدگاه در وبلاگ پارس‌پک را مطالعه کرده و آن‌ها را می‌پذیرم.

با خدمات ابری پارس پک آشنا شوید

اولین ارائه‌دهنده خدمات رایانش ابری در ایران هستیم