تست نفوذ چیست، چگونه از نفوذهای غیرمجاز جلوگیری کنیم؟
مفهوم تست نفوذ چیست
تست نفوذ که به آن پنتست نیز گفته می شود، یک حمله سایبری شبیهسازی شده است که با استفاده از آن نقطه ضعفها و ایرادات قابل نفوذ سیستم شناسایی میشود. در برنامه های تحت وب، معمولا تست نفوذ برای تقویت WAF (فایروال اپلیکیشن های تحت وب) مورد استفاده قرار میگیرد. در ادامه خواهیم فهمید که تست نفوذ چیست.
تست نفوذ میتواند برای نفوذ به هر برنامه ای بر روی یک سیستم (مثل پروتکل های رابط کاربری اپلیکیشن ها، سرور های فرانت اند و بک اند) یا شبکه، استفاده شود تا هر ایرادی(مثلا ورودی های بلااستفاده) که ممکن است برای حملات مورد استفاده قرار بگیرد را شناسایی کند.
با توجه به نتایج حاصل از تست نفوذ میتوان امنیت و سیاستهای WAF را افزایش داده و هر گونه نقطه ضعفی را از بین برد.
مراحل تست نفوذ چیست
تست نفوذ را میتوان در 5 مرحله تقسیم بندی کرد.
برنامه ریزی و شناسایی
در این مرحله هدف و محدوده تست نفوذ، از جمله مشخصکردن سیستمهایی که قرار است تحت این فرایند قرار بگیرند و روش انجام آن، تعیین میگردد.
اسکن
در این مرحله، رفتار یک برنامه نسبت به انواع تستها مورد بررسی قرار می گیرد که خود شامل دو مرحله میباشد. در تحلیل ایستا کدهای یک اپلیکیشن بررسی میشود تا رفتار آن در حالت اجرا پیشبینی شود.
در این روش با یک اسکن تمامی کدها بررسی میشود. در تحلیل پویا کدهای برنامه زمانی که برنامه اجرا شده است مورد بررسی قرار میگیرد. به دلیل اینکه با این روش می توان برنامه را به صورت بلادرنگ تحلیل نمود، کاربردیتر است.
ایجاد دسترسی
در این مرحله با استفاده از حملات مختلفی همچون تزریق SQL و ایجاد بک دورها، ایرادات برنامه تحت وب مشخص میگردد. سپس آزمایش کننده از این ایرادات استفاده کرده و با استفاده از روش هایی مثل دستکاری سطح دسترسی، سرقت دادهها و غیره، به اپلیکیشن نفوذ میکند. با این کار میتوان میزان آسیب احتمالی این ایراد در صورت بهره جویی را مشخص کرد.
حفظ و تداوم دسترسی
در این مرحله هدف آزمایشکننده بررسی امکان حفظ و تداوم دسترسی در صورت سوءاستفاده از آسیبپذیری مورد نظر میباشد. بررسی مدت زمان حفظ این دسترسی نیز در دستور کار این مرحله قرار دارد زیرا یک بازیگر مخرب می تواند با تداوم دسترسی، سطح دسترسی خود را افزایش دهد.
در واقع هدف اصلی در این مرحله بررسی حملات APT یا تهدید های پیشرفته و مستمر می باشد که در آن مهاجم به سیستم نفوذ کرده و ماهها در آن سیستم باقی میماند و به جمع آوری اطلاعات حساس آن سازمان میپردازد.
تجزیه و تحلیل
در نهایت اطلاعات حاصل از تست نفوذ در یک گزارش دستهبندی می شود که شامل:
- ایرادات موجود در سیستم که قابل نفوذ و بهره جویی هستند.
- اطلاعات حساسی که می توان طی حملات به آنها دسترسی یافت.
- مدت زمانی که آزمایش کننده توانست بدون اینکه شناسایی شود، در سیستم باقی بماند.
این اطلاعات توسط تیم امنیتی بررسی شده و در نهایت فایروال سازمان دوباره تنظیم می گردد. علاوه بر این اپلیکیشن های دیگر نیز پچ می شوند تا از تهدیدات احتمالی آینده پیشگیری شود.
تست نفوذ با پایتون
با استفاده از زبان برنامه نویسی پایتون نیز میتوان تست نفوذ انجام داد. برای این کار از روش سوکت مدلینگ استفاده میکنیم. برای اجرای سوکت مدلینگ در پایتون باید از ماژول سوکت استفاده کنیم. این کار از طریق یک کد ساده صورت میگیرد:
import socket
s = socket.socket (socket_family, socket_type, protocol = 0)
در این قسمت از کتابخانه سوکت کمک گرفته و یک سوکت ساده ایجاد میکنیم. پارامتر هایی که در ایجاد یک سوکت مورد استفاده قرار میگیرند عبارتند از:
socket_family
در این قسمت از AF_UNIX (به یک فایل مشخص بر روی سیستم مربوط است) یا AF_INET (برای اتصال به هاست از راه دور) استفاده می کنیم.
socket_type
در این بخش از SOCK_STREAM (برای پروتکل های اتصال گرا) یا SOCK_DGRAM (برای پروتکل های بدون اتصال) استفاده می شود.
protocol
معمولا از 0 استفاده می کنیم.
نمونه یک برنامه سوکت سرور ساید:
import socket
def Main():
host = socket.gethostname()
port = 12345
serversocket = socket.socket()
serversocket.bind((host,port))
serversocket.listen(1)
print('socket is listening')
while True:
conn,addr = serversocket.accept()
print("Got connection from %s" % str(addr))
msg = 'Connecting Established'+ "\r\n"
conn.send(msg.encode('ascii'))
conn.close()
if __name__ == '__main__':
Main()
پس از اجرای برنامه نتیجه زیر را مشاهده خواهیم کرد:
socket is listening
Got connection from ('192.168.43.75', 49904)
نمونه برنامه سوکت کلاینت ساید:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
port = 12345
s.connect((host, port))
msg = s.recv(1024)
s.close()
print (msg.decode('ascii'))
پس از اجرا در صفحه متن زیر نمایش داده خواهد شد:
Connection Established
تست کنترل امنیتی
سازمانها برای اطمینان از توانایی پروتکل های امنیتی خود باید از تست کنترل امنیتی که توسط افراد متخصص انجام میگیرد، استفاده کنند. تست کنترل امنیتی شامل بررسی آسیب پذیری های سیستم، آزمون نفوذ واقعی، بررسی لاگهای سیستم، مبادلات صوری، بررسی کدها و آزمایش آنها و همچنین تست استفاده نادرست از منابع و تست رابط کاربری میباشد.
تست آسیب پذیری
در تست آسیبپذیری نقطه ضعف های یک شبکه یا سیستم مشخص می شود. علاوه بر این با این تست می توان اولویت های یک سازمان در برخورد با این نقطه ضعفها را نیز تعیین کرد. تست آسیب پذیری جامع، بخشی از فرآیند مدیریت ریسک می باشد.
مفهوم پویش شبکه در تست نفوذ چیست
در پویش شبکه، IP آدرس های یک شبکه مورد بررسی قرار گرفته و IP های باز مشخص می گردد. در این بررسی تعداد کلاینت های موجود در یک شبکه مشخص می شود.
در پویش شبکه به دنبال نقطه ضعف های سیستم نیستیم. تست تشخیص توپولوژی یا پویش شبکه، دستگاه های مورد استفاده در آن، نحوه ارتباط آنها با یکدیگر و نحوه IP گذاری داخلی را مشخص می کند. یک مهاجم می تواند با این اطلاعات نقشه شبکه را به دست آورد و در نتیجه داده های جمع آوری شده را تحلیل و تفسیر کند. هدف در پویش شبکه این است که بدانیم آیا می توان با استفاده از چنین تستی، نقشه شبکه را بهدستآورد؟
پویش آسیب پذیری شبکه
در این تست شبکه به صورت پیچیدهتری مورد بررسی قرار میگیرد. با این روش سیستم مشخصی هدف قرار داده شده و ایرادات و آسیبپذیریهای آن سیستم مشخص می گردد. در واقع این تست نفوذ برای جلوگیری از حملات سایبری مورد استفاده قرار میگیرد. در این روش با استفاده از ابزارهای مختلف ایرادات شناخته شده در بانکهای اطلاعاتی مورد بررسی قرار میگیرند تا هیچ گونه ایرادی پچ نشده نماند.
بررسی آسیب پذیری اپلیکیشن های تحت وب
از آنجایی که استفاده از چنین اپلیکیشنهایی رواج یافته است، سازمان ها باید از امنیت اپلیکیشنهای تحت وب خود اطمینان حاصل کنند. ابزارهای خاصی برای بررسی آسیب پذیری اپلیکیشنهای تحت وب وجود دارد که از این بین می توان به دو برنامه محبوب QualysGuard و Nexpose اشاره کرد.
اهمیت تست نفوذ چیست
تست نفوذ به عنوان بخش مهمی از تست کنترل امنیتی مطرح است که به هک قانونمند نیز معروف است. در این بخش قصد داریم استراتژیهای مورد استفاده در تست نفوذ را بررسی کنیم.
روش های تست نفوذ چیست
تعیین استراتژی تست نفوذ به اهداف تعیین شده توسط سازمان بستگی دارد اما در حالت کلی روش هایی که هر فردی باید با آن آشنایی داشته باشند به شرح زیر است.
تست White-box
در این روش آزمایشکننده اطلاعات کاملی از سیستم مورد نظر را در اختیار دارد. با استفاده از این اطلاعات آزمایشکننده میتوانند آزمایش نفوذ پذیری عمیق تر و جامع تری انجام دهد.
تست Black box
در این رویکرد هیچ گونه اطلاعاتی در اختیار تیم تست کننده قرار داده نمی شود. به عبارت دیگر آزمایش کننده از سیستم ها و شبکه سازمان کاملا بی اطلاع است و به همین علت ممکن است برخی بخش های مهم در حین تست نفوذ از دید آزمایش کننده دور بماند. در این روش آزمایش کننده باید تلاش بیشتری کرده و یک حمله را شبیه سازی کند.
تست Gray-box
در این رویکرد، اطلاعات محدودی در اختیار آزمایش کننده قرار داده می شود و او باید یک حمله خارجی به سیستم را شبیه سازی کند.
استانداردهای تست نفوذ چیست
متخصصان امنیتی برای انجام تست نفوذ از استانداردهای زیر استفاده میکنند:
- ISO/IEC 27001
- ISO/IEC 27002
- OSSTMM ( Open Source Security Testing Methodology Manual )
- OWASP 2017 (Open Web Application Security Project )
- LPT ( Licensed Penetration Tester methodology from EC-Council )
- CVSS ( Common Vulnerability Scoring System SIG )
تست War dialing
در این روش یک نرم افزار به صورت خودکار با چندین شماره تلفن در محدوده خاصی، تماس می گیرد و اگر مودمی به این خط متصل باشد، آن را شناسایی می کند. مهاجم کد منطقه را به نرم افزار War Dialer وارد می کند و نرم افزار به صورت خودکار با تمامی شماره هایی که دارای آن کد منطقه هستند تماس می گیرد. در این حمله شرکت ها آسیبپذیری بیشتری دارند.
ویدیو پییشنهادی : آموزش پایتون مکتب خونه
با استفاده از لاگ شماره تلفن آن منطقه، مهاجم می تواند به کامپیوتری که به مودم متصل است دسترسی پیدا کند. برخی از این نرم افزارها حتی می توانند سیستم عامل کامپیوتر را هم تشخیص دهند و به صورت خودکار تست نفوذ نیز انجام می دهند. در مرحله بعدی War Dialer با استفاده از نام کاربری ها و رمز های متداول به کامپیوتر مورد نظر دسترسی پیدا می کند.
محبوب ترین ابزاری که برای تست War Dialing مورد استفاده قرار میگیرد و کاملا رایگان است، THC-Scan نام دارد.
تست War Driving
یکی از متداولترین روشهای حمله برای ایجاد دسترسی و کنترل هدف، تکنیکی است که بهWar Driving معروف است. این روش شباهت زیادی به War dialing دارد. در هر دو روش با اسکن یک محدوده مشخص به شبکه و کامپیوتر های موجود در آن دسترسی غیر مجاز ایجاد می شود. در War dialing از یک نرم افزار و کامپیوتر ثابت برای اسکن مودم های محافظت نشده، استفاده می شود. اما در War Driving مهاجم در سطح شهر حرکت کرده و مودم هایی با استاندارد 802.11 محافظت نشده را جستجو می کند.
اکسس پوینتها و مودمهایی که با استاندارد 802.11 کار میکنند، از پروتکل WEP استفاده میکنند که هدف اصلی آن جلوگیری از استراق سمع و دسترسی غیر مجاز به آن میباشد. اما به تازگی ایراداتی در الگوریتم این پروتکل پیدا شده که امکان حمله از طریق این آسیب پذیری ها را ممکن میسازد.
محبوبترین ابزاری که برای کمک به تست War Driving توسعهیافته NetStumbler نام دارد.