
אבטחת מערכות בקרה תעשייתיות וסביבות OT מפני התקפות מרחוק היא קריטית מתמיד, במיוחד עם פגיעויות כמו CVE-2017-14469 וכעת CVE-2021-22659 המכוונות לבקר Micrologix 1400 של Rockwell Automation, הנפוץ בו. סטודנטים מה- OPSWAT תוכנית המלגות בדקה את הפגיעות הזו בסביבה מבוקרת, והדגישה את הצורך באבטחה.
בבלוג זה, נחקור כיצד הסטודנטים הדגימו כיצד תוקפים יכלו לנצל את הפגיעות כדי לגרום לקריסת מערכות וכיצד היעדר אימות קלט נאות יכול לשמש לשיבוש פעולות בקר בקרה (PLC).
מהו בקר מתכנת (PLC)? הסבר על Rockwell Automation Micrologix 1400
בקר לוגי ניתנת לתכנות (PLC) הוא מחשב תעשייתי שנועד לאוטומציה של תהליכים על ידי שליטה במכונות ובפעולות תעשייתיות אחרות. הוא פועל בסביבות קשות ומתוכנת לבצע משימות ספציפיות המבוססות על קלט חיישן. בקר MicroLogix 1400 של Rockwell Automation הוא בקר PLC קומפקטי ומודולרי המשמש בדרך כלל ביישומים קטנים ובינוניים. הוא ידוע בזכות יעילות העלות והגמישות שלו, תומך בפרוטוקולי תקשורת שונים ומציע אפשרויות קלט/פלט דיגיטליות ואנלוגיות לממשק עם התקנים.

תכנות מתבצע בדרך כלל באמצעות תוכנת Rockwell Automation באמצעות לוגיקת סולם, המאפשרת למשתמשים ליצור רצפי בקרה. ה-MicroLogix 1400 הוא רב-תכליתי, מתאים למשימות כגון בקרת מכונות ואוטומציה של תהליכים. המודולריות שלו מאפשרת למשתמשים להרחיב ולהתאים אישית את המערכת בהתבסס על דרישות יישום ספציפיות.
מבוא ל-CVE-2021-22659
בינואר 2021, Rockwell Automation קיבלה דיווח מפרול סינדהוואד וד"ר פארוק קאזי מ-COE-CNDS במכון הטכנולוגי וירמטה ג'יג'אבאי (VJTI), הודו, בנוגע לפגיעות בבקר MicroLogix™ 1400. הם זיהו פרצת אבטחה בגרסה 21.6 ומוכנה יותר המאפשרת לתוקף מרוחק לא מאומת לשלוח חבילת Modbus בעלת מבנה מיוחד, המאפשרת לתוקף לאחזר או לשנות ערכים אקראיים באוגר. אם ינוצל בהצלחה, הדבר עלול להוביל להצפה של מאגר (buffer overflow), וכתוצאה מכך למצב מניעת שירות. נורית ה-FAULT תהבהב באדום והתקשורת עלולה ללכת לאיבוד. התאוששות ממצב מניעת שירות דורשת ניקוי של התקלה על ידי המשתמש.
NVD העריך את פגיעות האבטחה הזו כחומרה גבוהה .

שלבי התקפה

תוקף מרוחק ולא מאומת עם גישה לרשת ל-MicroLogix 1400 PLC הפגיע עלול לשלוח חבילה שנוצרה במיוחד כדי לשנות את הערכים ברישום. מצב זה עלול לגרום למצב של מניעת שירות עבור ההתקן, וכתוצאה מכך לפגיעות במערכת ולזמן השבתה. אירוע כזה עלול לשבש באופן משמעותי את פעולות הייצור ופעילויות עסקיות אחרות של הארגון.
פרוטוקול מודבוס
פרוטוקול Modbus, שפותח על ידי מודיקון בשנת 1979, הוא מבנה העברת הודעות שנועד ליצור תקשורת לקוח-שרת בין מכשירים חכמים. במקור, הוא תוכנן לשימוש עם בקרי בקרה של מודיקון, ומאז הפך לפרוטוקול תקשורת סטנדרטי לתקשורת בין מכשירים אלקטרוניים תעשייתיים.
ישנם פרוטוקולי Modbus עבור Ethernet (Modbus TCP) וקווים טוריים (Modbus RTU ו-Modbus ASCII). Modbus RTU (יחידת מסוף מרוחקת) משדר נתונים ישירות בצורה בינארית באמצעות תקשורת טורית, ו- Modbus TCP (פרוטוקול בקרת שידור) מטמיע נתוני פרוטוקול Modbus בחבילות TCP לצורך שידור ברשתות TCP/IP.

מבנה הודעת מודבוס
Modbus הוא פרוטוקול של בקשה-תגובה שבו הלקוח משדר בקשה להתקן Modbus, והמכשיר מספק לאחר מכן תגובה.

הודעת Modbus הנשלחת מסובב ראשי לסבב משני מכילה את כתובת הסבב המשני, את ה"פקודה" (למשל "קריאה אוגר" או "כתיבה אוגר"), את הנתונים וסכום בדיקה (LRC או CRC).

כתובות נתונים משמשות בהודעות שאילתה של Modbus בעת קריאה או שינוי נתונים. Modbus מגדיר ארבעה סוגי נתונים: סליל, סטטוס קלט, אוגר קלט ואוגר החזקה. שניים מהם מאחסנים ערכי הפעלה-כיבוי (ביט אחד) הנקראים סלילים וכניסות בדידות, ושניים מאחסנים ערכים מספריים כמילים בנות 16 סיביות הנקראות אוגרים. כל אחד מהם הוא לקריאה בלבד או לקריאה/כתיבה.
| סוג נתונים | גִישָׁה | תֵאוּר |
| סְלִיל | קריאה-כתיבה | יציאות של ביט בודד. |
| קלט דיסקרטי | לקריאה בלבד | כניסות של ביט בודד. |
| אוגר קלט | לקריאה בלבד | אוגרי קלט של 16 סיביות. |
| רישום אחזקות | קריאה-כתיבה | אוגרי פלט של 16 סיביות. |
ישנן שלוש קטגוריות של קודי פונקציית Modbus:
- קודי פונקציות ציבוריות - מ-1 עד 127 למעט קודים המוגדרים על ידי המשתמש.
- קודי פונקציה מוגדרים על ידי המשתמש - בשני טווחים מ-65 עד 72 ומ-100 עד 110.
- קודי פונקציה שמורים - משמשים חברות מסוימות עבור מוצרים מדור קודם ואינם זמינים לשימוש ציבורי.
| סוג הפונקציה | שם הפונקציה | קוד פונקציה | ||
| גישה לנתונים | גישה לביט | כניסות פיזיות בדידות | קריאה של קלט בדיד | 2 |
| ביטים פנימיים או סלילים פיזיים | קרא סלילים כתוב סליל יחיד כתוב סלילים מרובים | 1 5 15 | ||
| גישה של 16 סיביות | אוגרי קלט פיזיים | קריאת אוגרי קלט | 4 | |
| אוגרי מסחר פנימיים או אוגרי פלט פיזיים | קרא מספר אוגרי אחזקה כתיבת רישום אחזקות יחיד כתיבת מספר אוגרי החזקה קריאה/כתיבה של אוגרים מרובים מסכת כתיבת רישום קרא תור FIFO | 3 6 16 23 22 24 | ||
| גישה לרשומת קבצים | קרא רשומת קובץ כתיבת רשומת קובץ | 20 21 | ||
| אבחון | קרא את סטטוס החריגה אבחון קבל מונה אירועים של Com קבל יומן אירועי קום מזהה עבד של דווח קרא את זיהוי המכשיר | 7 8 11 12 17 43 | ||
| אַחֵר | הובלת ממשק מקופסלה | 43 | ||
| סוג פונקציה: גישה לנתונים תת-סוג: גישת ביט קטגוריה: כניסות פיזיות בדידות שם הפונקציה: קריאת קלט בדיד קוד פונקציה: 2 |
| סוג פונקציה: גישה לנתונים תת-סוג: גישת ביט קטגוריה: ביטים פנימיים או סלילים פיזיים שם הפונקציה: קריאת סלילים קוד פונקציה: 1 |
| סוג פונקציה: גישה לנתונים תת-סוג: גישת ביט קטגוריה: ביטים פנימיים או סלילים פיזיים שם הפונקציה: כתיבה בסליל יחיד קוד פונקציה: 5 |
| סוג פונקציה: גישה לנתונים תת-סוג: גישת ביט קטגוריה: ביטים פנימיים או סלילים פיזיים שם הפונקציה: כתיבת סלילים מרובים קוד פונקציה: 15 |
| סוג פונקציה: גישה לנתונים תת-סוג: גישה של 16 סיביות קטגוריה: אוגרי קלט פיזיים שם הפונקציה: קריאת אוגרי קלט קוד פונקציה: 4 |
| סוג פונקציה: גישה לנתונים תת-סוג: גישה של 16 סיביות קטגוריה: אוגרי נתונים פנימיים או אוגרי נתונים פיזיים שם הפונקציה: קריאת אוגרי החזקה מרובים קוד פונקציה: 3 |
| סוג פונקציה: גישה לנתונים תת-סוג: גישה של 16 סיביות קטגוריה: אוגרי נתונים פנימיים או אוגרי נתונים פיזיים שם הפונקציה: כתיבת אוגר החזקה יחיד קוד פונקציה: 6 |
| סוג פונקציה: גישה לנתונים תת-סוג: גישה של 16 סיביות קטגוריה: אוגרי נתונים פנימיים או אוגרי נתונים פיזיים שם הפונקציה: כתיבת אוגרי החזקה מרובים קוד פונקציה: 16 |
| סוג פונקציה: גישה לנתונים תת-סוג: גישה של 16 סיביות קטגוריה: אוגרי נתונים פנימיים או אוגרי נתונים פיזיים שם הפונקציה: קריאה/כתיבה של אוגרים מרובים קוד פונקציה: 23 |
| סוג פונקציה: גישה לנתונים תת-סוג: גישה של 16 סיביות קטגוריה: אוגרי נתונים פנימיים או אוגרי נתונים פיזיים שם הפונקציה: אוגר כתיבת מסכה קוד פונקציה: 22 |
| סוג פונקציה: גישה לנתונים תת-סוג: גישה של 16 סיביות קטגוריה: אוגרי נתונים פנימיים או אוגרי נתונים פיזיים שם הפונקציה: קריאת תור FIFO קוד פונקציה: 24 |
| סוג פונקציה: גישה לנתונים תת-סוג: גישה לרשומות קבצים שם הפונקציה: קריאת רשומת קובץ קוד פונקציה: 20 |
| סוג פונקציה: גישה לנתונים תת-סוג: גישה לרשומות קבצים שם הפונקציה: כתיבת רשומת קובץ קוד פונקציה: 21 |
| סוג פונקציה: אבחון שם הפונקציה: סטטוס חריג קריאה קוד פונקציה: 7 |
| סוג פונקציה: אבחון שם הפונקציה: אבחון קוד פונקציה: 8 |
| סוג פונקציה: אבחון שם הפונקציה: מונה אירועי קבל קומפקטי קוד פונקציה: 11 |
| סוג פונקציה: אבחון שם הפונקציה: קבל יומן אירועי COM קוד פונקציה: 12 |
| סוג פונקציה: אבחון שם הפונקציה: מזהה עבד דוח קוד פונקציה: 17 |
| סוג פונקציה: אבחון שם הפונקציה: קריאת זיהוי התקן קוד פונקציה: 43 |
| סוג פונקציה: אחר שם הפונקציה: הובלת ממשק מקופסל קוד פונקציה: 43 |
ניצול
ניתוח פגיעויות
באמצעות ניתוח, שלנו OPSWAT חוקרים בוגרי התוכנית גילו כי במהלך תקשורת Modbus TCP, הפרוטוקול חסר אימות והצפנה עבור חבילות המועברות. בנוסף, אימות הקלט בבקר MicroLogix 1400 אינו מיושם כראוי. כתוצאה מכך, תוקף מרוחק יכול לנתח את חבילת Modbus TCP באמצעות חבילת רחרוח ולשלוח כל בקשה לבקר ללא אימות דרך פרוטוקול Modbus TCP. עקב היעדר אימות קלט במכשיר ה-MicroLogix 1400, תוקף מרוחק שאומת עלול לשלוח מספר רב של חבילות עם ערכים אקראיים, דבר שעלול לגרום לקריסת הבקר.
החלפת רישום
בתחילה, ניסינו ללכוד חבילות Modbus TCP המשמשות לקריאה או כתיבה של אוגרים בבקר PLC. לשם כך, בדקנו חבילות שנוצרו על ידי יישום בשם Modbus Poll, המאפשר קריאה וכתיבה של אוגרים בבקר MicroLogix 1400.

