איך להשתמש ב־Netcat ולהעלות את מיומנויות הרשתות שלך!

ניהול רשתות וניטור של זרימת נתונים בין מערכות נשמע כמשימה מאיימת. הכל יהיה פשוט, אלא אם כן אתה יודע איך להשתמש ב-Netcat.

Netcat הוא כלי שורת פקודה שאפשר להשתמש בו למטרות שונות, כמו סריקת פורטים, העברת קבצים ויצירת שרת אינטרנט מינימלי לבדיקת פעילות חיבור. במדריך הזה, תלמד להוריד תועלת מ-Netcat כשתעבור על חלק מהמקרים הנפוצים ביותר לשימוש ב-Netcat.

מוכן? המשך לקרוא והעלה את כישורי הרשת שלך!

דרישות מוקדמות

מדובר בהדגמה מעשית. אם ברצונך לעקוב, הקפד לוודא שיש לך את הבא.

  • שני מחשבי Linux: האחד (ubuntu1) פועל כמארח קבלה, והשני (ubuntu2) פועל כמארח שולח – המדריך משתמש ב-Ubuntu 20.04 לשני המחשבים.
  • Netcat ו-bzip2 מותקנים בשני המחשבים.

סריקה לפורטים פתוחים

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

אם ברצונך לבדוק אם פורט ספציפי פתוח על מכונה כלשהי ולמצוא אם יש פגיעות אבטחה, Netcat מצוין למשימה זו. כפנטסטר, עליך לדעת אילו פורטים פתוחים כדי לבצע את ההתקפה שלך. בין לבין הסיבה, סריקה לפורטים פתוחים היא צורך נפוץ.

התחביב הבסיסי לסריקת פורטים באמצעות Netcat הוא כדלקמן, היכן:

  • host – כתובת ה-IP או שם המארח שאליו אתה רוצה לסרוק.
  • startport – מספר הפורט ההתחלתי.
  • endport – מספר הפורט הסופי.
netcat options host startport-endport

הפקודה netcat יש לה כתיב נוסף של nc, שימושי לקצרת פקודות. אך במדריך זה, אנו משתמשים ב-netcat לתיעוד נכון.

התחבר למארח השולח שלך (ubuntu2) והפעל את הפקודה הבאה כדי לסרוק את הפורטים הפתוחים בין הפורטים 1-100.

במהלך המדריך זה, החלף 149.28.86.131 בכתובת ה-IP של המארח שלך.

ברוב המקרים, טווח הפורטים 1-100 מספיק. רוב השירותים משתמשים במספרי פורט ברירת מחדל הנופלים בדרך כלל בטווח זה, כמו 22 ל-SSH, 80 ל-HTTP, וכו'.

הרשימה למטה מסבירה כל אחת מהדגלים ששולטים בהתנהגות הסריקת פורטים: `

  • ` `-z` (מצבי קלט/פלט אפס) – Netcat לא תקרא או תכתוב לחיבור הרשת. אפשרות זו מאיצה את תהליך הסריקה. `
  • ` `-n` – אומר ל־Netcat לנטרל את החיפוש DNS כדי למנוע עיכובים. `
  • ` `-v` – מראה ל־Netcat את כל תהליכי הסריקה של הפורטים בפרטיות. `
netcat -z -n -v 149.28.86.131 1-100

` ניתן לראות למטה כי החיבור לפורט `22` (SSH) הצליח, אך כל שאר הפורטים נכשלו. `

How to Use Netcat : Scanning for Open Ports

` מאחר שפקודת netcat מפרטת את כל הפורטים שנסרקו, תקבל המון מידע וחלק ממנו אינך זקוק. במקרה כזה, הרץ את הפקודה למטה, מפנה את פקודת grep. פקודה זו מסננת רק את הפורטים הפתוחים עם הודעת "הצליח!" בסופם, כפי שמוצג למטה. `

netcat -z -n -v 149.28.86.131 1-100 2>&1 | grep succeeded

` למטה, ניתן לראות שהפורט 22 פתוח לחיבור SSH כפי שצפוי. `

Filtering the Successful Port Connection

` שליחת קבצים בצורה מאובטחת בין מארחים `

` בנוסף לסריקת פורטים, Netcat מאפשרת להעביר קבצים בצורה מאובטחת בין שני מכונות. Netcat משתמשת בפרוטוקול TCP להעברת קבצים, שהוא יותר אמין מ־UDP. `

` התחביר הבסיסי לשליחת קובץ באמצעות Netcat הוא כדלקמן: `

netcat options host port filename

` לשלוח קבצים מהמארח שלך למכונה אחרת: `

` 1. הרץ את הפקודה למטה כדי להתחיל להאזין בפורט 4444 במארח המקבל (ubuntu1).

