Man-in-the-Middle (MITM) — एक “बीच में व्यक्ति” हमला जिसमें हमलावर दो पक्षों के बीच ट्रैफ़िक को उनकी जानकारी के बिना इंटरसेप्ट, पढ़ या संशोधित करता है। Kaspersky, 2025 के अनुसार, पिछले दो वर्षों में मोबाइल उपकरणों पर MITM हमलों की संख्या में 35% की वृद्धि हुई है। ट्रैफ़िक इंटरसेप्शन की मुख्य समस्या यह है कि उपयोगकर्ता को हमले के कोई संकेत नहीं दिखते — कनेक्शन सामान्य दिखता है।
मुख्य बातें
Man-in-the-Middle (MITM) एक प्रकार का साइबर हमला है जिसमें हमलावर दो पक्षों के बीच संचार चैनल में गुप्त रूप से घुसपैठ करता है। हमलावर दोनों पक्षों के लिए अदृश्य रहते हुए प्रेषित डेटा को इंटरसेप्ट, पढ़ और संशोधित कर सकता है।
मोबाइल ऐप्स में, MITM हमले विशेष रूप से खतरनाक होते हैं क्योंकि डिवाइस लगातार विभिन्न नेटवर्कों से जुड़ते हैं — घर, कार्यालय, कैफे और हवाई अड्डों में सार्वजनिक Wi-Fi। प्रत्येक नेटवर्क स्विच संभावित रूप से हमले के लिए एक खिड़की बनाता है। Verizon Mobile Security Index (2025) के अनुसार, 43% संगठनों ने कॉर्पोरेट मोबाइल उपकरणों पर कम से कम एक बार MITM हमलों का सामना किया है।
MITM का मुख्य खतरा छिपापन है: उपयोगकर्ता और सर्वर को इंटरसेप्शन के कोई संकेत नहीं मिलते। सत्र सामान्य दिखता है, डेटा प्रेषित होता है, कोई प्रमाणपत्र त्रुटि नहीं होती (यदि हमलावर अपना स्वयं का प्रमाणपत्र उपयोग करता है)। हमले का पता केवल नेटवर्क बुनियादी ढांचे के स्तर पर या विशेष उपकरणों के साथ ही लगाया जा सकता है।
डेवलपर को MITM हमलों के तंत्र को समझने की आवश्यकता है ताकि वह एप्लिकेशन स्तर पर सुरक्षा डिज़ाइन कर सके, न कि केवल ट्रांसपोर्ट लेयर सुरक्षा पर निर्भर रहे।
MITM हमलों का वर्गीकरण कई प्रकार शामिल करता है जो संचार चैनल में घुसपैठ की विधि में भिन्न होते हैं। मोबाइल विकास में, तीन प्रकार सबसे अधिक प्रासंगिक हैं।
ARP Spoofing एक तकनीक है जिसमें हमलावर स्थानीय नेटवर्क पर नकली ARP पैकेट भेजता है, अपने MAC पते को गेटवे IP पते से जोड़ता है। इसके बाद, पीड़ित का सारा ट्रैफ़िक हमलावर के डिवाइस के माध्यम से रूट किया जाता है, जो अदृश्य रहते हुए इसे गेटवे को अग्रेषित करता है।
हमले को अंजाम देने के लिए Ettercap या BetterCAP जैसे उपकरण पर्याप्त हैं, जो ARP स्पूफिंग को स्वचालित करते हैं। हमला केवल एक सबनेट के भीतर ही संभव है, जिससे सार्वजनिक Wi-Fi नेटवर्क के उपयोगकर्ता सबसे अधिक असुरक्षित होते हैं। प्रबंधित स्विच पर डायनामिक ARP इंस्पेक्शन (DAI) वाले आधुनिक नेटवर्क इस प्रकार के हमले को अवरुद्ध करते हैं।
ARP Spoofing से एप्लिकेशन स्तर पर सुरक्षा संभव नहीं है — यह नेटवर्क बुनियादी ढांचे की समस्या है। हालांकि, एप्लिकेशन iOS के लिए TrustKit या Android के लिए Network Security Config जैसी लाइब्रेरी का उपयोग करके नेटवर्क कनेक्टिविटी में विसंगतियों का पता लगा सकता है।
DNS Spoofing (या DNS कैश पॉइज़निंग) क्लाइंट से DNS सर्वर के रास्ते में DNS रिकॉर्ड का प्रतिस्थापन है। हमलावर एप्लिकेशन के DNS अनुरोध को इंटरसेप्ट करता है और नकली IP पता लौटाता है, ट्रैफ़िक को वैध सर्वर के बजाय अपने सर्वर पर रीडायरेक्ट करता है।
हमला सार्वजनिक नेटवर्क में विशेष रूप से प्रभावी होता है जहां DNS सर्वर DHCP के माध्यम से स्वचालित रूप से निर्दिष्ट किया जाता है। हमलावर अपना स्वयं का DNS सर्वर सेट कर सकता है जो लक्ष्य डोमेन के लिए नकली IP पते लौटाता है। उपयोगकर्ता ब्राउज़र में एक वैध URL देखता है लेकिन हमलावर के सर्वर से जुड़ता है।
DNS Spoofing से एप्लिकेशन पक्ष पर सुरक्षा DNS-over-HTTPS (DoH) या DNS-over-TLS (DoT) के माध्यम से कार्यान्वित की जाती है, जो DNS क्वेरी को एन्क्रिप्ट करते हैं। Android 9+ और iOS 14+ सिस्टम-स्तरीय DoH का समर्थन करते हैं, और एप्लिकेशन स्पष्ट रूप से इस विकल्प को सक्षम कर सकता है।
SSL Stripping एक हमला है जिसमें हमलावर सुरक्षित HTTPS कनेक्शन को असुरक्षित HTTP में डाउनग्रेड करता है। यह तकनीक इस तथ्य का शोषण करती है कि कई उपयोगकर्ता https://example.com के बजाय मैन्युअल रूप से example.com टाइप करते हैं, और पहला कनेक्शन HTTP के माध्यम से स्थापित होता है।
sslstrip (Moxie Marlinspike, 2009) और bettercap जैसे उपकरण स्वचालित रूप से HTTP अनुरोधों को इंटरसेप्ट करते हैं, अपनी ओर से सर्वर के साथ HTTPS कनेक्शन स्थापित करते हैं, और डिक्रिप्टेड ट्रैफ़िक को क्लाइंट को HTTP के माध्यम से पास करते हैं। ब्राउज़र पैडलॉक आइकन नहीं दिखाता — उपयोगकर्ता को नहीं पता कि कनेक्शन सुरक्षित नहीं है।
आधुनिक सुरक्षा — HTTP Strict Transport Security (HSTS): सर्वर ब्राउज़र को सूचित करता है कि सभी भविष्य के कनेक्शन केवल HTTPS के माध्यम से होने चाहिए। HSTS Preload List पहले हमले से भी बचाता है, लेकिन इसके लिए डोमेन का पूर्व पंजीकरण आवश्यक है।
मोबाइल ऐप पर एक सामान्य MITM हमला चार चरणों से गुजरता है। प्रत्येक चरण विभिन्न कमजोरियों का शोषण करता है, और पूर्ण सुरक्षा के लिए सभी वैक्टरों को कवर करना आवश्यक है।
पहला चरण — घुसपैठ: हमलावर डिवाइस और सर्वर के बीच ट्रैफ़िक के रास्ते में आ जाता है। यह स्थानीय नेटवर्क पर ARP Spoofing, नकली Wi-Fi एक्सेस पॉइंट (Evil Twin), या प्रदाता के DNS सर्वर से समझौता हो सकता है। मोबाइल डिवाइस खुले नेटवर्क से स्वचालित रूप से कनेक्ट होने पर विशेष रूप से असुरक्षित होते हैं।
दूसरा चरण — इंटरसेप्शन: घुसपैठ के बाद, हमलावर ऐप और सर्वर के बीच आदान-प्रदान किए गए सभी पैकेटों को पढ़ना शुरू करता है। इस चरण में, वह मेटाडेटा एकत्र करता है: अनुरोध URL, पैकेट आकार, कुकीज़, हेडर। भले ही डेटा एन्क्रिप्टेड हो, मेटाडेटा एप्लिकेशन संरचना और व्यावसायिक तर्क को प्रकट कर सकता है।
तीसरा चरण — डिक्रिप्शन (यदि ट्रैफ़िक एन्क्रिप्टेड है): हमलावर दो TLS कनेक्शन स्थापित करता है — एक सर्वर के साथ (नकली प्रमाणपत्र का उपयोग करके), दूसरा क्लाइंट के साथ। ऐप कनेक्शन को सुरक्षित मानता है, लेकिन हमलावर सभी डेटा को सादे पाठ में देखता है। Certificate Pinning के बिना, यह सिस्टम स्टोर में स्थापित किसी भी प्रमाणपत्र के लिए काम करता है।
चौथा चरण — संशोधन और बहिर्गमन: हमलावर न केवल पढ़ सकता है बल्कि प्रेषित डेटा को संशोधित भी कर सकता है। वित्तीय ऐप्स में, इसका मतलब प्राप्तकर्ता के खाता संख्या को बदलना हो सकता है; API अनुरोधों में, प्राधिकरण पैरामीटर को संशोधित करना। iOS और Android एप्लिकेशन स्तर पर प्रतिक्रिया अखंडता जांच लागू करने की सलाह देते हैं।
आइए Kotlin और Swift में Certificate Pinning का उपयोग करके MITM हमलों से सुरक्षा के व्यावहारिक उदाहरण देखें। ये उदाहरण सिस्टम स्टोर के समझौता होने पर भी प्रमाणपत्र प्रतिस्थापन को अवरुद्ध करते हैं।
OkHttp Android के लिए मानक HTTP लाइब्रेरी है जो CertificatePinner का समर्थन करती है। अपने सर्वर के प्रमाणपत्र का SHA-256 हैश निर्दिष्ट करें — कोई भी अन्य प्रमाणपत्र अस्वीकार कर दिया जाएगा।
import okhttp3.CertificatePinner
import okhttp3.OkHttpClient
val certificatePinner = CertificatePinner.Builder()
.add(
"api.example.com",
"sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
)
.build()
val client = OkHttpClient.Builder()
.certificatePinner(certificatePinner)
.build()
iOS पर, सर्वर प्रमाणपत्र को मैन्युअल रूप से सत्यापित करने के लिए URLSessionDelegate का उपयोग करें। SecCertificateRef की तुलना स्थानीय रूप से संग्रहीत प्रतिलिपि से करें।
class SessionDelegate: NSObject, URLSessionDelegate {
func urlSession(
_ session: URLSession,
didReceive challenge: URLAuthenticationChallenge,
completionHandler: @escaping (
URLSession.AuthChallengeDisposition,
URLCredential?
) -> Void
) {
guard let serverTrust = challenge.protectionSpace
.serverTrust else { return }
let pinnedCert = SecCertificateCreateWithData(
nil,
pinnedCertData as CFData
)
let serverCerts = (0..<SecTrustGetCertificateCount(serverTrust))
.compactMap { SecTrustGetCertificateAtIndex(serverTrust, $0) }
if serverCerts.contains { CFEqual($0, pinnedCert) } {
completionHandler(.useCredential, URLCredential(trust: serverTrust))
} else {
completionHandler(.cancelAuthenticationChallenge, nil)
}
}
}
Android network_security_config.xml फ़ाइल के माध्यम से घोषणात्मक सुरक्षा का समर्थन करता है, जो कोड लिखे बिना OS स्तर पर ट्रैफ़िक को अवरुद्ध करता है।
<!-- network_security_config.xml -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">api.example.com</domain>
<pin-set expiration="2027-07-01">
<pin digest="SHA-256">AAAAAAAAAAAAAAAAAAAAAAAAAAAA</pin>
</pin-set>
</domain-config>
</network-security-config>
MITM हमलों से व्यापक सुरक्षा में एप्लिकेशन, सर्वर और नेटवर्क बुनियादी ढांचे के स्तर पर उपाय शामिल हैं। नीचे Android और iOS के लिए मुख्य सिफारिशें दी गई हैं।
Certificate Pinning का उपयोग करें — एप्लिकेशन कोड में सर्वर प्रमाणपत्र को बाइंड करना। मानक TLS सत्यापन के विपरीत, जो सिस्टम स्टोर से किसी भी प्रमाणपत्र पर भरोसा करता है, Certificate Pinning एक विशिष्ट प्रमाणपत्र या उसकी सार्वजनिक कुंजी की जांच करता है। Android पर OkHttp और iOS पर TrustKit इस तंत्र के तैयार कार्यान्वयन प्रदान करते हैं।
HTTPS और HSTS को अनिवार्य करें: सभी नेटवर्क अनुरोध HTTPS के माध्यम से जाने चाहिए, और सर्वर को Strict-Transport-Security हेडर लौटाना चाहिए। Android के लिए, मेनिफेस्ट में android:usesCleartextTraffic="false" जोड़ें — यह OS स्तर पर HTTP कनेक्शन को अवरुद्ध करता है। iOS iOS 9 से App Transport Security (ATS) के माध्यम से डिफ़ॉल्ट रूप से HTTP को अवरुद्ध करता है।
प्रतिक्रिया अखंडता जांच लागू करें: सर्वर प्रतिक्रियाओं को डिजिटल हस्ताक्षर से हस्ताक्षरित करें जिसे ऐप सत्यापित करता है। भले ही हमलावर HTTPS ट्रैफ़िक को इंटरसेप्ट करे (प्रॉक्सी के माध्यम से प्रमाणपत्र पुनर्स्थापना के साथ), वह सर्वर की निजी कुंजी के बिना हस्ताक्षर जाली नहीं बना सकता। महत्वपूर्ण संचालन के लिए RS256 या HMAC हस्ताक्षर वाले JWT का उपयोग करें।
सर्वर पक्ष पर, HTTP Public Key Pinning (HPKP) सक्षम करें — एक निर्देश जो ब्राउज़र या ऐप को बताता है कि किसी दिए गए डोमेन के लिए कौन सा प्रमाणपत्र वैध माना जाए। हालांकि, HPKP में सावधानी की आवश्यकता है: गलत कॉन्फ़िगरेशन लंबी अवधि के लिए एप्लिकेशन तक पहुंच को अवरुद्ध कर सकता है। Google केवल बैकअप प्रमाणपत्रों के संयोजन में HPKP का उपयोग करने की सलाह देता है।
NIST SP 800-52 Rev. 2 (2024) के अनुसार, TLS 1.3, Certificate Pinning और HSTS का संयोजन मोबाइल ऐप्स पर 99% ज्ञात MITM हमले वैक्टर को समाप्त करता है। डेवलपर्स को एप्लिकेशन प्रकाशित करने से पहले mitmproxy जैसे उपकरणों से सुरक्षा का परीक्षण करने की सिफारिश की जाती है।
अक्सर पूछे जाने वाले प्रश्न
MITM हमले के संकेतों में अचानक कनेक्शन धीमा होना, अविश्वसनीय प्रमाणपत्र के बारे में चेतावनी (जो पहले नहीं थी), URL और पृष्ठ सामग्री के बीच बेमेल शामिल है। मोबाइल ऐप्स में — Network Security Config त्रुटियां या Certificate Pinning सक्रिय होना।
VPN ट्रैफ़िक को VPN सर्वर तक एन्क्रिप्ट करता है, जो स्थानीय नेटवर्क पर इंटरसेप्शन से बचाता है। हालांकि, VPN सुरक्षा नहीं करता है यदि हमलावर VPN सर्वर को नियंत्रित करता है, या यदि MITM हमला प्रदाता की ओर से होता है। एप्लिकेशन स्तर पर Certificate Pinning अधिक विश्वसनीय तरीका बना हुआ है।
Evil Twin एक नकली Wi-Fi एक्सेस पॉइंट है जो एक वैध नेटवर्क (जैसे “Airport_Free_WiFi”) की नकल करता है। यह MITM का अलग प्रकार नहीं बल्कि घुसपैठ की एक विधि है: Evil Twin से कनेक्ट होकर, उपयोगकर्ता स्वचालित रूप से MITM हमले का शिकार बन जाता है, क्योंकि सारा ट्रैफ़िक हमलावर के माध्यम से गुजरता है।
Certificate Pinning सुरक्षा बढ़ाता है लेकिन सर्वर प्रमाणपत्र बदलने पर ऐप को अपडेट करने की आवश्यकता होती है। एक नहीं बल्कि कई बैकअप प्रमाणपत्र (backup pins) निर्दिष्ट करने की सिफारिश की जाती है। जब प्राथमिक प्रमाणपत्र समाप्त हो जाता है, तो ऐप अपडेट की आवश्यकता के बिना बैकअप का उपयोग करेगा।
सबसे लोकप्रिय उपकरण: mitmproxy — HTTP/HTTPS ट्रैफ़िक का इंटरसेप्शन और संशोधन, BetterCAP — ARP स्पूफिंग और स्थानीय नेटवर्क पर इंटरसेप्शन, Wireshark — पैकेट विश्लेषण, sslstrip — HTTPS को HTTP में डाउनग्रेड करना। इन उपकरणों का ज्ञान डेवलपर्स को अपने एप्लिकेशन की सुरक्षा का परीक्षण करने में मदद करता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें