MITM напади у мобилним апликацијама — шта су, врсте и заштита од пресретања

Аутор: IT Sectr Објављено: 2026-04-04 Време читања: 10 мин

Man-in-the-Middle (MITM) — напад „човек у средини”, при којем нападач пресреће, чита или мења саобраћај између две стране без њиховог знања. Према подацима Kaspersky, 2025, број MITM напада на мобилне уређаје порастао је за 35% у последње две године. Кључни проблем пресретања саобраћаја је у томе што корисник не види знакове напада — веза изгледа нормално.

Главно

  • MITM напад — пресретање комуникације између клијента и сервера ради крађе или измене података без знања учесника.
  • ARP Spoofing — фалсификовање MAC адресе гејтвеја ради преусмеравања саобраћаја кроз уређај нападача у локалној мрежи.
  • SSL Stripping — снижавање заштићене HTTPS везе на незаштићени HTTP пресретањем првог захтева.
  • Public Wi-Fi — главно окружење за MITM нападе: незаштићене приступне тачке омогућавају пресретање саобраћаја свих повезаних уређаја.
  • Certificate Pinning — најефикаснија метода заштите: апликација проверава сертификат сервера на нивоу кода.

Шта је MITM напад?

Man-in-the-Middle (MITM) — врста сајбер-напада при којем се нападач тајно убацује у канал комуникације између две стране. Нападач може пресретати, читати и мењати податке који се преносе, остајући невидљив за обе стране.

У мобилним апликацијама MITM напади су посебно опасни јер се уређаји стално повезују на различите мреже — кућне, канцеларијске, јавне Wi-Fi у кафићима и на аеродромима. Свака промена мреже потенцијално ствара прозор за напад. Према Verizon Mobile Security Index (2025), 43% организација се бар једном сусрело са MITM нападима на корпоративне мобилне уређаје.

Главна опасност MITM-а — прикривеност: корисник и сервер не добијају сигнале о пресретању. Сесија изгледа нормално, подаци се преносе, нема грешака сертификата (ако нападач користи сопствени сертификат). Откривање напада могуће је само на нивоу мрежне инфраструктуре или помоћу специјализованих алата.

Програмер мора разумети механизме MITM напада како би пројектовао заштиту на нивоу апликације, а не ослањао се искључиво на безбедност транспортног слоја.

Главне врсте MITM напада

Класификација MITM напада укључује неколико врста које се разликују по методи убацивања у канал комуникације. У мобилном развоју најактуелније су три врсте.

ARP Spoofing у локалној мрежи

ARP Spoofing — техника при којој нападач шаље лажне ARP пакете у локалну мрежу, повезујући своју MAC адресу са IP адресом гејтвеја. Након тога, сав саобраћај жртве се усмерава кроз уређај нападача, који га прослеђује гејтвеју, остајући невидљив.

За извођење напада довољни су алати попут Ettercap или BetterCAP, који аутоматизују ARP-спуфинг. Напад је могућ само у оквиру једне подмреже, због чега су корисници јавних Wi-Fi мрежа најрањивији. Модерне мреже са динамичком ARP инспекцијом (DAI) на управљаним свичевима блокирају ову врсту напада.

Заштита на нивоу апликације од ARP Spoofing-а је немогућа — то је проблем мрежне инфраструктуре. Међутим, апликација може детектовати аномалије у мрежној вези помоћу библиотека попут TrustKit за iOS или Network Security Config за Android.

DNS Spoofing и пресретање саобраћаја

DNS Spoofing (или DNS Cache Poisoning) — фалсификовање 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-а

SSL Stripping — напад при којем нападач снижава заштићену HTTPS везу на незаштићени HTTP. Техника користи чињеницу да многи корисници ручно уносе example.com уместо https://example.com, и прва веза се успоставља преко HTTP-а.

Алати попут sslstrip (Moxie Marlinspike, 2009) и bettercap аутоматски пресрећу HTTP захтеве, успостављају HTTPS везу са сервером у своје име и преносе дешифровани саобраћај клијенту преко HTTP-а. Прегледач не приказује иконицу катанаца — корисник не зна да веза није заштићена.

Модерна заштита — HTTP Strict Transport Security (HSTS): сервер обавештава прегледач да све будуће везе морају бити само преко HTTPS-а. HSTS Preload List додатно штити од првог напада, али захтева претходну регистрацију домена.

Како MITM напад функционише у мобилним апликацијама

Типичан MITM напад на мобилну апликацију пролази кроз четири фазе. Свака фаза користи различите рањивости, а за потпуну заштиту потребно је блокирати све векторе.

Прва фаза — убацивање: нападач се налази на путу саобраћаја између уређаја и сервера. То може бити ARP Spoofing у локалној мрежи, лажна Wi-Fi тачка (Evil Twin) или компромитовање DNS сервера провајдера. Мобилни уређаји су посебно рањиви при аутоматском повезивању на отворене мреже.

Друга фаза — пресретање: након убацивања, нападач почиње да чита све пакете које размењују апликација и сервер. У овој фази прикупља метаподатке: URL захтева, величину пакета, колачиће, заглавља. Чак и ако су подаци шифровани, метаподаци могу открити структуру апликације и пословну логику.

Трећа фаза — дешифровање (ако је саобраћај шифрован): нападач успоставља две TLS везе — једну са сервером (користећи лажни сертификат), другу са клијентом. Апликација сматра везу безбедном, али нападач види све податке у отвореном облику. Без Certificate Pinning-а ово функционише за било који сертификат инсталиран у системском складишту.

Четврта фаза — измена и ексфилтрација: нападач може не само читати, већ и мењати податке који се преносе. У финансијским апликацијама то може значити измену броја рачуна примаоца, у API захтевима — измену параметара ауторизације. iOS и Android препоручују имплементацију провере интегритета одговора на нивоу апликације.

Примери кода: заштита од пресретања на Android и iOS

Размотримо практичне примере заштите од MITM напада коришћењем Certificate Pinning-а у Kotlin и Swift. Ови примери блокирају замену сертификата чак и при компромитованом системском складишту.

Certificate Pinning на Android (OkHttp)

OkHttp — стандардна HTTP библиотека за Android која подржава CertificatePinner. Наведите SHA-256 хеш сертификата вашег сервера — сви други сертификати ће бити одбијени.

kotlin
import okhttp3.CertificatePinner
import okhttp3.OkHttpClient

val certificatePinner = CertificatePinner.Builder()
    .add(
        "api.example.com",
        "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
    )
    .build()

val client = OkHttpClient.Builder()
    .certificatePinner(certificatePinner)
    .build()

Certificate Pinning на iOS (URLSession)

На iOS користите URLSessionDelegate за ручну проверу сертификата сервера. Поредите SecCertificateRef са локално сачуваном копијом.

swift
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)
        }
    }
}

Network Security Config на Android

Android подржава декларативну заштиту кроз XML датотеку network_security_config.xml, која блокира саобраћај на нивоу оперативног система без писања кода.

xml
<!-- 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-а

Свеобухватна заштита од MITM напада укључује мере на нивоу апликације, сервера и мрежне инфраструктуре. Испод су дате главне препоруке за Android и iOS.

Користите Certificate Pinning — привезивање сертификата сервера у коду апликације. За разлику од стандардне TLS провере која верује било ком сертификату из системског складишта, Certificate Pinning проверава одређени сертификат или његов јавни кључ. OkHttp на Android и TrustKit на iOS пружају готове имплементације овог механизма.

Присилно користите HTTPS и HSTS: сви мрежни захтеви морају ићи преко HTTPS-а, а сервер треба да враћа заглавље Strict-Transport-Security. За Android додајте android:usesCleartextTraffic="false" у манифест — ово ће забранити HTTP везе на нивоу оперативног система. iOS подразумевано забрањује HTTP од iOS 9 преко App Transport Security (ATS).

Имплементирајте проверу интегритета одговора: потпишите одговоре сервера дигиталним потписом који апликација проверава. Чак и ако нападач пресретне HTTPS саобраћај (преко проксија са поновном инсталацијом сертификата), неће моћи да фалсификује потпис без приватног кључа сервера. Користите JWT са RS256 или HMAC потписе за критичне операције.

На страни сервера укључите 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-а?

Знаци MITM напада укључују изненадно успоравање везе, упозорења о неповерљивом сертификату (којих раније није било), неусаглашеност URL-а и садржаја странице. У мобилним апликацијама — грешке Network Security Config или активирање Certificate Pinning-а.

Може ли VPN да заштити од MITM напада?

VPN шифрује саобраћај до VPN сервера, што штити од пресретања у локалној мрежи. Међутим, VPN не штити ако нападач контролише VPN сервер или ако се MITM напад дешава на страни провајдера. Certificate Pinning на нивоу апликације остаје поузданији метод.

Шта је Evil Twin напад и по чему се разликује од MITM-а?

Evil Twin — лажна Wi-Fi тачка која имитира легитимну мрежу (на пример, "Airport_Free_WiFi"). То није посебна врста MITM-а, већ метода убацивања: повезивањем на Evil Twin, корисник аутоматски постаје жртва MITM напада, јер сав саобраћај пролази кроз нападача.

Како Certificate Pinning утиче на рад апликације?

Certificate Pinning повећава безбедност, али захтева ажурирање апликације при промени сертификата сервера. Препоручује се навођење не једног, већ више резервних сертификата (backup pins). По истеку главног сертификата, апликација ће користити резервни без потребе за ажурирањем.

Које алате хакери користе за MITM нападе?

Најпопуларнији алати: mitmproxy — пресретање и измена HTTP/HTTPS саобраћаја, BetterCAP — ARP спуфинг и пресретање у локалној мрежи, Wireshark — анализа пакета, sslstrip — снижавање HTTPS-а на HTTP. Познавање ових алата помаже програмеру да тестира заштиту своје апликације.

Закључак

  • MITM напад — прикривено пресретање саобраћаја између клијента и сервера, омогућавајући читање и измену података без знања страна.
  • ARP Spoofing ради у локалној мрежи, фалсификујући MAC адресу гејтвеја за преусмеравање саобраћаја кроз нападача.
  • DNS Spoofing фалсификује DNS записе, усмеравајући саобраћај на лажни сервер, заштита — DNS-over-HTTPS.
  • SSL Stripping снижава HTTPS на HTTP, спречава се HSTS-ом и забраном HTTP саобраћаја у манифесту.
  • Certificate Pinning — главни метод заштите на нивоу апликације, доступан кроз OkHttp (Android) и URLSession (iOS).
  • Комбинација TLS 1.3, HSTS и Certificate Pinning уклања 99% вектора MITM напада према NIST-у.
  • Тестирање заштите са mitmproxy и BetterCAP пре објављивања обавезно је за апликације које раде са поверљивим подацима.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође