
הטקסט המלא של הדקות הראשונות בהרצאה «עצירת Netbios דרך GPO Script» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בהרצאה הזו אנחנו רוצים לנתק, לנטרל לגמרי צעקות ברשת של נט ביוס, של אלמנר, של mdns כל הפרוטוקולים האלו של שכנים ברשת שיפסיקו לצעוק אם dns לא מכיר איזשהו שם, אז הוא לא קיים, נקודה, לא צועקים ברשת אני מזכיר לכם את הבעיה, האקר יכול להזין על הכבל
אם הוא הצליח להגיע לתוך הרשת הפנימית שלי או לפרוץ לאחד המחשבים הוא מריץ את הריספונדר, מאזין על הכבל ומחכה שמישהו יצעק ב-LMLMNR, ב-NETBIOS NAMES, ב-MDNS, כל מיני פרוטוקולים של שכנים ברשת יעשה איזושהי צעקה והוא יגיד שזה הוא, כאילו הוא המחשב שחיפשנו ועכשיו גם הוא מבקש לעבור עימות מולו, כאילו
האקר אומר שזה הוא ובוא תעבור עימות כי אותי חיפשת ואם העימות הזה שאני אעשה בתמימות מול האקר הזה הוא יכול לנסות לשבור את ה-hash של הסיסמה שלי או לגלגל את הסיסמה שלי לשרתים אחרים ולעבור שם עימות בשמי בקיצור, לא רוצה שהאקר יוכל להתחזות למחשבים אצלי ברשת לא רוצה שהוא יוכל לגרום לי לעבור מולו עימות
זאת אומרת שאם אנחנו עושים פה סטארט ראן, שני סליישים, נניח פייל סרבר בלי מקף במקום עם מקף או עם שני R במקום R1, עשינו איזושהי טעות כתיב תמימה אז מה שקורה ש-DNS לא ידע מה זה השם הזה והמחשב ביצע צעקה ברשת גם ב-LLMNR הוא עשה את זה גם ב-MDNS שזה פרוטוקול של אפו לאותם שכנים ברשת וגם נט ביוס
ניימס שזה שכנים ברשת עוד מימים של אקספי לפני שהמציאו את LLMNR אני לא רוצה שהמחשבים יצעקו את זה ברשת נניח כתבתי פייל סרבר פה בצורה לא נכונה ו-DNS לא מכיר את זה מבחינתי המחשב הזה לא קיים לא צריך לצעוק ברשת מי זה מי זה הצעקות האלו ברשת הן טובות לסביבה ביתית איפה שאין שרת DNS, איפה שאין אקטיב דירקטורי.
אבל בתוך הארגון אין שום צורך בצעקות האלו, כי יש לנו שרת DNS שמנהל את כל השמות בצורה מרכזית. ואם הוא לא יודע, זה לא קיים. בקיצור, אני רוצה לנתק את זה, אבל אני רוצה לנתק את זה בצורה מרכזית דרך Group Policy ולעצור את כל הצעקות האלו.
אז בואו נפתח את הכלי של Group Policy, נלחץ פה Tools למעלה, נפתח Group Policy Management. אני אראה לכם דרך קצרה לפתוח את זה בלי כל הקליקים האלו.
לוקחים run וכותבים gpmc.msc זה ראשי תיבות של group policy management console.msc Microsoft console אוקיי אנחנו פה לוחצים כפתור ימני create gpo יוצרים gpo חדש קוראים לו disable netbios והפוליסה החדשה הזאת שחלה על כל הדומיין ועל כל המחשבים בדומיין תהיה מיושמת על ידי כל מחשב בנפרד שימו לב בכל המחשבים windows 10 11 שרתים Windows 7 וגם Windows XP כולם כולם כולם
יש להם את השירות הזה בסרוויסס בתוכנות שרצות ברקע שנקרא Group Policy Client. ה Group Policy Client הזה הוא מתחבר ל-DC שלנו ומושך את הפוליסות ומבצע אותן ובסופו של דבר כל פוליסה כזאת נכנסת לתוך רג'יסטרי.
למעשה זה כמו לנהל רג'יסטרי של מחשב מקומי אבל בצורה מרכזית. זה נקרא Manage Many as One לנהל המון מחשבים כאילו יש לך מחשב אחד כאילו אתה מנהל רג'יסטרי אחד והרג'יסטרי הזה כתוב בצורה מאוד יפה ומאוד נעימה אנחנו עושים אדיט ויש
לנו פה רג'יסטרי של לוקל קומפיוטר וכל מחשב ייקח את הפוליסה הזאת ויבצע אותו בעצמו על עצמו אבל מה הבעיה שבכל 3000 הגדרות שיש פה אין אפילו הגדרה אחת שקשורה לנט ביוס יש הגדרות שקשורות לסטארט מניו למדפסות לרשת למה שאתם רוצים אבל לנט ביוס אין פה שום הגדרה אז מה עושים כשמשהו חסר כאן?
אז אחת האפשרויות זה סקריפט להריץ פקודות משלי על המחשבים המקומיים. ויש לי פה סקריפט בסטארט-אפ של המחשב, איך שהמחשב נדלק ואיך שהמחשב מתחבא. דרך אגב, יש לי גם סקריפטים כשהיוזר נכנס פנימה, עושה לוגון ועושה לוגוף.
במקרה שלי, ההגדרה של הפרוטוקול נט ביוס הוא מתבצע ברמת מחשב כולו ולא ברמת יוזר. אז אני סוגר את החלק של היוזר, כי ההגדרות האלו פר מכונה ותופסות לכל היוזרים.
אז פה אני צריך לכתוב סטארט-אפ סקריפט ואם אנחנו נעשה דאבל קליק נראה שיש לי סקריפטים רגילים ב-CMD וב-PowerShell. אז אני צריך לכתוב סקריפט ואז להגיד לו להריץ אותו.
בואו נעשה את זה. קודם כל נראה מה המצב שלנו לפני שאנחנו מתחילים. אנחנו נכנסים פה בסטארט-ראן, כותבים ncpa.cpl, נכנסים לכרטיס רשת, בפרופרטיז שלו, ב-TCPIP, באדוונסט יש לנו ווינס שזה הדי.אן.אס הישן ובתוך הדי.אן.אס הישן יש פה צעקות ברשת זאת אומרת הוא מנסה את הדי.אן.אס הרגיל אם הוא לא עונה לו על שם מסוים הוא הולך לשרת ווינס
ששרת ווינס זה די.אן.אס הישן ואם גם שרת ווינס הישן לא עובד אז יש לו את הצעקות של נט ביוס ואני רוצה להעביר את הנט ביוס הזה למצב של דיסייבלד לכאן אבל אני לא רוצה לעשות את זה בממשל גרפי אני עושה קאנסל והמטרה שלי זה להעביר לדיסייבלד אבל דרך סקריפט, דרך פקודות ולא ידנית.
אוקיי, אז איך עושים את זה? בואו נפתח פאורשל. נתחיל מפקודה ראשונה. הפקודה הראשונה מראה לי את כל כרטיסי הרשת, והיא משתמשת ב-WMI. מה זה WMI?
Windows Management Interface. זה איזשהו תקן שניסו לייצר בשביל שיהיה ניהול אחיד גם מרחוק וגם מקומית, מעין ממשק אחיד לכל הניהול. ואנחנו רואים פה שהוא מחזיר לי שני כרטיסי רשת, אחד עם אינדקס 0, כרטיס רשת מספר 0 והשני אינדקס 1 אני רואה שבראשון הזה יש כתובות IP והוא נראה לי אמיתי
וזה איזשהו כרטיס רשת וירטואלי בלי כתובות IP לאיזשהם מטרות של דיבאג בקיצור זה לא מעניין אותי הכרטיס רשת הווירטואלי הזה אני רוצה על כרטיס רשת האמיתי זה שיש לי אותו גם ב-NCPA/CPL אם אתם זוכרים היה לי פה כרטיס רשת אחד וזה כנראה שזה הוא אז קודם כל אני צריך לשדרג את הפקודה שלי ולהוסיף לה פייפ זה זה אומר שאת כל הפלט הזה שאנחנו רואים על
המסך להעביר לפקודה הבאה לביצוע והפקודה הבאה לביצוע תהיה where object אני לוחץ tab והוא משלים לי לבד where object זה אומר שאיפה שהאובייקט ואובייקט זה כל אחד מכרטיסי הרשת האלו זה כל אחד מאלו זה אובייקט וזה מאפיינים שלו ואני צריך אובייקט שיש לו כתובות IP כי רק בכרטיס רשת האמיתי יהיו לנו כתובות
IP ואני רואה שזה באמת עובד הוא סינן לי מתוך הפלט הגדול רק את מה שאני צריך דרך אגב אפשר לכתוב במקום where object רק where כי אין עוד פקודה שמתחילה ב-where אז הוא מבין שזה where object אבל אני אוהב לכתוב הכל בצורה מפורשת ולהשלים עם tab כדי לוודא שאני כותב נכון ולא מתבלבל טוב מה אנחנו עושים עם זה אנחנו לוקחים את כל זה ומכניסים את כל הפלט הזה לתוך משתנה
נקרא לו נניח adapters דולר ושם של המשתנה ברגע שאני עושה את זה במקום לפלוט את זה על המסך הוא פולט את כל האובייקטים לתוך המשתנה adapters בוא נראה שזה באמת יושב אצלי בזיכרון אני עושה דולר אדפטרס ורואה שזה באמת יושב שם האובייקט שלי הפלט שלי אם אני עכשיו אסגור את הפאורשל ואפתח אותו מחדש כל המשתנים האלו נעלמים זאת
אומרת המשתנה הזה קיים רק בזיכרון של הפרוצס הזה של התהליך הזה של הפאורשל הנוכחי בלבד דרך אגב היינו יכולים לקבל פה כמה כרטיסי רשת אם לכמה כרטיסי רשת היו כתובות IP נניח מחשב שמחובר לכמה רשתות בו זמנית מחשב גם יכול להיות ראוטר, מחשב יכול לבצע הרבה תפקידים, להיות מחובר ל-VPNים שונים בו זמנית, זה נקרא מולטי-הומת.
בקיצור, אנחנו עושים לו לולאה שעוברת על כל האדפטרים האלו, על כל הכרטיסי הרשת האלו, ועבור כל אדפטר מבצע פעולה הזאת, set tcpip netbios 2. הקוד הזה שכתבתי פה הוא מצוין גם אם יש לנו כמה כרטיסי רשת.
בואו נראה שזה עבד לנו. ניכנס עוד פעם לכרטיס רשת הזה, נכנס ל-TCPIP, ל-Advanced, ל-Wינס, ונראה שזה עבר להיות Disabled, Disabled Net Bios.
וזה מצוין, זה בדיוק מה שרציתי. כי הממשק הגרפי קורה מאותו המקור, כי יש רק אמת אחת, מקור אחד, והמקור הזה זה רג'יסטרי.
אז גם הממשק הגרפי קורה מתוך רג'יסטרי, וגם הפקודות של WMI מיושמות לתוך רג'יסטרי, וגם Group Policy מיושם לתוך רג'יסטרי. הכל יושב בתוך רג'יסטרי, וכל התוכנות כותבות וקורות מתוך אותו מאגר הגדרות מרכזי שנקרא רג'יסטרי.
בקיצור, הסקריפט שלנו עובד, שזה מצוין. עכשיו נשאר לנו להפעיל אותו על כל המחשבים ברשת. אז אנחנו פותחים Notepad חדש וכותבים לתוכו את שתי הפקודות שלנו.
עושים קרופי, פייסט. זה שתי הפקודות שירוצו לנו על כל המחשבים.