لینوکس ۳۰۳؛ شب ۲۷: از گذرواژهٔ ضعیف تا تزریق؛ مهاجم کدام اعتماد را قرض میگیرد؟
فهرست نوشته
بعضی حملهها رمز را حدس میزنند، بعضی دستور را از ورودی میسازند و بعضی کاربر را قانع میکنند خودش در را باز کند. امشب برای هر رخداد، مرز اعتماد را پیدا میکنیم و یک ممیزی کوچک رمز روی دادهٔ ساختگی انجام میدهیم.
این جلسه بخشی از دورهٔ لینوکس ۳۰۳ در ۴۰ شب است.
محیط تمرین: Ubuntu 24.04؛ openssl و john از بستهٔ توزیع؛ فایل مصنوعی بدون رمز یا shadow واقعی.
جایگاه در دوره: هدفهای 335.1 آزمون 303-300.
اسم حمله را به اثرش وصل کن#
Brute force حدسهای متعدد را امتحان میکند؛ rainbow table از محاسبهٔ قبلی کمک میگیرد؛ phishing تلاش میکند کاربر راز یا مجوز را تحویل بدهد. Keylogger ورودی را ثبت میکند. Privilege escalation عبور از سطح اختیار اولیه است؛ موفق شدن login و رسیدن به root دو رخداد متفاوتاند.
در شبکه، جعل ARP یا NDP میتواند مسیر اعتماد به همسایه را تغییر دهد؛ DoS و DDoS دسترسپذیری را هدف میگیرند. در برنامه، SQL injection و code injection ناشی از ترکیب داده و دستور در مرز نامناسباند. XSS اجرای کد در context مرورگر و CSRF سوءاستفاده از درخواست همراه اعتبار کاربر را هدف میگیرند. تمام این موارد را با «فایروال نصب است» پوشش نمیدهیم.
ممیزی با سه کلمهٔ ساختگی#
در پوشهٔ تازه، هش یک رمز کاملاً آموزشی را بساز؛ سراغ /etc/shadow واقعی نمیرویم:
umask 077
mkdir -p ~/lpic303/password-audit
cd ~/lpic303/password-audit
printf 'book\nlibrary123\nriver\n' > tiny-words.txt
openssl passwd -6
در prompt ابزار، رمز ساختگی library123 را وارد کن. خروجی hash تولیدشده را در hashes.txt ذخیره کن؛ این تنها هش مورد استفادهٔ تمرین است. سپس:
john --wordlist=tiny-words.txt hashes.txt
john --show hashes.txt
انتظار داریم با format سازگارِ نسخهٔ نصبشده، واژه در فهرست پیدا شود. اگر ابزار format را پشتیبانی نمیکند، help و formatهای همان build را بررسی کن؛ نسخهٔ core و jumbo یک مجموعهٔ format ندارند. پیدا نشدن رمز به معنی قوی بودن آن نیست؛ ممکن است روش ممیزی ناتمام باشد. این آزمایش محدود، تفاوت رمز قابل حدس و salt را نشان میدهد، نه سرعت سختافزار مهاجم.
برای هر مرز یک دفاع#
برای SQL از query پارامتری استفاده کن؛ escape دلخواه جای آن نیست. برای XSS، خروجی باید متناسب با context encode شود و CSP نقش مکمل دارد. برای CSRF، کنترل توکن، origin و سیاست cookie متناسب با برنامه لازم است. برای DoS، ظرفیت، محدودیت مصرف و مسیر پاسخ رخداد مطرحاند. Honeypot محیط مشاهدهٔ رفتار است؛ دارایی اصلی نباید به عمد آسیبپذیر شود.
تمرین گزارش#
برای کتابخانه، چهار رخداد بساز و کنار هرکدام «پیشگیری، تشخیص، بازیابی» بنویس. مثال: کلید SSH افشاشده با تغییر رمز حساب الزاماً باطل نمیشود؛ باید کلید و گواهی و نشست مربوط هم بررسی شوند. فایل pot ابزار John هم میتواند نتایج رمز را نگه دارد؛ دادهٔ آزمایشگاهی را از ممیزی واقعی جدا کن.
منابع: راهنمای John the Ripper و راهنماهای دفاعی OWASP .