הפקודה הזו אין לה מסופק, אך האפשרויות למטה משפיעות על איך שהפקודה מגדירה את פתח ההאזנה:

  • -l – מגיד ל־netcat להאזין לחיבור נכנס על פי פורט TCP המסוים. הפורט יכול להיות כל מספר שתרצה, אך וודא ששירותים אחרים אינם משתמשים בפורט המועדף עליך.
  • > - מגיד ל־netcat להפנות את כל הנתונים הנכנסים לקובץ בנתיב המסוים (ata_file).
netcat -l 4444 > ata_file

רק משתמש השורש יכול לחבר לפורטים שהם מספרים נמוכים מ־1000, כך שעליך לבחור פורט הגדול מ־1000 כמשתמש לא שורשי. אם תנסה להשתמש במספר פורט שהוא נמוך מ־1000 כמשתמש לא שורשי, תקבל את השגיאה הבאה.

Getting “Permission denied” Error When Using Port Lower Than 1000

2. בשרת השולח (ubuntu2), הרץ את פקודת האקו הבאה, שאין לה פלט אך מייצרת קובץ בשם ata_file עם התוכן "Hello from ATA".

echo "Hello from ATA" > ata_file

3. עכשיו, הרץ את פקודת ה־netcat למטה כדי לשלוח ata_file לשרת המקבל (ubuntu1). וודא שאתה משתמש באותו מספר פורט בשרת המקבל (4444) כמו בשרת השולח.

הפקודה הזו אין לה מסופק, אך האפשרות < אומרת ל־netcat לקבל את הקלט מהקובץ המסוים.

netcat 149.28.86.131 4444 < ata_file

4. לבסוף, החליף אל שרת המקבל (ubuntu1) והרץ את פקודת ה־cat למטה כדי לבדוק את תוכן ה־ata_file.

cat ata_file

תוכל לראות את ההודעה "Hello from ATA" למטה, המציינת שההעברה עבדה.

Verifying the Transfer Worked

שליחת תיקיות לשרת אחר

עד כה, שלחת קובץ יחיד בהצלחה משרת אחד אל שרת אחר. אך מה עם אם תרצה לשלוח תיקייה שלמה עם כל תתי התיקיות והקבצים שלה במקום? Netcat יכול לשלוח גם תיקיות!

נניח שיש לך ספריית גיבוי בשם apache_backup בשרת השולח (ubuntu2). עליך לדחוס תיקייה זו תחילה, לשלוח אותה ולחלץ את התיקייה בשרת המקבל (ubuntu1).

1. בשרת המקבל (ubuntu1), הרץ את הפקודה הבאה כדי ליצור תיקייה חדשה בשם apache_backup ולהעביר (cd) אליה.

mkdir apache_backup && cd apache_backup
Creating the apache_backup Directory

2. לאחר מכן, הפעל את הפקודה למעלה כדי להתחיל להאזין בפורט 4444 ולחלץ קבצים דחוסים מהשרת השולח (ubuntu2) לשרת המקבל (ubuntu1).

הפקודה אין לה פלט, אך דגלי tar xf – מקבלים את הקלט מ-Netcat (קלט סטנדרטי) ומחלצים את כל הקבצים לתיקייה הנוכחית.

netcat -l 4444 | tar xf -

3. בשרת השולח (ubuntu2), הפעל את הפקודות הבאות כדי ליצור תיקייה (apache_backup), קבצי טקסט, ולשלוח אותם לשרת המקבל (ubuntu1).

