دوره آموزش مقدماتی ورود به دنیای هک و امنیت با تمرین | تمرینات عملی

تمرینات تست نفوذ

در این بخش، شما به صورت عملی با مراحل اصلی یک تست نفوذ (Penetration Testing) آشنا می‌شوید. تست نفوذ فرآیندی است که در آن، مانند یک هکر مجاز، ضعف‌های امنیتی یک سیستم یا شبکه را شبیه‌سازی کرده و شناسایی می‌کنید. هدف این تمرینات، یادگیری گام‌به‌گام این فرآیند بدون نیاز به نصب نرم‌افزار است (با استفاده از ویرایشگر آنلاین ما).

تمرین ۱: اسکن پورت و شناسایی سرویس‌ها

در این تمرین، شما یاد می‌گیرید که چگونه با اسکن پورت‌های یک سرور، سرویس‌های در حال اجرا (مانند وب سرور یا ایمیل سرور) را شناسایی کنید. این اولین قدم در تست نفوذ است.

  • کد تمرین (Python): از یک کتابخانه داخلی برای شبیه‌سازی اسکن پورت استفاده می‌کنیم. کد زیر را در ویرایشگر آنلاین اجرا کنید.
import socket

# آدرس IP هدف (یک سرور آزمایشی)
target = "127.0.0.1"  # لوکال هاست
common_ports = [21, 22, 23, 80, 443, 3306]  # پورت‌های رایج

print("شروع اسکن پورت برای: ", target)
for port in common_ports:
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(1)  # زمان انتظار ۱ ثانیه
    result = sock.connect_ex((target, port))
    if result == 0:
        print(f"پورت {port} باز است.")
    else:
        print(f"پورت {port} بسته است.")
    sock.close()
  • توضیح کد: این اسکریپت یک اسکن ساده انجام می‌دهد. connect_ex بررسی می‌کند که آیا اتصال به پورت برقرار می‌شود یا خیر. نتیجه "۰" به معنای پورت باز (و احتمالاً یک سرویس در حال اجرا) است. شما می‌توانید target را به یک آدرس IP آزمایشی دیگر تغییر دهید.

تمرین ۲: تحلیل لاگ‌های سرور برای یافتن الگوهای حمله

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

  • کد تمرین (Python): برای تحلیل یک رشته متنی شبیه لاگ، از حلقه و شرط استفاده کنید.
# شبیه‌سازی لاگ‌های سرور
log_data = [
    "2025-04-01 10:00:00 - کاربر 'admin' - تلاش ورود ناموفق",
    "2025-04-01 10:01:00 - کاربر 'test' - ورود موفق",
    "2025-04-01 10:01:30 - کاربر 'admin' - تلاش ورود ناموفق",
    "2025-04-01 10:02:00 - کاربر 'admin' - تلاش ورود ناموفق",
    "2025-04-01 10:03:00 - کاربر 'admin' - ورود موفق"
]

# تشخیص الگوی حملات: اگر بیش از ۳ تلاش ناموفق برای یک کاربر باشد
failed_attempts = {}
for entry in log_data:
    if "ناموفق" in entry:
        # استخراج نام کاربر (قسمت بین 'user' و '-')
        parts = entry.split("-")
        user_info = parts[1].strip()
        username = user_info.split("'")[1]  # نام کاربر را پیدا کن
        if username in failed_attempts:
            failed_attempts[username] += 1
        else:
            failed_attempts[username] = 1

print("تعداد تلاش‌های ناموفق برای هر کاربر:")
for user, count in failed_attempts.items():
    if count >= 3:
        print(f"هشدار: کاربر {user} بیش از {count} بار تلاش ناموفق داشته است (حمله احتمالی).")
    else:
        print(f"کاربر {user}: {count} تلاش ناموفق")
  • توضیح کد: این کد فرض می‌کند که حملات brute-force (تلاش مکرر برای رمز عبور) قابل تشخیص هستند. لاگ‌ها به صورت خط به خط پردازش می‌شوند و در صورت تکرار خطا برای یک کاربر، هشدار صادر می‌شود.

تمرین ۳: بررسی آسیب‌پذیری فرم‌های وب (SQL Injection ساده)

در این تمرین، شما یک حمله SQL Injection ساده را شبیه‌سازی کرده و سپس راه جلوگیری از آن را یاد می‌گیرید.

  • کد تمرین (Python): یک ورودی کاربر را در نظر بگیرید و ببینید که چگونه یک کوئری دیتابیس می‌تواند دستکاری شود.
# شبیه‌سازی ورودی کاربر
user_input = "' OR 1=1 --"  # این یک رشته مخرب SQL است

# کوئری آسیب‌پذیر
query = "SELECT * FROM users WHERE username = '" + user_input + "' AND password = 'anything';"
print("کوئری تولید شده: ", query)  # خروجی: SELECT * FROM users WHERE username = '' OR 1=1 --' AND password = 'anything';

# تحلیل: چون "1=1" همیشه درست است، کل شرط دور زده می‌شود
if "OR 1=1" in query:
    print("هشدار: این ورودی می‌تواند منجر به SQL Injection شود.")
    print("راه حل: از پارامترهای امن (مثل Prepared Statements) استفاده کنید.")
else:
    print("ورودی امن به نظر می‌رسد.")
  • توضیح کد: در دنیای واقعی، چنین ورودی‌هایی می‌توانند به هکر اجازه دهند بدون رمز عبور به سیستم وارد شود. این تمرین نشان می‌دهد که چرا باید ورودی کاربر را همیشه اعتبارسنجی کنید و از توابع ایمن استفاده کنید.

نکته مهم برای همه تمرینات:

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

پرسش و پاسخ این درس

برای ثبت پرسش ابتدا در سایت وارد شوید.

  • 1
  • 2
  • 3
  • 4