مروری بر کتاب Black Hat Python 2nd Edition

مروری بر کتاب Black Hat Python 2nd Edition

۱۴۰۳/۰۱/۰۹

مروری بر کتاب Black Hat Python 2nd Edition

در این مقاله به سراغ یکی از کتاب‌های خوب امنیت یعنی Black Hat Python می‌رویم و به صورت خلاصه به بررسی هر یک از سر فصل‌های این کتاب می‌پردازیم. همانطور که می‌دانید، این کتاب در دو نسخه موجود است. در اولین نسخه از این کتاب نویسنده از پایتون 2.7 استفاده کرده و در نسخه دوم کتاب، شاهد استفاده از پایتون ورژن 3 هستیم. نکته‌ای که هنگام مطالعه این کتاب باید در نظر گرفت، این است که در برخی مواقع توضیحات اولین نسخه به مراتب کامل‌تر و بهتر از دومین نسخه است. لذا پیشنهاد می‌شود که برای مطالعه هر دو نسخه را منبع قرار دهید.

در اولین نگاه

در صفحات اولیه از این کتاب می‌خوانیم که:

.Remember, the difference between script kiddies and professional hackers is that the former uses other people’s tools

این کتاب دارای 11 فصل زیر است که مروری روی هر یک از آنها انجام می‌دهیم.

Chapter 1: Setting your python environment

Chapter 2: Basic networking tools

Chapter 3: Writing a Sniffer

Chapter 4: Owning the network with scapy

Chapter 5: Web hackery

Chapter 6: Extending burp proxy

Chapter 7: GitHub command and control

Chapter 8: Common trojaning tasks on windows

Chapter 9: Fun with exfiltration

Chapter 10: Windows privilege escalation

Chapter 11: Offensive forensics

بخش اول: راه اندازی محیط برنامه نویسی

در اولین بخش از کتاب سراغ نیازمندی‌هایی می‌رویم که برای ادامه کتاب به آنها احتیاج خواهیم داشت. به صورت خلاصه برای انجام برخی حملات و آزمایش کدهای نوشته شده به یک سیستم VM احتیاج داریم که در کتاب سیستم عامل Kali Linux پیشنهاد شده است. Kali Linux سیستم‌عاملی بر پایه Debian که توسط Offensive Security برای کمک به متخصصین در حوزه امنیت توسعه داده شده است.

برای راحتی در عمل کدنویسی، به یک IDE احتیاج داریم. کتاب، دو نرم افزار PyCharm و VScode را برای این منظور پیشنهاد می‌کند. نویسنده در ادامه این فصل به نحوه نصب Python و راه اندازی محیط مجازی برای نصب Module ها و اجرای کدها می‌پردازد. با استفاده از دستور زیر می‌توانیم یک محیط مجازی Python راه اندازی کنیم:

python -m venv /path/to/new/virtual/environment

بخش دوم: ابزار نویسی مبتدی برای شبکه

نویسنده در ابتدای این فصل به اهمیت شبکه می‌پردازد و شرح می‌دهد که یک Hacker با دسترسی به شبکه  چه اقداماتی می‌تواند انجام دهد. در این فصل با کتابخانه socket آشنا می‌شویم که در ادامه این کتاب بسیار از آن استفاده خواهیم کرد. ضمنا مفاهیم Client و Server نیز اشاره شده و با استفاده از کتابخانه socket ابزاری ساده شبیه netcat را پیاده سازی می‌کنیم که نویسنده با جمله‌ی زیر به اهمیت نوشتن این ابزار اشاره می‌کند:

On more than one occasion, we’ve run into servers that don’t have netcat installed but do have Python. In these cases, it’s useful to create a simple network client and server that you can use to push files, or a listener that gives you command line access.

ابزاری که در این فصل می‌نویسیم قابلیت‌های متنوعی از جمله اجرای دستورات و Interactive Shell و آپلود فایل را دارد. در انتهای توضیحات هر ابزار، قسمتی به نام Kicking the Tires وجود دارد که اجرای آن ابزار را به صورت تصویری نشان می‌دهد:

Kicking the Tires

Kicking the Tires

در ادامه این فصل ابزارهایی برای TCP Proxy و SSH Tunneling می‌سازیم. شاید با خودتان فکر کنید که چرا به TCP Proxy احتیاج داریم؟ نویسنده به زیبایی دلایلی را برای استفاده از یک Proxy مطرح می‌کند:

  • Forward ترافیک از یک Host  به Host دیگر
  • هنگامی که امکان اجرای Wireshark وجود ندارد
  • تغییر ترافیک ارسالی به یک اپلیکیشن

