ابتدا به توضیح برخی مسایل می پردازیم:
آی پی چیست : اعدادی است که شناسه ی کاربری ما تو اینترنت هستش مثل آدرس خونه و ....
ما هر زمان که به اینترنت وصل میشیم باید یه آدرس داشته باشیم که از طریف آن هم اطلاعات به آن آدرس فرستاده شود هم دریافت که, به آن آدرس آی پی می گویند. آی پی یک عدد 32 بیتی(هر 8 بیت = یک بایت) است مثل 000.000.000.000 که هر کدام از قسمت ها می تونه از 0 تا 255 باشد.بجز آی پی سرور هایی که سایت روشون قرار دارد و بعضی از اینترنت ها که آی پی ها متغیر هست.شما هر بار که به اینترنت وصل می شوید با دیال آپ و Adsl آی پی که به شما تعلق میگیرد فقط در آن رنج که در Isp دارد وجود تغیر می کند.
Port چیست: پرت مثل پنجره های یک خونه می مونه که هوا از آن داخل و خارج می شود. پورت رو می توان اینطوری تعریف کرد که داده ها و خروجی ها را وارد و خارج میکیند.Port ها را ما معمولا به عدد میشناسم.
مثل
Port 25 Email
Port 80 Http
Port 22 Ssh
Port 21 Ftp
Port 13 DateTime
و ....
سرور چیست : سرور ها کامپیوتر های معمولا قدرتمند ی هستند که با سرعت بالا به اینترنت وصل هست. هر سرور یک سیستم عامل داره که میتونه Linux یا Windows باشه ویا ... روی هر کدام از این سیستم عامل ها چند تا برنامه سرویس دهنده وصل هست مثل Apache یا Iis.
هاست چیست : به فضای روی وب رو میگن هاست حالا این فضا ها از کجا اومده این فضا ها از جایی نیومده بلکه همان هارد دیسک های روی سرور هستند.
دامین چیست : دامین رو میشه این جوری تعریف کرد که آدرس روی اینرنت رو دامین میگین.هر دامین یک آی پی هست در اصل که ما وقتی آدرس سایت رو وارد مرورگر میکنیم اون رو تبدیل به آی پی میکنه و ما سایت را میبینیم.
لینوکس چیست : لینوکس یه سیستم عامل از خانواده ی یونیکس هست که به خاطر امنیت بالا در بیشتر سرور ها استفاده میشه.
باگ چیست : باگ یعنی حفره ی امنیتی یا مشکل امنیتی که از آن طریق میتوان نفوذ کرد اکثر باگ هام توسط اشتباهات در برنامه نویسی رخ میدهد. ما باگ های زیادی در موارد مختلف داریم که مهمترین آنها در وب محدود میشه به :
XSS (Cross site scripting)
Sql Injection
Rfi
Lfi
که به ترتیب نوشتنشون بیشتر دیده میشن
WebAppliction چیست : وب اپلیکیشن به سیستم های مدریت محتوا میگن یعنی مثل Php Nuke و Joomla وVbulletin , ...
Remote چیست : به طور کلی میشه دسترسی از راه دور رو ریموت تعریف کرد.
Local چیست : لوکال را می توان به دسترسی نزدیک و کامل تر از Remote تعریف کرد.
هک کردن روش های مختلفی دارد :
انواع باگ ها:
1 - sql injection :
همان طور که مشاهده کردید sql injection یا تزریق کد یکی از باگ هایی هست که هر سایت ممکنه داشته باشد.
در این حالت هکر با وارد کردن کارکتر های غیر مجاز به دیتابیس باعث به وجود آمدن خطا هایی می شود که هکر با استفاده از این خطا ها می تواند اطلاعات دیتابیس را در آورده و در بعضی مواقع وارد و در بعضی مواقع یک فایل بسازد(Shell). (در زیر شل توضیح داده خواهد شد)
ما چندین نوع دیتابیس داریم که روش Inject کردن هر کدام با دیگری فرق داره
مانند Mysql , Mssql ,Access,Oracle,db2, و غیره.
که هر کدام از این دیتابیس ها خود دارای چندین ورژن مختلف هستن!
برای مثال mysql :
همان طور که در بالا ذکر گردید هکر با وارد کردن بعضی کارکتر های غیر مجاز باعث رخ دادن خطا در دیتابیس می شود و اگر برنامه نویس هنگام فرستادن دستورات کاربر به دیتابیس هیچ کنترلی روی کارکتر های ورودی صورت ندهد دیتابیس خطا میده و هکر با استفاده از این خطا ها بدون دسترسی داشتن اطلاعات رو بیرون می کشد.
همان طوری که دوستان اطلاع دارن اطلاعات سایت که با بانک ارتباطی در ارتباط هست در اطلاعات سایت در دیتابیس ذخیره میشه حالا هکر می تواند این اطلاعات را با استفاده از خطا هایی که به وجود میاره بخواند یا وارد کند.
چند نکته :
1 - هکر با استفاده از کارکتر های غیر مجاز مثل (') باعث به وجو امدن خطا میشیم.
2 - هکر از قسمت های مختلفی می تواند اینجکت کنیم مثل آدرس Url که با بانک اطلاعاتی در ارتباط باشه یا لاگین پیج یا هر جایی که باگ داشته باشه!
3 - هکر برای بدست آوردن اطلاعات داخل دیتابیس یا وارد کردن آن باید نام جداول یا فیلد ها رو بداند بعد اطلاعات را به دست یا وارد کند. اسم تیبل و فیلد را نیاز دارد برای اینکه بتواند اطلاعات اونها رو بخواند مثل این میمونه که ما باید آدرس یه شخصی رو بدونیم که بریم دم خونش !
2 - LFI
همان طور که در بالا توضیح داده شد یکی از باگ ها باگ rfi هست.این باگ با بی احطیاتی برنامه نویس در استفاده از توابع Include و ... به وجود میاد.
در اصل این توابع (include , require ... ) فایل یا صفحه ای رو فراخوانی میکنن که اگر روی این درخواست کنترلی نباشه میتونه منجر به باگ Rfi یا حتی Lfi بشه.
هک Lfi یا Local File Inclusion یک نوع دسترسی لوکال به هکر برای مشاهده ی فایل های سرور مورد نظر میده (یعنی به همه چیز روی سایتتون "نه سرورتون" دسترسی پیدا می کنه!). که همانطور که ذکر شد باگ Lfi بیشتر در اشتباهات برنامه نویس در استفاده از توابعی مثل Include ,require() و غیره رخ میده.
با استفاده از این باگ حرکت های زیادی میشه کرد از جمله
1 - تبدیل آن به اجرای دستورات از راه دور با استفاده از لوگ های Apache
2 - خواندن فایل های مهم سیستمی با فایل های config
و ...........
3-Xss
Xss مخفف Cross Site Scripting است اما مخفف این سه کلمه CSS مشود که یک زبان طراحی صفحات وب است به همین علت کارشناسان به اجبار اسم این این باگ را Xss گذاشتند. این باگ که یکی از فراون ترین باگ های موجود میباشد که طبق آمار 69 درصد وبسایت ها این باگ را دارن. از نظر امنیتی باگ مهمی به حساب نمیاد با استفاده از این باگ میشه روی سیستم قربانی انواع اقسام نفوذ رو انجام داد.(در قسمتی از سایت که باگ دارد شما قادر به اجرا کردن کد های JavaScript هستید که با استفاده از کد های جاوا اسکریپ کار های زیادی میشه انجام دارد!!!) . در حقیقت این باگ کمک می کنه تا هکر به سیستم نفوذ کند و سپس توسط یکی از همین روش هایی که توضیح داده شد (LFI و sql injection) سایت را هک کند.
* استفاده از شل کد :در این روش هکر از یک اسکریپت به نام شل کد استفاده می کند.ابتدا به مثال زیر جهت درک بهتر قدرت "شل" (shell) توجه نمایید:
مثلا شما امنیت سایتتون در حد بینهایت زیاده و هکر کاملا از نفوذ مستقیم به سایت شما نا امید شده.پس تصمیم می گیره که شما رو دور بزنه .به این صورت کار خود را آغاز می کند که با یک جستجوی ساده نام میزبان شما را در می آورد.مثلا میزبان شما شرکت X است.بعد چک می کند و می بیند که میزبان شما علاوه بر سایت شما 100 سایت دیگر را هم میزبانی می کند.خب شروع می کند به جستجو و با کمی جستجو اون 100 سایت را پیدا می کند.حالا نوبت به هک کردن می رسد.منتها این بار نه سایت شما.بلکه سایت همسایه ی شما!اون سایت که احتمالا ادمین آن یادش رفته اصلا حتی پسورد بیشتر از 6 کاراکتر بگذارد به راحتی هک می شود.خلاصه بعد از هک سایت همسایه ی شما ، با یک شل مخصوص که خودش اون رو دی کد کرده (نا خوانا توسط آنتی ویروس) از سرور شما دسترسی روت می گیرد (یعنی به تمام فایل های موجود در کامپیوتر سرور که میزبانی سایت شما و اون 100 سایت دیگر را بر عهده دارد دسترسی پیدا می کند) و سایت شما را هک می کند.یک دماغ سوخته هم براتون می فرستد و کلی حال می کند.این هم نمونه ی این حمله!
چطور سایت هک شده رو برگردونم ؟
دقت کنید که استفاده از شل نیز یک روش کمکی هست.یعنی ابتدا هکر باید توسط یکی از دو روش گفته شده (ال اف آی و تزریق کد) سایت را هک کند و سپس می تواند از شل برای وسعت دادن به تخریب خود استفاده کند.لازم به ذکر است که هکر می تواند توسط شل حتی آنتی ویروس را از کار بیندازد و به سیستم ویروس تزریق کند یا یک حفره نامریی در سیستم ایجاد کند که هر وقت خواست دوباره برگردد و سایت را هک کند ، دسترسی روت از سرور بگیرد (یعنی به تمام فایل های سیستم عامل دسترسی پیدا کند و بتواند هر آنچه دوست دارد را تغییر دهد) و به بقیه ی سایت های روی اون سرور حمله کند و ...
بهتر است بدانید - حمله ها : یکی از متداول ترین روش ها برای توقف سرویس دهی از راه دور حمله به وسیله بسته های نا متعارف است(یعنی سایت شما سر جاش می ماند و اطلاعاتتان حفظ می شود ولی سروری که سایت روی آن قرار دارد را به زانو در می آورد و دیگر سایت شما از دسترس کاربران خارج می شود!).این نوع حمله،در یکی از پروسه های TCP/IP ایجاد اشکال میکند و اگر سرویس دهنده هدف در یکی از پروسه ها دارای مشکل،ضعف و یا آسیب پذیری باشد ؛ قطعاً در هم شکسته خواهد شد .معمولاً در این نوع حملات حمله کنندگان در هاله امنیتی خود قرار گرفته و کمترین ردپایی از خود به جا می گذارد.در ادامه معروفترین حملات از این قسم را بیان می کنم.
(در حقیقت به این روش هک کردن گفته نمی شود چرا که نفوذی انجام نشده است!)
Ping of Death
در این نوع حمله یک بسته Ping با ظرفیتی بیش از 64 کیلوبایت برای هدف(قربانی) ارسال می شود .با توجه به اینکه ارسال بسته های Ping بزرگ تر از 64 کیلوبایت مجاز نمی باشد، پروسه Icmp با دریافت چنین بسته ای مختل خواهد شد.تا انجا که من اطلاع دارم بسیاری از سیستم های Unix و Windows و چابگر های شبکه در مقابل این نوع حمله آسیب پذیر هستند.
Winnuke
این نوع از حمله از اشتراک پورت بر روی Port tcp 139 ویندوز استفاده میکند.وقتی داده به پورتی که طبق پروتکل SMB مجاز فرمت نشده ، فرستاده می شود و در نتیجه سیسم دچار اختلال خواهد شد.
Land
در این نوع حمله ، یک بسته SPOOF شده به جایی که در آدرس IP مبدا و IP مقصد و همچنین پورت هایی یکسان در 2 سر ارتباط موجود است، فرستاده می شود.ماشین قربانی این بسته را گرفته و تحویل پروسه TCP می دهد ؛چون آدرس مبدا و مقصد یکی است این روال در چرخه افتاده و سیستم دچار سردرگمی شده که در نسخه های قدیمی TCP/IP سیستم دچار اختلال می گردد.
Latierra
تز خانواده حملات Land است، با این قابلیت اضافی که بسته های Land برای چند پورت باز بر روی ماشین هدف ارسال می شود.
Joh2
این نوع از حمله محصول سال 2000 از کشفیات نسبتاً جدیدتر است.امروزه Patch های این چنینی (Exploite) در دنیای زیر زمینی کامپیوتر کشف شده و به اشتراک گذاشته می شوند.
از جمله ابزار نیرومند چنین حملاتی می توان به TARGA نوشته Mixter و Spike نوشته Spikeman اشاره نمود.
حملات گروهی DOS مخفف Denial Of Service به معنی تکذیب سرویس:
الف ) حملات Denial Of Service که به اختصار به آن Dos گفته می شود نوعی از حملات هوشمند و زیرکانه Dos هست که نه تنها مشکلات قبلی حملات Dos را نداشته بلکه مزایایی چون پنهان بودن هویت نفوذگر ، عدم امکان مبارزه توسط قربانی و امکان موفقیت بسیار بالا برای یک حمله کننده را به ارمغان می آورد.
این نوع حمله برای اولین بار درتابستان 1999 در اینترنت ظاهر شد و سپس به طور فزاینده ای اینترنت را به یک میدان تمام عیار جنگ مبدل کرد به صورتی که سایت های بزرگی همچون :
Yahoo,Ebay,CNN,ADMet,Etrade
از این نوع از حملات در امان نماندند و خبر هایی از ناتوانی آن ها برای مقابله و سپس فروپاشی آن ها گزارش شد.
در حملات dos یک کامپیوتر به یک سرور حمله میکند اما امان از حملات DDos !
در حملات توزیع شده DDos (مخفف Distributed Denial-of-Service)حمله کننده سعی می کند از ماشین هایی که در اینترنت پراکنده اند برای حمله یک هدف مشخص بهره ببرد(این ماشین ها چیزی نیست بجز سایت شما و امثال شما!!!!).
به عنوان مثال اگر حمله کننده قصد حمله به یک هدف مشخص به روش sys-flood را داشته باشد چندین ماشین را برای حمله به یک هدف مشخص بسیج میکند.مثلا اگر حمله کننده از 100 ماشین که هرکدام پهنای باند مفید 15Kbps برای کار او داشته باشند استفاده کند ، قربانی با سیل عظیمی معادل 1/5Mbps مواجه خواهد شد.
حمله کننده برای بدست آوردن این پهنای باند از ماشین های مختلف با نرم افزار های زامبی استفاده می کند (این نرم افزار ها معمولاً در قالب برنامه های جذاب و زیبا و رایگان ولی آلوده در سرتاسر اینترنت پراکنده میکند.)(برای مثال می توان یک افزونه ی پر کاربرد وردپرس را با این آلودگی منتشر کرد).به طور معمول نرم افزار های زامبی پس از اجرای ان در یک ماشین(کامپیوتر) منتظر فرمان می مانند و وقتی تعداد ماشین های زامبی زیاد باشد حمله کننده قادر به کنترل همه آنها نمی باشد .بنابر این در حمله به طریق DDos ماشین های زامبی در قالب "گروه" دسته بندی شده و سپس در این حالت هر گروه از ماشین های زامبی توسط یک "سرگروه" هدایت میشوند که خود سر گروه ها تحت کنترل ماشین حمله کننده می باشند.
ب ) حملات SYN Flood: حمله اخیر به سرورهای SCO از نوع DOS و حملات موسوم به SYN Flood بود.در این نوع از حمله با ارسال بسته های اطلاعاتی سعی می شود یک اتصال کامل میان ماشین ارسال کننده و سرور اصلی به طور مصنوعی برقرار شود. دیتای ارسالی با ظاهری کاملاً قانونی از طریق پروتکل های موجود رد می شود؛ اما دیتا مستقیماً پردازشگر سرور را مورد حمله قرار می دهد . بدین معنی که برای دریافت، خواندن و پاسخ به هر بسته اطلاعاتی به عنوان Request سرور نیاز به استفاده از Processor های خود دارد تا آن را آنالیز کند.در حالت عادی پردازشگر سرور یک بسته را نگه داشته و بعد از عملیات به آن جواب می دهد.هنگام نگه داشتن بسته اطلاعاتی، حافظه اشغال می شود .
در این میان هرچه تعداد بسته ها بیشتر بوده و بیشتر به صورت ناگهانی و سیل آسا به طرف حافظه حمله ور شود، حافظه سیستم را بیشتر اشغال کرده و سرور دچار تنگی شده و پردازش کند می شود.
حال اگر سرور ها بدین ترتیب Request مصنوعی دریافت کنند، آنقدر به سرور فشار می آید که ماشین هنگ می کند و بعد یا Restart می شود و یا راهبر آن را خاموش می کند.
سایت نت کرافت با مانیتور کردن SCO گزارش داد وجود حفره روی خط اینترنت و سرورهای SCO حملات بیشتر و متعددی را ایجاد کرد. آنالیز دیتای موسوم به BackScatter نشان از ترافیک بالا و غیر طبیعی روی میل سرور و فایل سرور و نیز اف.تی.پی سرور (FTP Server) سایتSCO داشت.به حدی که بر اساس گزارش نت کرافت 50 هزار بسته اطلاعاتی(Packet) در هر ثانیه سرور SCO را مورد هدف قرار داد و بعد میزان بسته ها کمتر شد و در هر ثانیه مقدار آن به 3هزار بسته در هر ثانیه رسید که در این میان از هر سه Request برای باز شدن سایت یکی از آنها پاسخ مثبت دریافت می کرد . دیوید کنراد مدیر Nominum در این باره گفت : مسئولان SCO می توانستند با نصب Syncookies جلوی حملات را روی سرور خود بگیرند.این برنامه IP های جعلی را که حافظه را با ارسال بسته های تقلبی پر می کند، شناسایی کرده و جلوی آن را میگیرد.
خب همان طور که می بینید دو روش نوذ به سیستم (هک) ال اف آی و تزریق اس کیو ال هست.
الف ) برای LFI وردپرس هکر باید به فایل کانفیگ که یکی از فایل های اصلی وردپرس است (در پوشه ی اصلی اون جایی که وردپرس را ذخیره کرده اید )موجوده نفوذ کند.
فایل کانفیگ در وردپرس قلب امنیتی سایت شما محسوب می شود و هر کسی که به این فایل دست یابد دیگه تمومه.
روش های مختلفی برای دور کردن این فایل از دست هکران وجود دارد
* می توان این فایل را فقط قابل خواندن کرد (آسان ترین روش)(که معمولا به صورت پیشفرض رعایت می شود)
* می توان این فایل را دی کد کرد (ناخوانا کرد.مثلا فکر کنید هکر فارسی زبانه و جز فارسی زبان دیگری بلد نیست.حالا اگر شما این فایل را به زبان هندی بنویسید هکر ازش چیزی سر در نمیاره!کد کردن یعنی اینکه به یک زبانی بنویسید که فقط خودتون و سایتتون اون رو می شناسد!)
* می توانید نام این فایل را از طریق ویرایش هسته وردپرس تغییر داد
* می توان از این فایل نسخه ی تقلبی ساخت و مثلا هکر وقتی وارد شد با فایل کانفیگ تقلبی با اطلاعات نادرست رو به رو شود و ساعت ها با همان مشغول شود!
ولی نکته ی قابل توجه این است که همه ی این کار ها یعنی دست بردن در هسته ی امن وردپرس که امنیتش شهره خاص و عام است.در حقیقت شما اگر فیلم جومونگ رو دیده باشید ، دیدید که وقتی قلعه گوکنی توسط قوای شورشی محاصره شده بود ، فرمانده موهیول از یک راه مخفی خیلی راحت از قلعه خارج شد و این در حالی بود که قوای شورشی پشت دروازه های این قلعه بودند.نکته همین جاست.همیشه راههای مخفی برای ورود و خروج به یک سایت وجود دارد.و وای به حال اون وبمستری که هکر این راه ها را بشناسد.در حقیقت بدی وردپرس همین است.امنیت وردپرس خیلی بالاست ولی از اونجایی که به صورت متن باز دست هر ننه قمری هست پس در عمل نقشه ی سایت شما با تمام راه های مخفی اش دست همه هست و این برگ برنده ی هکر است.شما با تغییر در هسته وردپرس عملا به امنیت سایت خود اضافه نمی کنید.بلکه با عوض کردن نام فایل ها و پوشه ها و ... نقشه ی سایت خود را تغییر می دهید تا هکر با یک چیز غیر منتظره رو به رو شود و برنامه هایی که از قبل چیده شکست بخورد.
منتها وقتی در هسته ی وردپرس تغییر ایجاد می کنید عملا دیگر فقط اسم اون اسکریپت وردپرس باقی می ماند.ولی در عمل شما یک اسکریپت دست ساز ساخته اید.پس احتمالا در آپدیت کردن و یا نصب افزونه ها به شدت به مشکل بر می خورید.لذا این کار ها کار بسیار تخصصی است و از عهده ی هر کسی بر نمی آید.کسی این کار ها را انجام می دهد که کاملا با طرز کار وردپرس و تمام دستوراتش آشنا باشد و بداند پیامد هر دستوری که می دهد چیست.بیخودی که 200 تومن 200 تومن بابت منیج یک سایت نمی گیرند.همین کار ها رو می کنند دیگر!
ب ) روش دیگر تزریق کد هست که همانطور که در بالا گفته شد ، قبل از حمله هکر باید از فرمت جداول بانک اطلاعاتی شما و همچنین نام این جداول آگاه باشد.پس یک راه خیلی ساده برای جلوگیری از این حمله ها تغییر نام جداول بانک اطلاعاتی پیش فرض وردپرس هست.به این صورت که قبل از نصب وردپرس باید به فایل کانفیگ رفته و در همان جایی که اطلاعات بانک اطلاعاتی mysql خود را وارد می کنید ، نام پسوند این جداول را هم به یک نام دلخواه تغییر دهید.
ج)برای جلوگیری از حملات اکسپلوییت (exploit) کاری از دست شما روی هاست اشتراکی (میزبانی وب) بر نمی آید و شما باید هاست خود را از یک جای معتبر و مطمئن که مرتبا سرور ها را مانیتور می کند تهیه کنید.سخت افزار هایی برای جلوگیری از این حمله ها ساخته شده که گران هستند و همه ی میزبانان وب از آن ها استفاده نمی کنند.بالاخره یک فرقی بین هاست ارزان و گران هست دیگر.(این کار ها هزینه دارد!مانیتور و آنتی دی داس سخت افزاری)
شما علاوه بر ساختن دیوار های دفاعی این چنینی یک راه دیگر هم دارید و اون حمله ی متقابل است.این کار شبیه به مین گذاری سایتتون هست.اگر هکر بی احتیاطی کند و روی این مین ها برود سرور شما متقابلا به کامپیوتر هکر حمله می کند و اینجا واقعا هکر عاجز خواهد شد.
مثلا شما جای پوشه ی ادمین (wp-admin)را عوض کرده اید.حالا یک پوشه ی ادمین تقلبی می سازید!توی این پوشه یک فایل با نام index می گذارید که با "الگوریتم شناور دایمانورس" نوشته شده است.خصوصیت این الگوریتم این است که با بازشدن صفحه ی لوگین-ادمین توسط هکر این الگوریتم به کار افتاده و کامپیوتر هکر مورد حمله ی بار اضافی قرار می گیرد و مژینگای سیستم هکر به درجه ی اشتعال می رسد!!!!!!!!
در آخر هم این نکته رو بگم که شما هرچقدر روی امنیت هزینه و تلاش کنید ممکنه نتیجه ندهد.ولی اگر همان تلاش و هزینه رو روی بک آپ گرفتن بکنید حتما نتیجه می دهد.اصلا هکر بیاید کل دیتابیس رو جمع بکند هم شما عین خیالتان نخواهد بود.می تونید بک آپتان را بغل کنید و تا صبح راحت بخوابید.