در این آموزش اصول اولیه تحلیل لاگ برای کشف نفوذ را بررسی میکنیم. تحلیل لاگ (Log Analysis) یکی از مهارتهای اصلی و مهم برای بحث تشخیص نفوذ (Intrusion Detection) و پاسخ به حادثه (Incident Response) است. در واقع یکی از مهمترین راههایی که شما با استفاده از آن میتوانید متوجه شوید آیا نفوذی در شبکه شما اتفاق افتاده است یا خیر، تجزیه و تحلیل لاگهایی است که از منابع مختلف جمعآوری شده و در سامانه مخصوص خود نگهداری میشود.
اهمیت تحلیل لاگ
تحلیل لاگ در سازمان یک الزام است. سازمانها باید به مقررات خاصی که نحوه جمعآوری و تجزیه و تحلیل آنها را ارائه میدهند، پایبند باشند.
تحلیل لاگ مزایای زیادی دارد. تعدادی از این مزایا عبارتاند از:
· پیدا کردن و رفع مشکل در زمان کوتاه
· بهبود امنیت سایبری سازمان
· بهبود تجربه کاربری
پیشنیازها
برای اینکه مطالب این آموزش را بهتر متوجه شوید، نیاز است با موارد زیر آشنایی داشته باشید:
· آشنایی با سیستمعاملهای Windows و Linux
· آشنایی با شبکه و پروتکلهای آن
· آشنایی با لاگ و مفاهیم آن
· بهتر است با پلتفرمهای تحلیل لاگ مانند Splunk آشنایی داشته باشید.
مروری بر مفاهیم اولیه
لاگ (Log) متنی است که وقایع و فعالیتهایی را که در یک سیستم، برنامه، یا شبکه رخ میدهد، ثبت میکند. در واقع در یک سیستم هر اتفاقی بیفتد مانند لاگین کردن کاربر، اجرای یک برنامه، خطای نرمافزاری و... در پوشه مخصوصی ثبت و نگهداری میشود که به آن لاگ میگوییم. مثال: فرض کنید شما در تاریخ 1 آبان ماه 1404 در ساعت 10:15:20 پسورد خود را وارد کرده و به سیستم لاگین میکنید. این ورود شما بهصورت یک لاگ ثبت میشود که کاربر x در تاریخ 1 آبان ماه 1404 و در ساعت 10:15:20 به سیستم وارد شده است.
پس لاگها تاریخچه فعالیتهای سیستمها، شبکهها و کاربران را ثبت میکنند؛ تحلیل خوب آنها مثل بررسی ردپاهاست که به ما کمک میکند تا بتوانیم از اتفاقاتی که در شبکه رخ میدهد، آگاهی پیدا کنیم.
در تصویر زیر نمونهای از یک لاگ سیستمعامل را مشاهده میکنید.
دلیل ایجاد لاگها
در دنیای کامپیوتر، از همان ابتدا نیاز بود بدانیم:
· سیستمها چه کاری انجام میدهند.
· آن کار در چه زمانی انجام شده است.
· چه کسی آن کار را انجام داده است.
· اگر خطایی رخ دهد یا سیستم دچار مشکل شود، منشا آن از کجا بوده است.
بنابراین، لاگها در ابتدا برای عیبیابی (troubleshooting) ساخته شدند.
اما بعدها با رشد تهدیدات سایبری و پیچیدهتر شدن زیرساختها، کاربرد آن فراتر رفت و شامل موارد زیر است:
نظارت و پایش (Monitoring)
مهمترین کاربرد لاگ برای بررسی سلامت سیستمها، عملکرد درست برنامهها و اطمینان از در دسترس بودن سرویسها است. مثلاً اگر وبسرور شما ناگهان کند شود یا سرویسی از دسترس خارج شود، با بررسی لاگها میتوان فهمید چه اتفاقی افتاده است.
امنیت و کشف نفوذ (Security & Incident Detection)
اگر نفوذی رخ دهد و ما هیچ لاگی را ثبت نکنیم، هیچ ردپایی از مهاجم نخواهیم داشت. کارشناس امنیت با بررسی لاگها میتواند تشخیص دهد چه کسی وارد سیستم شده، از کجا وارد شده، چه کاری انجام داده و به چه چیزهایی آسیبزده است.
انطباق و ممیزی (Compliance & Audit)
بسیاری از قوانین و استانداردهای امنیتی مثل خانواده 0ISO 2700، NIST، GDPR سازمانها را موظف میکنند تا وقایع را ثبت و نگهداری کنند.
تحلیل رفتار و بهبود عملکرد
توسعهدهندگان و مدیران سیستم از لاگها برای درک رفتار کاربران یا بهینهسازی عملکرد سیستم استفاده میکنند.
منابع لاگ
در این بخش به اختصار منابع جهت گردآوری لاگ را مورد بررسی قرار میدهیم.
.1نرمافزارهای امنیتی
· Anti-Malware
· IDS/IPS
· Remote software
· Web proxies
· Vulnerability management software
· Authentication servers
· Routers
· Firewall
· Network quarantine servers
· WAF
.2شبکه
· Syslog
· SNMP
· NetFlow
.3دیتابیس
· Configuration
· Audit/query log
· Tables
· Schemas
.4اپلیکیشن
· Web server logs
· java events ،adb logcat ،.Net events
· Code and scripts
.5سرویسهای مورد استفاده در سازمان
.6مجازیسازی و ابری
· Hypervisor
· Guest OS, Apps
· Cloud
.7سیستم عامل
· لینوکس/یونیکس(سرور و کلاینت)
o Configuration
o Syslog
o File system
· ویندوز (سرور و کلاینت)
o Registry
o Events logs
o File system
o sysinternals
تصویر زیر برنامه event viewer در ویندوز است که لاگهای event log را میتوان در آن مشاهده نمود. این برنامه در سیستمعامل شما موجود است و فقط کافی است عبارت event viewer را در نوار جستجو وارد نموده و برنامه را اجرا کنید.
همچنین با زدن دستورات زیر در لینوکس میتوان به پوشه لاگها دسترسی پیدا کرده و لاگهایی که مد نظرتان هست را مشاهده کنید.
اصول اولیه کار با لاگها
شما زمانی که میخواهید لاگها را از منابع مختلف جمعآوری کنید باید برای مرتبسازی و تجمیع آن نکات زیر را رعایت کنید.
1. زمان (Timestamp): تمامی لاگها باید با یک فرمت زمانی خاص و یکسان ثبت شود. برای داشتن عملکرد عالی و ثبت دقیق زمان نیاز است یک سرور ntp پیکربندی شده که تمامی زمانها در تمامی لاگها یکسان باشد.
2. نرمالسازی (Normalization): فیلدهای مهم و کلیدی در همه لاگها یکسان باشد مثلا نام کاربر در همه کاربر user در نظر گرفته شود یا ip مبدا با نام src_ip و ip مقصد با dst_ip در نظر گرفته شود.
3. استخراج فیلدها: از regex یا پارسرهای مخصوص (Grok برای ELK، transforms در Splunk) برای دریافت اطلاعات و فیلدهای مهم و ضروری استفاده شود.
4. فیلترینگ لاگها: فیلتر کردن لاگهای تکراری یا کماهمیت برای اینکه خروجی و تحلیل بهتری داشته باشیم ضروری است.
5. ذخیرهسازی و نگهداری لاگها: زمان نگهداری لاگها براساس قوانین و خطمشیهای سازمان و نیازهای قانونی و قابلیت پاسخدهی مشخص میشود. مثلاً لاگهای حساس بین 1 تا 6 سال و لاگهای معمولی بین 6 ماه تا 1 سال ذخیره و نگهداری میشوند.
6. عدم تغییر در محتوای لاگ: محتوای لاگ به هیچ عنوان نباید تغییر کند و هیچ فرد یا برنامهای اجازه تغییر، دستکاری یا حذف تمام یا بخشی از محتوای لاگ را نداشته باشد.
روش های تحلیل لاگ
این روشها عبارتند از:
· تحلیل دستی (Manual Analysis)
· تشخیص الگو (Pattern Recognition)
· تحلیل مبتنی بر فیلتر و جستوجو (Filtering & Query-based)
· تحلیل مبتنی بر رفتار (Behavioral Analysis)
· تحلیل مبتنی بر قوانین (Rule-based Analysis)
· تحلیل مبتنی بر یادگیری ماشین (Machine Learning / AI)
· تحلیل همبستگی (Correlation Analysis)
شاخصها و الگوهای کلیدی برای کشف نفوذ
در این قسمت به مواردی میپردازیم که جزو شاخصها و الگوهای کلیدی برای کشف نفوذ محسوب میشود.
ناهنجاری احراز هویت (Authentication anomalies):
به این معنی است که الگوی لاگین کاربر با الگوهای مشخص شده متناسب نیست. مثال: کاربر در زمان لاگین به سیستم چند بار شکستخورده و بعد از آن یک لاگین موفق از یک موقعیت جفرافیایی دیگر داشته (کاربر از تهران درخواست زده و نتوانسته لاگین کند، یک ساعت بعد از آلمان درخواست زده و موفق شده است).
o روش تشخیص: بررسی لاگهای احراز هویت برای توالیهای «fail → success»، آدرسهای IP و موقعیت جغرافیایی آن، timestamp و فاصله بین لاگینها.
o اقدامات: فعال کردن MFA، بلاک کردن IP های مشکوک و هشداردهی برای الگوهای fail→success.
حرکت داخل شبکه (Lateral movement):
مهاجم بعد از نفوذ اولیه سعی میکند به سرورها و سرویسهای دیگر دسترسی پیدا کند. مثال: یک حساب کاربری پس از ورود موفق، ناگهان به چند فایلسرور و چند دیتابیس وصل میشود و دستورهای سطح بالا رو اجرا میکند.
o روش تشخیص: بررسی لاگهای دسترسی به فایلها، eventهای لاگین روی میزبانهای مختلف، اجرای دستور از راه دور و تحلیل ترافیک غیرمعمول.
o اقدامات: محدود کردن دسترسی بین سرویسها.
بالا بردن سطح دسترسی (Privilege escalation):
مهاجم تلاش میکند تا بتواند سطح دسترسی خود را ارتقا داده و دسترسی admin بگیرد. مثال: اضافه شدن یک کاربر به گروه Administrators بدون اطلاع مدیر.
o روش تشخیص: تغییرات در membership گروهها در اکتیو دایرکتوری، eventهای مربوط به اضافه/حذف یوزر، اجرای دستوراتی که نیاز به دسترسی سطح بالا دارند.
o اقدامات: هشداردهی روی تغییرات گروهی، قفل کردن حسابهای حساس با MFA و بررسی تغییرات اکانتها.
باقیماندن روی شبکه (Persistence):
روشهایی که مهاجم برای حفظ دسترسی دائمی استفاده میکند. مثال: ایجاد scheduled task، نصب سرویس جدید، یا ثبت یک Run key در رجیستری ویندوز.
o روش تشخیص: جستجوی scheduled tasks جدید یا غیرمعمول، سرویسهای با نام یا مسیر مشکوک، کلیدهای Autorun در رجیستری، فایلهای اجرایی در مسیرهای غیرمعمول.
o اقدامات: بررسی و حذف موارد ناشناس، محدود کردن ایجاد تسک به حسابهای مدیریتشده، و مانیتورینگ تغییرات رجیستری.
خارجسازی داده (Data exfiltration):
مهاجم دادههای حساس را به بیرون انتقال میدهد. مثال: انتقال حجم زیادی از فایلها به سرور خارجی.
o روش تشخیص: بررسی انتقالات خروجی بزرگ یا مکرر، پروتکلهای غیرمعمول (SFTP به مقصد ناشناس) و ترافیک به IP/دامنههای غیرمجاز.
o اقدامات: محدود کردن خروجی، پایش پهنای باند و... .
اشتباهات رایج و نکات تجربی
تعدادی از اشتباهات رایج:
· عدم همگامسازی زمانها
· نداشتن یک schema نرمالشده
· تمرکز صرف روی signatureها و نادیدهگرفتن رفتارها
· نداشتن برنامه برای نگهداری و بایگانی لاگها
جمعبندی
· تحلیل لاگ یعنی بررسی ردپاها؛ تمرکز بر زمانبندی، ارتباطات و توالی حوادث.
· قانون خوب: ابتدا داده را درست جمع کن و نرمالسازی کن؛ سپس detection بنویس.
· همیشه قوانین را با داده واقعی تست کن و معیارهایی برای سنجش کارایی تعریف کن.
نظرات کاربران (0)