همچنین نویسنده بیان می‌کند که شما نیاز دارید تا ترافیک ارسالی به سرور خود را رمزگذاری کنید و برای این کار SSH Tunneling را پیشنهاد می‌کند که آن را با استفاده از کتابخانه Paramiko پیاده سازی می‌کنیم.

بخش سوم: ساخت یک اسنیفر

با پیاده سازی یک Packet Sniffer ساده که تنها قادر به دریافت RAW Packet ها است این قسمت را شروع می‌کنیم و در ادامه یاد می‌گیریم که چگونه با استفاده از کتابخانه Struct و یا c_types، هدرها و لایه‌های مختلفی را از RAW Packet جدا و آنها را Decode کنیم. 

در این بخش پس از Decode کردن هدر IP به سراغ Decode کردن پکت‌های ICMP می‌رویم. همچنین از نتایج Decode کردن پکت‌های ICMP یک Host Discovery ساده را پیاده سازی می‌کنیم که به روش Ping Scan معروف است. این روش با استفاده از ابزارهای متنوع دیگری همچون NMAP نیز قابل انجام است اما باید توجه داشت که NMAP روی تمام سیستم‌ها نصب نیست.

بخش چهارم: تحت کنترل گرفتن شبکه با استفاده از Scapy 

تجربه استفاده از این کتابخانه یکی از بهترین تجربه‌های شما خواهد بود. با استفاده از این کتابخانه شما دیگر لازم به کار کردن با RAW Packet ها نیستید و تمام مراحل Decode و بسته‌بندی لایه‌های پکت توسط این کتابخانه انجام می‌شود.

در این فصل با Scapy آشنا می‌شویم و یک Packet Sniffer ای می‌سازیم که نام کاربری و کلمه عبور های مربوط به سرویس‌های Mail را که بصورت Plain Text در حال عبور از شبکه هستند، دریافت کنیم. 

نویسنده در ادامه‌ی این بخش به حمله ARP Cache Poisoning می‌پردازد و نحوه انجام  حمله را با استفاده از کتابخانه مذکور شرح می‌دهد.

بخش پنجم: وب 

نویسنده در این فصل به معرفی کتابخانه‌های Utllib و Requests برای کارکردن با سرویس‌های HTTP می‌پردازد. با استفاده از این کتابخانه‌ها می‌توانیم به یک سرویس HTTP درخواست زده و پاسخ را مشاهده نماییم. در این بخش همچنین با دو کتابخانه LXML و BeautifulSoup برای Parse کردن پاسخ‌های HTML آشنا می‌شویم. از Parser هایی همچون موارد نامبرده می‌توانیم برای استخراج اطلاعات مورد نیاز از پاسخ سرور استفاده کنیم. 

در ادامه با استفاده از کتابخانه‌های یاد شده یک Directory Fuzzer و همچنین یک ابزار برای Brute Force پسورد پیاده سازی می‌کنیم. همچنین با کتابخانه Thread برای پیاده سازی ابزارهای خود به صورت Multi-Thread آشنا خواهیم شد. 

بخش ششم: ساخت Extension برای Burp Proxy

اگر در حوزه امنیت فعالیتی دارید احتمالا نام Burp Suite برای شما نامی آشناست. Burp قابلیت‌های بی‌نظری دارد و همچنین به کاربر اجازه می‌دهد که با نوشتن افزونه از این قابلیت‌ها استفاده بیشتری ببرد.

در این بخش با API های Burp Suite و نحوه نوشتن یک افزونه برای اپلیکیشن Burp Suite آشنا می‌شویم. به عنوان مثال در این بخش افزونه‌‎ای می‌نویسیم تا با استفاده از محتویات سایت یک Wordlist شخصی سازی شده تهیه کنیم. از این Wordlist می‌توان برای پیدا کردن Hidden Parameters استفاده کرد که معمولا منجر به کشف آسیب پذیری‌های جالبی می‌شوند.

در این کتاب مطلبی درباره‌ی نوشتن Bchcek ها اشاره نشده  چراکه Bcheck یک ویژگی نسبتا تازه و بسیار قدرتمند Burp Suite است که از ورژن 2023.6 به اپلیکیشن معرفی شده است.

بخش هفتم: کنترل تروجان‌ها با استفاده از گیت‌هاب

 همانطور که از نامش پیداست، در این فصل به توسعه یک تروجان می‌پردازیم که می‌توانیم با استفاده از گیت‌هاب با آن ارتباط برقرار کرده، فایل‌ها را بخوانیم، کدهای جدیدی به تروجان توسعه داده شده اضافه کنیم، دستورات جدید ارسال کنیم و…

حتی اگر برنامه‌ای برای خواندن تمامی بخش‌ها ندارید، حتما به این فصل نگاهی بیندازید، مطمئن باشید لذت خواهید برد.

