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 ঠিকানা ফেরত দেয়, বৈধ সার্ভারের পরিবর্তে ট্র্যাফিক তার নিজস্ব সার্ভারে পুনর্নির্দেশ করে।
পাবলিক নেটওয়ার্কে আক্রমণটি বিশেষভাবে কার্যকর যেখানে DHCP-এর মাধ্যমে DNS সার্ভার স্বয়ংক্রিয়ভাবে নির্ধারিত হয়। আক্রমণকারী তার নিজস্ব 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-এর সংমিশ্রণ মোবাইল অ্যাপে পরিচিত MITM আক্রমণ ভেক্টরের 99% দূর করে। ডেভেলপারদের অ্যাপ্লিকেশন প্রকাশের আগে 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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন