کتاب Heavy Wizardry 101: Shellcodes, Backdoors, Droppers, and Worms (جادوگری سنگین ۱۰۱: شل کدها، درهای پشتی، دریپرها و کرم ها) نوشته دیوید مارتینز اولیویرا (که با نام پیکو نیز شناخته میشود) یک منبع آموزشی عملی در حوزه برنامهنویسی سطح پایین و امنیت سایبری است. این کتاب با رویکردی “جادوی سنگین” که به معنای کدنویسی مبتنی بر دانش عمیق از هسته و معماری سیستم است، به خوانندگان میآموزد تا ابزارهای مخرب مختلفی مانند شلکد، درب پشتی، دریپر (برنامه بارگذار بدافزار) و کرمهای کامپیوتری را از صفر و در سطح دستورالعملهای ماشین پیادهسازی کنند.
در ادامه مقدمهای از کتاب Heavy Wizardry 101 را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Heavy Wizardry 101:
هک و برنامهنویسی سیستمی موضوعاتی گسترده هستند که در حوزههای گوناگون بسیاری امتداد پیدا میکنند. یک کتاب بهتنهایی هرگز نمیتواند همهٔ آنها را پوشش دهد، اما این کتاب در کنار معرفی برنامهنویسی C و ASM، به بسیاری از این حوزهها نیز میپردازد؛ از جمله معماری کامپیوتر، شبکه، و اکسپلویتهای پایه. همچنین یاد خواهید گرفت که فایلهای باینری چگونه ساختاربندی میشوند و چگونه میتوان آنها را تغییر داد تا برنامهها کوچکتر شوند.
در این صفحات، دانشی بیش از آنچه تصور میکنید پنهان شده است، حتی وقتی مستقیماً به موضوعی نمیپردازیم. برای مثال، من دربارهٔ ویروسها صحبت نخواهم کرد، اما شما بخش زیادی از آنچه برای درک نحوهٔ کار یک ویروس لازم است را خواهید آموخت.
در ادامه، خلاصهای کوتاه از مطالب هر فصل آمده است:
فصل ۱: افسونِ غیبگوی باینری: وقتی سختافزار با اپکدها نجوا میکند
این فصل کتاب Heavy Wizardry 101 مفاهیم پایهٔ معماری کامپیوتر را بررسی میکند؛ مفاهیمی مانند اجزای اصلی یک کامپیوتر، اینکه معماری مجموعهدستورالعمل چیست، و اینکه کامپیوترها چگونه برنامهها را اجرا میکنند؛ آن هم از دریچهٔ یک ریزرایانهٔ فرضی. نخستین برنامهٔ ASM خود را برای این کامپیوتر فرضی خواهیم نوشت و فرایند تبدیل دستی آن برنامه به کد ماشینی قابلاجرای کامپیوتر را قدمبهقدم طی خواهیم کرد. سپس همان برنامه را در C بازسازی میکنیم، آن را کامپایل میکنیم، و ASM واقعی حاصل را برای چهار سکوی موردنظرمان بررسی میکنیم: x86_64، ARM، MIPS و RISC-V.
فصل ۲: افسونِ جوهره: تقطیر C تا ASM آغازین آن
در این فصل از کتاب Heavy Wizardry 101، برنامهٔ C فصل پیش را برمیداریم و بهتدریج لایههای میان آن و کد اسمبلی معادلش را حذف میکنیم تا دوباره به همان برنامهٔ ASM اولیه برسیم. در این سفر از بالا به پایین، syscallها و برنامههای مختلفی را که برای ساخت فایلهای باینری بهکار میروند بررسی خواهیم کرد؛ از جمله پیشپردازنده، کامپایلر و لینککننده. همچنین دربارهٔ اهمیت رابط دودویی برنامه (ABI) صحبت میکنیم و ABIهای چهار سکوی خود را بررسی خواهیم کرد.
فصل ۳: افسونِ زایش دوباره: دگرگون کردن درودها به شلکد
این فصل کتاب Heavy Wizardry 101 مفاهیم بیشتری از معماری کامپیوتر را تکمیل میکند؛ از جمله نحوهٔ نمایش اطلاعات، چگونگی کار حافظه، و اینکه چرا اندازهٔ طبیعی واژهٔ پردازنده و همترازی حافظه اهمیت دارند. از این ایدهها برای نوشتن نخستین برنامهٔ واقعی خود، یعنی «Hello, world!» استفاده خواهیم کرد. در این مسیر، اشارهگرها و دیگر مفاهیم C و ASM را نیز معرفی میکنم. جالب اینجاست که برنامهٔ «Hello, world!» شباهت زیادی به یک شلکد پایه دارد، بنابراین در این فصل نخستین شلکد خود را نیز خواهیم ساخت.
فصل ۴: افسونِ قابِ سرریزکننده: تسلط بر رازهای پشته
این فصل کتاب Heavy Wizardry 101 مفهوم تابعها در C را معرفی میکند و نشان میدهد که توابع چگونه در ASM با کمک ناحیهای موقتی از حافظه به نام پشته (stack) پیادهسازی میشوند. دربارهٔ موضوعاتی مانند قاب پشته (stack frame)، نحوهٔ پیادهسازی متغیرهای محلی، و استفاده از canaryها برای تشخیص سرریز حافظه خواهید آموخت. سپس از آموختههای خود برای اجرای یک اکسپلویت کلاسیکِ سرریز بافر استفاده خواهید کرد.
فصل ۵: افسونِ نامیرا: نوشتن یک REPL برای جانبخشی به یک باتنت
این فصل کتاب Heavy Wizardry 101 از برنامههای خطی فراتر میرود و برنامههایی را معرفی میکند که با استفاده از حلقهها و شرطها، جریان کنترل خود را تغییر میدهند؛ با عبارتهای منطقیای که ارزیابی میشوند تا بر اجرای برنامه اثر بگذارند. این مفاهیم را با هدایت شما در نوشتن یک REPL کلاسیک توضیح خواهم داد، و سپس نشان میدهم چگونه میتوان همان REPL را به یک برنامهٔ فرماندهی و کنترل (C2) برای مدیریت یک باتنت تبدیل کرد.
فصل ۶: نقابِ سایهها: گشودن درهای پشتی پنهان
این فصل کتاب Heavy Wizardry 101 نشان میدهد چگونه میتوان یک بدافزار واقعی نوشت: یک backdoor برای دسترسی سریع و آسان به یک سیستم. همانطور که خواهید دید، یک backdoor بسیار شبیه برنامههای دسترسی از راه دور مانند ssh یا telnet است، هرچند به شیوهای متفاوت مستقر میشود. برای ساخت آن، با برخی مبانی برنامهنویسی شبکه آشنا خواهید شد، از جمله نحوهٔ کار با socketها و چگونگی دستکاری file descriptorها برای اهداف خودتان.
فصل ۷: نقابِ خاکستر: دراپری که هیچ ردی از شعله بر جا نمیگذارد
این فصل کتاب Heavy Wizardry 101 درِ پشتی را به یک dropper گسترش میدهد؛ برنامهای کوچک برای انتقال یک برنامهٔ بزرگتر به یک سیستم. راهبردهایی برای اجتناب از شناسایی در تحلیلهای جرمشناسی دیجیتال بررسی خواهیم کرد، از جمله بارگذاری برنامه در حافظه بهجای دیسک سخت. همچنین خواهیم دید که dropper ما چگونه نمونهای واقعی را که چند سال پیش در دنیای واقعی مشاهده شده بود، بازتاب میدهد.
فصل ۸: افکندنِ مار دوقلو: احضار یک کرمِ دوسر
این فصل کتاب Heavy Wizardry 101 پروژهٔ نهایی کتاب را معرفی میکند: توسعهٔ یک کرم کامپیوتری، یا اگر ترجیح دهید، یک سامانهٔ عاملِ متحرک. در این فصل با ایجاد زیرساخت پشتیبان و محیطی برای آزمایش کرم آغاز میکنیم. سپس یک کرم دومرحلهای را در C پیادهسازی میکنیم؛ بهگونهای که dropper ما در مرحلهٔ نخست، بار اصلی کرم را بهعنوان مرحلهٔ دوم منتقل کند. همچنین برخی مشکلاتی را که ممکن است در اثر کدنویسی نادرست کرمها پدید آید بررسی خواهیم کرد، از جمله طوفان بستهها و race conditionها.
فصل ۹: افکندنِ رشتهٔ تنها: کرمسازی تکمرحلهای
این فصل کتاب Heavy Wizardry 101 کرم را از C به ASM منتقل میکند و نشان میدهد چگونه میتوان آن را بدون نیاز به dropper، از دو مرحله به یک مرحله کاهش داد. انتقال کرم به ASM برخی تفاوتهای میان چهار سکوی ما را برجسته خواهد کرد.
فصل ۱۰: افکندنِ میزبانان گمشده: احضار اسکنرهای شبکه
این فصل کتاب Heavy Wizardry 101 کرم ما را با افزودن یک اسکنر پایهٔ شبکه گسترش میدهد تا بتواند بهصورت خودکار اهداف بالقوه را در شبکه پیدا کند، بهجای آنکه به یک فهرست IP از پیش hard-codeشده متکی باشد. راهحل سادهلوحانه برای این اسکنر بیش از حد کند خواهد بود. خواهید آموخت چرا چنین است و خواهید دید چگونه میتوان با استفاده از عملیات non-blocking آن را بهبود داد. وقتی اسکنر را از C به ASM تطبیق میدهیم، بهدقت پیامدهای تبدیل endianness را برای سکوهای مختلف بررسی خواهیم کرد؛ جزئیاتی مهم در برنامههای شبکهای.
پیوست A: کورهٔ جادوگر: آمادهسازی کارگاه شما
این پیوست شما را در راهاندازی یک محیط توسعه برای کتاب با استفاده از یک کانتینر Docker راهنمایی میکند. خواهید آموخت چگونه کانتینر را سفارشیسازی کنید و qemu را راهاندازی نمایید تا بتوانید از یک دستگاه واحد، کد مربوط به هر چهار سکوی سختافزاری ما را اجرا کنید.
پیوست B: رازهای کوره: ترفندهای جادویی برای ابزارهای سطح پایین
این پیوست مجموعهای از نکتهها و ترفندهای گوناگون را فراهم میکند تا بتوانید بیشترین بهره را از ابزارهای بهکاررفته در این کتاب ببرید. همچنین راهنماییهای بیشتری دربارهٔ اینکه چگونه برنامههای خود را واقعاً، واقعاً کوچک کنید ارائه میشود، بههمراه جدولهای مرجع سریع شامل همهٔ syscallهای استفادهشده در کتاب و قرارداد فراخوانی System V ABI برای چهار سکوی سختافزاری ما.
پیوست C: سندانِ جادوگر: فهرست کامل افسونها
این پیوست کل کد منبع کرم تکمرحلهای را، با توضیحات کامل، برای همهٔ سکوهای تحت پوشش کتاب دربر میگیرد تا مرجعی آسان برای مراجعه باشد.
هر سفر بزرگی با یک گام نخست آغاز میشود، و این گامِ شماست. میدانم که بیصبر هستید، پس بیایید به دنیای دوگانهٔ هک و برنامهنویسی سیستمی شیرجه بزنیم و بنیانی بسازیم که شما را در مسیر تسلط بر این جادوی سنگین قرار دهد.
سرفصلهای کتاب Heavy Wizardry 101:
- Cover Page
- Title Page
- Copyright Page
- Dedication Page
- About the Author
- About the Technical Reviewer
- BRIEF CONTENTS
- CONTENTS IN DETAIL
- ACKNOWLEDGMENTS
- INTRODUCTION
- PART I: INTO THE MACHINE: AWAKENING CODE SPELLS
- 1. SPELL OF THE BINARY ORACLE: WHEN HARDWARE WHISPERS IN OPCODES
- 2. SPELL OF ESSENCE: DISTILLING C TO ITS PRIMORDIAL ASM
- 3. SPELL OF REBIRTH: TRANSMUTING GREETINGS INTO SHELLCODE
- 4. SPELL OF THE OVERFLOWING FRAME: MASTERING STACK SECRETS
- 5. SPELL OF THE UNDEAD: WRITING A REPL TO ANIMATE A BOTNET
- PART II: ONTO THE NETWORK: UNVEILING MYSTIC GATEWAYS
- 6. VEIL OF SHADOWS: UNLOCKING HIDDEN BACKDOORS
- 7. VEIL OF ASH: THE DROPPER THAT LEAVES NO FLAME BEHIND
- PART III: THROUGH THE NETWORK: CASTING CRAWLERS
- 8. CASTING THE TWIN SERPENT: SUMMONING A TWO-HEADED WORM
- 9. CASTING THE LONE STRAND: SINGLE-STAGE WORMCRAFT
- 10. CASTING THE LOST HOSTS: CONJURING NETWORK SCANNERS
- APPENDIXES: THE FORGE
- A. THE SORCERER’S FORGE: PREPARING YOUR WORKSHOP
- B. SECRETS OF THE FORGE: ARCANE TRICKS FOR LOW-LEVEL TOOLS
- C. THE SORCERER’S ANVIL: FULL SPELLCRAFT LISTINGS
- INDEX
جهت دانلود کتاب Heavy Wizardry 101 میتوانید پس از پرداخت، دریافت کنید.

دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.