software-engineering-and-programming
ניתוח קוד מנוהל הפוך כדי לזהות דלתות אחוריות ופרסום מזדיין
Table of Contents
התפקיד הקריטי של הנדסה הפוכה באבטחת סייבר מודרנית
באבטחת סייבר, תוכנה להנדסה הפוכה היא מיומנות בסיסית לגילוי איומים נסתרים כגון דלתות אחוריות, trojans, ותוכנות זדוניות אחרות.על ידי ניתוק של בינאריות, אנליסטים אבטחה יכולים לחשוף לוגיקה זדונית שמחמקמת גילוי מסורתי מבוסס חתימה. מאמר זה מספק מחקר מעמיק של איך טכניקות הנדסה הפוכה מוחלות כדי לזהות דלתות אחוריות ותוכנות זדוניות, המפרט את הכלים המתודולוגיים, ואת הטוב ביותר לשימוש ממערכות מתוחכמות של אבטחה.
מה זה הנדסה הפוכה?
הנדסה הפוכה היא תהליך של פירוק יישום תוכנה כדי להבין את המבנה, ההתנהגות, ומטרתו ללא גישה קוד המקור שלה. בהקשר אבטחה, זה כרוך בניתוח exetables, ספריות, או קושחה כדי לזהות פרצות, פונקציונליות מוסתרת, או עומסי תשלום זדוניים.התהליך מתחיל בדרך כלל בניתוח סטטי, שבו בינארי הוא נבדק ללא ביצוע, והתקדמות לניתוח דינמי, שבו הקוד הוא פיקוח על הסביבה.
גישה כפולה זו מאפשרת לאנליסטים להרכיב הבנה מקיפה של כוונות התוכנית. הנדסה הפוכה אינה רק לניתוח זדוני; היא משמשת גם למחקר פגיעויות, בין-יכולת, וביקורת תוכנה.עם זאת, היישום הקריטי ביותר שלה נשאר זיהוי של דלתות ותוכנות משובצות ביישומים לגיטימיות.
מדוע התוקף משתמש בהנדסת מעוותת כדי להסתיר איומים
שחקנים איומים סופיסטים משתמשים בטכניקות אובססיביות כדי להסתיר קוד זדוני בתוך תוכנה תמימה לכאורה.זה יכול לכלול הצפנה, אריזה, וירטואליזציה קוד, וטריקים נגד מחיקתם.ללא הנדסה הפוכה, אלמנטים מוסתרים אלה נשארים בלתי נראים לכלים סטנדרטיים אנטי וירוס ומוניטורים ברשת.על ידי שליטה בהנדסת חשמל הפוך, צוותי אבטחה יכולים להפשיט את השכבות הללו ולחשוף את ההיגיון הזדוני.
דלתות אחוריות, במיוחד, מוכנסות לעתים קרובות למנגנוני עדכון תוכנה מהימן או רכיבי שרשרת אספקה.לדוגמה, ההתקפה של השמשWinds מעורבים קוד זדוני חבוי בתוך עדכוני תוכנה לגיטימיים. הנדסה הפוכה הייתה חיונית לזיהוי דלת אחורית והבנה של הפיקוד והשליטה שלה (C2) תקשורת כזו מדגישה את הצורך בניתוח קוד עמוק באסטרטגיות הגנה מודרניות.
מימון של ניתוח קוד עבור Malware Detection
ניתוח סטטי
ניתוח סטטי כולל בדיקת הקובץ בינארי ללא ביצועו. Analysts להשתמש disa להרכיבrs ו decompilers להמיר קוד מכונה לתוך הרכבה או פסאודוקוד אנושי.
- עיין בטבלה של יבוא/רישום כדי לזהות שיחות API יוצאות דופן (למשל, 0,FLT:1).
- חיפוש עבור מיתרים קודרים, כתובות IP, או מפתחות קריפטוגרפיים.
- זיהוי חבילות או קריפטורס באמצעות ניתוח אנטרופי.
- גרפים של שליטה ממפה כדי לאתר פונקציות חשודות או נסתרות.
ניתוח סטטי הוא מהיר ובטוח (ללא סיכון לביצוע), אבל ניתן לסכל אותו על ידי obfuscation מתקדם. משפחות קוד זדוני מודרני רבות לארוז את הקוד שלהם, הדורש ניתוח דינמי כדי לא לארוז.
ניתוח דינמי
ניתוח דינמי פועל בינארי בסביבה חולנית, כגון מכונה וירטואלית או חיקוי, כדי להתבונן בהתנהגותו.
- שינויים במערכת הקבצים, שינויים במרשם או זריקת תהליכים.
- חיבורי רשת לתחומים זדוניים ידועים או ל- IPs.
- פענוח של תשלום בזמן ריצה.
- טכניקות אנטי-אנליזה כגון בדיקת VM או בדיקות תזמון.
שילוב ניתוח סטטי ודינמי מספק תמונה מלאה יותר.לדוגמה, דלת אחורית עשויה להשתמש במפתחות ספציפיים לסביבה כדי לפענח את התצורה C2 רק כאשר היא פועלת על מכונת מטרה אמיתית.ניתוח דינמי עם נקודות שבר יכול ללכוד נתונים מקובעים.
חידוש דלתות באמצעות הנדסה הפוכה
דלתות אחוריות נועדו לעתים קרובות להשתלב פונקציונליות יישום רגילה.מהנדסי Reverse חייבים לחפש אחר חריגות עדינות המציינות גישה בלתי מורשית או יכולות נסתרות.הלהלן הם אינדיקטורים מרכזיים הנמצאים בדרך כלל בקוד הפוך:
קודים נסתרים וקוד מת
לפעמים, התוקף כולל פונקציות שלמות שאינן נקראות על ידי זרימת היישום הרגילה.פונקציות אלה עשויות להיות מופעלות על ידי קלט ספציפי, חבילת קסם, או קובץ בעל מבנה מיוחד. במהלך הנדסה הפוכה, אנליסטים לבדוק את נקודות הכניסה של הקוד ואת הקציצות הצלב כדי לזהות פלחים יתומים או בקושי מחוברים. פונקציה שמטפלת בחיבורים שקעים אבל היא מעולם לא התייחסה בלוגיקה העיקרית UI הוא דגל אדום.
קוד קידוד או מוצפן
לעתים קרובות Malware מצפין שגרות ליבה כדי להתחמק מניתוח סטטי.ה שגרת הפעוט עלולה להיות מוסתרת בתוך לולאה שפירה או תחת מצב מתואם.מהנדסים הפוכה צריכים לאתר את ההיגיון הפענוח, לעתים קרובות על ידי חיפוש דפוסים קבועים XOR, AES ההרחבה מפתח, או אלגוריתמים מותאמים אישית.לאחר פענוח, הקוד ניתן לנתח בחזרה פונקציונליות מרוחקת כגון גישה מרחוק או חדירה.
תקשורת רשת בלתי חוקית Routines
(הופנה מהדף Backdoors חייב לתקשר עם שרת פיקוד ושליטה.מהנדסים verse לחפש יישום פרוטוקול מותאם אישית, כגון: DNS מנהרה או HTTP משואות עם מיתרים אקראיים של משתמשים-Agent.A לנתח את בינארי ליצירת שקע (ראה FLT:2), ניסיונות חיבור (FLT 3), או העברת נתונים (FLT:4,F:5) יכולים לחשוף את תשתית C2קוד או מוצפנת לעתים קרובות.
המונחים: bypass
טכניקה דלת אחורית קלאסית היא לאפשר גישה ללא אישורים חוקיים.במודולים, מהנדסים לאחור מחפשים סיסמאות קודים קודים קודים קודים קודים קודים קודים, או לוגיקה התעלמו מבדיקות סיסמה כאשר מצב מסוים הוא נתקל.לדוגמה, בינארי עשוי להשוות את המיתרים לשווי קסם נסתר; אם הוא מתאים, ניתוח דינמי עם הזנת מטושטש יכול לעזור לגלות ערכים אלה.
« « ⁇ ⁇ ⁇
דלתות אחוריות חייבות לשרוד מחדש את ה-Reverse Engineering, לחשוף את המפתחות של הרישום, משימות מתוכננות או מתקני שירות. Analysts לבחון את הקוד שכותב למיקומים של סטארט-אפ או להתקין את נהגי הקרנל.נוכחות הקוד שיוצר שירות בשם כדי דומה לתהליך לגיטימי (למשל, FLT:6) הוא אינדיקטור חזק להבנת אסטרטגיות אלה ממשיך עוזרות במילוי מלא.
זיהוי Malware באמצעות Code Analysis
Malware מגיע בצורות רבות: וירוסים, תולעים, כופר, תוכנות ריגול וטרואנסים.למרות מטרות שונות, הם חולקים מאפיינים משותפים כי מהנדסים לאחור יכולים לזהות.
שינוי קבצים חשוד
Malware לעתים קרובות משנה קבצים קיימים או יוצר חדשים כדי להוריד עומסים נוספים.מהנדסי Reverse לחפש פעולות כתיבה קבצים (FLT 7,FLT:8) ולבדוק את התוכן שנכתב.לדוגמה, trojan עשוי להוריד ולכתוב executable לתיקיית הסטארט-אפ.
מערכת בלתי צפויה Calls and Privilege Escalation
לעיתים קרובות משתמשים במערכת נמוכה של מערכות שיחות כדי לתקשר עם הקרנל או לעקוף את הבקרות הביטחוניות.שיחות כמו LT:9 עבור הזרקת קוד, FLT:10 עבור הקצאת זיכרון בתהליך מרוחק, או (FLT:11 עבור מניפולציה הרישום הם חשודים. Reverse מהנדסים לעקוב אחר שיחות אלה כדי להבין את ההשפעה של קוד זדוני פריים, כגון ניצול של פרצות ידוע או LTHS, הם גם הם 12.
טכניקות אנטי-אנליזה
קוד זדוני מתקדם כולל קוד שמנסה לזהות ולהתרחק מסביבות ניתוח.זה יכול לכלול:
- (ב) עיין ב[[1924]], [[1924]]
- איסוף מכונות וירטואליות על ידי בדיקת מזהה חומרה או כתובות MAC.
- התקפות טיים: אם הקוד פועל מהר מדי (בתיבת חול עם צעד אחד), הוא מתנהג בצורה שפירית.
- בדיקות אינטגרטיביות: Malware קובע בדיקות של קוד משלה כדי לזהות שינויים על ידי אנליסטים.
מהנדסים verse חייבים לזהות ולנטרול בדיקות אלה, לעתים קרובות על ידי תיקון בינארי או באמצעות חיקויים מתקדמים המחקים חומרה אמיתית.
הוצאה קוד דינמי
משפחות קוד זדוני רבות מבססות קוד בריצה ממשאבים מוצפנים או משותקות מעל הרשת.מהנדסי Reverse מנתחים פונקציות כמו FLT:15, FLT:16 ו-FLT:17 כדי לחשוף את תהליך ההזרקה או טעינה קוד.
כלי המסחר להנדסה הפוכה
הנדסה הפוכה יעילה דורשת ערכת כלים חזקה, בעוד הבחירה של כלים תלויה בפלטפורמת היעד וזרימת העבודה המועדפת, להלן סטנדרטים בתעשייה:
מפיצים ו Decompilers
- (בשיתוף:0)IDA ProveFLT:1 (עם Hex-Rays decompiler) - כלי חזק אך יקר שמייצר פסאודוקוד באיכות גבוהה ותומכת באדריכלות רבות.
- (ב) [ה]ב"ה]: [ה] [ה], [ה], [ה], [ה], [ה]], [ה], [ה]]]]"[ה]"[ה]"[ה],"[ה],"ה'[דרוש מקור], [ה'], [ה'[ה']']'[ה'[ה'[ה']']']'[ה']'[ה'[ה']']'[ה'[ה'[ה'[ה'[ה'[ה'[ה']']'[ה']']'[ה']']']']'[ה']']'[ה'[ה'[ה']']']']']']'[ה'[ה']']'[ה'[ה'[ה']']']'[ה'[ה']']'[ה'[ה'[ה']']'[ה'[ה']'[ה'[ה'[ה'[ה'[
- (ב) נינג'ה בנינג'ה בנינג'ה (FLT) 1 - אלטרנטיבה מודרנית, תסריטית עם דגש על יכולת וייצוג ביניים.
Debuggers
- (FLT:0)x64dbiggFLT:1 - קוד פתוח פופולרי עבור Windows בינארי, מצוין לניתוח דינמי ותיקון.
- (ב) ,0) ,OllyDbiggFLT:1 - עבריין מבוגר אך עדיין שימושי עבור יישומים של 32 סיביות.
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
ניתוח Utilities
- (ב) ,0)-[[1924]]-[[1924]]]], [[1924]]]], [[1924]]]]]] ו[[1924]], [[1924]]]]
- (ב) [[1924]]]]]] [[1924]]]]]] [[1924]]]]]]]]]] [[1924]]]]]]]]]]]]]] [[1924]]]]]]]]]]]]]]]]
- (FLT:0)Process Monitor (ProcMon)cioFLT:1) - מערכת קבצים, רישום ופעילות תהליך בזמן אמת.
- (ב) [13] ויקרא ט"ד): "עבור ניתוח תעבורה ברשת, חיוני להבנת תקשורת C2.
שילוב הכלים האלה מאפשר לאנליסטים לבצע ניתוח סטטי ודינמי מקיף.לדוגמה, באמצעות Ghidra כדי לנתק בינארי ולאחר מכן לבדוק את תפקודו עם x64dbg תחת ביצוע מבוקר הוא זרימת עבודה משותפת.
טכניקות הנדסה מתקדמות
סליחות ו-Unpacking
רבים קוד זדוני בינאריים ארוזים או obfuscated. Unpacking כרוך בביצוע בינארי ב debugger עד נקודת הכניסה המקורית (OEP) הוא הגיע, ולאחר מכן לזרוק את הקוד המקודש.כלי כמו FLT 18 או FLT:19 יכול להיות חלק אוטומטי של תהליך זה. עבור קוד וירטואלי, אנליסטים עשויים צריך לעקוב אחר המתורגמן לשחזר את ההיגיון המקורי.
הוצאה להורג סמלית ו- Taint Analysis
ביצוע סמלי חוקר את כל הדרכים האפשריות בתוכנית על ידי טיפול קלטות כמשתנה סמלי.כלי כמו FLT:20 (הנבנה על פייתון) יכול למצוא באופן אוטומטי תנאים נסתרים, כגון סיסמה קסם עבור ניתוח אחורי.ת טט עוקב אחר האופן שבו נתונים זורם מקלט לשקעים רגישים (למשל, רשת, שלח, קובץ), עוזר לזהות סטיות נתונים או נקודות פיקוד.
מערכת תוכנה ומוזנחת מערכת Reverse Engineering
דלתות אחוריות אינן מוגבלות לתוכנות שולחניות; הן גם מכוונות לנתבים, למכשירים של IoT וקושחה. A Analysisשחיקה דורשות לחלץ את בינארי מזיכרון הבזק, זיהוי ארכיטקטורת ה-CPU, ושימוש בכלים כמו FLT:21 עבור צוות קבצים.מהנדסים verse מחפשים אישורים קודמו, back-wind-HTTP Endpoints, או מנגנונים לא מאובטחים.
שיטות טובות להנדסת הפוכה במבצעי אבטחה
כדי למקסם את היעילות ולצמצם את הסיכון, צוותי האבטחה צריכים לאמץ את הפעולות הבאות כאשר ניתוח קוד עבור דלתות אחוריות ותוכנות זדוניות:
הקמת סביבת ניתוח מבוקרת
תמיד לבצע ניתוח דינמי בתיבת חול מבודדת, רצוי להשתמש במכונות וירטואליות עם סימולציה רשת (למשל, INetSim או מזויפיםNet) תיקיות משותפות וצילומים משותפים כדי למנוע ניסיונות בריחה. השתמש בכלים לזיהוי מבוסס המארח כדי לפקח על האריזות לכידת מתיבת החול.
כל מסמך מוצא את עצמו באופן רציונאלי
הנדסה הפוכה מייצרת תצפיות מורכבות.שמור הערות מפורטות על קטעי קוד, API חשודים, אירועים מופעלים ודפוסי obfuscation. צור רשימות לא מאוישות ו- Flowcharts. תיעוד זה תומך בדוחות תגובה אירועים ומסייע לאנליסטים אחרים לשחזר ממצאים.
לשמור על בסיס של התנהגות קוד רגילה
הבנת מה קוד לגיטימי נראה חיוני עבור איתור אנומליות. לשמור על ספריית גרסאות נקיות של מערכת הפעלה משותפת executables וספריות צד שלישי. השתמש בסיס התנהגותי כדי לזהות סטיית.לדוגמה, עדכון תוכנה קטין לא צריך ליזום קשרים מחוץ ל- IP לא מוכר, ליצור משימות מתוכננות חדשות, או ניתוק התאמות לתוך תיקיית הסטארט-אפ.
שיתוף פעולה בין צוותים
הנדסה הפוכה לא צריך לקרות בממצאי סילו. Share עם צוותי מודיעין איומים כדי לקשור את IOCs עם קמפיינים ידועים. לעבוד עם מגיבים אירועים כדי לקדם את השלבים של מתווכים כמו MISP (פלטפורמת שיתוף מידע Malware) כדי להחליף אינדיקטורים שמקורם בהנדסה הפוכה.
לשמור על כלים ומיומנויות עד-to-Date
מחברים Malware מפתחים את הטכניקות שלהם ברציפות.השתתפות בכנסים, להשתתף באתגרים ללכוד את ה-flag (CTF) ותרגול על דגימות קוד זדוני זמין לציבור (למשל, מ-וירוס מוחלט או את Zoo) להפוך כלי הנדסה לאחור באופן קבוע כדי לתמוך בתבניות קבצים חדשות, חבילות ושיטות הזרקת תהליכים.
שיקולים משפטיים ואתיים
תוכנה הנדסית הפוכה, במיוחד כאשר נערך בהקשר אבטחה מקצועי, חייב לדבוק בהנחיות משפטיות ואתיות. הרבה תחומי שיפוט מאפשרים הנדסה הפוכה למחקר אבטחה בתנאים ספציפיים, כגון כאשר האנליסט הבעלים של התוכנה או יש אישור מפורש. הנדסה הפוכה יכול גם ליפול תחת "שימוש הוגן" או הוראות פעולה הדדית.עם זאת, אנליסטים לא צריך להפיץ את הקוד או להשתמש בו כדי לפתח מוצרים מתחרים תמיד עם ניתוח תוכנה קניינית, במיוחד אם יש צורך להוביל ניתוח של ספקים.
מסקנה
קוד הנדסה הפוכה לזהות דלתות אחוריות ותוכנות זדוניות הוא משמעת מתוחכמת המשלבת מיומנות טכנית, חשיבה אנליטית והבנה עמוקה של מערכות פנימיות מערכת.על ידי יישום שיטתי של טכניקות ניתוח סטטי ודינמיות, אנשי אבטחה יכולים לחשוף איומים נסתרים אשר אחרת למערכות והנתונים.הכלים והמתודולוגיות המתוארים כאן מספקים בסיס לבניית פרקטיקה הנדסית הפוכה חזקה יותר ויותר.