






السمعة:
- إنضم17 يونيو 2023
- المشاركات 515
- الحلول 10
- مستوى التفاعل 1,106
- النقاط 93



راح نحكي عن بعض البروتوكولات الشهيرة وراح نفهم إن شاء الله كيف بتشتغل بالخلفية , يعني مثلًا راح نستخدم Telnet client عشان نفتح نافذة صغيرة ونتحكم بالبروتوكولات هاي ونشوف كيف بتبعث وتستقبل البيانات وكمان راح نحكي عن بعض الثغرات بشكل خاص عن الباسوردات اللي بتنبعث بشكل واضح من غير تشفير
راح نركز على النقاط التالية
1. بروتوكول ( Telnet )
2. بروتوكول ( HTTP )
3. بروتوكول نقل الملفات ( FTP )
4. بروتوكول ( SMTP )
5. بروتوكول ( POP3 )
6. بروتوكول ( IMAP )
7. الـ Sniffing ) Attack )
8. الـ ( MITM )
9. الـ ( TLS )
10. الـ ( SSH )
11. الـ ( Password Attack )
12. كيفيه مكافحة هذه الهجمات بشكل فعّال
بروتوكول ( Telnet )
فكرته إنه بسمحلك تتصل بجهاز ثاني عن طريق الإنترنت وتتحكم فيه, يعني لو مثلًا عندك جهاز في البيت وبدك تتحكم فيه من برا البيت بتقدر تستخدم Telnetبالمختصر لما تحاول تتصل بطلب منك اسم مستخدم وباسورد لو كانت المعلومات صح بتدخل على الجهاز وبتعمل اللي بدك اياه
المشكلة الوحيدة إنه المعلومات اللي بتتبادل بين الجهازين مش مشفرة يعني ممكن أي حد يلتقط البيانات ويشوف اليوزر والباسورد بسهولة
المنفذ الإفتراضي : 23
كود:
pentester@TryHackMe$ telnet MACHINE_IP
Trying MACHINE_IP...
Connected to MACHINE_IP.
Escape character is '^]'.
Ubuntu 20.04.3 LTS
bento login: frank
Password: D2xc9CgD
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-84-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Fri 01 Oct 2021 12:24:56 PM UTC
System load: 0.05 Processes: 243
Usage of /: 45.7% of 6.53GB Users logged in: 1
Memory usage: 15% IPv4 address for ens33: MACHINE_IP
Swap usage: 0%
* Super-optimized for small spaces - read how we shrank the memory
footprint of MicroK8s to make it the smallest full K8s around.
https://ubuntu.com/blog/microk8s-memory-optimisation
0 updates can be applied immediately.
*** System restart required ***
Last login: Fri Oct 1 12:17:25 UTC 2021 from meiyo on pts/3
You have mail.
frank@bento:~$

بأي port سيحاول أمر telnet مع المعلمات الإفتراضية الإتصال؟
23
بروتوكول ( HTTP )
يستخدم عشان ننقل الصفحات الويب يعني لما تفتح متصفح الإنترنت وتدخل موقع هو بيستخدم HTTP عشان يطلب الصفحات والصور وحتى يرسل بيانات للمواقعفي الصورة اللي تحت العميل (أو المتصفح) بطلب صفحة HTML باسم index.html من الويب سيرفر والسيرفر ببعثله الصفحة هاي

