سلام دوستان . موضوعی که امروز با هم بررسی می کنیم شاید کمی بحث بر انگیر باشه ٫ اما مطمین هستم در آخر این مقاله به این جمع بندی می رسیم که جمله ی معروف “اوبونتو خیلی خوبه چون ویروس نمی گیره” رو نباید با اطمینان کامل بگیم . به علت زیاد نشدن مقاله ابتدا debian base ها را بررسی می کنیم سپس در مقاله ای دیگر red hat base ها را آنالیز می کنیم .

موضوع اصلا سر اوبونتو و apt-get install نیست و مربوط به packet management دو توزیع مادر یعنی debian و redhat است . این که در خط بالا عبارت اوبونتو رو استفاده کردم دلیلش این هست که افراد تازه وارد بیش تر از این توزیع استفاده می کنند . ( منظور از تازه وارد , افردی است که کم تر به این مباحث توجه می کنند )

موضوع های بررسی شده :

1. packet management چیست ؟

2. مخازن دبیان و اوبونتو مطمین هستند ؟

3. چگونه می توان یک فایل deb را آلوده کرد ؟!

4. بیرون کشیدن پسورد ذخیره شده در pidgin و فرستادن به یک ایمیل

5. ایجاد بک دور و گرفتن شل از سیستم قربانی با استفاده از پروژه ی متااسپلویت

6. دو اشکال در سناریو rdesktop
7. ساخت مخزن برای قرار دادن برنامه ها آلوده

فرض ها :

سیستم نفوذگر : BackBox 3 64 Bit / 192.168.1.6

سیستم قربانی 1 : Ubuntu 14.04 64 BIT / debian base / 192.168.1.2

packet management چیست ؟

در واقع packet management برای راحتی نصب برنامه به وجود اومده چرا که اون اوایل کامپایل از روی سورس کد همراه با رعایت کردن پیش نیاز ها ٫ خیلی ها رو اذیت می کرد . برای همین توزیع ها مادری مثل debian و redhat اومدن و ابزاری رو معرفی کردند برای راحتی نصب برنامه , به نام packet management . که ما اون رو در قالب apt-get install برای debian base ها و yum install رو برای red hat base ها می بینیم .

همون طور که می دونید با این روش خیلی ساده با یک خط کد در ترمینال می شه خیلی از برنامه ها رو نصب کرد . به عنوان مثال برنامه ی rdesktop :

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

سوال : مخازن دبیان و اوبونتو مطمین هستند ؟

 

اولین جرقه می تونه این باشه : اوبونتو به چه سروری متصل میشه ؟! آیا این سرور ها قابل اطمینان هستند ؟!

جواب این سوال سادست . به صورت پیش فرض یک سری سرور های مورد تایید اوبونتو در سیستم عامل گنجانده شده و packet management به آن ها متصل می شود . این سرور ها یکی دو تا نیستند و در هر کشوری و یا در هر منطقه ی جغرافیایی یک سرور برای کاربران در نظر گرفته شده است . دلیل این کار هم مشخص است ! نمی توان حجم عظیمی از درخواست ها رو به یک سرور مرکزی هدایت کرد …

به عنوان مثال یکی از سرور هایی که در ایران استفاده می شود به شرح زیر است .

اما بر گردیم به سوال خودمون . این که آیا این سرور هایی که خود اوبونتو میگه از اینا استفاده کنید امن هستند یا نه ؟!

جواب : از روی اطمینانی که طی این چند سال توسط خودمون یا دیگران کسب شده میگیم که بله این سرور ها امن هستند و در صورت استفاده از این سرور ها ٫ برنامه های مخرب روی سیستم نصب نمی شود و یا …

مورد بعدی که باز احتمالا بار ها و بار ها با آن مواجه شده اید این است که خیلی از برنامه ها در سرور های مورد تایید اوبونتو یا بهتر بگم ٫ در مخزن های تعیین شده ی اوبونتو قرار ندارد و برای نصب مجبوریم که از سورس کامپایل کنیم و یا نصاب اون ها رو دانلود کنیم و یا از مخازنی استفاده کنیم که این برنامه ها درون آن وجود دارد که البته گاهی مخرن , رسمی و مورد اطمینان نمی باشد . مثلا ابزار Viber که برای استفاده ٫ نصاب اون رو از سایت سازنده دانلود و سپس نصب می کنیم .

این جا باید کمی مراقب باشیم و به هر مخزنی اطمینان نکنیم ! دلیل این اطمینان نکردن رو جلوتر متوجه خواهیم شد .

تقریبا از هر لیسانسیه ی کامپوتری که از وجود باینری بزرگی به نام ریجستری خبر داره , این جمله رو شنیدیم : “از هر کسی فایل اجرایی نگیریم و یا از هر جایی برنامه دانلود نکنیم” چرا که در اکثر مواقع این برنامه ها و فایل های اجرایی آغشته به ویروس و فایل های مخرب می باشند .

در اوبونتو نیز به همین صورت ! از هر کسی و یا از هر جایی نباید فایل نصاب برنامه را بگیریم و یا دانلود کنیم !‌ این در مورد مخارن ( غیر رسمی و غیر معتبر ) نیز صدق می کند چرا که استفاده از مخازن جهت نصب برنامه هم یک جور دانلود غیر قابل اطمینان می باشد و هیچ تضمینی وجود ندارد که داخل فایل نصاب برنامه ای مخرب وجود نداشته باشد .

راستی اگه مکانیزم نصب برنامه توی ویندوز مثل packet management گنو / لینوکس بود چی میشد ؟! طبیعتا با کلی ویروس درگیر نمی شدیم ! حداقل بد افزارهایی که مورد تعیید ماکروسافت نبود … :ی :ی :ی

البته این طرز فکر شاید درست نباشه و خیلی سخت گیرانه باشه ٫ این مسیله خودش رو در تجربه کار با گنو/لینوکس نشون می ده اما حداقل می تونم بگیم که امکان اجرای خرابکاری وجود داره . به هر حال فایل های deb و یا rpm ای که ما دانلود می کنیم در اکثر مواقع برنامه هایی رو درون خودشون دارند که یکی دیگه کامپایل کرده تشخیص این که این برنامه های کامپایل شده آلوده هستند یا خیر شاید سخت باشه ( حتی اگه سورس موجود باشه )

چگونه می توان یک فایل deb را آلوده کرد ؟!

ابتدا باید به نحوه ی نصب برنامه اشاره ای کرد . یک فایل deb مجموعه ای از چندین فایل و دایرکتوری است و پس از extract هر کدام از فایل ها در مسیر مشخصی کپی می شوند . به عنوان مثال فایل اجرایی برنامه ی rdesktop در مسیر usr/bin/ و آیکون ها در مسیر آیکون ها و man page در مسیر man ها و … کپی می شوند .

برای درک بهتر این موضوع پیشنهاد می کنم داخل فایل های deb را با برنامه GNU Midnight Commander نگاه کنید . برای نصب  :

و در نهایت برنامه را در داخل خط فرمان به این صورت اجرا کنید و به دایرکتوری مربوطه برید : mc

001

عکس بالا به دو قسمت تقسیم می شود که در سمت چپ محتویات فایل deb رو می تونید مشاهده کنید . در سمت راست به داخل دایرکتوری CONTENTS رفتیم و همان طور که مشاهده می کنید دو دایرکتوری با نام های bin و share داریم . پس در موقع نصب محتویات درون این دایرکتوری ها دقیقا در مسیر های مشخص extract می شود به عنوان مثال فایل usr/bin/rdesktop/ دقیقا در مسیر usr/bin/ سیستم عامل کپی می شود .

نکته ای که باید به آن توجه کرد این است که پرمیشن فایل ( چه فایل اجرایی چه فایل های متنی man و … ) های کپی شده در سیستم از روی فایل deb رعایت می شود یعنی اگر سازنده پرمیشن فایل اجرایی برنامه را 700 در نظر گرفته باشد , دقیقا همان پرمیشن بعد از کپی شدن فایل اجرایی در سیستم رعایت می شود .

تعجب نکنید ! داشتن پرمیشن اجرا نیمی از کار است ! کاربری که فایل اجرایی را اجرا می کند هم مهم است !

در دایرکتوری جاری ای که هستید یک دایرکتوری ( مثلا با نام برنامه ) ایجاد کنید سپس در داخل آن دایرکتوری دوباره یک دایرکتوری با نام DEBIAN ایجاد کنید . یعنی :

015

حال محتویات دایرکتوری DEBIAN موجود در فایل deb را در دایرکتوری rdesktop/DEBIAN ای که ساختیم extract می کنیم :

حالا محتویات دایرکتوری usr موجود در فایل deb را در دایرکتوری rdesktop که ساختیم extract می کنیم :

 

016

 

مشاهده می کنید که تمامی فایل های موجود در فایل deb در دایرکتوری rdesktop استخراج شدند .

چیزی که باعث می شه که وقتی ما در ترمینال تایپ می کنیم rdesktop و برنامه برای ما اجرا می شود , وجود فایل اجرایی rdesktop در مسیر usr/bin/ است . پس ما می توانیم یک فایل اجرایی دیگر به نام rdesktop ایجاد کنیم و در داخل آن تعریف کنیم که با اجرای این فایل , علاوه بر اجرای فایل اجرایی rdesktop اصلی یک کار دیگر هم انجام بده !

یعنی در اولین مرحله ما اسم rdesktop اصلی رو مثلا تغییر می دیم به rdesktop.orginal سپس یک فایل اجرایی با نام rdesktop می سازیم . نتیجه این میشه که وقتی قربانی rdesktop را در ترمینال خود اجرا کند علاوه بر اجرای فایل rdesktop.orginal اتفاقات دیگری نیز در سیستم او رخ می دهد .

009

اما فایل اجرایی تقلبی رو به هر طریقی و با هر زبانی می تونیم ایجاد کنیم ! از زبان های اسکریپتی مثال پایتون و پرل بگیرید تا برای مثال cpp و کامپایل آن ! اما ما در این جا از خود bash استفاده می کنیم چرا که ( از نظر من ) ساده تر از بقیه ی روش ها است .

خوب پس در ابتدا به دایرکتوری rdesktop/usr/bin می ریم و نام فایل اجرایی rdesktop اصلی را ویرایش می کنیم و در نهایت یک فایل با نام rdesktop ایجاد می کنیم .

حالا فایل rdesktop را با یک ویرایشگر مثل nano باز کنید و به عنوان مثال به صورت زیر عمل کنید :

 

قسمت اول کد بالا می گوید که با اجرای این اسکریپت ابتدا برنامه ی rdesktop اصلی را باز کن .

قسمت دوم می گوید که عبارت hi ubuntu را در فایل geek.text واقع در مسیر etc/ بریز .

ساده ترین ایده ای که می توان برای قسمت دوم اسکریپت در نظر گرفت همین echo است اما از آن جایی که این اسکریپت پرمیشن لازم را دارد , می توان خیلی کار های دیگری نیز انجام داد که این دیگه بستگی به خودتون داره ! به عنوان مثال :

1. عبارت hacked را در دسکتاپ سیستم قربانی ایجاد کنیم !

2. لیستی از برنامه های نصب شده بر روی سیستم قربانی تهیه کنیم و سپس آن را پاک کنیم !

3. با تغییراتی کوچیک در فایل های کانفیگ برای بعضی از سرویس ها مشلاتی را ایجاد کنیم ! مثلا نت سیستم رو قطع کنیم !

4. بعضی از فایل ها مهم سیستم را پاک کنیم مثلا فایل های مربوط به گراب !

5. پسورد روت و کاربر را به پسوردی دلخواه تغییر دهیم !

6. پارتیشن های mount شده را پیدا کنیم و با دستور rm -rf محتویات آن ها را پاک کنیم !

7. تمامی پسورد های ذخیره شده در فایرفاکس و دیگر مرورگر ها را بیرون بکشیم و آن را در فایلی متنی بریزیم سپس آن را در یک FTP سرور آپلود کنیم ! ( مراجعه شود به این پست . فیلم سوم )

8. بیرون کشیدن پسورد ذخیره شده در pidgin و فرستادن به یک ایمیل

9. اگر کاربر از برنامه ی ذخیره پسورد استفاده می کند . دیتابیس آن را پاک کنیم !

10. با nc و یا با یک اسکریپت ساده یک بک دور روی یکی از پورت ها باز کنیم !

11. با استفاده از پروژه ی متااسپلویت یک شل کد آماده کنیم و از سیستم قربانی شل بگیریم !

12 . یک روت کیت در سیستم قربانی فعال کنیم !

13. سورس برنامه هایی نظیر ls و یا sudo را از نت بگیریم سپس نسخه ی آلوده و کامپایل شده ی خودمون رو با نسخه ی سالم قربانی جایگزین کنیم . ( مثلا سورس ls رو طوری ادیت کنیم و در نهایت کامپایل که فایلی به نام Backdoor واقع در مسیری خاصی را نشون نده ! یا سورس sudo را طوری ادیت کنیم و در نهایت کامپایل که پسورد کاربران را به یک سرور بفرستد ! )

و خیلی ایده های دیگه . که همه ی این ایده ها به لطف داشتن پرمیشن قابل اجرا است . در واقع این کوتاهی خود کاربر است که یک برنامه آلوده را با دستور sudo dpkg -i name.deb نصب می کند .

در 13 ایده ی بالا دو قسمت bold شده که در ادامه آن را توضیح می دهیم .

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

برای این منظور ابتدا شل کد خودمون رو در قالب یک فایل اجرایی در میاوریم :

006

من در این جا از پورت دلخواه 2323 استفاده کردم و آی پی داخل شبکه ی سیستم خودم رو برای شل کد قرار داده ام یعنی 192.168.1.6 برای ست کردن آی پی پابلیک خودتون و … به این مقاله مراجعه کنید .

در مرحله ی بعد متااسپلویت رو روی پورت 2323 فعال می کنیم . به صورت زیر :

007

 

خوب حالا کافیست فایل مخرب خودمون رو در کنار rdesktop.orginal و rdesktop قرار دهیم و پرمیشن اجرا به آن دهیم . یعنی‌‌ :

008

حالا باید دستور اجرای فایل metasploit را در فایل rdesktop ( که خودمون ساختیم ) را اضافه کنیم . پس به کل محتویات فایل rdesktop به این صورت در می آید :

دوباره مانند قسمت قبل باید به فایل اجرایی rdesktop پرمیشن اجرا دهیم . پس :

010

توجه داشته باشید که اسم های rdesktop.orginal و metasploit و حتی محل ذخیره سازی آن ها دلخواه می باشد .

حالا که تغییرات رو اجرا کردیم باید محتویات دایرکتوری rdesktop را به فایل deb تبدیل کنیم . برای این منظور این گونه عمل می کنیم :

011

توجه داشته باشید که rdesktop.fake یک اسم دلخواه می باشد .

تمام ! حالا کافیست این برنامه در داخل سیستم عامل قربانی ( اوبونتو ) نصب شود .

ابتدا آپاچی را در سیستم خودمون start می کنیم و فایل rdesktop.fake.deb را در دایرکتوری var/www/ کپی می کنیم :

012

در مرحله ی بعد در داخل اوبونتو فایل rdesktop.fake.deb را wget کرده و سپس آن را نصب می کنیم :

013

