هر متخصص امنیت شبکه باید نوشتن اسکریپت را یاد بگیرد چراکه Scripting یکی از مهمترین ابزار موجود در جعبه ابزار یک هکر است. در دنیای واقعی هکرها معمولا مجبور هستند تا چندین دستور را بصورت اتوماتیک و همزمان اجرا کنند و جهت انجام این کار از اسکریپت استفاده می کنند. برای تبدیل شدن به یک متخصص تست نفوذ قابل، نه تنها باید بصورت حرفه ای اسکریپت بنویسید بلکه باید به یکی از زبان های معروف اسکریپت نویسی مانند Ruby ،Python و یا Perl مسلط باشید. در ادامه این مطلب با مباحث ابتدایی Shell Scripting آشنا می شویم و سعی می کنیم یک اسکریپت ساده در ترمینال کالی بنویسیم.
- تعریف شل (Shell):
شل یک رابط بین سیستم عامل و کاربر می باشد. با کمک شل می توانیم انواع دستورات و برنامه ها را اجرا و حتی فایل های مختلف را ویرایش کنیم.
- انواع شل:
در سیستم عامل لینوکس می توان از شل های مختلفی استفاده کرد:
- Korn Shell
- The Z Shell
- The C Shell
- The Born Again Shell (Bash)
از آنجایی که bash روی همه توزیع های سیستم عامل LINUX و UNIX (شامل MAC ،BackTrack و KALI) موجود است، پس ما هم در این مجموعه مقالات از آن استفاده خواهیم کرد.
- مباحث ابتدایی:
برای شروع اسکریپت نویسی باید یک ویرایشگر متنی انتخاب کنیم. قبلا در مطالب مبحث کالی لینوکس به دو نوع از معروف ترین ویرایشگرهای متنی یعنی vi و nano اشاره کردیم (لینک). در این مقاله من از نانو استفاده خواهم کرد ولی شما می توانید از هر نوع ویرایشگری اعمم از متنی و گرافیکی استفاده کنید.
- اولین اسکریپت:
برای شروع یک ترمینال باز کرده و دستور زیر را در آن وارد کنید*:
#!/bin/bash
است .این عبارت به سیستم عامل می گوید که ما می خواهیم از مترجم بَش (BASH Interprter) برای اجرای این فایل استفاده کنیم.
سپس با زدن دکمه Enter به خط بعدی رفته و دستور زیر را وارد می کنیم:
دستور echo
هر عبارتی را که بعد از آن در گیومه بیاید در ترمینال نمایش می دهد. در مرحله آخر فایل را با زدن Ctrl+X و سپس Y و Enter ذخیره کنید و از نانو خارج شوید.*
*همونطوری که گفتم این فایل با هر ویرایشگر دیگه ای هم می تونه ساخته بشه. اصلا توی notepad ویندوز بنویسید و بعد توی کالی کپی کنید. هیچ تفاوتی توی نتیجه کار نداره.
- مجوز اجرا برای فایل firstscript:
وقتی یک فایل جدید در سیستم عامل کالی می سازیم، حتی ما که مالک (owner) فایل هستیم نمی توانیم آن را اجرا کنیم. در مقالات قبلی از مبحث کالی لینوکس با کنترل دسترسی به فایل ها آشنا شده ایم (لینک). در اینجا با تایپ دستور ls -l firstscript.sh
از دسترسی های فایل جدید خود با خبر می شویم.
همانطور که می بینید سطح دسترسی فایل ما به صورت rw-r--r--
است پس مالک این فایل فقط اجازه خواندن و نوشتن روی این فایل را دارد و نمی تواند آن را اجرا کند و همچنین گروه کاربری و کاربران دیگر هم فقط اجازه خواندن دارند. همانطور که قبلا یاد گرفتیم برای دادن اجازه اجرایی به مالک دستور زیر را وارد می کنیم:
حالا دوباره برای مطمئن شدن از ls -l
استفاده می کنیم و می بینیم که اجازه اجرایی به مالک فایل داده شده است.
- اجرای اولین اسکریپت:
اگر دقت کرده باشید تا اینجا هر دستوری را که می خواستیم اجرا کنیم به خط اول ترمینال رفته نام آن دستور و سپس متغییر های آن را وارد می کردیم. این راحتی کار به این خاطر است که دستورات لینوکس و محل اصلی آنها در متغییر PATH ذخیره شده اند ولی از آنجایی که دایرکتوری اسکریپت جدید ما در این فایل نیست باید محل واقعی آن را وارد کنیم تا اجرا شود. فایل هایی که به این طریق از ترمینال کالی با دسترسی root می سازیم در دایرکتوری Home سیستم عامل ذخیره می شوند.
پس برای اجرای فایل اسکریپت خود دستور زیر را وارد می کنیم:
همانطور که می بینید عبارت مورد نظر در خروجی نمایش داده شده است.
*./
به این معنی است که اگر فایل دیگری با نام firstscript.sh در متغییر PATH وجود دارد آن را نادیده بگیر و فایلی را که در دایرکتوری root است اجرا کن.
برای دیدن محتویات دایرکتوری PATH از دستور زیر استفاده می کنیم :
همانطور که می بینید دایرکتوری root در خروجی نیست و به همین دلیل است که باید از کاراکتر های ./
برای اجرای اسکریپت خود استفاده کنیم*.
*در مقالات بعدی روشی برای ویرایش متغییر PATH ارائه خواهیم کرد.
در قسمت بعدی مبحث scripting از bash برای اجرای چندین دستور شبکه بصورت همزمان استفاده می کنیم.