באמצעות Wireshark כדי ללכוד את כל החבילות מממשק הרשת, נוכל לזהות את חבילת Modbus TCP לכתיבת אוגר יחיד:


בהתבסס על מבנה החבילות שנאספו, פיתחנו סקריפט פייתון פשוט לשליחת חבילות TCP המבקשות כתיבת אוגר במערכת ה-PLC המכוונת. בתרחיש זה, כתובת ה-IP של ה-PLC היא 192.168.93.89 .

רישום ה-PLC שונה לאחר קבלת חבילה זדונית ולא מאומתת שלנו.


ב-Micro Logix 1400, רוב הוראות המתמטיקה משתמשות בשלושה פרמטרים: מקור A, מקור B ויעד
הערכים עבור מקור א' ומקור ב' יכולים להגיע משני אוגרים בני 16 סיביות בשם N13:3 ו-N13:4. יתר על כן, הערכים באוגרים בני 16 סיביות אלה, כגון N13:3 ו-N13:4, מוגבלים בטווח של -32,768 עד +32,767. אם הערכים של N13:3 ו-N13:4 גדולים, תוצאת הוראת ההתאמה עלולה לחרוג מהטווח המרבי של סוג הנתונים, מה שעלול לגרום לקריסת ה-PLC. כתוצאה מכך, כדי לגרום לקריסה ב-PLC, יש צורך לכתוב ערכים אקראיים גדולים לכל האוגרים, כולל N13:3 ו-N13:4. כדי להשיג זאת, שינינו את סקריפט הפייתון שלנו באופן הבא:

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

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