در تصویر بالا همان طور که می بینید ابتدا فایل های metasploit و rdesktop و rdesktop.orginal واقع در مسیر usr/bin/ جست و جو شده است که همان طور که پیداست قبل از نصب برنامه این فایل ها یافت نشده است . هم چنین در آخر برنامه ی rdesktop نیز اجرا شده و می بینید که خروجی دقیقا همان خروجی rdesktop واقعی است با این تفاوت که در پشت پرده یک session بین سیستم نفوذ گر و سیستم قربانی ایجاد شده است :

 

014

همان طور که در عکس بالا مشخص است خروجی دستور whoami کاربر iman است چرا که برنامه rdesktop توسط این یوزر اجرا شده است پس در نتیجه خیلی از محدودیت ها را در پیش رو داریم یا به طور بهتر به روت دسترسی نداریم . برای این مشکل می توانیم از لوکال روت های موجود ( در صورت وجود ) استفاده کنیم و یا از سناریو دیگری برای اجرای برنامه توسط قربانی استفاده کنیم !

توضیح بیش تر : خیلی از برنامه هستند که فقط با کاربر روت اجرا می شوند مثلا fdisk اما خیلی از برنامه ها نیز هستند که توسط دیگر کاربران نیز می توانند اجرا شودند مانند ls و ifconfig و یا همین rdesktop پس ما می توانیم سناریو ای رو انتخاب کنیم که در پی آن یوزر باید از کاربر روت جهت اجرای برنامه استفاده کند . به عنوان مثال sudo fdisk

البته نباید اشتباهات کاربران را نادیده بگیریم مثلا در همین سناریو rdesktop اگر کاربر این برنامه را با sudo اجرا و یا آن را با یوزر روت در ترمینال اجرا می کرد , سطح دسترسی گرفته شده روت می بود .

2 اشکال در سناریو rdesktop :

1. برنامه ی rdesktop یک برنامه تحت خط فرمان است که با سویچ های مختلف آن مورد استفاده قرار می گیرد . اما ما در اسکریپت خودمون فقط به اجرای فایل اصلی rdesktop بسنده کردیم و دیگر سویچ های آن را لحاظ نکردیم . برای حل این مشکل می تونیم اسکریپت خودمون رو متناسب با سویچ های rdesktop تنظیم کنیم و یا برنامه ای را برای آلوده سازی در نظر بگیریم که احتیاجی به سویچ ندارد به عنوان مثال Viber !

 

2. شل کد ما توسط یک بار اجرای اسکریپت rdesktop در بک گراند اجرا می شود در صورتی که ممکن است قربانی چندین بار از rdesktop استفاده کند ! ( خروجی این حالت رو خودتون آزمایش کنید و ببینید اصلا تاثیری در شل گرفته شده در متااسپلویت دارد یا نه )

بیرون کشیدن پسورد ذخیره شده در pidgin و فرستادن به یک ایمیل :

ابتدا باید دو نکته رو ذکر کرد :

1. پسورد ذخیره شده به صورت clear text ذخیره می شود .

2. پسورد در فایلی به نام accounts.xml واقع در home دایرکتوری کاربر و در مسیر زیر قرار گرفته است :

اما برای اجرای این قسمت از یک اسکریپت کوچیک که به زبان پایتون تهیه کردیم استفاده می کنیم :

نکاتی برای اجرای درست اسکریپت :

1. این اسکریپت به یک gmail لوگین می کند سپس پسورد قربانی را برای آدرس جیمیل اصلی شما send می کند .

2. فایلی به نام log.txt در هنگام اجرای اسکریپت ایجاد می شود و در نهایت پاک می شود .

3. این اسکریپت رو کنار فایل bash قرار دهید و به این صورت آن را اجرا کنید : python send.py

در آخر نمونه ای از پسورد send شده :

024

یعنی : ( پسورد ارسالی نمونه می باشد :ی )

[‘\t\t{name}e2ma3n{/name}\n’,space’\t\t{password}BdjlgjDkccUQoK7{/password}\n’]

ساخت مخزن برای قرار دادن نصاب آلوده ی برنامه ها :