وبعدين العميل بطلب صورة اسمها logo.jpg والسيرفر ببعثله الصورة
المهم الـ HTTP ببعث وبستقبل البيانات بشكل عادي بدون تشفير يعني بإمكانك تستخدم برامج بسيطة زي Telnet عشان تتواصل مع السيرفر وتتعامل معه زي متصفح الإنترنت.
مثال عملي : بتقدر تستخدم Telnet عشان تطلب صفحة من السيرفر وتشوف إصدار السيرفر ببساطة بتفتح Telnet وبتتصل بالسيرفر وبتكتب GET /index.html HTTP/1.1 عشان تطلب الصفحة وبتكمل بـ host: telnet وبتضغط Enter إذا كانت الصفحة موجودة بتطلعلك وإذا كانت مش موجودة بتظهرلك رسالة خطأ
بالمثال اللي تحت طلبنا صفحة وأعطانا إياها وكمان عرفنا إصدار السيرفر
كود:
pentester@TryHackMe$ telnet MACHINE_IP 80
Trying MACHINE_IP...
Connected to MACHINE_IP.
Escape character is '^]'.
GET /index.html HTTP/1.1
host: telnet
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Wed, 15 Sep 2021 08:56:20 GMT
Content-Type: text/html
Content-Length: 234
Last-Modified: Wed, 15 Sep 2021 08:53:59 GMT
Connection: keep-alive
ETag: "6141b4a7-ea"
Accept-Ranges: bytes
<!DOCTYPE html>
<html lang="en">
<head>
<title>Welcome to my Web Server</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
</head>
<body>
<h1>Coming Soon<h1>
</body>
</html>
الـ HTTP لازم يكون عندك سيرفر وعندك عميل , السيرفر هو اللي بخدم الصفحات للمتصفح و العميل هو المتصفح
وفي ثلاث خيارات شهيرة للسيرفرات الـ HTTP :
- Apache
- Internet Information Services (IIS)
- nginx
الـ Apache و nginx مجانيين ومفتوحين المصدر بينما الـ IIS بحتاج ترخيص , فيه متصفحات ويب مشهورة زي Chrome و Edge و Firefox و Safari
اتصل باستخدام Telnet بـ 80
احصل على الملف flag.thm ماذا تحتوي؟
THM{e3eb0a1df437f3f97a64aca5952c8ea0}
بروتوكول نقل الملفات ( FTP )
بنستخدم الـ FTP عشان ننقل ملفات بين أجهزة كمبيوتر مختلفةالـ FTP ببعث وبستقبل وبنقل البيانات يعني ممكن نستخدم Telnet عشان نتواصل مع الـ FTP سيرفر
في المثال التالي بوضح كيف نتواصل بـ Telnet مع الـ FTP سيرفر ونستخدم الأوامر عشان نسجل دخولنا على السيرفر ونعمل أوامر ثانية زي STAT عشان نشوف معلومات زي نوع السيرفر ونظامه ونوع الإتصال.
بنتصل عن طريق الأمر التالي:
كود:
telnet 10.10.216.146 21
بندخل الإسم والباس
كود:
USER frank
PASS D2xc9CgD
فيه نقطة مهمة إنه في نوعين للإتصال بالـ FTP :
- في الوضع النشط : البيانات بتنرسل على قناة منفصلة من البورت رقم 20 للسيرفر
- في الوضع السلبي : البيانات بتنرسل على قناة منفصلة من بورت فوق الـ 1023 للعميل
وكمان في أوامر بتغير نوع نقل الملفات مثل:
TYPE A اللي بتغير لنقل النصوص
TYPE I اللي بتغير لنقل الملفات الباينري
بس المهم إنه لازم يكون في اتصال منفصل عشان ننقل ملفات بالـ FTP مش زي Telnet اللي كل شيء بكون على قناة واحدة
كود:
pentester@TryHackMe$ telnet 10.10.216.146 21
Trying 10.10.216.146...
Connected to MACHINE_IP.
Escape character is '^]'.
220 (vsFTPd 3.0.3)
USER frank
331 Please specify the password.
PASS D2xc9CgD
230 Login successful.
SYST
215 UNIX Type: L8
PASV
227 Entering Passive Mode (10,10,0,148,78,223).
TYPE A
200 Switching to ASCII mode.
STAT
211-FTP server status:
Connected to ::ffff:10.10.0.1
Logged in as frank
TYPE: ASCII
No session bandwidth limit
Session timeout in seconds is 300
Control connection is plain text
Data connections will be plain text
At session startup, client count was 1
vsFTPd 3.0.3 - secure, fast, stable
211 End of status
QUIT
221 Goodbye.
Connection closed by foreign host.
في المثال اللي تحت عملنا تحميل لملف README.txt بدأنا بتوصيل الجهاز بالخادم عبر الأمر ftp MACHINE_IP دخلنا البيانات المطلوبة وبعد ما دخلنا بنجاح استخدمنا الأوامر ls لمشاهدة الملفات و ascii للتأكد إن الملف نصي واستخدمنا get لتحميل الملف
كود:
pentester@TryHackMe$ ftp MACHINE_IP
Connected to MACHINE_IP.
220 (vsFTPd 3.0.3)
Name: frank
331 Please specify the password.
Password: D2xc9CgD
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (10,20,30,148,201,180).
150 Here comes the directory listing.
-rw-rw-r-- 1 1001 1001 4006 Sep 15 10:27 README.txt
226 Directory send OK.
ftp> ascii
200 Switching to ASCII mode.
ftp> get README.txt
local: README.txt remote: README.txt
227 Entering Passive Mode (10,10,0,148,125,55).
150 Opening BINARY mode data connection for README.txt (4006 bytes).
WARNING! 9 bare linefeeds received in ASCII mode
File may not have transferred correctly.
226 Transfer complete.
4006 bytes received in 0.000269 secs (14892.19 Kbytes/sec)
ftp> exit
221 Goodbye.
- vsftpd
- ProFTPD
- uFTP
باستخدام الـ FTP اتصل بالجهاز الافتراضي وحاول استرداد ملف flag
إسم المستخدم : frank
كلمة المرور : D2xc9CgD
ما هو الـ flag ؟
THM{364db6ad0e3ddfe7bf0b1870fb06fbdf}
بروتوكول ( SMTP )
هو البروتوكول اللي بنستخدمه لنرسل رسائل البريد الإلكتروني , البريد الإلكتروني بستخدم فيه SMTP على الإنترنت عشان يوصل الرسائل بطريقة سليمة وآمنة , البروتوكول هاد بيعتمد على مراحل معينة عشان تصل الرسالة للي بدك تبعثه اياها
فيه عدة مكونات لهاد البروتوكول :
- الـ Mail Submission Agent (MSA) : هاد الجهاز بكون مسؤول عن استلام الرسائل من العميل ( MUA ) وبعثها للجهاز اللي بتعامل مع الإرسال ( MTA )
- الـ Mail Transfer Agent (MTA) : هو الجهاز اللي بنقل الرسائل من جهاز الإرسال ( MSA ) لجهاز الاستقبال ( MTA ) اللي بتلقى الرسالة , في الحالة العادية بكون الـ MTA كمان بشتغل كـ MSA
- الـ Mail Delivery Agent (MDA) : هاد هو الجهاز المسؤول عن توصيل الرسائل للمستلم بعد ما وصلوا لجهاز الاستلام ( MTA )
- الـ Mail User Agent (MUA) : هو البرنامج أو الجهاز اللي بنستخدمه لنرسل ونستلم البريد الإلكتروني
لنفهم الفكرة بشكل أبسط تخيل إنك بدك تبعث رسالة بريدية عن طريق البريد العادي :
- أول شيء أنت بتكتب الرسالة ( MUA )
- بعدين بتوديها لمكتب البريد ( MSA ) الموظف هناك بتأكد من العنوان وبوخذ الرسالة
- بعدين بوديها لمركز البريد المحلي ( MTA )
- المركز المحلي بشوف عنوان الرسالة وببعثها لمركز البريد اللي بناسب المستلم ( MTA )
- في النهاية المركز بوصل الرسالة لصندوق البريد الخاص بالمستلم ( MDA )
- المستلم بفتح صندوق البريد وبوخذ الرسالة