אין לפקודות אלו פלט, אך תוודא את ההעברה בשלב הבא.

# יוצר תיקיית apache_backup וקבצי טקסט בתוכה
mkdir apache_backup && cd apache_backup && touch ata{1..5}.txt
# דוחס את תיקיית העבודה ושולח אותה לשרת המקבל
tar cf - . | netcat 149.28.86.131 4444

4. לבסוף, החלף לשרת המקבל (ubuntu1), לחץ על Ctrl+C כדי להפסיק להאזין לפורט 4444, והרץ את הפקודה ls כדי לרשום את הקבצים בתוך תיקיית apache_backup.

ls

כפי שאתה רואה למטה, קבצי התיקייה apache_backup הועברו בהצלחה לתיקיית apache_backup בשרת המקבל.

Verifying Transferred Files on the Receiving Host

העברת דיסק או מחיצה שלמה לשרת אחר

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

1. הפעל את הפקודה בשרת המקבל (ubuntu1) כדי להתחיל להאזין לפורט 4444. הפקודה זו אין לה פלט, אך היא מחלצת את כל הנתונים הנכנסים (bzip2 -d |dd) אל /dev/sdb.

/dev/sdb הוא הדיסק השני שלך במכונה. אך במקרה זה, /dev/sdb הוא דיסק ריק המחובר למכונה זו לצורך המדריך.

netcat -l 4444 | bzip2 -d | dd of=/dev/sdb

2. בשרת השולח (ubuntu2), הפעל את הפקודה fdisk הבאה כדי למצוא את כל הדיסקים והמחיצות במכונה שלך.

 fdisk -l

כפי שאתה רואה למטה, /dev/vda1 הוא מחיצת השורש עבור המארח השולח במדריך זה. הפלט שלך עשוי להיות שונה לפי התצורה של המכונה שלך.

Finding All Disks and Partitions

3. הפעל את הפקודה הבאה בשרת השולח (ubuntu2), שאין לה פלט, אך היא שולחת את המחיצה /dev/vda1 לשרת המקבל (ubuntu1) דרך פורט 4444.

דחיסת ושליחת המחיצה לשרת המקבל יכולה לקחת זמן, תלוי בגודל המחיצה.

bzip2 -c /dev/vda1 | netcat 149.28.86.131 4444

4. לאחר השלמת התהליך, החלף לשרת המקבל (ubuntu1) ותראה את הפלט למטה.

אי אפשר למצוא מקום פנוי במכשיר כיוון שגיאה צפוי מאחר ו־/dev/vda1 כנראה גדול יותר מ־/dev/sdb. אבל אתה מבין את הרעיון! ניתן להשתמש ב־Netcat כדי לשלוח את כל הדיסק הקשיח או המחיצה שלך למכונה אחרת.

Viewing the Sending Disk/Partition Process

5. לבסוף, הרץ את הפקודות בשרת הקבלה (ubuntu1) כדי להרכיב את מחיצת /dev/vda1 ולרשום את כל הקבצים במחיצה.

# מחבר את מחיצת /dev/vda1
mount /dev/vda1 /media 
# מציין את כל הקבצים במחיצה
ls media

כפי שניתן לראות למטה, כל הקבצים והתיקיות מ־/dev/vda1 מועברים בהצלחה ל־/dev/sdb.

Verifying Data Integrity of the File Transfer

יצירת שרת אינטרנט מינימלי

הגדרת שרת אינטרנט מלא כמו Apache או NGINX רק כדי לאבחן בעיה בשרת אינטרנט יכולה להיות כאב ראש. במקום זאת, יש ליצור שרת אינטרנט מינימלי עם Netcat כדי לאתר במהירות בעיות בשרת האינטרנט.

כדי ליצור שרת אינטרנט מינימלי:

1. החלף למכונת הקבלה שלך והרץ את הפקודות הבאות כדי ליצור תיקייה ראשית (nc-webserver-docroot) לשרת האינטרנט ותסריט (httpresponse.sh) שיוצר את התגובה HTTP.

