02- Defensive Security | Email Security Part 2

Practical guide to enhanicng Email Security

  1. Eng.Nour


    بداية ماذا يعني Email Spoofing ؟ هو ببساطة انتحال شخصية المُرْسِلُ فيظن المستلم أن ما يراه في خانة المُرْسِلُ هو فعلا من أرسل الرسالة بينما في الحقيقة أرسلها شخص آخر. مثلا لنفترض أنك تعمل في مؤسسة والـ Email الخاص بك هو [email protected] ومديرك في العمل الـ Email الخاص به هو [email protected] فيكون Spoofing هو قيام المهاجم بإرسال رسالة تبدو لك في ظاهرها أنها مرسلة من مديرك ولكنها في الحقيقة رسالة مزيفة ولم يقم مديرك بإرسالها من الأساس والسؤال هو ما علاقة هذا بما ناقشناه في الدرس السابق؟




    هل تتذكر ما قلناه بأن هجمات الـ Email تعتمد بالدرجة الأولى على خداع المستخدم إما لفتح المرفقات أو الضغط على رابط ؟ لا يوجد طريقة أكثر فاعلية من قيام المهاجم بانتحال شخصية تعرفها أنت و يطلب منك فتح الرابط أو المرفقات فلا يساورك أدنى شك بخصوص الرسالة وتقدم على فعل ما يطلبه منك بكل سهولة ولكن هل الأمر بهذه السهولة ؟




    للأسف الأمر أسهل مما نتخيل حتى أنه يوجد العديد من المواقع التي تقدم لك هذه الخدمة مجانا ويمكنك عن طريقها إرسال رسائل مزيفة مثل هذا الموقع . إذا ما الذي يمكننا فعله لمنع Email Spoofing ؟




    يمكننا منع ذلك باستخدام ما يعرف بـ



    DMARC : Domain-based Message Authentication, Reporting & Conformance





    ويعرف كالآتي:



    DMRC is an email authentication, policy, and reporting protocol. It builds on the widely deployed SPF and DKIM protocols, adding linkage to the author (“From:”) domain name, published policies for recipient handling of authentication failures, and reporting from receivers to senders, to improve and monitor protection of the domain from fraudulent email.


    قبل شرح كيف يعمل DMARC Protocol يجب أن نعلم أن هذا الـ Protocol هو أحدث طرق الحماية المستخدمة ضد الـ Email Spoofing وتستخدمه مؤسسات مثل Facebook, Twitter & Google لحماية موظفيها...قد يتسائل البعض لابد أن تكلفته المادية مرتفعة جدا والإجابة أنه مجاني ولا يحتاج إلا لدراسته جيدا وفهم كيف يعمل لتطبيقه بفاعلية. هل تتذكر ما قلناه في الدرس السابق بضرورة عدم الربط بين تحقيق مستويات حماية عالية ووجود Financial Budget كبيرة ؟




    إذا كيف يمكننا تطبيقه ؟ يعتمد DMARC على محورين أساسيين وهما SPF و DKIM وهي Protocols تستخدم أيضا في منع Email Spoofing ويمكن استخدامها منفردة ولكن ما يميز DMARC أنه يوظف كلا من SPF و DKIM لتحقيق أعلى مستوى حماية ممكن.



    =====================================================
    SPF
    =====================================================​


    لنبدأ بالـ (SPF (Sender Policy Framework ويعرف كالآتي:


    Sender Policy Framework (SPF) is a simple email-validation system designed to detect email spoofing by providing a mechanism to allow receiving mail exchangers to check that incoming mail from a domain comes from a host authorized by that domain's administrators.[1] The list of authorized sending hosts for a domain is published in the Domain Name System (DNS) records for that domain in the form of a specially formatted TXT record. Email spam and phishing often use forged "from" addresses, so publishing and checking SPF records can be considered anti-spam techniques.


    لنفترض أن المؤسسة company.com تريد تطبيق SPF فما الذي يجب عليها فعله ؟ من المعلوم أن أي مؤسسة لديها Email Server يستخدم في إرسال Emails من المؤسسة لغيرها من المؤسسات. هذا الـ Email Server قطعا سيكون له Public IP Address ولنفترض أنه في حالة Company.com سيكون الـ IP Address الخاص بالـ Email Server هو 1.1.1.1




    والأن لنفكر بمنطقية اذا كانت company.com لا تستخدم إلا هذا الـ Email Server فطبيعي أن تكون كل الرسائل الصادرة من company.com لها Source IP Address هو 1.1.1.1 وعليه يمكننا الجزم بأنه إذا استلم أي شخص خارج المؤسسة Email مرسل من [email protected] ولكن الـ Source IP ليس 1.1.1.1 فإن هذا الـ Email مزيف وليس مرسل من company.com.




    إذا اذا استطاعت company.com إخبار العالم الخارجي بالـ IP Address الخاص بالـ Email Server الخاص بها فإنه يمكنها أن تستخدم ذلك كوسيلة لرصد الـ Spoofed Emails ومنعها. يتم ذلك عن طريق إنشاء SPF Record في DNS Server الخاص بـ Company.com يحتوى على كل المعلومات المطلوبة ويوجد العديد من المواقع التي تساعدك في إنشاء هذا الـ Record مثل هذا الموقع




    هذا مثال لـ SPF Record في أبسط صوره قمنا بإنشائه باستخدام الموقع المذكور:



    "company.com. IN TXT "v=spf1 ip4:1.1.1.1 -all


    ولكن ماذا يعني هذا Record ولماذا قمنا بوضعه في DNS Server ؟ لنمر سريعا على مكوناته:




    (Company.com): هذا الـ Record مسئول عن الـ Domain المسمى company.com



    (IN TXT): هذا الـ Record من نوع TXT



    (v=spf1): هذا الـ Record المسئول عن SPF



    (ip4:1.1.1.1): هذا الـ IP Address هو فقط المسموح له بإرسال Emails من company.com



    (all -): ما هو الإجراء الذي يجب اتباعه بواسطة المستلم في حالة استلام Email مرسل من company.com ولكن
    ليس من الـ IP Address 1.1.1.1. الإجراء في هذه الحالة هو Hard Fail




    الآن بعد أن قمنا بوضع هذا الـ Record في DNS Server الخاص بـ Company.com كيف يعمل SPF ؟




    لنفترض أن هناك شخصان (أحمد) أحدهم يعمل بـ company.com والأخر (عمار) يعمل بـ organization.com وقام أحمد بإرسال Email من [email protected] إلى [email protected] ما الذي سيحدث الآن؟





    p1.png



    أولا: سيقوم Email Server الخاص بـ organization.com باستلام الـ Email من الـ Email Server الخاص بـ company.com



    ثانيا: اذا كان الـ Email Server الخاص بـ organization.com تم ظبطه ليتحقق من SPF الخاص بالـ Emails المستلمة فإنه سيذهب إلى DNS Server الخاص بـ company.com ويبحث عن SPF Record ليتحقق من IPs المسموح لها بالإرسال وبناءا عليه إما أنه سيجد أن الرسالة فعلا مرسلة من 1.1.1.1 وبالتالي سيسمح لها بالمرور أو سيجد أنها مرسلة من IP آخر غير موجود في SPF Record وعندها سيقوم بإيقاف الرسالة وعدم السماح لها بالمرور لأنها ليست مرسلة من الـ Email Server الخاص بـ company.com وبالتالي فهي مزيفة.





    ملحوظات:



    كل مؤسسة هي المسئولة عن ضبط Email Server الخاص بها لتفعيل التحقق من الـ SPF للرسائل المستلمة وما يجب فعله عند فشل التحقق (أو ما يعرف بـ Fail SPF) ….هل يجب السماح للرسالة بالمرور أم يتم إيقافها ؟



    -يمكنك إضافة أكثر من IP Address في الـ SPF Record الخاص بك كما يمكنك إضافة IP Range كامل



    -عند إنشائك لـ SPF Record فأنت تساعد المؤسسات الأخرى على منع استلام الـ Emails المزيفة والتي تظهر كأنها مرسلة من مؤسستك ولكن هذا لا يؤثر على الـ Email Server الخاص بك. إذا أردت حماية مؤسستك فستحتاج لتفعيل التحقق من الـ SPF للـ Emails المستلمة من المؤسسات الأخرى.



    -تفعيلك لخاصية التحقق من SPF للـ Emails المستلمة لا يشترط وجود SPF Record لديك لأنك عندما تتحقق من SPF Record للمؤسسات الأخرى فأنت في حاجة فقط للـ SPF Record الخاص بهم والموجود في DNS Servers الخاصة بهم . ولكن إذا أردت أن تتحقق المؤسسات الأخرى من SPF عند استلامهم رسائل منك فحينئذ لابد أن تقوم بإنشاء SPF Record الخاص بك



    يمكنك التحقق يدويا من SPF Record الخاص بأي مؤسسة مثل Twitter.com عن طريق Mxtoolbox



    وهو كما نرى في الصورة




    Screen Shot 2017-09-09 at 4.07.45 PM.png




    =====================================================
    DKIM
    =====================================================​



    والآن لنناقش DKIM (DomainKeys Identified Mail) وتعريفه كما يلي


    DomainKeys Identified Mail (DKIM) is an email authentication method designed to detect email spoofing. It allows the receiver to check that an email claimed to have come from a specific domain was indeed authorized by the owner of that domain.[1] It is intended to prevent forged sender addresses in emails, a technique often used in phishing and email spam.

    يعمل بروتوكول DKIM عن طريق خاصية من خصائص Asymmetric Encryption ( أو ما يعرف بـ Public/Private Key Encryption ) وهي Digital Signature. بدون الخوض في كيفية عمل هذا النوع من التشفير يكفينا أن نعلم الآن أنه إذا أرادت مؤسسة ما تفعيل DKIM فإنها بحاجة إلى إنشاء زوج من مفاتيح التشفير الأول يدعى Private Key وتستخدمه في عمل Digital Signing لجميع الرسائل الصادرة. هذا المفتاح يوجد فقط على Email Server ولا يفترض أن يوجد مع أحد آخر لذا يجب الحفاظ عليه جيدا.


    المفتاح الآخر وهو Public Key وكما يظهر من الإسم فإنه متاح للجميع وتقوم المؤسسة بوضع هذا المفتاح كـ DKIM Record في الـ DNS Server تماما كما فعلنا في حالة SPF حيث ستحتاج المؤسسات الأخرى للوصول لهذا المفتاح لتتمكن من التحقق من DKIM عند استلامها رسالة من company.com


    إذا كيف يعمل DKIM وكيف يساعد في الحماية من Email Spoofing ؟ لنستخدم نفس المثال السابق:


    Untitled Diagram (6).png



    أولا: [email protected] سيقوم بإرسال رسالة إلى [email protected]

    ثانيا: ستصل الرسالة إلى mail-server.company.com والذي سيقوم بتوقيع الرسالة إلكترونيا (Digitally Signature) ومن ثم يقوم بإرسالها إلى mail-server.organization.com

    ثالثا: إذا كان mail-server.organization.com تم ظبطه ليتحقق من DKIM للرسائل المستلمة فإنه سيرى أن الرسالة موقعة إلكترنيا (Digitally Signed) من company.com وبالتالي سيحاول التحقق من صحة هذا التوقيع

    رابعا: سيقوم mail-server.organtiaton.com بسؤال dns-server.company.com عن Public Key الخاص بـ company.com وسيحصل عليه.

    خامسا: سيقوم mail-server.organization.com الآن بمطابقة Digital Signature الموجود في الرسالة مع Public Key وإذا كانوا متطابقين فسيكون التوقيع الإلكتروني صحيح وسيسمح للرسالة بالمرور. أما إذا لم يتطابقا فإن التوقيع في هذه الحالة غير صحيح وسيتم منع الرسالة من المرور.



    ملحوظات:

    كل زوج من Public/Private Key مرتبطين ببعضهم البعض ويتم إنشائهم في وقت واحد على الـ Mail Server واذا تم توقيع رسالة بالـ Private Key فإن Public Key الخاص بهذا الزوج فقط من المفاتيح هو الإثبات الوحيد على صحة هذا التوقيع فإذا تم توقيع الرسالة بأي Private Key آخر فلن ينجح التوقيع

    يمكننا التفكير في Digital Signature كختم النسر ولكنه إلكتروني غير موجود مع أحد إلا المؤسسة نفسها وبالتالي فاستلام رسالة مختومة إلكترونيا من company.com يضمن أن هذه الرسالة غير مزيفة (بافتراض صحة الختم/التوقيع)

    الـ DKIM مثله مثل SPF.. كل مؤسسة هي المسئولة عن ضبط Email Server الخاص بها لتفعيل التحقق من الـ DKIM للرسائل المستلمة وما يجب فعله عند فشل التحقق (أو ما يعرف ب DKIM Failure) ….هل يجب السماح للرسالة بالمرور أم يتم إيقافها ؟

    تفعيلك لخاصية التحقق من DKIM للـ Emails المستلمة لا يشترط وجود DKIM Record لديك لأنك عندما تتحقق من DKIM للمؤسسات الأخرى فأنت في حاجة فقط للـ DKIM Record الخاص بهم والموجود في DNS Servers الخاصة بهم. ولكن إذا أردت أن تتحقق المؤسسات الأخرى من DKIM عن استلامهم رسائل منك فحينئذ لابد أن تقوم بإنشاء DKIM Record
    الخاص بك



    يوجد العديد من المواقع التي تساعدك في إنشاء DKIM Record الخاص بك مثل هذا الموقع



    وكل المطلوب هو أن تقوم بكتابة Domain الخاص بمؤسستك بالإضافة إلى ما يسمى Selector ويمكنك إدخال أي قيمة فيه والغرض من وجوده هو إمكانية إستخدام Public/Private keys مختلفة لكل Sub-Domain



    فمثلا يمكنك أن تنشئ توقيع/ختم إلكتروني لـ Company.com وآخر لـ contractors.company.com وهكذا





    كما يمكنك أيضا مشاهدة Public Key الخاص بأي موسسة تستخدم DKIM مثل Twitter.com باستخدام العديد من المواقع مثل Mxtoolbox




    Screen Shot 2017-09-09 at 4.12.32 PM.png


    بعد أن مررنا سريعا على SPF و DKIM وكيفية استخدامهما بقي لنا أن نقوم بشرح DMARC وكيف يمكن تفعيله للإستفاده مما قمنا بتطبيقه هنا وهو ما سنتعرض له في الدرس القادم بإذن الله.


    Naqshabndi likes this.