يعني بالمختصر إنه لما بنتصل بخادم على الإنترنت زي لما بدخل على موقع ويب مثلًا لازم نتبع قواعد معينة لنتواصل معه زي بروتوكول HTTP هاد لما تدخل على موقع ويب ولما تبعث أو تستقبل إيميلات بنحتاج نستخدم بروتوكولات البريد الإلكتروني زي SMTP و POP3
الخادم SMTP يكون على البورت 25 افتراضيًا
البروتوكولات هي :
- بروتوكول نقل البريد البسيط (SMTP)
- بروتوكول البريد السريع البوابي النسخة 3 (POP3) أو بروتوكول الوصول إلى الرسائل عبر الإنترنت ( IMAP )
بما أن SMTP يستخدم النص العادي حيث يتم إرسال جميع الأوامر دون تشفير بإمكننا نستخدم الـ Telnet للإتصال بخادم SMTP والتصرف كعميل بريد إلكتروني ( MUA ) لإرسال رسالة
لرؤية التواصل الأساسي مع خادم SMTP ، استخدمنا Telnet للإتصال به. بمجرد الإتصال نكتب helo hostname ثم نبدأ في كتابة البريد الإلكتروني الخاص بنا
كود:
pentester@TryHackMe$ telnet 10.10.24.172 25
Trying 10.10.24.172...
Connected to MACHINE_IP.
Escape character is '^]'.
220 bento.localdomain ESMTP Postfix (Ubuntu)
helo telnet
250 bento.localdomain
mail from:
250 2.1.0 Ok
rcpt to:
250 2.1.5 Ok
data
354 End data with .
subject: Sending email with Telnet
Hello Frank,
I am just writing to say hi!
.
250 2.0.0 Ok: queued as C3E7F45F06
quit
221 2.0.0 Bye
Connection closed by foreign host.
بمجرد الاتصال بنجاح يظهر رسالة ترحيبية من الخادم ثم يتم إرسال سلسلة من الأوامر لإرسال بريد إلكتروني , يتم تحديد المرسل والمستقبل بواسطة الأوامر :mail from و :rcpt to على التوالي بعدها بنكتب الرسالة نفسها بعد إصدار أمر data يتم إنهاء الرسالة بكتابة (.) على سطر منفصل
يظهر تأكيد على استلام الرسالة من الخادم وتخزينها في طابور الإرسال أخيرًا يتم إنهاء الإتصال بإرسال أمر quit ويتم إغلاق الإتصال
عمومًا نحن لا نحتاج إلى حفظ أوامر SMTP بالحرف الواحد الناتج الموجود في الأعلى يهدف إلى مساعدة شرح أفضل لما يفعله البريد الإلكتروني النموذجي عند استخدام SMTP
اتصل بمنفذ SMTP
ما هو العلم الذي يمكنك الحصول عليه؟
THM{5b31ddfc0c11d81eba776e983c35e9b5}
بروتوكول ( POP3 )
هو بروتوكول يُستخدم لتحميل رسائل البريد الإلكتروني من خادم وكيل تسليم البريد (MDA) مثل الصورة

يقوم عميل البريد بالإتصال بخادم POP3 ويتم التحقق من الهوية وتحميل رسائل البريد الإلكتروني الجديدة ثم ( اختياريًا ) حذفها
الخادم POP3 يكون على البورت 110 افتراضيًا
المثال أدناه يوضح كيفية تبدو الإتصال عبر POP3 إذا تمت عبر عميل Telnet , يقوم المستخدم بالإتصال بـ POP3 على منفذ 110 الافتراضي لـ POP3 يُطلب التحقق من الهوية , يتم التحقق من الهوية عن طريق تقديم اسم المستخدم وكلمة المرور , باستخدام الأمر STAT نحصل على الرد OK 1 179+
بناءً على RFC 1939 يكون الرد الإيجابي على STAT بتنسيق OK nn mm+ حيث
nn هو عدد رسائل البريد الإلكتروني في صندوق الوارد
mm هو حجم صندوق الوارد بالـ octets
يوفر الأمر LIST قائمة بالرسائل الجديدة على الخادم ويُستخدم الأمر RETR 1 لاسترجاع الرسالة الأولى في القائمة
لا يجب علينا القلق بشأن حفظ هذه الأوامر في الذاكرة ومع ذلك فـ من المفيد تعزيز فهمنا لهذا البروتوكول
المثال أدناه يوضح أن الأوامر ترسل على نص واضح استخدام Telnet كان كافيًا للمصادقة واسترجاع رسالة بريد إلكتروني حيث يتم إرسال اسم المستخدم وكلمة المرور على نص واضح مما يعني أن أي جهة ثالثة تراقب حركة المرور عبر الشبكة يمكنها سرقة بيانات تسجيل الدخول
كود:
pentester@TryHackMe$ telnet MACHINE_IP 110
Trying MACHINE_IP...
Connected to MACHINE_IP.
Escape character is '^]'.
+OK MACHINE_IP Mail Server POP3 Wed, 15 Sep 2021 11:05:34 +0300
USER frank
+OK frank
PASS D2xc9CgD
+OK 1 messages (179) octets
STAT
+OK 1 179
LIST
+OK 1 messages (179) octets
1 179
.
RETR 1
+OK
From: Mail Server
To: Frank
subject: Sending email with Telnet
Hello Frank,
I am just writing to say hi!
.
QUIT
+OK MACHINE_IP closing connection
Connection closed by foreign host.
بشكل عام، سيقوم عميل البريد ( MUA ) بالإتصال بخادم POP3 ( MDA ) والمصادقة وتنزيل الرسائل على الرغم من أن التواصل باستخدام بروتوكول POP3 سيكون مخفياً وراء واجهة سهلة الاستخدام سيتم إصدار أوامر مماثلة كما هو موضح في الجلسة Telnet أعلاه
بناءً على الإعدادات الافتراضية يقوم عميل البريد بحذف رسالة البريد بعد تنزيلها يمكن تغيير السلوك الافتراضي من إعدادات عميل البريد إذا كنت ترغب في تنزيل رسائل البريد الإلكتروني مرة أخرى من عميل بريد آخر على الرغم من أن الوصول إلى نفس حساب البريد عبر عدة عملاء باستخدام POP3 عادةً ما يكون غير مريح حيث سيفقد المرء متابعة الرسائل المقروءة وغير المقروءة للحفاظ على تزامن جميع صناديق البريد نحتاج إلى النظر في بروتوكولات أخرى مثل



بـ موضوعنا التالي
اتصل عبر منفذ POP3 قم بالمصادقة باستخدام اسم المستخدم الصريح وكلمة المرور D2xc9CgD
ما هو الرد الذي تحصل عليه لـ STAT ؟
OK 0 0+
ما عدد رسائل البريد الإلكتروني المتاحة للتنزيل عبر بروتوكول POP3 على MACHINE_IP؟
0
بروتوكول ( IMAP )
هو بروتوكول أكثر تطورًا من POP3 الـ IMAP يجعل من الممكن مزامنة بريدك الإلكتروني عبر عدة أجهزة (وعملاء بريد) بمعنى آخر إذا حددت رسالة بريد إلكتروني كمقروءة عند التحقق من البريد الإلكتروني على تلفونك يتم حفظ التغيير على خادم IMAP ( MDA ) وتكراره على حاسوبك المحمول عند مزامنة صندوق الوارد الخاص بك
لنلقِ نظرة على أوامر IMAP العينية في الإخراج من الوحدة أدناه نستخدم Telnet للاتصال بمنفذ الخادم IMAP الافتراضي 143
ثم نقوم بالمصادقة باستخدام LOGIN اسم المستخدم كلمة المرور IMAP يتطلب أن يتم تسبق كل أمر بسلسلة عشوائية لتتمكن من تتبع الرد لذلك أضفنا c1 ثم c2 وهكذا ثم قمنا بعرض مجلدات البريد الخاصة بنا قبل التحقق مما إذا كان لدينا أي رسائل جديدة في صندوق الوارد باستخدام EXAMINE INBOX لا نحتاج إلى حفظ هذه الأوامر
كود:
pentester@TryHackMe$ telnet 10.10.221.135 143
Trying 10.10.221.135...
Connected to MACHINE_IP.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS ENABLE UTF8=ACCEPT] Courier-IMAP ready. Copyright 1998-2018 Double Precision, Inc. See COPYING for distribution information.
c1 LOGIN frank D2xc9CgD
* OK [ALERT] Filesystem notification initialization error -- contact your mail administrator (check for configuration errors with the FAM/Gamin library)
c1 OK LOGIN Ok.
c2 LIST "" "*"
* LIST (\HasNoChildren) "." "INBOX.Trash"
* LIST (\HasNoChildren) "." "INBOX.Drafts"
* LIST (\HasNoChildren) "." "INBOX.Templates"
* LIST (\HasNoChildren) "." "INBOX.Sent"
* LIST (\Unmarked \HasChildren) "." "INBOX"
c2 OK LIST completed
c3 EXAMINE INBOX
* FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent)
* OK [PERMANENTFLAGS ()] No permanent flags permitted
* 0 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 631694851] Ok
* OK [MYRIGHTS "acdilrsw"] ACL
c3 OK [READ-ONLY] Ok
c4 LOGOUT
* BYE Courier-IMAP server shutting down
c4 OK LOGOUT completed
Connection closed by foreign host.
من الواضح أن IMAP يرسل بيانات تسجيل الدخول على نص واضح كما نرى في الأمر LOGIN frank D2xc9CgD أي شخص يراقب حركة المرور عبر الشبكة سيتمكن من معرفة اسم المستخدم وكلمة المرور الخاصة بفرانك
موقع مفيد
143,993 - Pentesting IMAP - HackTricks
ما هو المنفذ الافتراضي الذي يستخدمه IMAP؟
143
الـ Sniffing ) Attack )
هو لما حد يستخدم برنامج يسجل البيانات اللي بتمر على الشبكة عشان يلتقط معلومات عن الهدف يعني لما البروتوكولات بتتواصل بدون تشفير البيانات اللي يتم تبادلها بقدر يلتقطها حد ثالث ويحللها برنامج سهل للتسجيل في الشبكة بقدر يكشف معلومات زي محتوى الرسائل الخاصة وبيانات تسجيل الدخول لو البيانات مش مشفرة وهي بتمرالهجوم الـ Sniffing يتم عن طريق بطاقة شبكة Ethernet لو عندك الصلاحيات اللّازمة (صلاحيات root في Linux وصلاحيات المسؤول في وMS Windows) في برامج كتيرة متاحة لتسجيل حزم الشبكة وفيه برامج كتيرة زي :
- Tcpdump : برنامج مجاني مفتوح المصدر وبشتغل على واجهة سطر الأوامر ( CLI ) ومتوفر لعدة أنظمة تشغيل
- Wireshark : برنامج مجاني مفتوح المصدر بواجهة رسومية ( GUI ) متوفر لعدة أنظمة تشغيل، شاملة Linux وmacOS وMS Windows
- Tshark : بديل CLI لـ Wireshark
فكرة الهجوم : لو افترضنا إنو في حد بدخل على رسائل الإيميلات باستخدام POP3ا
أول اشي بنستخدم Tcpdump عشان نحاول نسجل اسم المستخدم وكلمة السر
كود:
pentester@TryHackMe$ sudo tcpdump port 110 -A
[...]
09:05:15.132861 IP 10.20.30.1.58386 > 10.20.30.148.pop3: Flags [P.], seq 1:13, ack 19, win 502, options [nop,nop,TS val 423360697 ecr 3958275530], length 12
[email protected]@[email protected].
...
......n......"............
.;....}.USER frank
09:05:15.133465 IP 10.20.30.148.pop3 > 10.20.30.1.58386: Flags [.], ack 13, win 510, options [nop,nop,TS val 3958280553 ecr 423360697], length 0
E..4..@[email protected]~
...
....n....".........?P.....
...i.;..
09:05:15.133610 IP 10.20.30.148.pop3 > 10.20.30.1.58386: Flags [P.], seq 19:43, ack 13, win 510, options [nop,nop,TS val 3958280553 ecr 423360697], length 24
E..L..@[email protected]
...
....n....".........<-.....
...i.;..+OK Password required.
09:05:15.133660 IP 10.20.30.1.58386 > 10.20.30.148.pop3: Flags [.], ack 43, win 502, options [nop,nop,TS val 423360698 ecr 3958280553], length 0
E..4.W@[email protected].
...
......n......".....??.....
.;.....i
09:05:22.852695 IP 10.20.30.1.58386 > 10.20.30.148.pop3: Flags [P.], seq 13:28, ack 43, win 502, options [nop,nop,TS val 423368417 ecr 3958280553], length 15
E..C.X@[email protected].
...
......n......".....6......
.<.....iPASS D2xc9CgD
[...]
في المخرجات بالأعلى استخدمنا الأمر sudo tcpdump port 110 -A
ملاحظه : الهجوم هاد بحتاج لوصول لبيانات الشبكة أو بأمكاننا الوصول لبيانات الشبكة لو أطلقنا هجوم Man-in-the-Middle (MITM)
السبب اللي خلانا نستخدم sudo هو إن تسجيل الحزم بحتاج صلاحيات root بنحدد عدد الحزم المسجلة والمعروضة للي بتتبادل مع السيرفر POP3
الـ POP3 بستخدم البورت الافتراضي 110 وبالاخير بدنا نعرض محتوى الحزم المسجلة بتنسيق ASCII فأضفنا A-
في المخرجات بالأعلى كل حزمة لوحدها فيها اسم المستخدم وكلمة السر الحزمة الأولى واضحة فيها USER frank والحزمة الأخيرة بتظهر كلمة السر PASS D2xc9CgD
ممكن كمان نستخدم Wireshark لنحقق نفس النتائج تحت شفنا إننا دخلنا pop في حقل الفلتره , لما فلترنا البيانات اللي بدنا نشوفها بس شفنا إن اسم المستخدم وكلمة السر اتسجلوا

