برای طرح سوال و دسترسی به آموزش ها  کانال ما در تلگرام بپویندید  

آموزش shell code نویسی در لینوکس – Linux قسمت اول

به نام دانای بر حق

مقدمه

پیرو آموزش هایی که SadeghPM عزیز در مورد شل کد نویسی قرارداده بودش ما سعی کردیم این آموزش رو برای لینوکس ادامه بدیم البته با کسب اجازه از ایشان، و اما اگر بخواهیم در یک جمله در مورد شل کد صحبت کنیم شل کد کدهای ماشینی هستند که برای انجام یه سری عمل به سیستم عامل تحویل داده میشند و نتیجه خاصی دارند و این اعمال میتونه خرابکارانه باشه یا نباشه و حالا برای کسب اطلاعات بیشتر به آموزش SadeghPM قسمت اول مراجعه کنید در اینجا، حال آنکه شل کد های میتونند با زبان ماشین یا همون همون آپکد های hex یا هگزادسیمال بهتره بگیم باشند یا می تونند به صورت فرامینی باشند که در که در بخش های که از سیستم عامل اجرا شوند که گاهی پذیرای command line هستند به صورت متنی ارسال شده و اجرا شوند که بحث ما اکنون حول محور این بخش command line هستش.

تفاوت ارسال command line در ویندوز و لینوکس

خب در این شکی نیست در مبحث شل کد نویسی در لینوکس بسیار دست انسان باز هستش تا ویندوز، که در ادامه توضیح مبسوط تر میدیم، تفاوت اولی که میتونیم ازش یاد بکنیم این هستش کد های شما باید در ویندوز در cmd و یا همون command port می باشد ولی در لینوکس از bash و برنامه ی terminal استفاده میشود حال چرا لینوکس قدرت بیشتری داره، علت اول این هستش که این سیستم عامل جوری تعریف شده که حدودا ۹۵٪ از اعمال در این سیستم عامل غیر وابسته به واسط گرافیکی هستش و با terminal میشود به سرعت انجام کار داد، به طور مثال تقریبا در تمام ابر توزیع های لینوکس یه نسخه سرور دارد که فاقد GUI یا واسط گرافیکی میباشد و همواره باید از پروتوکل SSH و خط فرمان اجرای دستور کرد.

اجرای کد در terminal

برای اجرای دستور در ترمینال ما به سادگی میتونیم  با کلید ترکیبی Ctrl+Alt+T اون رو اجرا کنه، و کد های مورد نظر مون رو بنویسیم، به عنوان مثال با نوشت دستور dir لیست فایل ها و فولدر های جاری به شما نمایش داده میشود و و به همین تریتب شما موفق میشوید حال آنکه ما برای shellcode نویسی نیاز به کامپایلر و یا اسمبلر ها داریم که تو لینوکس به صورت پیش فرض کامپایلر c به به نام gcc نصب هستش و خیالتون رو از این بابت راحت می کنه و حالا برای اجرا کد های اسمبل با نصب nasm که به سادگی میتونین کد ها اسمبلی رو هم اجرا کنید بیاییم مراحل زیر رو با هم اجرا کنیم، ولی قول بدین زیاد روی نکنین سیستم منفجر کنین 😀 :

دستور ها در ترمینال اجرا میشود تا اولین برنامه یعنی hello world رو در اسمبلی بنویسیم.

نصب nasm :

sudo apt-get install nasm

حالا با استفاده از تسکت ادیتور یه فایل اسمبلی درست میکنیم گزینه nano برای خط فرمان مناسب هستش:

nano hello.asm

خب حالا برنامه نانو یه فایل hello.asm رو نظر گرفته تا شما مقادیر مورد نظر رو توش وارد کنید برای این کار قطعه کد زیر رو توش وارد کنید اگر متوجه نمیشید باید اون حداقل هایی که SadeghPM   رو مطرح کرد رو بلده بوده باشید :

section .data
msg db 'Hello, world!',0xa ;our dear string
len equ $ - msg ;length of our dear string

section .text
global _start ;must be declared for linker (ld)
_start: ;tell linker entry point
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel

خب برای paste در terminal میتونین از Shift+Insert استفاده کنید و حالا باید با زدن کلید های Ctrl+X باید خارج شوید و در صورت پرسش برای تمایل ذخیره فایل از y به معنی yes استفاده کنید

nano

اکنون فایل شما ساخته شد حال باید توسط nasm اون رو اسمبل کنید:

nasm -f elf hello.asm
ld -s -o hello hello.o

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

./hello

در آخر نتیجه:

به همین سادگی و به همین بی مزگی 😀 چون مزه اش موقع خرابکاری میباشد.


انتشار

در

, , ,

توسط

برچسب‌ها:

نظرات

9 پاسخ به “آموزش shell code نویسی در لینوکس – Linux قسمت اول”
  1. sina

    یه سوال این الان فقط روو ماشینی که build شده کار میده ؟! یعنی الان اگه اینو به یه کامپیوتر دیگه برم (فایل اجرایی شو ) کار میده ؟!

    1. ‌A1Gard

      این کد خاص روی تمام توزیع های دبیان کار می کند.

    2. ققنوس

      سلام چجوری برای خودمون شل کد بسازیم؟!

  2. rpgroot

    سلام
    امکان ارایه کلاس به صورت ریموت هم دارید تو مقوله شل کد نویسی و انکریپت کردن برای بای پس شدن انتی ویرویس

    1. ‌A1Gard

      سلام متاسفانه ، خیر

  3. دوست من این صرفا یه برنامس ، نه شل کد !!
    خیلی موارد باید موقع نوشتن شل کر رعات بشه که اینجا نشده …

    1. ‌A1Gard

      دوست عزیز روز اول مباحث رو نمیشه یه ضرب بری پله دهم گاماس گاماس

  4. ققنوس

    سلام چجوری برای خودمون شل کد بسازیم؟!

    1. ‌A1Gard

      تو چه زمینه ای؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *