نظرة عامة
IMAP vs POP3 — الفرق الأساسي
📬 IMAP — حديث
✅ الإيميلات تبقى على السيرفر
✅ تزامن كامل بين كل الأجهزة
✅ يدعم المجلدات والتنظيم
✅ بحث مباشر على السيرفر
✅ أكثر من مستخدم في نفس الوقت
⚠️ يحتاج مساحة أكبر على السيرفر
✅ تزامن كامل بين كل الأجهزة
✅ يدعم المجلدات والتنظيم
✅ بحث مباشر على السيرفر
✅ أكثر من مستخدم في نفس الوقت
⚠️ يحتاج مساحة أكبر على السيرفر
Port 143 / 993 (TLS)
📥 POP3 — قديم
❌ يحمّل الإيميلات ويحذفها من السيرفر
❌ لا يدعم المجلدات
❌ لا تزامن بين الأجهزة
✅ Privacy أكثر — ما في شيء على السيرفر
✅ يشتغل بدون اتصال دائم
❌ لا يدعم المجلدات
❌ لا تزامن بين الأجهزة
✅ Privacy أكثر — ما في شيء على السيرفر
✅ يشتغل بدون اتصال دائم
Port 110 / 995 (TLS)
💡 Gmail, Outlook, Yahoo — كلهم يستخدمون IMAP للتزامن بين الأجهزة
📧 علاقة SMTP + IMAP مع بعض
أنت ترسل إيميل من التليفون
↓
SMTP يرسله للمستلم
↓
IMAP يحفظ نسخة في مجلد "Sent"
↓
تفتح الكمبيوتر = الإيميل المرسل موجود هناك كمان ✅
💡 SMTP = للإرسال فقط. IMAP = للحفظ والتزامن. الاثنين مع بعض = تجربة كاملة
🔌 Ports
| البروتوكول | Port عادي | Port مشفر (TLS) |
|---|---|---|
| IMAP | 143 | 993 |
| POP3 | 110 | 995 |
⚠️ بدون TLS = كل إيميلاتك وباسورداتك تمشي clear-text على الشبكة!
Commands
📋 IMAP Commands
💡 كل أمر IMAP يبدأ برقم — عشان السيرفر يعرف أي رد لأي أمر لو أرسلت أوامر كثيرة دفعة وحدة!
| الأمر | الوظيفة |
|---|---|
| 1 LOGIN user pass | تسجيل الدخول |
| 1 LIST "" * | عرض كل المجلدات |
| 1 LSUB "" * | عرض المجلدات المشترك فيها (للمزامنة) |
| 1 SELECT INBOX | فتح مجلد معين للوصول للإيميلات |
| 1 FETCH 1 all | جيب كل تفاصيل الإيميل رقم 1 |
| 1 CREATE "Work" | إنشاء مجلد جديد |
| 1 DELETE "Work" | حذف مجلد |
| 1 RENAME "Old" "New" | تغيير اسم مجلد |
| 1 UNSELECT INBOX | الخروج من المجلد المحدد |
| 1 CLOSE | حذف الإيميلات المعلّمة للحذف |
| 1 LOGOUT | إغلاق الاتصال |
📋 POP3 Commands
| الأمر | الوظيفة |
|---|---|
| USER username | تعريف اليوزر |
| PASS password | الباسورد |
| STAT | عدد الإيميلات + الحجم الكلي |
| LIST | قائمة الإيميلات مع حجم كل واحد |
| RETR id | تحميل إيميل معين |
| DELE id | حذف إيميل |
| CAPA | إيش يدعم السيرفر؟ |
| RSET | إلغاء الحذف المعلّق |
| QUIT | إغلاق الاتصال |
💡 STAT vs LIST:
STAT → عدد + حجم كلي (مثلاً: 2 إيميل، 1840 bytes)
LIST → حجم كل إيميل لحاله (1: 922 bytes, 2: 918 bytes)
STAT → عدد + حجم كلي (مثلاً: 2 إيميل، 1840 bytes)
LIST → حجم كل إيميل لحاله (1: 922 bytes, 2: 918 bytes)
💻 مثال عملي — IMAP كامل
# الاتصال:
openssl s_client -connect 10.129.14.128:imaps
* OK IMAP4 ready
# تسجيل دخول:
1 LOGIN cry0l1t3 1234
1 OK Logged in
# شوف المجلدات:
1 LIST "" *
* LIST (\HasNoChildren) "." Important
* LIST (\HasNoChildren) "." INBOX
# افتح INBOX:
1 SELECT INBOX
* 3 EXISTS ← 3 إيميلات!
# اقرأ إيميل رقم 1:
1 FETCH 1 all
From: john@company.com
Subject: DB Credentials
Username: admin Password: P@ssw0rd123
1 LOGOUT
* BYE Logging out
💻 مثال عملي — POP3 كامل
# الاتصال:
openssl s_client -connect 10.129.14.128:pop3s
+OK POP3 Server ready
# تسجيل دخول:
USER cry0l1t3
+OK
PASS 1234
+OK Logged in
# إحصائيات:
STAT
+OK 2 1840 ← 2 إيميل، 1840 bytes
# قائمة تفصيلية:
LIST
+OK 2 messages
1 922
2 918
# قراءة إيميل:
RETR 1
+OK message follows
From: john@company.com
Subject: Confidential
QUIT
+OK Bye
Dangerous Settings
💀 إعدادات الـ Debug الخطيرة
| الإعداد | ما يسجله في الـ Log | الخطر |
|---|---|---|
| auth_debug | كل أحداث المصادقة Login: user=cry0l1t3 method=PLAIN |
يكشف usernames |
| auth_debug_passwords | الباسوردات كاملة! cry0l1t3 tried password: 1234 |
💀 باسوردات كاملة! |
| auth_verbose | المحاولات الفاشلة auth failed: user=admin reason=Password mismatch |
يكشف محاولات brute force |
| auth_verbose_passwords | الباسورد مقطوع password=Su**** |
يعطي فكرة عن الباسورد |
| auth_anonymous_username | يسمح بدخول مجهول LOGIN anonymous = مسموح! |
دخول بدون باسورد! |
🎯 سيناريو الاستغلال
auth_debug_passwords = yes (مفعّل!)
↓
وصلت لجهاز على الشبكة
↓
cat /var/log/mail.log
↓
cry0l1t3:1234
john:Summer2021
admin:P@ssw0rd
💀 كل credentials الشركة!
john:Summer2021
admin:P@ssw0rd
💀 كل credentials الشركة!
⚠️ Debug settings للمطورين فقط — يجب إغلاقها في Production!
الأدوات
اختر الأداة:
Nmap
cURL
openssl
ncat
🔍 Nmap على IMAP/POP3
sudo nmap 10.129.14.128 -sV -p110,143,993,995 -sC
PORT STATE SERVICE VERSION
110/tcp open pop3 Dovecot pop3d
143/tcp open imap Dovecot imapd
993/tcp open ssl/imap Dovecot imapd
995/tcp open ssl/pop3 Dovecot pop3d
ssl-cert:
CN=mail1.inlanefreight.htb
O=Inlanefreight
ST=California
emailAddress=cry0l1t3@inlanefreight.htb ← username!
🎯 emailAddress في الـ certificate = username جاهز للاستخدام فوراً!
💡 جرب username = password → cry0l1t3:cry0l1t3 أو robin:robin
🌐 cURL مع IMAP
عرض المجلدات:
curl -k 'imaps://10.129.14.128' --user cry0l1t3:1234
* LIST (\HasNoChildren) "." Important
* LIST (\HasNoChildren) "." INBOX
مع -v للتفاصيل الكاملة:
curl -k 'imaps://10.129.14.128' --user cry0l1t3:1234 -v
* TLSv1.3 / TLS_AES_256_GCM_SHA384
* subject: CN=mail1.inlanefreight.htb
emailAddress=cry0l1t3@inlanefreight.htb
* OK Logged in
* LIST Important
* LIST INBOX
💡 خيارات curl:
-k = تجاهل SSL certificate errors (self-signed)
-v = verbose — تفاصيل TLS + certificate
imaps:// = Port 993 مع TLS
imap:// = Port 143 بدون TLS
-k = تجاهل SSL certificate errors (self-signed)
-v = verbose — تفاصيل TLS + certificate
imaps:// = Port 993 مع TLS
imap:// = Port 143 بدون TLS
قراءة إيميل محدد:
curl -k 'imaps://10.129.14.128/INBOX;MAILINDEX=1' --user cry0l1t3:1234
🔒 openssl — اتصال يدوي
IMAP مع TLS:
openssl s_client -connect 10.129.14.128:imaps
# بعد الاتصال:
* OK IMAP4 ready
1 LOGIN cry0l1t3 1234
1 OK Logged in
1 LIST "" *
* LIST (\HasNoChildren) "." INBOX
1 SELECT INBOX
* 3 EXISTS
1 FETCH 1 all
From: john@company.com
1 LOGOUT
POP3 مع TLS:
openssl s_client -connect 10.129.14.128:pop3s
+OK POP3 Server ready
USER cry0l1t3
+OK
PASS 1234
+OK Logged in
LIST
RETR 1
QUIT
💡 openssl يعرض تفاصيل TLS كاملة + certificate — مفيد لجمع معلومات
🔌 ncat — اتصال نظيف وسريع
IMAP مع TLS:
ncat --ssl 10.129.14.128 993
* OK IMAP4 ready
1 LOGIN cry0l1t3 1234
1 OK Logged in
1 LIST "" *
* LIST (\HasNoChildren) "." Important
* LIST (\HasNoChildren) "." INBOX
1 SELECT INBOX
* 3 EXISTS
1 FETCH 1 all
1 LOGOUT
POP3 مع TLS:
ncat --ssl 10.129.14.128 995
+OK POP3 Server ready
USER cry0l1t3
+OK
PASS 1234
+OK Logged in
STAT
+OK 2 1840
LIST
RETR 1
QUIT
💡 الفرق بين ncat وopenssl:
openssl = يعرض تفاصيل TLS + certificate (مفيد للمعلومات)
ncat --ssl = اتصال نظيف بدون ضجيج (مفيد للتفاعل السريع)
openssl = يعرض تفاصيل TLS + certificate (مفيد للمعلومات)
ncat --ssl = اتصال نظيف بدون ضجيج (مفيد للتفاعل السريع)
Methodology
⛓️ خطوات الـ IMAP/POP3 Footprinting
1
Nmap Scan
اكتشاف الـ ports + SSL certificate + username
sudo nmap -sV -p110,143,993,995 -sC TARGET
👀 emailAddress في الـ certificate = username مجاني 🎯
2
جرب username = password
ناس كثير يستخدمون اليوزرنيم كباسورد
curl -k 'imaps://TARGET' --user robin:robin
3
اتصل واقرأ الإيميلات
لو عندك credentials — اقرأ كل الإيميلات
ncat --ssl TARGET 993
1 LOGIN user pass
1 LIST "" *
1 SELECT INBOX
1 FETCH 1 all
🎯 ابحث عن: passwords, credentials, internal docs, confidential info
4
تحقق من الـ Debug Logs
لو وصلت للجهاز — شوف الـ logs
cat /var/log/mail.log | grep "password"
💀 auth_debug_passwords = باسوردات كاملة في الـ log!
Explained — Q&A
🌐 IMAP vs POP3
إيش الفرق الأساسي بين IMAP وPOP3؟
IMAP = الإيميلات تبقى على السيرفر وتتزامن بين كل الأجهزة. POP3 = يحمّل الإيميلات على جهازك ويحذفها من السيرفر. Gmail وOutlook يستخدمون IMAP للتزامن.
ليش لا يزال POP3 موجود إذا IMAP أفضل؟
سببين: أولاً سيرفرات قديمة ما تدعم IMAP. ثانياً بعض الناس يفضلونه للـ privacy — الإيميلات تنزل على جهازهم وتُحذف من السيرفر، لو السيرفر اتخترق ما في شيء يسرقوه.
🔒 SSL و Ports
ليش الـ ports المشفرة (993, 995) أعلى من غير المشفرة؟
IMAP وPOP3 جاءوا أول وأخذوا ports منخفضة (143, 110). لما أضافوا TLS لاحقاً، ما قدروا يغيروا الـ ports القديمة (كل الأجهزة مبرمجة عليها). فأضافوا ports جديدة (993, 995) للنسخة المشفرة — نفس الفكرة مع HTTP(80) وHTTPS(443).
إيش يعني -k في curl؟
--insecure = تجاهل أخطاء الـ SSL certificate. معظم السيرفرات الداخلية تستخدم self-signed certificates مش موقّعة من CA موثوق. بدون -k = curl يرفض الاتصال. مع -k = يتجاهل الخطأ ويكمل.
⚠️ Debug Settings
ليش auth_debug_passwords خطير جداً؟
لأنه يسجل كل باسورد كامل في الـ log: "cry0l1t3 tried password: 1234". لو وصلت للجهاز وقرأت الـ log = عندك كل credentials الشركة. هاد الإعداد للمطورين فقط — يجب إغلاقه في Production!
إيش الفرق بين ncat وopenssl للاتصال؟
openssl يعرض تفاصيل TLS كاملة (cipher, certificate, session) — مفيد لجمع معلومات. ncat --ssl اتصال نظيف بدون ضجيج — مفيد للتفاعل السريع مع البروتوكول.