يعد استنشاق الحزم والانتحال تهديدين متطورين في أمان الشبكات. هناك العديد من أدوات استنشاق الحزم وانتحالها، مثل Wireshark وtcpdump وnetwox وما إلى ذلك. ويتم استخدام بعض هذه الأدوات على نطاق واسع من قبل خبراء الأمن، وكذلك من قبل المهاجمين. إن القدرة على استخدام هذه الأدوات أمر مهم، ولكن الأهم في أمن الشبكات هو فهم كيفية عمل هذه الأدوات، أي كيفية تنفيذ عملية تجسس الحزم والانتحال في البرامج.
يوجد أدناه برنامج شم بسيط يستخدم Scapy:
from scapy . all import *
print ( "SNIFFING PACKETS" )
def print_pkt ( pkt ):
print ( "Source IP:" , pkt [ IP ]. src )
print ( "Destination IP:" , pkt [ IP ]. dst )
print ( "Protocol:" , pkt [ IP ]. proto )
print ( " n " )
pkt = sniff ( filter = 'icmp' , prn = print_pkt )
في الكود أعلاه، لكل حزمة تم التقاطها، سيتم استدعاء وظيفة رد الاتصال print_pkt()
؛ ستقوم هذه الوظيفة بطباعة بعض معلومات الحزمة.
عند استنشاق الحزم، قد تكون أنواع معينة من الحزم ذات أهمية متزايدة. من الممكن تحديد حزم معينة فقط عن طريق ضبط المرشحات عند تصميم أداة الشم. تستخدم تصفية Scapy بناء جملة BPF (عامل تصفية حزم بيركلي).
تتضمن أمثلة التصفية الممكنة باستخدام Scapy ما يلي:
128.200.0.0/16
كأداة لانتحال الحزم، يتيح Scapy إمكانية تعيين قيم عشوائية في حقول رؤوس الحزم المختلفة. على سبيل المثال، يمكن لطرف ضار استخدام انتحال IP لاستدعاء هجوم DDoS ضد هدف ما. انتحال IP هو إنشاء حزم IP لها عنوان مصدر معدّل إما لإخفاء هوية المرسل، أو لانتحال شخصية كيان شبكة آخر (نظام كمبيوتر، أو مركز بيانات، أو ما إلى ذلك)، أو كليهما.
حزمة محاكاة ICMP
from scapy . all import *
print ( "SENDING SPOOFED ICMP PACKET" )
ip = IP ( src = "1.2.3.4" , dst = "93.184.216.34" ) # IP Layer
icmp = ICMP () # ICMP Layer
pkt = ip / icmp # Construct the complete packet
pkt . show ()
send ( pkt , verbose = 0 )
حزم UDP المزيفة
from scapy . all import *
print ( "SENDING SPOOFED UDP PACKET" )
ip = IP ( src = "1.2.3.4" , dst = "10.0.2.69" ) # IP Layer
udp = UDP ( sport = 8888 , dport = 9090 ) # UDP Layer
data = "Hello UDP! n " # Payload
pkt = ip / udp / data # Construct the complete packet
pkt . show ()
send ( pkt , verbose = 0 )
اجمع بين تقنيات الاستنشاق والانتحال لتنفيذ برنامج الشم ثم المحاكاة الساخرة. تحتاج إلى جهازين افتراضيين على نفس الشبكة المحلية (LAN). من VM A، قم بتنفيذ الأمر ping على IP X. يقوم هذا الإجراء بإنشاء حزمة طلب صدى ICMP. إذا كان X على قيد الحياة، فسيتلقى برنامج ping رد صدى، ويطبع الرد. يعمل برنامج sniff-and-spoof على VM B، الذي يراقب الشبكة المحلية من خلال استنشاق الحزم. عندما يرى طلب صدى ICMP، بغض النظر عن عنوان IP الهدف، يرسل البرنامج على الفور رد صدى باستخدام تقنية انتحال الحزمة. لذلك، بغض النظر عما إذا كان الجهاز X على قيد الحياة أم لا، سيتلقى برنامج ping دائمًا ردًا يشير إلى أن X على قيد الحياة.
IP ()
IP (). show ()
IP () / ICMP ()
p = IP () / ICMP ()
p . show ()
p = IP () / UDP ()
p . show ()
p = IP () / UDP () / "This is my UDP packet"
p . show ()
send ( IP () / UDP () / "This is my UDP packet" )
send ( IP ( dst = '10.0.2.7' ) / UDP () / "This is my UDP packet" )
شكرًا لك على اهتمامك، كان هذا المشروع ممتعًا وثاقبًا!