امنیت سایبری و مقالات علمی

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

در این مقاله به سراغ یکی از کتاب‌های خوب امنیت یعنی Black Hat Python برویم و به صورت خلاصه به بررسی هر یک از سر فصل‌های این کتاب بپردازیم.

11 min read
  • استفاده
  • فصل
  • بخش
  • کتاب
  • کتابخانه
  • می‌کنیم
  • نویسنده
  • کنیم
مروری بر کتاب Black Hat Python 2nd Edition

خلاصه تخصصی مقاله

در این مقاله به سراغ یکی از کتاب‌های خوب امنیت یعنی Black Hat Python برویم و به صورت خلاصه به بررسی هر یک از سر فصل‌های این کتاب بپردازیم.

موضوعات اصلی: استفاده، فصل، بخش، کتاب، کتابخانه، می‌کنیم

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

در اولین نگاه

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

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

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

Chapter 1Setting your python environment

Chapter 2Basic networking tools

Chapter 3Writing a Sniffer

Chapter 4Owning the network with scapy

Chapter 5Web hackery

Chapter 6Extending burp proxy

Chapter 7GitHub command and control

Chapter 8Common trojaning tasks on windows

Chapter 9Fun with exfiltration

Chapter 10Windows privilege escalation

Chapter 11Offensive 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 و سپس مطالعه کتابی است که با یکدیگر به بررسی فصل‌های آن پرداختیم. در نهایت تمامی موارد توضیح داده شده، ابزارهایی برای استفاده کردن و رسیدن به هدف ما هستند، شما می‌‎توانید تمامی این اقدامات را با زبان‌های برنامه نویسی دیگر نیز انجام دهید.

برای ارزیابی پایداری، امنیت و نگهداری این زیرساخت، راهنمای پشتیبانی شبکه را نیز مطالعه کنید.