تیم قرمز (Red Team)، معمولا هکرهایی هستن که با هماهنگی سازمان و شرکت، اقدام به حمله ی فیزیکی و دیجیتالی به سیستمها، زیرساخت و دارایی های اون شرکت میکنن.
هدف این هکرها این هستش که با شبیه سازی یک حمله سایبری، بتونن تیم ها و ابزارهای تدافعی رو به چالش بکشن و راههای نفوذ، آسیب پذیری ها و نقاط ضعف اون سازمان رو قبل از اینکه هکرهای کلاه سیاه پیداشون کنن، یافته و گزراش کنن.
قطعا در این فرایند از تکنیکها و ابزارهای مختلفی استفاده میکنن. اما نکته ای که وجود داره، این ابزارها و تکنیکها معمولا تا حدی جوابگو هستن و برای ادامه در این فیلد نیاز است تا هکرها برای خودشون ابزارهایی رو توسعه بدن یا تغییراتی جهت بهبود در عملکرد برخی ابزارها ایجاد کنن.
بنابراین برنامه نویسی در این حوزه، میتونه نقش موثری در پیشرفت و افزایش مهارت فعالین حوزه ی تیم قرمز داشته باشه.
در این پست، مقاله ی اخیر 5mukx رو بررسی کردیم که در اون، نحوه ی یادگیری برنامه نویسی برای تیم های قرمز رو ارائه کرده. مطالبی که پوشش دادن:
- اهمیت برنامه نویسی برای تیم قرمز
- انتخاب زبانهای برنامه نویسی مناسب برای تیم قرمز
- ایجاد محیط توسعه برای تیم قرمز
- مفاهیم اصلی برای توسعه ی ابزار
- توسعه ی اولین ابزارهای تیم قرمز
- تکنیکهای پیشرفته ی تیم قرمز
- ملاحظات اخلاقی و چارچوبهای قانونی
- تعامل با جامعه و یادگیری مداوم
- نتیجهگیری: مسیر پیش رو
به قلمرو پیشرفته تیم قرمز خوش اومدید، جایی که برنامه نویسی نه تنها یک مهارت بلکه یک سلاح است. این راهنما شما رو از طریق اصول اولیه توسعه ابزار برای تیم قرمز، با تمرکز بر تکنیکهای برنامه نویسی که به شما برتری در امنیت سایبری میده، هدایت میکنه.
1- اهمیت برنامه نویسی برای تیم قرمز
خب، پس شما به تیم قرمز علاقه دارید. جایی که شما نقش بدجنس رو بازی میکنید تا به افراد خوب کمک کنید بهتر بشن، درسته؟ اهمیت برنامه نویسی برای تیم قرمز رو میشه بطور خلاصه اینجوری بیان کرد:
- اکسپلویتهای سفارشی: تصور کنید شما فقط از ابزارهای آماده استفاده نمیکنید. گاهی اوقات، شما به چیزی سفارشی نیاز دارید، که برای هدف قرار دادن یک نقطه ضعف خاص در یک سیستم طراحی شده. اینجاست که کد نویسی اکسپلویت خودتون وارد عمل میشه.
- اتوماسیون برای موفقیت: تصور کنید که مجبورید هر مرحله از یک حمله رو بصورت دستی انجام بدید. خسته کننده است، درسته؟ با برنامه نویسی، میتونید اسکریپتها یا برنامه هایی بنویسید تا کارهای خسته کننده رو خودکار کنید.
- کالبدشکافی چیزها: آیا تا به حال فکر کردید که اسباب بازی مورد علاقه شما چطوری کار میکنه؟ در تیم قرمز، شما این کار رو با نرم افزار یا بدافزار انجام میدید. شما نرمافزارها رو تجزیه و تحلیل میکنید تا بفهمید که چطور کار میکنن و بعدش با تغییر دادن اونا، میتونید اونارو به ابزارهایی برای انجام کارهای خاص تبدیل کنید.
2- انتخاب زبانهای برنامه نویسی مناسب برای تیم قرمز:
هنگام توسعه ابزار برای تیم قرمز، تمرکز بر زبانهایی که هم عملکرد و هم کنترل روی منابع سیستم رو ارائه میدن، بسیار مهم هستش. در ادامه به دلایلی که C++/C و C# و Rust و پایتون و پاورشل و Bash، برای این کار ارزشمند هستن، اشاره می کنیم:
C++/C :
- عملکرد: دسترسی مستقیم به سختافزار و عملکرد بالا رو ارائه میده، که اونو برای توسعه اکسپلویت در جایی که زمانبندی و کارایی حیاتی هستش، ایدهآل میکنه.
- کنترل سطح پایین: کنترل دقیق بر حافظه رو فراهم میکنه که برای درک و اکسپلویت آسیب پذیری ها ضروری هستش.
- سیستم های قدیمی: بسیاری از سیستم ها و نرم افزارها با C++/C نوشته شدن، که درک و دستکاری این محیط ها رو آسون تر میکنه.
RUST:
- امنیت حافظه: در حالیکه عملکردی نزدیک به C++/C ارائه میده، مدل مالکیت Rust (قوانینی که مشخص میکنه کی مالک یک داده هستش) از مشکلات امنیتی رایج مانند سرریز بافر (Buffer OverFlow) جلوگیری میکنه.
- همزمانی (Concurrency): پشتیبانی داخلی برای همزمانی ایمن داره. این امر برای توسعه ابزارهایی که نیاز به انجام چندین کار بطور همزمان دارن، میتونه مفید باشه.
- ویژگی های مدرن: شامل الگوهای برنامه نویسی مدرن است که میتونه توسعه رو کارآمدتر و کمتر مستعد خطا کنه.
سی شارپ:
- عملکرد و امنیت: ترکیبی از مزایای عملکردی، زبانهای کامپایل شده، با ویژگیهای امنیتی زبانهای مدرن رو داره، که اونو برای ایجاد ابزارهای تیم قرمز قوی، مناسب میکنه.
- یکپارچگی با ویندوز: پشتیبانی بومی (Native) از API های ویندوز داره، که برای توسعه ابزارهایی که برای محیطهای ویندوز توسعه داده میشن، بویژه ابزارهای Post-Exploitation، ایده آل میکنه.
پایتون:
بدلیل کتابخونه های گسترده ای که داره، برای اسکریپت نویسی، اتوماسیون و توسعه سریع ابزار، ایده ال هستش.
پاورشل :
در محیطهای ویندوزی بخصوص برای Post-Exploitation و حرکات جانبی ایده آل هستش.
BASH:
برای کارهای اسکریپت نویسی، خودکارسازی گردش کار و مدیریت سیستم ها، بویژه در محیط های لینوکسی، بسیار ارزشمند هستش. اغلب برای ایجاد اسکریپت هایی که میتونن در سیستمهای در معرض خطر، اجرا بشن یا برای راه اندازی و مدیریت زیرساخت تیم قرمز استفاده میشه.
3- ایجاد محیط توسعه برای تیم قرمز:
ایجاد یک محیط توسعه مؤثر برای تیم قرمز، بویژه برای توسعه بدافزار، ایجاد اکسپلویت و ساخت ابزارهای تیم قرمز، نیازمند تنظیماتی هستش که تعادل بین امنیت، ایزوله بودن و کارایی رو فراهم کنه:
ماشین مجازی :
- Kali Linux : برای ابزارهای تست نفوذ، توسعه ی اکسپلویت و اجرای اسکریپتهای امنیتی مختلف، ضروری هستش.
- ویندوز: برای تست بدافزار یا اکسپلویت در محیط ویندوز، بخصوص برای درک و توسعه ی ابزارهایی که آسیب پذیری های خاص ویندوز رو هدف قرار میدن، ضروری هستش.
- Metasploitable : یک ماشین مجازی آسیب پذیر هستش که با هدف تمرین توسعه ی اکسپلویت و تست در یک محیط امن، ایجاد شده.
IDEها:
- Visual Studio Code: با افزونههایی مانند C/C++، Rust و Python، برای کدنویسی در چندین زبان مورد استفاده در تیم قرمز، قابلیت همه کاره رو داره.
- JetBrains Rider: برای توسعه در سی شارپ، به ویژه برای کسانی که از PowerShell به سی شارپ برای توسعه ی ابزارهای تیم قرمز قویتر و کامپایل شدهتر مهاجرت کردن، مناسب هستش.
- IDA Pro: برای مهندسی معکوس، برای درک بدافزار یا اکسپلویتهای موجود بسیار مهم هستش.
- Ghidra: یک جایگزین متن باز برای IDA Pro هستش و برای تحلیل کد باینری عالیه.
ابزارهای دیباگ کردن:
- GDB: برای دیباگ low-level در C++/C، مخصوصا برای توسعه اکسپلویت که در اون نیاز به دستکاری حافظه یا درک crash dumpها دارید، استفاده میشه.
- WinDbg: دیباگر ویندوز، مفید برای تحلیل کرشها یا دیباگ بدافزار روی ویندوز.
- OllyDbg یا x64dbg: برای تحلیل باینری و دیباگ ویندوز، بویژه در تحلیل بدافزار کاربردی هستش.
کامپایلرها و ابزارهای Build:
- GCC/Clang: برای کامپایل کدهای C++/C استفاده میشه، بخصوص برای ابزارهایی که عملکرد بالایی دارن یا اکسپلویتها
- کامپایلر Rust (rustc): برای توسعه ابزارهایی با ویژگیهای ایمنی حافظه، برای ایجاد ابزارهای تیم قرمز قوی کاربردی هستش.
- MSBuild: برای پروژههای سی شارپ استفاده میشه، به ویژه هنگام ادغام با ابزارهایی مانند Cobalt Strike
اسکریپت نویسی و اتوماسیون:
- Python: برای نمونه سازی سریع، اسکریپت نویسی و خودکارسازی وظایف بکار میره. کتابخونههای گستردهی پایتون اونو برای توسعه سریع ابزارهای تیم قرمز، ایده آل میکنه.
- سی شارپ: جایگزینی پاورشل برای اسکریپتها و ابزارهای کامپایل شدهی قوی تر، بویژه برای محیطهای ویندوزی هستش.
ابزارهای شبکه:
- Fiddler: برای دیباگ وب و حملات مرد میانی میتونه استفاده بشه. در بسیاری از سناریوهای تیم قرمز به دلیل توانایی اصلاح و بازپخش ترافیک HTTP/HTTPS، مفیدتر از Wireshark یا Nmap هستش.
- Wireshark: برای تحلیل شبکه در سطح پایینتر ارزشمند هستش.
- Nmap: برای اسکن شبکه استفاده میشه. البته در فرایند تیم قرمز، ممکنه ابزارهای پیچیدهتری برای فرار و شناسایی عمیق تر ترجیح داده بشه.
- Rustscan: یک اسکنر شبکه با کارایی بالا و asynchronous، نوشته شده در Rust، که سرعت و قابلیت اطمینان رو برای شناسایی شبکه، ارائه میده. در حالیکه Nmap همه کاره است، تمرکز Rustscan روی عملکرد هستش، که اونو به انتخابی ترجیحی برای اسکن سریع و کارآمد در سناریوهای تیم قرمز تبدیل میکنه که سرعت و فرار در اونا حیاتی هستش.
ابزارهای تیم قرمز:
- Cobalt Strike: بطور گسترده به عنوان بهترین ابزار برای Post-Exploitation پیشرفته استفاده میشه. همچنین یک چارچوب ایده ال برای C2 از طریق Beacon ارائه میده. این ابزار برای تقلید از بازیگران تهدید پیشرفته با ویژگیهایی مانند Malleable C2 برای فرار و عدم شناسایی ایدهآل هستش.
- Mythic/Sliver: به عنوان جایگزین یا مکمل Cobalt Strike هستش. این ابزارها قابلیتهای مشابهی رو با تمرکزهای مختلف ارائه میده، مانند عملیات مبتنی بر عامل Mythic یا عامل Sliver بر پنهان کاری و انعطاف پذیری.
مستندسازی و یادگیری:
- یک مخزن از یادداشتها، قطعه کدها و پیکربندیها نگه دارید. ابزارهایی مانند Git برای کنترل نسخه میتونن به مدیریت پروژه های شما کمک کنن.
- با کامیونیتی هایی مانند GitHub، Reddit/netsec یا فرومهای خاص برای تیم قرمز تعامل داشته باشید تا بروز بمانید و از همتایان خودتون بیاموزید.
4- مفاهیم اصلی برای توسعه ی ابزار:
تسلط روی مفاهیم زیر برای توسعه ی ابزار بسیار مهم هستش:
مدیریت حافظه: درک چگونگی عملکرد حافظه برای توسعه اکسپلویت ضروری است. در زبانهایی مانند سی و سی پلاس، شما بصورت دستی حافظه رو مدیریت میکنید که برای ایجاد اکسپلویتهایی که حافظه رو برای اجرای کد دلخواه دستکاری میکنن، حیاتی است. در مورد stack, heap, buffer overflow بیاموزید.
برنامهنویسی شبکه: ابزارهای شبکه در فرایند تیم قرمز ضروری هستن. به برنامهنویسی سوکتها بپردازید، درک کنید که بسته های داده چه ساختاری دارن، پروتکلهایی مانند TCP/IP، UDP و ICMP چطوری کار میکنن. این دانش برای ایجاد ابزارهایی که میتونن ترافیک شبکه رو رهگیری، اصلاح یا تحلیل کنن، ضروری است.
اسکریپتنویسی: زبانهای اسکریپتنویسی مانند پایتون یا Bash دوستان شما برای خودکارسازی هستن. اونا به شما اجازه میدن تا به سرعت ابزارها رو نمونهسازی کنید یا وظایف تکراری رو خودکار کنید. یاد بگیرید که چطوری اسکریپتهایی بنویسید که بتونن با سیستمها تعامل داشته باشن، حملات رو خودکار کنن یا داده ها رو مدیریت کنن.
رمزنگاری: رمزنگاری در فرایند تیم قرمز نه تنها در مورد ایمنسازی ارتباطات است، بلکه در مورد درک چگونگی شکستن یا دور زدن اقدامات امنیتی نیز هستش. در مورد الگوریتمهای رمزنگاری، هش کردن و نحوه پیادهسازی یا شکستن اونا بیاموزید.
اینترنالز سیستمعامل: دانستن چگونگی کارکرد سیستمعاملها در سطح پایین به توسعه ابزارهایی که میتونن با پروسس ها، سرویسها و درایورهای سیستم تعامل یا اونارو دستکاری کنن، کمک میکنه. این شامل درک Kernel mode و User mode و Process Injection و System Call است.
5- توسعه ی اولین ابزارهای تیم قرمز:
برای تقویت مهارتهای خودتون، با این پروژه ها شروع کنید:
کیلاگر: با یک کیلاگر ساده در پایتون شروع کنید. این پروژه به شما ورودی/خروجی فایل، system call و نحوه اجرا در حالت مخفی رو آموزش خواهد داد. برای یادگیرندگان پیشرفته، سعی کنید اونو در C برای عملکرد یا درک عملیات سطح پایین پیادهسازی کنید. اگه میخواید فراتر برید، از Rust استفاده کنید.
اسکنر پورت: یک اسکنر توسعه بدید که نه تنها پورتهای باز رو تشخیص میده، بلکه سرویسهای در حال اجرا، روی اون پورتها رو هم شناسایی میکنه. این پروژه مهارتهای برنامهنویسی سوکت شما رو تقویت کرده و آموزشهایی در مورد پروتکلهای شبکه به شما میده.
وب شل: یک وب شل ساده در PHP یا ASPX توسعه بدید. این ابزار میتونه برای Post-Exploitation استفاده بشه و به شما اجازه میده تا دستورات رو روی یک سرور آلوده اجرا کنید. در مورد امنیت برنامههای وب، مدیریت جلسه و نحوه فرار از تشخیص بیاموزید.
کرکر پسورد: یک کرکر پسورد ساده برای پسوردهای هش شده پیادهسازی کنید. این شما رو با مفاهیم رمزنگاری، توابع هش و پردازش موازی برای سرعت شکستن پسوردها آشنا میکنه.
6- تکنیکهای پیشرفته ی تیم قرمز:
هنگامی که با اصول اولیه آشنا شدید، به این حوزه های پیشرفته بپردازید:
توسعه ی اکسپلویت:
- Buffer Overflow: یاد بگیرید چگونه آدرسهای بازگشتی یا اشاره گرهای تابع رو برای اجرای کد خودتون بازنویسی کنید.
- Use-After-Free: درک کنید که چطوری Use-After-Free رو اکسپلویت کنید که منجر به اجرای کد دلخواه میشه.
- Return-Oriented Programming (ROP) : تکنیکی برای دور زدن DEP (Data Execution Prevention) با زنجیرهسازی قطعات کد موجود هستش.
مبهم سازی پیلود:
- یاد بگیرید چطورری پیلودها رو رمزگذاری یا رمزنگاری کنید تا از تشخیص توسط نرمافزارهای آنتی ویروس جلوگیری کنید. تکنیکها شامل رمزگذاری XOR، base64 و رمزنگاری سفارشی است.
- پکرهایی مانند UPX یا پکرهای سفارشی رو برای فشردهسازی و مخفیسازی باینریهای خودتون بررسی کنید.
افزایش سطح دسترسی :
- ابزارهایی توسعه بدید که از پیکربندیهای نادرست سیستم یا آسیبپذیریها، برای افزایش امتیاز سوءاستفاده میکنن. این میتونه شامل دستکاری توکن، DLL hijacking یا اکسپلویت سرویسهایی که با دسترسی بالا اجرا میشن، باشه.
- درک اینترنالز ویندوز برای جعل هویت توکن (token impersonation) یا قابلیتهای لینوکس برای ارتقای سطح دسترسی.
Post-Exploitation :
- پس از کسب دسترسی اولیه، ابزارهایی برای حرکت جانبی، حفظ پایداری یا جمعآوری اطلاعات توسعه بدید.
- این شامل ایجاد بکدور، راهاندازی کانالهای C2 یا استفاده از ابزارهایی مانند Mimikatz برای جمع آوری اعتبارنامه (credential harvesting) میشه.
شبیه سازی تهدید:
با استفاده از چارچوبهایی مانند MITRE ATT&CK، حملات دنیای واقعی رو شبیهسازی کنید تا موارد تدافعی رو بطور جامع تست کنید. این شامل نوشتن اسکریپت حملات در مراحل مختلف Cyber Kill Chain میشه.
7- ملاحظات اخلاقی و چارچوبهای قانونی
همیشه در محدوده قانونی عمل کنید:
- اطمینان حاصل کنید که برای هر تستی مجوز کتبی دارید.
- قوانینی مانند CFAA در ایالات متحده یا GDPR در اروپا رو درک کنید. (برای ایران قانون جرایم رایانه ای رو مطالعه کنید)
- از محیطهایی مانند Hack The Box برای تمرین قانونی استفاده کنید.
8- تعامل با جامعه و یادگیری مداوم
در ارتباط بمانید:
- به پلتفرمهایی مانند GitHub برای ابزارهای امنیتی متن باز بپیوندید.
- در رویدادهای CTF (Capture The Flag) شرکت کنید.
- وبلاگها، پادکستها و کنفرانسهای امنیتی رو دنبال کنید.
9- نتیجهگیری: مسیر پیش رو
فرایند تیم قرمز از طریق توسعه ابزار، سفری از یادگیری و سازگاری مداوم است. ابزارهای شما با مهارتهای شما تکامل پیدا میکنه و با هر پروژه، رویکرد خودتون رو به امنیت سایبری اصلاح خواهید کرد. به یاد داشته باشید، هدف نه تنها شکستن بلکه درک و در نهایت ایمنسازی سیستمهاست.
با تمرکز بر این حوزهها، شما به خوبی مجهز خواهید شد تا نه تنها درک کنید بلکه به حوزه همیشه در حال تکامل امنیت سایبری از طریق توسعه ابزارهای نوآورانه کمک خواهید کرد.
سلام بسیار عالی و مقاله ای که گذاشتید تیم قرمز واقعا جذابه به نظر من و فکر کنم درامد های بالاتری هم دارن نسبت به تیم ابی مهندس یک سوال دیگه مهندسی معکوس چقدر تاثیر داره داخل این حوزه با مهندسی معکوس میشه به این حوزه رسید یا این که مهندسی معکوس خودش حوزه جدا هست و کاری به این حوزه نداره و یه قضیه دیگه هم که جالبه این که واقعا برنامه نویسی تو هر حوزه ای باشه باید بلد بود تا بتونی موفق و بهتر عمل کنی و حتی پول بیشتر های بیشتر هم در بیاری از مهندسی معکوس بگیر تا بقیه حوزه ها…….
کلا الان با پیشرفتهایی که در علوم مختلف رخ داده، اغلب رشته ها بین رشته ای هستن. الان هوش مصنوعی، برنامه نویسی و … در پزشکی هم کاربرد دارن.
در مورد درآمدی هم بسته به فرد و کار داره. مثلا شما یک برنامه برای تیم آبی توسعه بدید و بفروشید درامدتون میتونه بالا بره و …
مهندسی معکوس کلا هدفش اینه که ما بدونیم یک سیستم چطوری کار میکنه، بنابراین میتونه در حوزه های مختلف کاربرد داشته باشه. مثلا با مهندسی معکوس شما میتونید اینترنالز سیستم عامل رو درک کنید تا بتونید ابزار و اکسپلویت براش توسعه بدید.
برنامه نویسی در حوزه های مختلف یا ضروری هستش، مثلا در مهندسی معکوس شما نیاز به درک اسمبلی دارید، در برخی موارد هم میتونه قدرت شما رو بیشتر کنه، مثلا در ردتیم که در پست توضیح دادیم. در وب مثلا برای اتوماسیون و … .
بسیار عالی و منم موافقم باهاتون واقعا بدون برنامه نویسی خیلی پیشرفتی نمیشه کرده و باید حتما چند زبان برنامه نویسی رو در حد عالی بلد بود که بتونی توی هر حوزه که هستی موفق بشی و به درامد های بالاتری برسی در مهندسی معکوسم به همین شکل هست و به نظرم باید خیلی وقت گذاشت برای این حوزه و زبان های برنامه نویسی خوبی بلد که بتونی موفق تر بشی و به درامد های خیلی خوب برسی