mkdir -pv /root/nc-webserver-docroot/
Creating a Webserver Root Directory

2. לבצע את השלב הבא, צור קובץ index.html בתיקייה /root/nc-webserver-docroot/ עם עורך הטקסט המועדף עליך ומלא את הקובץ בקוד שלמטה. קובץ HTML זה מכיל את התוכן ששרת האינטרנט של Netcat ישרת.

<!doctype html>

<html lang="en">

<head>
	<title>NETCAT Testing network connectivity </title>
</head>

<body>
	<h1>NETCAT Test</h1>
	<p>Connection Successful! Your networking skills are awesome!</p>
</body>

</html>

3. צור קובץ תסריט בשם httpresponse.sh בתיקייה /root/nc-webserver-docroot/ ומלא בקוד שלמטה.

סקריפט ה-Shell הזה מחזיר את תוכן קובץ /root/nc-webserver-docroot/index.html כתגובת HTTP לכל לקוח ששולח בקשה לשרת האינטרנט של Netcat שלך.

#!/bin/bash
printf 'HTTP/1.1 200 OK\n\n%s' "$(cat /root/nc-webserver-docroot/index.html)"

4. כעת, הפעל את פקודת ה-chmod למטה, שאין להצגת פלט אך הופכת את קובץ ה-httpresponse.sh לביצועי (+x).

chmod +x /root/nc-webserver-docroot/httpresponse.sh

5. הפעל את פקודת ה-ncat למטה כדי להתחיל את שרת האינטרנט של Netcat בפורט 7777.

ודא שאתה מחליף את הפורט 7777 במספר הפורט שבחרת, שלא יושם על ידי שירות אחר במערכת שלך.

האפשרויות הבאות משפיעות על התנהגות שרת האינטרנט של Netcat:

  • -l – אומר ל-Ncat להאזין לחיבור נכנס.
  • -v – מאפשר מצב מפורט כדי להציג את כל בקשות ה-HTTP הנכנסות בטרמינל שלך.
  • -c - מציין את הנתיב לסקריפט httpresponse.sh שיוצר את התגובות ה-HTTP.
  • -keep-open – שומר על המאזין של Ncat פתוח גם לאחר שחיבור הראשון נסגר. אפשרות זו שימושית אם אתה בודק את השרת שלך עם לקוחות מרובים.
ncat -lv 7777 -c /root/nc-webserver-docroot/httpresponse.sh --keep-open

תראה את הפלט הבא כאשר שרת האינטרנט של Netcat פועל ומאזין על פורט 7777 בכל ממשקי הרשת הזמינים.

Starting the Ncat Server

שלב 6. כעת, פתח טרמינל נוסף והרץ את הפקודה הבאה כדי לבדוק את השרת האינטרנט שלך ב- Netcat (http://localhost:7777).

curl -vvv http://localhost:7777

הפלט למטה מראה שהשרת האינטרנט של Netcat עובד כצפוי ויכול להחזיר את תוכן הקובץ/root/nc-webserver-docroot/index.html כתגובת HTTP.

Testing your Ncat server

7. לבסוף, חזור לטרמינל שבו השרת האינטרנט של Netcat פועל. תראה שהשרת האינטרנט של Netcat קיבל ועיבד את בקשת ה-HTTP מלקוח curl.

ברכות! יש לך שרת אינטרנט מינימלי של Netcat שנוצר בהצלחה לבדיקת התקשורת שלך!

Verifying the HTTP Request from the curl Client

סיכום

במדריך זה, למדת להשתמש ב- Netcat כדי לשדרג את מיומנויות הרשת והאיתור שלך. סרקת פורטים פתוחים, העברת קבצים ויצירת שרת אינטרנט מינימלי. ובנוסף, בנקודה זו, יש לך את היכולת לפתור בעיות מגוונות של רשת באמצעות יוליטי רשת עוצמתי זה!

עם הידע החדש שרכשת, למה לא לשדרג עוד יותר את היכולות שלך ברשת ולהפוך למשתמש חזק ב- אבטחת מידע?

Source:
https://adamtheautomator.com/how-to-use-netcat/