מה זה סריקת פורטים- Port Scanning
סריקת פורטים היא כמו בדיקה של חלונות פתוחים בבניין, אלא אם יש מחשבים. זה עוזר למצוא "דלתות פתוחות" או פורטים במחשב או ברשת כדי לראות אילו שירותים זמינים או אם יש נקודות תורפה כלשהן. כאשר נמל פתוח, זה אומר שיש שירות שניתן להגיע אליו. אם הוא סגור, אין שם כלום, ואם הוא מסונן, כנראה חומת אש חוסמת את הגישה. שיטה זו משמשת כדי לקבל מבט טוב על מה שרץ במכשירי הרשת.
מתי משתמשים בסריקת פורטים
- בבדיקת חדירות – Penetration Test, שהיא כמו בדיקת בטיחות לרשתות, יש חשיבות רבה לסריקת פורטים. זה עוזר למומחי אבטחה למצוא נקודות תורפה שהאקרים יכולים להשתמש בהן כדי לפרוץ פנימה.
- האקרים משתמשים גם בסריקות פורטים כדי לבחור את המטרות שלהם על ידי מציאת פורטים פתוחים והבנת איך לתקוף על סמך אילו שירותים פועלים. כדי לעזור עם זה, יש כלי שנקרא 'nmap' שהוא ממש טוב לסריקת פורטים ולגלות אילו מכשירים נמצאים ברשת ומה הם עושים. זהו כלי מפתח הן להגנה על רשתות והן להבנה כיצד לתקוף אותן.
לחיצת היד המשולשת של TC
ראשית, קצת רקע, במהלך תקשורת עם שירות TCP, נוצר חיבור יחיד עם לחיצת היד תלת-כיוונית TCP. זה כרוך ב-SYN שנשלח ליציאה פתוחה TCP ששירות קשור אליה, דוגמאות טיפוסיות הן HTTP (יציאה 80), SMTP (יציאה 25), POP3 (יציאה 110) או SSH (יציאה 22). צד השרת יראה את ה-SYN ויגיב ב-SYN ACK, כשהלקוח יענה ל-SYN ACK עם ACK. זה משלים את ההגדרה וניתן להעביר את הנתונים של פרוטוקול השירות כעת.

בדוגמה זו, חומת האש מעבירה את התעבורה לשרת האינטרנט (HTTP -> 80) ושרת האינטרנט מגיב עם האישור. בכל הדוגמאות הללו חומת אש יכולה להיות התקן חומרה נפרד, או שהיא יכולה להיות חומת אש מקומית של תוכנה במחשב המארח.
יציאות מסוננות והפלת חבילות של חומת האש
תפקידה של חומת אש היא להגן על המערכת מפני פקטות לא רצויות שעלולות להזיק למערכת. בדוגמה הפשוטה הזו, סריקת היציאה מתבצעת כנגד יציאה 81, מכיוון שאין שירות שפועל ביציאה זו, השימוש בחומת אש כדי לחסום את הגישה אליה הוא השיטה הטובה ביותר.

תוצאת יציאה מסוננת מ-Nmap מצביעה על כך שהיציאה לא הגיבה כלל. חבילת SYN פשוט נפלה על ידי חומת האש. ראו את לכידת פקטות Wireshark הבאה שמציגה את החבילה הראשונית ללא תגובה.

יציאות סגורות וכשלים של חומת האש
במקרה זה, יציאות סגורות לרוב מצביעות על כך שאין שירות ביציאה, אך חומת האש אפשרה לחיבור לעבור לשרת. זה יכול גם אומר שאין חומת אש בכלל. שימו לב שבזמן שאנו דנים בתרחישים הנפוצים ביותר, ניתן להגדיר חומת אש כדי לדחות פקטות במקום להפיל. המשמעות היא שחבילות הפוגעות בחומת האש ייראו כסגורות (חומת האש מגיבה עם RST ACK).
בתמונה למטה מוצג מקרה שבו כלל חומת אש מאפשר לחבילה ביציאה 81 לעבור למרות שאין שירות האזנה ביציאה. סביר להניח שהסיבה לכך היא שחומת האש מוגדרת בצורה גרועה
מציאת יציאה פתוחה (שירות).
פורטים פתוחים הם בדרך כלל מה שאתם מחפשים כשאתם מתחילים בסריקות Nmap. השירות הפתוח יכול להיות שירות נגיש לציבור שמטבעו אמור להיות נגיש. זה עשוי להיות שירות אחורי שלא צריך להיות נגיש לציבור, ולכן צריך להיות חסום על ידי חומת אש.