باختصار أي بروتوكول بستخدم تواصل غير مشفر معرض لهذا النوع من الهجمات الشرط الوحيد إن الهجوم هاد ينجح هو إن يكون عندك وصول لنظام بين النظامين اللي بتبادلوا المعلومات الحماية من هذا الهجوم بتكون بإضافة طبقة تشفير على أي بروتوكول شبكة على وجه الخصوص تمت إضافة Transport Layer Security (TLS) إلى HTTP و FTP و SMTP و POP3 و IMAP والعديد من الآخرين
ما الذي تحتاج إلى إضافته إلى الأمر sudo tcpdump لالتقاط حركة مرور Telnet فقط ؟
port 23
ما هو أبسط مرشح عرض يمكنك استخدامه مع Wireshark لعرض حركة مرور IMAP فقط؟
IMAP
الـ ( MITM )
مشروح هون مع المهندسه @BAYANMan in The Middle Attack (MITM)
شرح سريع لهذا النوع من الهجمات ... بداية .. توضيح للمقصد من العنوان ( هجوم شخص في الوسط ) ، باختصار بهذا الهجوم بقوم شخص معين باعتراض الريكويست أو البيانات المُرسله بين جهازك والسيرفر أو الشخص المطلوب فبصير هو حلقة الوصل بينكم ؛ يعني بربطكم مع بعض من خلاله فبمر الريكويست عنده قبل ما يوصل الطرف...

هو هجوم خداعي يحدث عندما يتدخل المهاجم ويقوم بالتقاط وربما تعديل الإتصال بين طرفين يعتقد كل منهما أنه يتواصل مباشرة مع الآخر
يقوم الضحية (A) ببدء الاتصال مع ما يعتقد أنه وجهته (B) ولكن دون علمه يقوم المهاجم (E) بإدخال نفسه في الإتصال مع التقاط وربما تعديل الرسائل المتبادلة

يستغل هذا الهجوم الثغرات في عملية الإتصال غالبًا بسبب نقص آليات التحقق من الهوية أو النزاهة في البروتوكول المختار على سبيل المثال البروتوكولات التي تنقل البيانات بنص عادي مثل HTTP و FTP و SMTP و POP3 عرضة بشكل خاص لهجمات MITM
الجانب المخيف في هجمات MITMهو أنها قد تحدث دون علم الأطراف المتورطة تُسهل الأدوات مثل Ettercap و Bettercap تنفيذ هجمات MITM مما يتيح للمهاجمين التقاط وتلاعب الاتصال بسهولة
ابرئ ذمتي من أي استخدام خاطئ لهذه الأدوات التي قد تسبب لك المحاسبة القانونية في حال الاستخدام الخاطئ لها
للحد من هجمات MITM تعتبر التقنيات التشفيرية أمرًا حاسمًا يمكن أن تساعد تنفيذ آليات التحقق من الهوية الصحيحة وتشفير أو توقيع الرسائل في ضمان أصالة ونزاهة الاتصال يوفر بروتوكول الأمان في طبقة النقل (TLS) بمساعدة البنية التحتية للمفتاح العام (PKI) والشهادات الجذرية الموثوقة حماية ضد هجمات MITM من خلال إنشاء اتصالات آمنة وموثوقة بين الأطراف
يتوفر Ettercap بـ 3 واجهات مختلفة
- واجهة سطر الأوامر CLI
- واجهة المستخدم الرسومية GUI
- واجهة البرمجة التطبيقية API
يمكن تشغيل Ettercap بـ 3 طرق مختلفة
- سطر الأوامر Command Line
- الواجهة الرسومية GUI
- كمكتبة في بيئات البرمجة Library
ما هو عدد الواجهات المختلفة التي تقدمها Ettercap؟
3
بكم طريقة يمكنك استدعاء Bettercap؟
3
الـ ( TLS )
راح نتعلم كيف نحمي البيانات اللي بنبعثها وبنستقبلها على النت عشان ماحدى يقدر يشوفها ويتلاعب فيها أو يعملوا هجمات MITM
شركة Netscape كانت أول شركة أطلقت فكرة SSL أو Secure Sockets Layer في سنة 1994 وبعدين طورتها في إصدار SSL 3.0 في سنة 1996 بس بعد هيك اتفقوا إنه في اشي أكتر أماناً فأتجهوا لعمل بروتوكول جديد اسمه TLS أو Transport Layer Security اللي طلع سنة 1999
في الصورة اللي تحت بتظهر الـ ISO/OSI network layers البروتوكولات اللي حكينا عنها بـ طبقة presentation layer بنقدر نضيف تشفير لبروتوكولاتنا عن طريقها وبالتالي البيانات بتتقدم بشكل مشفر بدل ما تكون في شكلها الأصلي

بنقدر نحكي العلاقة قريبة بين الـ SSL والـ TLS ممكن نستخدم واحد بدل التاني
الـ TLS هو الأكثر أماناً من الـ SSL ، الـ SSL شبه تقاعد ومعظم السيرفرات الحديثة بتستخدم الـ TLS
يعني ممكن تحدّث بروتوكول نصي عادي إلى بروتوكول مشفر عن طريق الـ SSL/TLS ممكن نستخدم الـ TLS عشان نطور الـ HTTP و FTP و SMTP و POP3 و IMAP
مثلًا الجدول بعرض البروتوكولات اللي درسناها والبورتات الافتراضية قبل وبعد التشفير عن طريق الـ SSL/TLS القائمة مش شاملة بس الهدف إنها تساعدنا نفهم العملية بشكل أفضل
Protocol | Default Port | Secured Protocol | Default Port with TLS |
---|---|---|---|
HTTP | 80 | HTTPS | 443 |
FTP | 21 | FTPS | 990 |
SMTP | 25 | SMTPS | 465 |
POP3 | 110 | POP3S | 995 |
IMAP | 143 | IMAPS | 993 |
بالنسبة لحالة الـ HTTP
أول شيء عشان نعرض صفحة ويب عن طريق الـ HTTP لازم المتصفح يعمل على الأقل شغلتين :
- بثبت اتصال TCP مع السيرفر الويب البعيد.
- ببعث طلبات HTTP للسيرفر الويب زي طلبات GET و POST
مقدمة عن نموذج OSI من تقديم @Ford-X
مقدمة عن نموذج OSI
نموذج OSI تم إنشائه من ISO (فقط اعكس أحرف اسم النموذج) يتكون من 7 طبقات و هو أول نظام … و أصبح قديماً و تم استبداله ب TCP/IP و لكن يجب معرفته و فهم, لأنه عندما يتواصل خبراء الشبكات يستخدمون مصطلحات نموذج OSI ( علماً أنه غير مستخدم حالياً و لكن مصطلحاته فنعم ) فالنبدء بشرح الطبقات : 🔵...
sh3ll.cloud
الـ HTTPS بيحتاج على الأقل الخطوات الثلاث هاي :مقدمة عن نموذج OSI
نموذج OSI تم إنشائه من ISO (فقط اعكس أحرف اسم النموذج) يتكون من 7 طبقات و هو أول نظام … و أصبح قديماً و تم استبداله ب TCP/IP و لكن يجب معرفته و فهم, لأنه عندما يتواصل خبراء الشبكات يستخدمون مصطلحات نموذج OSI ( علماً أنه غير مستخدم حالياً و لكن مصطلحاته فنعم ) فالنبدء بشرح الطبقات : 🔵...

- نثبت اتصال TCP
- بثبت اتصال SSL/TLS
- ببعث طلبات HTTP للسيرفر الويب زي طلبات GET و POST
وفقًا للمواصفة RFC 6101 ، فإن عملية إنشاء الإتصال باستخدام SSL ستتبع الخطوات الموضحة في الشكل الموجود في الصورة

بعد ما نثبت اتصال TCP مع السيرفر العميل بثبت اتصال SSL/TLS زي ما هو موضح بالصورة فوق
ممكن نبسط الخطوات الأربع كالتالي:
- العميل برسل رسالة تُعرف باسم ClientHello إلى الخادم هاي الرسالة بتحتوي على معلومات حول العميل مثل الخوارزميات التي يدعمها للتشفير وغيرها من التفاصيل اللازمة لإقامة اتصال آمن مع الخادم
- السيرفر برد على العميل برسالة تُعرف باسم ServerHello هاي الرسالة بتحتوي على معلومات حول الإتصال مثل الخوارزميات والمعلمات التي تم اختيارها لإنشاء الإتصال الآمن بالإضافة إلى أي معلومات أخرى يمكن أن يحتاجها العميل لإكمال عملية الإتصال بشكل آمن , السيرفر ببعث شهادته إذا كان الإتصال بحتاج توثيق السيرفر , الشهادة هاي هي ملف رقمي عشان يحدد هويته وعادة ما بتكون موقعة رقميًا من قبل جهة خارجية وممكن يبعت معلومات إضافية مطلوبة لإنشاء المفتاح الرئيسي ، في رسالة ServerKeyExchange ورساله ServerHelloDone عشان يعلن إنه ( تم تحديد المعلمات والخوارزميات المستخدمة في إنشاء الاتصال الآمن )
- العميل بجاوب بـ ClientKeyExchange اللي فيه معلومات إضافية مطلوبة لإنشاء المفتاح الرئيسي , العميل ببدل لاستخدام التشفير وببلغ السيرفر باستخدام رسالة ChangeCipherSpec
- السيرفر ببدل لاستخدام التشفير أيضًا وببلغ العميل في رسالة ChangeCipherSpec
ملاحظة:
عشان SSL/TLS تكون فعالة خاصة عند تصفح الويب عبر HTTPS احنا بنعتمد على شهادات عامة موقعة من سلطات الشهادات الموثوق بها من قبل أنظمتنا بمعنى آخر لما نتصفح TryHackMe عبر HTTPS متصفحنا بتوقع من خادم TryHackMe تقديم شهادة موقعة من جهة مصدقة
كما في المثال أدناه بهذه الطريقة يتأكد متصفحنا من أنه يتواصل مع الخادم الصحيح ولا يمكن حدوث هجوم MITM

