انتقال تجربه در SOC و IR
✍️روزبه نوروزی
دوستان در لینکدین و اینجا از انتقال تجربه استقبال کردند. من هم دیدم چون از یک سناریویی که درگیر بودم چند وقتی گذشته؛ میتونم اونو بیان کنم.
کل تجربه رو با قدری حواشی مخلوط کردم و یک بازنویسی به زبان یک معلم انجام دادم که در زیر میبینید.
✴️ تحلیل و حذف یک Rootkit کرنل در ویندوز
📌 پس از مشاهدات اعلان رولها ( فایر شدن ) و ارتباطات مشکوک و پراسس های غیر مرتبط روی یک سرور در داشبورد اسپلانک ، آن سرور از بقیه جدا شد و تحت تحلیل قرار گرفت .
مشاهدات که پی در پی کم کم پدیدار شدند عبارتند از :
پردازشهایی که در Task Manager دیده نمیشوند.
اتصالهای شبکهای که در netstat ظاهر نمیشوند.
فایلهایی که در Explorer و CMD دیده نمیشوند.
کاربرانی که به سیستم لاگین میکنند اما در لاگها ثبت نمیشوند.
اینها نشان بزرگی برای وجود روت کیت بودند .
🔹 هدف: با توجه به اهمیت up بودن سرور و کمبود زمان Down time؛ شناسایی، تحلیل، و حذف Rootkit بدون آسیب به سیستم در دستور کار قرار گرفت .
1️⃣ کشف اولیه – بررسی نشانههای Rootkit
الف) بررسی پردازشهای پنهانشده
در ویندوز، Rootkit ممکن است با Hook کردن APIهای کاربری یا Patch کردن کرنل پردازشهای مخرب را مخفی کند.
راه بررسی این است که از WMIC یا Process Explorer استفاده کنیم:
wmic process list full | findstr /i "SuspiciousProcess"
اگر پردازش در Task Manager نباشد ولی در wmic ظاهر شود، Rootkit در حال پنهانسازی است.
🔹 ابزار Sysinternals Process Explorer را اجرا میکنیم و در قسمت Verify Signatures، پردازشهای مشکوک را بررسی میکنیم.
ب) بررسی ارتباطات شبکهای مخفی
بد افزار Rootkit ممکن است برخی از اتصالات مخرب را پنهان کند. برای بررسی دقیق، از Wireshark یا TCPView (Sysinternals) استفاده میکنیم.
اما یک روش سریعتر این است که از PowerShell استفاده کنیم:
Get-NetTCPConnection | Where-Object { $_.State -eq "Established" }
سپس این خروجی را با netstat -ano مقایسه میکنیم. اگر تفاوتی وجود داشت، نشاندهنده Hook شدن APIها توسط Rootkit است.
البته نکته مهم اینه که در اون مجموعه ZEEK هم کمک مهمی داشت تونستیم بفهمیم که چه کانکشن هایی واقعی وجود داره که روی سرور نمیبینم.
ج) بررسی فایلهای مخفیشده
برخی Rootkitها با استفاده از NTFS Alternate Data Streams (ADS) فایلهای خود را پنهان میکنند.
برای شناسایی، از دستور زیر استفاده میکنیم:
dir /r C:\Windows\System32
اگر فایلهایی با نامهای عجیب همراه با :Zone.Identifier یا :hidden ببینیم، ممکن است Rootkit باشد.
2️⃣ بررسی سطح پایینتر – تحلیل کرنل
الف) بررسی Hook های SSDT و IRP
این Rootkitهای پیشرفته معمولاً System Service Descriptor Table (SSDT) را دستکاری میکنند.
برای بررسی، از ابزار GMER یا WinDbg استفاده میکنیم.
🔹 روش با GMER:
این GMER را اجرا میکنیم. اگر Rootkit SSDT را Hook کرده باشد، در تب "Rootkit/Malware" نمایش داده میشود.
🔹 روش با WinDbg:
کامپیوتر هدف را به سیستم تحلیلگر متصل میکنیم.
در WinDbg دستور زیر را اجرا میکنیم:
!chkimg -lo 50 -d nt
این دستور بررسی میکند که آیا کرنل ویندوز Patch شده است یا خیر.
ب) بررسی درایورهای کرنل مخرب
این Rootkit کرنلی معمولاً یک Driver مخرب (sys.) را بارگذاری میکند.
برای لیست کردن تمام درایورهای کرنل در حال اجرا:
Get-WmiObject Win32_SystemDriver | Select-Object Name,PathName,State
یا با استفاده از sigcheck (از Sysinternals) میتوان درایورهای فاقد امضای دیجیتال را یافت:
sigcheck -u -v
اگر درایوری بدون امضای دیجیتال مایکروسافت مشاهده کردیم، باید بیشتر بررسی شود.
3️⃣ استخراج و تحلیل Rootkit
الف) Dump گرفتن از درایور مشکوک
اگر یک درایور مشکوک پیدا کردیم، میتوانیم آن را استخراج کنیم:
copy C:\Windows\System32\drivers\suspicious.sys C:\Investigate\suspicious.sys
سپس با IDA Pro, Ghidra یا WinDbg تحلیل مهندسی معکوس انجام میدهیم.
ب) بررسی ارتباطات C2
برخی Rootkitها به سرور کنترل و فرماندهی (C2) متصل میشوند.
برای بررسی این ارتباطات از Wireshark یا Fiddler استفاده میکنیم.
در Wireshark میتوانیم با فیلتر DNS یا HTTP ترافیک مشکوک را پیدا کنیم:
dns.qry.name contains "
suspicious.com"
4️⃣ حذف و پاکسازی Rootkit
الف) حذف درایور مخرب
🔹 اگر Rootkit از یک درایور کرنل استفاده میکند، نباید آن را مستقیماً حذف کنیم، بلکه باید Disable کنیم:
sc stop suspicious
sc delete suspicious
ب) ریست تنظیمات کرنل
#تجربه #درس_آموخته
#آکادمی_روزبه
#من_آموزش_میدهم
ادامه در پست بعد