דבר מעניין לשים לב אליו בלכידת wireshark הוא חבילת ה- RST שנשלחה לאחר קבלת ה-SYN ACK משרת האינטרנט. ה-RST נשלח על ידי Nmap מכיוון שמצב היציאה (פתוח) נקבע על ידי ה-SYN ACK אם היינו מחפשים מידע נוסף כגון גרסת שירות HTTP או כדי לקבל את הדף, ה-RST לא יישלח. נוצר חיבור מלא.
מאגר שיטות מתקדמות לסריקת פורטים באמצעות Nmap
כתובות IP לסריקה
1. מפרט ישיר:
○ <ip>,<net/mask>: מאפשר הזנה ישירה של כתובות IP.
2. רשימת כתובות IP:
○ –iL <ips_file>: משתמש בקובץ המכיל רשימה של כתובות IP.
3. יצירת כתובת IP אקראית:
○ –iR <number>: יוצר מספר מוגדר של כתובות IP אקראיות, עם אפשרות לא לכלול כתובות IP מסוימות באמצעות —exclude <Ips> או —excludefile <file>.
גילוי מכשיר
שלב גילוי בברירת המחדל של Nmap כולל את הטכניקות הבאות:
• –sL: מפרט יעדים באופן לא פולשני על ידי פתרון שמות DNS. שימושי לאישור טווחי יעד.
• –Pn: דילוג על פינג, בהנחה שכל היעדים פעילים, בהרבה פעמים מאפשר מעקף באירגונים שחוסמים Ping. זה יכול לחסוך זמן אבל עלול לגרום לתוצאות שליליות שגויות.
• –sn: נמנע מסריקת פורטים לאחר שלב הסיור. שולח פקטות ספציפיות בהתאם להרשאות.
• –PR: משתמש ב-ARP ping כברירת מחדל לניתוח רשת מקומית מהירה. השתמש ב–send-ip כדי לעקוף את ARP.
• –PS <ports>: שולח פקטות SYN לפורטים שצוינו, מזהה פורטים פתוחים, סגורות או בלתי ניתנות להשגה.
• –PA <ports>: דומה ל-PS אך עם פקטות ACK, משפרים את הזיהוי.
• –PU <ports>: ממקד לפורטים סגורים עם חבילות UDP, זיהוי פורטים פתוחים או בלתי ניתנים להשגה.
• –PE, -PP, -PM: משתמש בסוגי ping ICMP עבור שאילתות תשובה הד, חותמת זמן ומסיכת כתובת, בהתאמה.
• -PY<Ports>: שולח בדיקות SCTP INIT כדי להסיק מצבי פורטים.
• -PO <Protocols>: מציין פרוטוקולים בכותרות פקטות לזיהוי תמיכת פרוטוקולים על סמך תגובות שגיאה.
• –n: משבית רזולוציית (פיענוח) DNS.
• –R: מאלץ רזולוציית DNS.
טכניקות סריקת פורטים
• –sS: מבצע סריקת SYN חמקנית מבלי להשלים חיבורים.
• –sT: משלים חיבור TCP, פוטנציאלי להשאיר עקבות.
• –sU: לסריקת UDP איטית יותר, סיווג פורטים כפתוחים, סוגרים או מסוננים.
• –sY: סריקת SCTP ללא יצירת לוגים.
• –sN, -sX, -sF: סריקות TCP מיוחדות (Null, Xmas, Fin) כדי לעקוף חומות אש מסוימות.
• –sM: סריקת מימון למערכות BSD.
• –sA, -sW: ACK ו- Window סורקים לאיתור חומת אש.
• –sI: סריקת סרק באמצעות מארח "זומבי".
• —badsum: שולח פקטות עם סכומי ביקורת שגויים לזיהוי חומת אש.
• –sZ: סריקת SCTP עם שברי COOKIE ECHO.
• –sO: סריקת פרוטוקול IP גולמי.
• –b <שרת>: סריקת החזרת FTP.
• –sV: מבצע זיהוי גרסאות.
• –O: מנסה לזהות מערכת הפעלה.
בקרת זמן ריצה
Nmap מציע בקרות זמן ריצה להתאמת פרמטרי סריקה במהלך הביצוע:
• -6: מאפשר סריקת IPv6.
–A: שווה ערך ל-O -sV -sC –traceroute.
ניתוח מיקוד
פירוט פורטים (-p):
○ השתמשו ב-p כדי לציין פורטים לסריקה.
○ –p– או –p כולם סורקים את כל 65335 הפורטים.
○ התנהגות ברירת המחדל סורקת את 1000 הפורטים הפופולרים והמובילים, כאשר -F מתמקדת ב-100 המובילים.
○ —top-ports <number> סורק כמות מוגדרת של הפורטים הנפוצים ביותר.
○ –r סורק את הפורטים ברצף.
○ ניתן לציין פורטים בנפרד, בטווחים, או לקבץ לפי פרוטוקול עם קידומות U:, T: ו-S: עבור UDP, TCP ו-SCTP, בהתאמה.
○ —port-ratio <ratio> סורק את הפורטים הנפוצים ביותר ביחס שצוין בין 0 ל-1.
2. זיהוי גרסה (-sV):
○ עורך סריקת זיהוי גרסאות, עם עוצמה מתכווננת מ-0 (לפחות) ל-9 (החזקה ביותר), ברירת המחדל היא 7.
○ —version-intensity <number> משנה את עוצמת הבדיקה לזיהוי גרסה, מה שעלול להפחית את זמן הסריקה עבור U
פקודות לשימוש בסקריפטים
• —script-args <n1>=<v1>, <n2>={<n3>=<v3>}, <n4>={<v4>, <v5>}: מעביר ארגומנטים לסקריפטים.
• —script-args-file <שם קובץ>: מציין קובץ המכיל ארגומנטים של סקריפט.
• —script-help <שם קובץ>|<קטגוריה>|<ספרייה>|<ביטוי>|הכל: מספק עזרה עבור סקריפטים או קטגוריות ספציפיות.
• —script-trace: מציע תובנות לגבי ביצוע סקריפט.
• —script-updatedb: עדכון מסד הנתונים של הסקריפטים.
כדי להפעיל סקריפט:
• השתמש ב: nmap –script <script_name>.
• כאשר צוין סקריפט, הוא מופעל לצד הסריקה, וניתן לכלול אפשרויות סורק. הוספת "safe=1" מבטיחה שרק סקריפטים לא פולשניים מופעלים.
סקריפטים ברירת מחדל:
• ניתן להשתמש בסקריפט ברירת מחדל עם –sC או —script=default.
קטגוריות סקריפט זמינות כוללות:
• אישור, שידור, ברירת מחדל, גילוי, פעולות, ניצול, חיצוני, מעורפל, פולשני, תוכנות זדוניות, בטוחות, גרסה ופגיעות.
כדי לחפש סקריפטים:
• nmap –script-help="http-*" -> מפרט סקריפטים המתחילים ב-"http-".
• nmap –script-help="not intrusive" -> מפרט סקריפטים למעט פולשניים.
• nmap –script-help="default or safe" -> מפרט סקריפטים המסווגים כברירת מחדל, בטוחים או שניהם.
שליטת זמן
1. קיבוץ מארחים ומקביליות:
○ Nmap מקבץ מארחים בלוקים לסריקה, כאשר גדלי קבוצות ברירת המחדל משתנים לפי מחלקת רשת.
○ התאם גדלי קבוצות עם –min-hostgroup ו–max-hostgroup ליעילות סריקה מקבילה.
○ בקרת מקביליות באופן ידני עם –min-parallelism ו–max-parallelism, אם כי ההתאמות האוטומטיות של Nmap המבוססות על ביצועי הרשת יעילות בדרך כלל.
2. זמני RTT:
○ הגדר זמני RTT (זמן נסיעה הלוך ושוב) עם –min-rtt-timeout, –max-rtt-timeout ו–initial-rtt-timeout, המשפיעים על קצב הסריקה.
3. פסקי זמן לסריקה וניסיונות חוזרים:
○ הגדר את מספר הניסיונות החוזרים עבור פורטים שאינן מגיבות באמצעות –max-retries.
○ ציין את הזמן המקסימלי המושקע בסריקה מארח באמצעות –host-timeout.
4. עיכובים ותעריפים בסריקה:
○ הכנס השהיות סריקה בין בדיקות עם –scan-delay ו–max-scan-delay, שימושי להתחמקות מזיהוי על ידי הפצת תעבורת סריקה.
○ הגבל או הגדל פקטות לשנייה עם –min-rate ו–max-rate, ניהול עוצמת הסריקה ומהירותה.
5. אגרסיביות כללית של סריקה (אפשרות-T):
○ התאם את האגרסיביות הכוללת של הסריקה עם אפשרות -T, החל מפרנואידית (0) ועד מטורפת (5):
§ -T0 עד -T2: איטי, מזעור השפעת הרשת וסיכון הזיהוי.
§ -T3: הגדרת ברירת מחדל, המציעה גישה מאוזנת.
§ -T4 ו-T5: אגרסיבי, מתעדף מהירות אך מגדיל את הסבירות לזיהוי.
טכניקות חומת אש/IDS התחמקות
1. פיצול:
○ השתמש באפשרויות -f ו–mtu כדי לפצל פקטות, מה שהופך את זה למאתגר יותר עבור IDS להרכיב ולנתח אותן מחדש. גודל ה-MTU חייב להיות כפולה של 8.
2. פתיונות:
○ השתמש באפשרות -D כדי לשלב פקטות מכתובות IP מטעות עם פקטות הסורק, ולטשטש את המקור האמיתי. פתיונות אקראיים עם RND:<number> יכולים לשפר עוד יותר את ההתגנבות.
3. זיוף מקור IP:
○ ציין מקור IP אחר עם -S כדי להטעות יעדים לגבי מיקום הסורק.
4. בחירת ממשק:
○ השתמש ב-e כדי לבחור ממשק רשת ספציפי לסריקה, שימושי עבור מכונות עם מספר כרטיסי רשת.
5. זיוף פורטי מקור:
○ –source-port ו-g מגדירים פורטי מקור ספציפית לסריקת פקטות, תוך ניצול כללי חומת אש המאפשרים תעבורה מפורטים מסוימות.
6. עומסי נתונים:
○ כלול נתונים מותאמים אישית או אקראיים במטעני פקטות עם –data, –data-string ו–data-length, העלול לעקוף בדיקת מטען פשוטה.
7. אפשרויות IP:
○ התאם אישית כותרות IP עבור טכניקות התחמקות מתקדמות עם –ip-options.
8. מעקב אחר פקטות:
השתמש ב–packet-trace עבור מעקב וניתוח פקטות.
בקרת זמן ריצה
בזמן ש-Nmap פועל, ניתן לשנות אפשרויות:
1. מילוליות וניפוי באגים:
○ הגדל או הקטנת רמת מילוליות עם v/V.
○ באופן דומה, התאם את רמת ניפוי הבאגים באמצעות d/D.
2. מעקב אחר פקטות:
○ הפעל/כיבוי של מעקב אחר פקטות עם p/P.
3. עזרה באינטראקציה בזמן ריצה:
○ הדפס מסך עזרה של אינטראקציה בזמן ריצה על ידי הזנת ?.
סקריפט Vulscan
• תיאור:
○ Vulscan הוא סקריפט Nmap המשתמש במסד נתונים לא מקוון כדי להעריך גרסאות שירות, ומחזיר נקודות תורפה פוטנציאליות.
• שלבי התקנה:
1. הורד את חבילת Vulscan מ- http://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz.
2. חלץ את תוכן הקובץ שהורדת באמצעות הפקודה: tar -czvf nmap_nse_vulscan-2.0.tar.gz vulscan/.
3. העבר את ספריית ה-vulscan לתיקיית Nmap scripts עם הרשאות ניהול באמצעות: sudo cp -r vulscan/ /usr/share/nmap/scripts/.