بخش هشتم: ساخت تروجان برای ویندوز

در این فصل که مکمل فصل قبلی محسوب می‌شود، تروجان خود را مجهز به گرفتن Screenshot و ذخیره و ارسال کلیدهای تایپ شده کیبورد می‌کنیم. یکی دیگر از قابلیت‌هایی که به تروجان اضافه می‌کنیم Sandbox Detection است. به این صورت که تروجان را به یک سری تشخیص پترن‌ها مجهز می‌کنیم تا بتوانیم محیط های ایزوله و Sandbox شده را از محیط واقعی تشخیص دهیم. 

بخش نهم: استخراج دیتا (Exfiltration)

پس از نفوذ به درون یک سیستم، ما به راه‌هایی برای استخراج دیتا از سیستم قربانی نیاز داریم. نویسنده در این فصل به بررسی این راه‌ها می‌پردازد و آنها را شرح می‌دهد. در ابتدای این فصل با کتابخانه Cryptodome برای رمزگذاری آشنا شده و از آن برای رمزگذاری متن‌ها استفاده می‌کنیم.

روش‌هایی استخراج دیتایی که در این فصل مورد بررسی قرار می‌گیرند شامل موارد زیر است:

  • Email exfiltration
  • File transfer exfiltration
  • web server exfiltration

با خواندن نام دو مورد اول احتمالا حدس‌هایی درباره نحوه انتقال داده پیدا کنید. نویسنده در مورد سوم از سایت Pastebin استفاده می‌کند. Pastebin سرویسی است که می‌توانید کدها و Text های خود را با بقیه به اشتراک بگذارید.

جای خالی DNS Exfiltration در این فصل حس می‌شود. در این روش مهاجم سعی می‌کند تا با ارسال Query های DNS به یک سرور تحت کنترل خود، دیتا را از سیستم قربانی استخراج کند.

بخش دهم: افزایش دسترسی در ویندوز

در این فصل نویسنده به زیبایی شما را با روش‌های ابتدایی افزایش دسترسی در ویندوز آشنا می‌کند. این روش‌های ابتدایی به باز شدن دید شما در این مبحث کمک می‌کنند. ضمنا در این بخش یک سرویس آسیب پذیر توسعه می‌دهیم و سپس برای تست از آن استفاده می‌کنیم. به صورت خلاصه در این فصل یاد میگیریم که چگونه برنامه‌ها و سرویس‌های در حال اجرا را لیست کنیم، تغییرات فایلها را بررسی کنیم و با ترکیب این دو بتوانیم فرایندی را پیدا کنیم که در حال اجرای دستورات در زمان‌های مشخص است و آن دستورات را از فایلی درون سیستم می‌خواند و سپس با تزریق کردن کد خود درون این دستورات می‌توانیم به هدف خود دست یابیم.

بخش یازدهم: Offensive Forensics

پس از اینکه سیستمی مورد نفوذ قرار گرفت، از سیستم Snapshot گرفته شده و این Snapshot ها مورد بررسی متخصصین قرار می‌گیرد تا علت حمله و هر اطلاعاتی درباره حمله را کشف کنند. در این فصل با کتاب‌خانه ای به نام Volatility آشنا می‌شویم که این کارها را برای ما ساده تر کرده است، به عبارتی از این کتابخانه به نفع خودمان استفاده می‌کنیم تا اطلاعات مهمی درباره سیستم قربانی بدست آوریم. نهایتا نویسنده در این فصل به معرفی و نحوه استفاده از Volatility پرداخته و همچنین نحوه نوشتن افزونه شخصی برای کار با این کتابخانه را شرح می‌دهد.

سخن پایانی

برای وارد شدن به حوزه امنیت، یادگیری برنامه نویسی امری ضروری است. شما باید بتوانید برای انجام کارهای مختلف ابزارهایی را برای خود توسعه دهید. زبان Python با شباهت زیادی که به زبان انگلیسی دارد می‌تواند گزینه مناسبی باشد. بنابراین اگر تا به حال شروع به یادگیری زبان برنامه نویسی نکردید، پیشنهاد من یادگرفتن Python و سپس مطالعه کتابی است که با یکدیگر به بررسی فصل‌های آن پرداختیم. در نهایت تمامی موارد توضیح داده شده، ابزارهایی برای استفاده کردن و رسیدن به هدف ما هستند، شما می‌‎توانید تمامی این اقدامات را با زبان‌های برنامه نویسی دیگر نیز انجام دهید.

نویسنده: علیرضا کلهر

کلیه حقوق مادی و معنوی این سایت برای شرکت امن افزار: شرکت امنیت اطلاعات و شبکه[ شرکت تخصصی امنیت اطلاعات ] محفوظ است.