◄ BACK TO PROTOCOLS
HTB Academy · Module 112 · Section 11/21
Footprinting Port 143/993 Port 110/995 Credential Leak
IMAP / POP3
EMAIL RETRIEVAL · COMMANDS · DEBUG SETTINGS · FOOTPRINTING
IMAP Port
143 / 993
POP3 Port
110 / 995
TLS Ports
993, 995
Linux Server
Dovecot
IMAP vs POP3
sync vs download
Danger
auth_debug 💀
نظرة عامة
IMAP vs POP3 — الفرق الأساسي
📬 IMAP — حديث
✅ الإيميلات تبقى على السيرفر
✅ تزامن كامل بين كل الأجهزة
✅ يدعم المجلدات والتنظيم
✅ بحث مباشر على السيرفر
✅ أكثر من مستخدم في نفس الوقت
⚠️ يحتاج مساحة أكبر على السيرفر
Port 143 / 993 (TLS)
📥 POP3 — قديم
❌ يحمّل الإيميلات ويحذفها من السيرفر
❌ لا يدعم المجلدات
❌ لا تزامن بين الأجهزة
✅ Privacy أكثر — ما في شيء على السيرفر
✅ يشتغل بدون اتصال دائم
Port 110 / 995 (TLS)
💡 Gmail, Outlook, Yahoo — كلهم يستخدمون IMAP للتزامن بين الأجهزة
📧 علاقة SMTP + IMAP مع بعض
أنت ترسل إيميل من التليفون
SMTP يرسله للمستلم
IMAP يحفظ نسخة في مجلد "Sent"
تفتح الكمبيوتر = الإيميل المرسل موجود هناك كمان ✅
💡 SMTP = للإرسال فقط. IMAP = للحفظ والتزامن. الاثنين مع بعض = تجربة كاملة
🔌 Ports
البروتوكولPort عاديPort مشفر (TLS)
IMAP143993
POP3110995
⚠️ بدون 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)
💻 مثال عملي — 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 الشركة!
⚠️ 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
قراءة إيميل محدد:
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 = اتصال نظيف بدون ضجيج (مفيد للتفاعل السريع)
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 اتصال نظيف بدون ضجيج — مفيد للتفاعل السريع مع البروتوكول.