לאחר קבלת בקשות חבילות זדוניות אלו, ערכי כל האוגרים, כולל N13:3 ו-N13:4, נקבעים ל-16,990. תוצאת פעולת ה-ADD באוגרים N13:3 ו-N13:4 חורגת מהטווח התקף של אוגר בן 16 סיביות. בעיה זו גורמת לגלישה שלמה, מה שמוביל לתקלה ולהפרעה לפעולת ה-PLC, כפי שמצוין על ידי המצב FAULTED.

שֶׁלָנוּ OPSWAT סטודנטים לתואר שני הצליחו להרוס את ה-PLC MicroLogix 1400 על ידי ניצול CVE-2021-22659.
תיקון

לנוכח פגיעויות כמו CVE-2021-22659, תיקון מקיף הוא קריטי להגנה על מערכות OT ומערכות סייבר-פיזיות. להלן כמה מהאסטרטגיות המרכזיות בהן ניתן להשתמש כדי למנוע את התפשטות ההתקפות:
- זיהוי CVEs ידועים: סריקה קבועה של רשתות אחר פגיעויות כמו CVE-2021-22659.
- ניטור התנהגויות חריגות: סימון עליות חריגות בתדירות התקשורת עם בקר ה-PLC Micrologix 1400, דבר שיכול להצביע על מתקפה מתמשכת של העברת נתונים לא מורשית.
- זיהוי חיבורי התקנים חדשים: המערכת אמורה לזהות מתי התקן חדש מתחבר ל-PLC.
- פילוח רשת: בידוד מכשירים מושפעים יכול לסייע במניעת התפשטות רוחבית של התקפות, ובכך למזער את ההשפעה.
OPSWAT של MetaDefender OT Security עונה על צרכים אלה על ידי זיהוי CVEs, ניטור רציף של הרשת לאיתור התנהגויות חריגות וזיהוי חיבורים לא מורשים. באמצעות בינה מלאכותית, היא לומדת דפוסי תנועה רגילים, קובעת התנהגות בסיסית ומיישמת מדיניות להתרעה על אנומליות. זה מאפשר תגובות מיידיות ומושכלות לאיומים פוטנציאליים.
במקרה של מתקפה המנצלת את CVE-2021-22659, MetaDefender OT Security משתלב עם ה- MetaDefender Industrial Firewall לחסום תקשורת חשודה על סמך כללים קבועים. חומת האש משתמשת בבינה מלאכותית כדי ללמוד דפוסי תנועה קבועים ולאכוף מדיניות למניעת חיבורים לא מורשים.
על ידי שילוב יכולות הזיהוי, ההתרעה ופילוח הרשת הללו, MetaDefender OT Security הופך למנגנון ההגנה האידיאלי עבור סביבות תעשייתיות, ומפחית משמעותית את הסיכון וההשפעה של איומי סייבר בסביבות טכנולוגיה תפעוליות.
גלה כיצד OPSWAT פלטפורמת אבטחת הסייבר המעמיקה של יכולה לשפר ולפתח את היציבה שלך. דבר עם מומחה עוד היום לקבלת הדגמה בחינם.
