
एक ईमेल स्पूफिंग परीक्षण उपकरण जो SPF/DKIM/DMARC को बायपास करने और DKIM हस्ताक्षरों को गढ़ने का लक्ष्य रखता है।🍻
espoofer एक ओपन-सोर्स परीक्षण उपकरण है जो ईमेल सिस्टम में SPF, DKIM और DMARC प्रमाणीकरण को बायपास करने के लिए है। यह मेल सर्वर प्रशासकों और पेनिट्रेशन टेस्टर्स को यह जांचने में मदद करता है कि लक्ष्य ईमेल सर्वर और क्लाइंट ईमेल स्पूफिंग हमलों के प्रति संवेदनशील हैं या नहीं, या स्पूफिंग ईमेल भेजने के लिए दुरुपयोग किए जा सकते हैं या नहीं।
चित्र 1. Gmail पर हमारे स्पूफिंग हमलों का एक मामला (ठीक किया गया, डेमो वीडियो)
ईमेल स्पूफिंग व्यक्तियों और संगठनों दोनों के लिए एक बड़ा खतरा है (याहू उल्लंघन, जॉन पोडेस्टा)। इस समस्या के समाधान के लिए, आधुनिक ईमेल सेवाएँ और वेबसाइटें प्रमाणीकरण प्रोटोकॉल -- SPF, DKIM और DMARC -- का उपयोग करती हैं ताकि ईमेल जालसाजी को रोका जा सके।
हमारा नवीनतम शोध दर्शाता है कि इन प्रोटोकॉल के कार्यान्वयन में कई सुरक्षा समस्याएँ हैं, जिनका उपयोग SPF/DKIM/DMARC सुरक्षा को बायपास करने के लिए किया जा सकता है। चित्र 1 Gmail में DKIM और DMARC को बायपास करने के हमारे एक स्पूफिंग हमले को प्रदर्शित करता है। अधिक तकनीकी विवरण के लिए, कृपया हमारी Black Hat USA 2020 वार्ता (प्रस्तुति वीडियो के साथ) या USENIX सुरक्षा 2020 पेपर देखें।
इस रिपॉजिटरी में, हमने अपने द्वारा पाए गए सभी परीक्षण मामलों को संक्षेप में प्रस्तुत किया है और उन्हें इस उपकरण में एकीकृत किया है ताकि प्रशासकों और सुरक्षा-विशेषज्ञों को ऐसी सुरक्षा समस्याओं को तुरंत पहचानने और ढूंढने में मदद मिल सके।
Latex संस्करण:
@inproceedings{chen-email,
author = {Jianjun Chen and Vern Paxson and Jian Jiang},
title = {Composition Kills: A Case Study of Email Sender Authentication},
booktitle = {29th {USENIX} Security Symposium ({USENIX} Security 20)},
year = {2020},
isbn = {978-1-939133-17-5},
pages = {2183--2199},
url = {https://www.usenix.org/conference/usenixsecurity20/presentation/chen-jianjun},
publisher = {{USENIX} Association},
month = aug,
}
Word संस्करण:
Jianjun Chen, Vern Paxson, और Jian Jiang. "Composition kills: A case study of email sender authentication." In 29th USENIX Security Symposium (USENIX Security 20), pp. 2183-2199. 2020.
git clone https://github.com/chenjj/espoofer
sudo pip3 install -r requirements.txt
Python संस्करण: Python 3 (>=3.7).
espoofer के तीन कार्य मोड हैं: सर्वर ('s', डिफ़ॉल्ट मोड), क्लाइंट ('c') और मैनुअल ('m')। सर्वर मोड में, espoofer प्राप्त करने वाली सेवाओं में सत्यापन का परीक्षण करने के लिए एक मेल सर्वर की तरह काम करता है। क्लाइंट मोड में, espoofer भेजने वाली सेवाओं में सत्यापन का परीक्षण करने के लिए एक ईमेल क्लाइंट के रूप में काम करता है। मैनुअल मोड डिबग उद्देश्यों के लिए उपयोग किया जाता है।

चित्र 2. तीन प्रकार के हमलावर और उनके कार्य मोड
espoofer को सर्वर मोड में चलाने के लिए, आपके पास होना चाहिए: 1) एक IP पता (1.2.3.4), जिसका आउटगोइंग पोर्ट 25 ISP द्वारा अवरुद्ध नहीं है, और 2) एक डोमेन (attack.com)।
attack.com के लिए DKIM सार्वजनिक कुंजी सेट करेंselector._domainkey.attacker.com TXT "v=DKIM1; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNjwdrmp/gcbKLaGQfRZk+LJ6XOWuQXkAOa/lI1En4t4sLuWiKiL6hACqMrsKQ8XfgqN76mmx4CHWn2VqVewFh7QTvshGLywWwrAJZdQ4KTlfR/2EwAlrItndijOfr2tpZRgP0nTY6saktkhQdwrk3U0SZmG7U8L9IPj7ZwPKGvQIDAQAB"
attack.com के लिए SPF रिकॉर्ड सेट करेंattack.com TXT "v=spf1 ip4:1.2.3.4 +all"
config ={
"attacker_site": b"attack.com", # attack.com
"legitimate_site_address": b"[email protected]", # legitimate.com
"victim_address": b"[email protected]", # [email protected]
"case_id": b"server_a1", # server_a1
}
आप -l विकल्प का उपयोग करके सभी परीक्षण मामलों के case_id की सूची पा सकते हैं:
python3 espoofer.py -l
python3 espoofer.py
आप config.py में case_id बदल सकते हैं या विभिन्न मामलों का परीक्षण करने के लिए कमांड लाइन में -id विकल्प का उपयोग कर सकते हैं:
python3 espoofer.py -id server_a1
espoofer को क्लाइंट मोड में चलाने के लिए, आपके पास लक्ष्य ईमेल सेवाओं पर एक खाता होना चाहिए। यह हमला कुछ ईमेल सेवाओं की स्थानीय MUA से प्राप्त ईमेल का पर्याप्त सत्यापन करने में विफलता का शोषण करता है। उदाहरण के लिए, [email protected] [email protected] का प्रतिरूपण करने का प्रयास करता है।
config ={
"legitimate_site_address": b"[email protected]",
"victim_address": b"[email protected]",
"case_id": b"client_a1",
"client_mode": {
"sending_server": ("smtp.gmail.com", 587), # SMTP भेजने वाले सर्वर का IP और पोर्ट
"username": b"[email protected]", # आपके खाते का उपयोगकर्ता नाम और पासवर्ड
"password": b"your_passward_here",
},
}
आप -l विकल्प का उपयोग करके सभी परीक्षण मामलों के case_id की सूची पा सकते हैं:
python3 espoofer.py -l
नोट:
sending_serverSMTP भेजने वाले सर्वर का पता होना चाहिए, प्राप्त करने वाले सर्वर का नहीं।
python3 espoofer.py -m c
आप config.py में case_id बदल सकते हैं और इसे फिर से चला सकते हैं, या आप कमांड लाइन में -id विकल्प का उपयोग कर सकते हैं:
python3 espoofer.py -m c -id client_a1
यहाँ मैनुअल मोड का एक उदाहरण है:
python3 espoofer.py -m m -helo attack.com -mfrom <[email protected]> -rcptto <[email protected]> -data raw_msg_here -ip 127.0.0.1 -port 25
अपनी बग रिपोर्ट यहाँ दाखिल करने के लिए पुल अनुरोध भेजने का स्वागत है।
आप इसे कच्चे संदेश हेडर में Authentication-results हेडर में जांच सकते हैं। यदि हेडर dmarc=pass दिखाता है, तो इसका मतलब है कि ईमेल ने DMARC प्रमाणीकरण पास कर लिया है। आप कुछ डेमो वीडियो यहाँ देख सकते हैं।
यदि आप ईमेल भेजने में विफल रहते हैं तो कई संभावित कारण हो सकते हैं: 1) आपका ISP स्पैम को रोकने के लिए पोर्ट 25 पर आउटगोइंग ईमेल को ब्लॉक करता है। इस मामले में, आपको ISP से अनुमति माँगनी होगी; 2) लक्ष्य ईमेल सेवाओं की स्पैम सूची में IP पता है। कई मामलों में, आप यहाँ समस्या का समाधान कर सकते हैं, https://www.spamhaus.org/lookup/ ; 3) कुछ ईमेल सेवाएँ जाँचती हैं कि भेजने वाले IP के लिए PTR रिकॉर्ड है या नहीं, आपको इस जाँच को बायपास करने के लिए PTR रिकॉर्ड भी सेट करने की आवश्यकता हो सकती है; 4) ईमेल लक्ष्य ईमेल सेवा के प्रारूप सत्यापन को पास नहीं कर पाता, आप एक अलग परीक्षण मामला आज़माना चाह सकते हैं।
वर्तमान में, espoofer SPF/DKIM/DMARC प्रमाणीकरण को बायपास करने पर ध्यान केंद्रित करता है और इसका उद्देश्य स्पैम फ़िल्टर बायपास नहीं है। लेकिन आप स्पैम फ़िल्टर को बायपास करने के लिए एक प्रतिष्ठित भेजने वाले IP पते, डोमेन और हानिरहित संदेश सामग्री का उपयोग करने का प्रयास कर सकते हैं।
हमारे पिछले अनुभवों में, कुछ ईमेल सेवाएँ संदिग्ध ईमेल को चुपचाप फ़िल्टर कर देती हैं।
आपको तीसरे पक्ष की DNS होस्टिंग सेवाओं का उपयोग करने के बजाय अपना स्वयं का अधिकृत DNS सर्वर स्थापित करना होगा, क्योंकि कुछ DNS होस्टिंग सेवाओं में विशेष वर्ण सेट करने पर प्रतिबंध हैं। मुद्दा देखें।
अधिक परीक्षण मामले जोड़ने का स्वागत है।