توی قسمت قبل فایل نصاب برنامه را آلوده کردیم اما نحوه ی نصب به صورت دستی با استفاده از dpkg -i بود اما در این قسمت نحوه ی ساخت یک مخزن رو دنبال می کنیم تا نشون دهیم این سناریو آلوده شدن با apt-get update نیز امکان پذیر است !

البته باز تکرار می کنم که تمامی این اتفاقا مربوط به کاربر است چرا که بار ها و بار ها گفته شده است که از مخازن غیر معتبر استفاده نکنید .

برای ساخت یک مخزن ابتدا باید آپاچی رو بر روی سیستم نصب داشته باشید . پس اگر از backbox استفاده نمی کنید آن را به صورت زیر نصب کنید :

حالا وارد دایکتوری var/www/ بشوید سپس به عنوان مثال یک دایرکتوری به نام debs ایجاد کنید و تمامی فایل های deb خودتون رو درون این دایرکتوری بریزید و در نهایت :

017

در نهایت برای اضافه کردن آدرس مخزن به سیستم به این صورت عمل می کنیم :

در واقع دستور بالا عبارت deb http://192.168.1.6/ deb/ را در آخر فایل sources.list اضافه می کند . حال برای  آپدیت بسته از apt-get update استفاده می کنیم .

نکته :‌ پس از آپدیت کردن بسته ها و اضافه کردن بسته های محلی خودمون , توزیع به صورت پیش فرض به سرور های اوبونتو متصل شده و از آن جا دانلود می کند . پس می توان دستور زیر را به قربانی داد :

که در واقع ابتدا یک بک آپ از فایل sources.list تهیه می کند سپس مخزن ما را در ادد می کند ( به عنوان تنها آدرس مخزن ) و در نهایت یک بار بسته ها را آپدیت می کند .

018

حال کافیست برنامه نصب شود ( به عکس زیر توجه کنید , دانلود فایل نصاب از آی پی سیستم خودمون یعنی 192.168.1.6 انجام شده است )

019

اسم برنامه ( در این rdesktop ) ای که قرار هست کاربر آن را از مخازن تعریف کنید در پوشه ی DEBIAN و در فایل control تعیین می شود . به عکس زیر مخصوصا به قسمت Package توجه کنید :

020

نکته :‌ اسم پکیجی که دانلود شده از روی همین فایل تعیین می شود ! یعنی حتی اگر اسم پکیج rdesktop.fake.deb هم باشد , پس از دانلود با توجه به 3 قسمت Pachage Version Architecture به فرم زیر در می آید :

برای پیدا کردن پکیج های دانلود شده روی سیستم به مسیر زیر برید :

نکته : برای پاک کردن یک برنامه همراه با تمامی کانفیگ های آن :

حرف آخر :

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

تاریخ شروع مقاله : 3 شنبه 1 مهر 93

تاریخ پایان مقاله : 4 شنبه 9 مهر 93

منبع : او اس لرن | http://OSLearn.ir
 نویسنده : E2MA3N

 

برای بحث در انجمن مربوطه کلیک کنید

 

دانلود تمام موارد زیر با هم

دانلود اسکریپت پایتون

دانلود کد های گفته شده در ترمینال

از این مطلب راضی هستید ؟ می خواهید به سایت کمک کنید ؟ رضایت خودتون رو با دونیت به ما اعلام کنید . برای دونیت روی خرید کلیک کنید . با تشکر

[parspalpaiddownloads id=”8″]

درباره نویسنده :

ایمان همایونی هستم، از سال 2009 با گنو لینوکس فعالیت خودم رو در زمینه ی کامپیوتر و IT شروع کردم و تا الان موفق به گذروندن دوره هایLPIC 1 / LPIC 2 / VCP5-DCV / MCITP / CCNA / MTCNA شدم . مدتی در زمینه امنیت فعالیت هایی داشتم اما در حال حاضر تمرکز خودم رو بر روی مجازی سازی و لینوکس گذاشته ام .

تمام پست های من - وب سایت من