يمكن أيضًا تأمين DNS باستخدام TLS
DNS-over-TLS
ما هو الاختصار المكون من ثلاثة أحرف لبروتوكول DNS الذي يستخدم TLS؟
DoT
الـ ( SSH )
هو بروتوكول تم إنشاؤه لتوفير طريقة آمنة لإدارة الأنظمة عن بُعد بمعنى آخر بتيحلك الـ SSH الإتصال بأمان بنظام آخر عبر الشبكة وتنفيذ الأوامر على النظام البعيدالحرف S في SSH يعني آمن ويمكن تلخيصه كما يلي :
- يمكنك التحقق من هوية الخادم البعيد
- تشفير الرسائل المتبادلة ويمكن فك تشفيرها فقط بواسطة المستلم المقصود
- يمكن لكل من الجانبين اكتشاف أي تعديل في الرسائل
لاستخدام الـ SSH تحتاج إلى خادم SSH وعميل SSH
يستمع الخادم SSH على البورت 22 افتراضيًا
يمكن لعميل SSH المصادقة باستخدام :
- اسم مستخدم وكلمة مرور
- مفتاح خاص وعام (بعد تكوين خادم SSH للتعرف على المفتاح العام المقابل)
كود:
ssh username@MACHINE_IP
هذا الأمر بحاول الاتصال بخادم بعنوان MACHINE_IP باسم تسجيل الدخول username إذا كان خادم SSH على البورت الافتراضي بطلب منك تقديم كلمة المرور لاسم المستخدم بمجرد المصادقة سيحصل المستخدم على الوصول إلى وحدة التحكم الخاصة بالخادم المستهدف
ملاحظة: إذا كان هذا هي المرة الأولى التي نتصل فيها بنظام ما فسنحتاج إلى تأكيد بصمة مفتاح الخادم العام لـ SSH لتجنب هجمات MITM وسبق ووضحنا العمليه كيف تتم.
بامكاننا نستخدم SSH لنقل الملفات باستخدام بروتوكول النسخ الآمن ( SCP ) الذي يعتمد على بروتوكول SSH
scp mark@MACHINE_IP:/home/mark/archive.tar.gz
هذا الأمر سينسخ ملفًا يُسمى archive.tar.gz من النظام البعيد الموجود في دليل /home/mark إلى ~ أي جذر دليل المستخدم الحالي المسجل الدخول إليه
مثال
كود:
user@TryHackMe$ scp document.txt [email protected]:/home/mark
[email protected]'s password:
document.txt 100% 1997KB 70.4MB/s 00:00
ملاحظة :
يمكن تأمين FTP باستخدام SSL/TLS عبر استخدام بروتوكول FTPS الذي يستخدم البورت 990 يجدر بالذكر أن FTP يمكن أيضًا تأمينه باستخدام بروتوكول SSH الذي هو بروتوكول SFTP
يستمع هذا الخدمة افتراضيًا على البورت 22 تمامًا مثل SSH
استخدم SSH للإتصال بـ 10.10.132.65 كعلامة بكلمة المرور XBtc49AB باستخدام uname -r ابحث عن إصدار Kernel؟
5.4.0-84-generic
استخدم SSH لتنزيل الملف book.txt من النظام البعيد. كم عدد كيلوبايت التي عرضها scp كحجم التنزيل؟
415
الـ ( Password Attack )
لما الواحد يبعث رسالة على الإنترنت ما بقدر يبعث رسائل بدون ما يدخل اسم مستخدم وكلمة مرور هاد هو اسمه Authentication وهو إثبات الشخصية الخاصه فيه
لما ندخل على بريد إلكتروني عن طريق بروتوكول POP3 اللي سبق وحكينا عنو اللي بستخدم في فتح البريد وأول ما بندخل بنحط اسم المستخدم frank وبعدين كلمة المرور D2xc9CgD
لو كانت المعلومات صحيحة السيرفر بعطينا صلاحيه للوصول للبريد لأن المعلومات هاي هي الإثبات إننا صاحبين الحساب
الحماية هاي بتم بطرق مختلفة زي لما نستخدم بروتوكولات زي TLS و SSH اللي بحموا بيانات الإتصال من التجسس
بس المشكلة اللي بنواجهها هون هي الـ password attack و هاي لما الهاكرز يحاولوا يدخلوا على الحسابات بطرق مختلفة
في ناس بتحاول تحمي حساباتها بأشياء زي كلمات المرور لكن للاسف كثير من الناس بتستخدم كلمات سر سهلة ومتوقعة زي 123456 و password وفي ناس ثانية بتحاول تخمن الكلمات السرية عن طريق معرفة بعض المعلومات عن الشخص زي اسم حيوانه الأليف أو سنة ميلاده هاد بنسميه Password Guessing
في نوع ثاني اسمه Dictionary Attack هاد لما الهاكرز بستخدم قوائم بكلمات مشهورة ومعترف فيها زي الكلمات اللي بنستخدمها في الحياة اليومية
أخر نوع هو Brute Force Attack هاد لما الهاكرز بجرب كل الاحتمالات الممكنة للكلمة السرية وهاد باخد وقت وجهد كبير جداً بس بالنهاية قد ينجح باختراق الحساب
بدنا نركز على الـ Dictionary Attack
وحكينا هاي لما الهاكرز يستخدموا قوائم كبيرة فيها كلمات سر مثلا تم تسريبها من حوادث اختراق للبيانات...الخ مثلًا قائمه كلمات rockyou لكلمات سر المسربة اللي ممكن نلاقيها في المسار usr/share/wordlists/rockyou.txt/ واختيار القائمة بعتمد على معرفتك بالهدف مثلًا مستخدم فرنسي ممكن يستخدم كلمة فرنسية بدل من إنجليزية فـ قائمة بالكلمات الفرنسية قد تكون أفضل
بنحتاج طريقة تلقائية لتجربة كلمات السر الشائعة أو الإدخالات من القائمة وهون بتيجي أداة Hydra وهي بتدعم العديد من البروتوكولات منهم: FTP و POP3 و IMAP و SMTP و SSH وكل الأساليب المتعلقة بـ HTTP الصيغة العامة للأمر :
كود:
hydra -l username -P wordlist.txt server service
الـ l username- اسم تسجيل الدخول للهدف
الـ P wordlist.txt- قائمة كلمات السر اللي بدنا نجربها مع اسم المستخدم
الـ server هو اسم المضيف أو عنوان IP للخادم المستهدف
الـ service بشير للخدمة اللي بتحاول إطلاق هجوم الـ Dictionary Attack عليها
أمثلة :
كود:
hydra -l mark -P /usr/share/wordlists/rockyou.txt 10.10.95.124 ftp
كود:
hydra -l mark -P /usr/share/wordlists/rockyou.txt ftp://10.10.95.124
كود:
hydra -l frank -P /usr/share/wordlists/rockyou.txt 10.10.95.124 ssh
بعض الأوامر الإضافية بنقدر نضيفها
s PORT- لتحديد منفذ غير افتراضي للخدمة المعنية
V- أو vV- للتفاصيل بخلو الـ Hydra تعرض تركيبات اسم المستخدم وكلمة السر اللي بتجربها هاي التفاصيل تسهل جدًا رؤية التقدم خاصة إذا كنت مش متأكد من كتابة الأمر
t n- حيث n هو عدد الاتصالات المتوازية إلى الهدف ( سبق وحكينا عنها ) مثلا t 16- بتنشئ 16 سلسله تستخدم للإتصال بالهدف
d- لتصحيح الأخطاء , للحصول على معلومات أكثر تفصيلًا حول ما يحدث مثلا إذا حاولت Hydra تتصل بمنفذ مغلق وحدث انتهاء الوقت بكتشف الخيار d- هذا مباشرة
بمجرد العثور على كلمة السر بإمكانك تستخدم CTRL-C لإنهاء العملية
كيف يمكن مكافحة هذه الهجمات بشكل فعّال
يجب اتباع استراتيجيات متقدمة وتعتمد على نظام الهدف ومن بين هذه الاستراتيجيات :
- سياسة كلمات السر : تفرض قيودًا على الحد الأدنى من التعقيد على كلمات السر التي يحددها المستخدم
- قفل الحساب : يقوم بقفل الحساب بعد عدد معين من المحاولات الفاشلة
- تباطؤ محاولات المصادقة : يؤخر الرد على محاولة تسجيل الدخول. يمكن تحمل بعض الثواني من التأخير لمن يعرف كلمة السر، لكنها يمكن أن تعيق بشدة الأدوات التلقائية
- استخدام CAPTCHA : يتطلب حل اسئله صعبه بالنسبة للروبوتات او للـ ( مش انسان
) تعمل جيدًا إذا كانت صفحة تسجيل الدخول عبر واجهة رسومية ( GUI )
- طلب استخدام شهادة عامة للمصادقة هذا النهج يعمل بشكل جيد مع SSH
- المصادقة ثنائية العوامل : يطلب من المستخدم تقديم رمز متاح عبر وسائل أخرى مثل البريد الإلكتروني أو تطبيق الهاتف الذكي أو رسالة نصية في عديد من الطرق اللي ممكن تكون أكثر تعقيدًا أو قد تتطلب بعض المعرفة المؤسسة حول المستخدم مثل التحديد الجغرافي بناءً على عنوان IP استخدام مجموعة متنوعة من هذه الاستراتيجيات يعتبر نهجًا ممتازًا لحماية النظام من الهجمات على كلمات السر
علمنا أن أحد الحسابات البريد الإلكتروني lazie
ما هي كلمة المرور المستخدمة للوصول إلى خدمة IMAP على 10.10.76.253 ؟
butterfly
ملخص أول 6 نقاط
البروتوكول | منفذ TCP | التطبيقات | أمان البيانات |
---|---|---|---|
FTP | 21 | نقل الملفات | غير مشفر |
HTTP | 80 | الويب العالمي ( Worldwide Web ) | غير مشفر |
IMAP | 143 | البريد الإلكتروني ( MDA ) | غير مشفر |
POP3 | 110 | البريد الإلكتروني (MDA ) | غير مشفر |
SMTP | 25 | البريد الإلكتروني ( MTA ) | غير مشفر |
Telnet | 23 | الوصول عن بعد | غير مشفر |
ملخص النقاط الباقية
Protocol | TCP Port | Application(s) | Data Security |
---|---|---|---|
FTP | 21 | File Transfer | Cleartext |
FTPS | 990 | File Transfer | Encrypted |
HTTP | 80 | Worldwide Web | Cleartext |
HTTPS | 443 | Worldwide Web | Encrypted |
IMAP | 143 | Email (MDA) | Cleartext |
IMAPS | 993 | Email (MDA) | Encrypted |
POP3 | 110 | Email (MDA) | Cleartext |
POP3S | 995 | Email (MDA) | Encrypted |
SFTP | 22 | File Transfer | Encrypted |
SSH | 22 | Remote Access and File Transfer | Encrypted |
SMTP | 25 | Email (MTA) | Cleartext |
SMTPS | 465 | Email (MTA) | Encrypted |
Telnet | 23 | Remote Access | Cleartext |
الخيار | الشرح |
---|---|
اسم_المستخدم l- | تقديم اسم تسجيل الدخول |
P WordList.txt- | تحديد قائمة كلمات السر المستخدمة |
server service | تحديد عنوان الخادم والخدمة المستهدفة للهجوم |
s PORT- | استخدام في حالة رقم المنفذ غير الافتراضي للخدمة |
V- أو vV- | عرض تركيبات اسم المستخدم وكلمة السر التي يتم تجربتها |
d- | عرض الناتج التصحيحي إذا كانت النتائج الدقيقة لا تساعد |