פלקון חמקני טורף מעל שמי המזרח התיכון עם Deadglyph

פלקון חמקני טורף מעל שמי המזרח התיכון עם Deadglyph

במשך שנים, המזרח התיכון שמר על המוניטין שלו ככר פורה לאיומים מתמשכים מתקדמים (APTs). בעיצומו של ניטור שגרתי של פעילויות חשודות במערכות של לקוחות בעלי פרופיל גבוה, חלקם מבוססים באזור זה, ESET Research נתקל בדלת אחורית מאוד מתוחכמת ולא ידועה שקראנו לה Deadglyph. הפקנו את השם מחפצים שנמצאו בדלת האחורית (כגון 0xמתB001, מוצג גם ב REF _Ref111452440 h טבלתי 1
), יחד עם נוכחות של הומוגליף לִתְקוֹף. למיטב ידיעתנו, זהו הניתוח הציבורי הראשון של הדלת האחורית שלא תועדה בעבר, בשימוש על ידי קבוצה המפגינה מידה ניכרת של תחכום ומומחיות. בהתבסס על המיקוד והראיות הנוספות, אנו מייחסים ל-Deadglyph ביטחון גבוה לקבוצת Stealth Falcon APT.

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

פקודות הדלת האחורית המסורתיות אינן מיושמות בבינארי הדלת האחורית; במקום זאת, הם מתקבלים על ידו באופן דינמי משרת הפיקוד והבקרה (C&C) בצורה של מודולים נוספים. דלת אחורית זו כוללת גם מספר יכולות כדי למנוע זיהוי.

בפוסט זה בבלוג, אנו מסתכלים מקרוב על Deadglyph ומספקים ניתוח טכני של הדלת האחורית הזו, מטרתה וחלק מהרכיבים הנוספים שהשגנו. אנחנו גם מציגים את הממצאים שלנו לגבי Deadglyph ב- LABScon 2023 וְעִידָה.

נקודות מפתח בפוסט בבלוג:

  • ESET Research גילה דלת אחורית מתוחכמת עם ארכיטקטורה יוצאת דופן שקראנו לה Deadglyph.
  • הרכיבים העיקריים מוצפנים באמצעות מפתח ספציפי למכונה.
  • פקודות מסורתיות של דלת אחורית מיושמות באמצעות מודולים נוספים המתקבלים משרת C&C שלה.
  • השגנו שלושה מודולים מתוך רבים - יוצר תהליכים, קורא קבצים ואוסף מידע.
  • אנו מייחסים את Deadglyph לקבוצת Stealth Falcon.
  • בנוסף, מצאנו תוכנת הורדת קוד מעטפת קשורה; אנו מניחים שזה עשוי לשמש להתקנה של Deadglyph.

קורבן ההסתננות המנותחת היא ישות ממשלתית במזרח התיכון שנפגעה למטרות ריגול. מדגם קשור שנמצא ב-VirusTotal הועלה גם לפלטפורמת סריקת הקבצים מאזור זה, במיוחד מקטאר. האזור הממוקד מתואר במפה ב REF _Ref143614671 h תרשים 1
.

Deadglyph Figure_01
איור 1. ויקטימולוגיה של Deadglyph; הדוגמה הקשורה הועלתה ל-VirusTotal מקטאר (בצבע כהה יותר)

Stealth Falcon (ידוע גם בשם Project Raven או FruityArmor) היא קבוצת איום המקושרת לאיחוד האמירויות הערביות לפי MITER. פעיל מאז 2012, Stealth Falcon ידוע כמכוון לפעילים פוליטיים, עיתונאים ומתנגדי משטר במזרח התיכון. זה התגלה לראשונה ותואר על ידי מעבדת אזרח, שפרסם א אנליזה של קמפיין של התקפות תוכנות ריגול ב-2016.

בינואר 2019, רויטרס פרסמה הודעה דו"ח תחקיר על Project Raven, יוזמה המעסיקה לכאורה פעילי NSA לשעבר ומכוונת לאותם סוגי מטרות כמו Stealth Falcon. בהתבסס על שני דיווחים אלה המתייחסים לאותן מטרות ופיגועים, אמנסטי אינטרנשיונל סיכם (מוצג ב REF _Ref144978712 h תרשים 2
) ש-Stealth Falcon ו-Project Raven הם למעשה אותה קבוצה.

Deadglyph איור 2
איור 2. קלאודיו גוארניירי חיבר את Stealth Falcon עם Project Raven

בספטמבר 2019, אנחנו מחקר שפורסם על דלת אחורית, המיוחסת ל-Stealth Falcon, שהשתמשה בטכניקה יוצאת דופן, שירות העברה חכמה ברקע, לתקשורת C&C. כעת אנו חושפים את התוצאה של הניתוח המעמיק שלנו של מה היא ככל הנראה התוספת החדשה ביותר למערכת כלי הריגול של Stealth Falcon.

דלת אחורית Deadglyph

שרשרת הטעינה של Deadglyph מורכבת ממספר רכיבים, כפי שמוצג ב REF _Ref144978760 h תרשים 3
. הרכיב הראשוני הוא טוען shellcode של הרישום, אשר טוען את shellcode מהרישום. קוד המעטפת שחולץ זה, בתורו, טוען את החלק המקורי של x64 של הדלת האחורית - ה-Executor. לאחר מכן, ה-Executor טוען את החלק NET. של הדלת האחורית - התזמורת. יש לציין שהרכיב היחיד בדיסק של המערכת כקובץ הוא הרכיב הראשוני, שהוא בצורת ספריית קישורים דינמית (DLL). שאר הרכיבים מוצפנים ומאוחסנים בתוך ערך רישום בינארי.

Deadglyph Figure_02
איור 3. Deadglyph טעינת רכיבי שרשרת

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

בשאר חלק זה, אנו מנתחים כל רכיב.

טוען מעטפת רישום

הרכיב הראשוני של Deadglyph הוא DLL זעיר עם ייצוא יחיד, בשם 1. רכיב זה נמשך שימוש מנוי לאירועים של Windows Management Instrumentation (WMI). ומשמש כמטעין מעטפת רישום. זה מבוצע באמצעות שורת הפקודה rundll32 C:WINDOWSSystem32pbrtl.dll,#1.

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

SoftwareClassesCLSID{5abc7f42-1112-5099-b082-ce8d65ba0c47}cAbRGHLg

מפתח רישום השורש הוא או hklm or Hkcu, תלוי אם התהליך הנוכחי פועל עם הרשאות גבוהות או לא. אותו היגיון ניתן למצוא ברכיבים נוספים.

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

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

ראינו התקפת הומגליפים המחקה את תאגיד מיקרוסופט ב- VERSIONINFO משאב זה ורכיבי PE אחרים. שיטה זו משתמשת בתווים ייחודיים של Unicode שנראים דומים מבחינה ויזואלית, אך במקרה זה אינם זהים, לתווים המקוריים, במיוחד אות בירה יוונית סן (U+03FA, Ϻ) ואות קירילית קטנה O (U+043E, о) ב Ϻicrоsоft Corpоרטיоn.

קוד מעטפת הרישום

מורכב משני חלקים, קוד מעטפת הרישום מורכב משגרת פענוח וגוף מוצפן. ראשית, שגרת הפענוח מסובבת כל בייט של הגוף המוצפן שמאלה באחד (ROL 0x01). לאחר מכן, השליטה מועברת לגוף המפוענח הזה. הגוף המפוענח מורכב ממטען PE וקובץ PE, שהאחרון הוא ה-Executor, המייצג את החלק המקורי של הדלת האחורית. מטעין זה אחראי על ניתוח וטעינת קובץ ה-PE המשויך.

הוצאה לפועל

ה-Executor הוא החלק המקורי של x64 של הדלת האחורית של Deadglyph, שעושה את הפעולות הבאות:

  • טוען את התצורה שלו,
  • מאתחל את זמן הריצה של .NET,
  • טוען את החלק המוטבע .NET של הדלת האחורית (ה- Orchestrator), ו
  • משמש כספרייה עבור התזמורת.

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

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

{HKCU|HKLM}SoftwareClassesCLSID{ }(בְּרִירַת מֶחדָל)

הוא GUID שנוצר, והוא ייחודי לכל קורבן.

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

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

תזמורת

כתוב ב-.NET, התזמורטור הוא המרכיב העיקרי בדלת האחורית של Deadglyph. התפקיד העיקרי של רכיב זה כרוך ביצירת תקשורת עם שרת C&C וביצוע פקודות, לרוב באמצעות תפקיד המתווך של ה-Executor. בניגוד לרכיבים הקודמים, התזמורטור מעורפל, תוך שימוש ב-.NET Reactor. באופן פנימי, הדלת האחורית מכונה סוכן, שהוא שם נפוץ לחלק הלקוח במסגרות שונות שלאחר הניצול.

אתחול

התזמורטור טוען תחילה את התצורה שלו ושני מודולים משובצים, כל אחד מלווה בסט תצורות משלו, ממשאבים. משאבים אלה הם לְהוֹצִיא אֲוִיר דחוס ו AES מוצפן. הפניה אליהם מתבצעת על ידי מזהה ש-SHA-1 מגובב לשם משאב. סקירה כללית של משאבים אלה מסופקת ב REF _Ref111452440 h טבלתי 1
.

טבלה 1. משאבי תזמורת

 

שם המשאב

מזהה (עשרוני)

מזהה (משקס)

תיאור

43ed9a3ad74ed7ab74c345a876b6be19039d4c8c

2570286865

0x99337711

תצורת תזמורת.

3a215912708eab6f56af953d748fbfc38e3bb468

3740250113

0xDEEFB001

מודול רשת.

42fb165bc9cf614996027a9fcb261d65fd513527

3740250369

0xDEEFB101

תצורת מודול רשת.

e204cdcf96d9f94f9c19dbe385e635d00caaf49d

3735924737

0xDEADB001

מודול טיימר.

abd2db754795272c21407efd5080c8a705a7d151

3735924993

0xDEADB101

תצורת מודול טיימר.

התצורה של Orchestrator והמודולים המוטבעים מאוחסנת בפורמט XML. דוגמה לתצורת Orchestrator מוצגת ב REF _Ref111452611 h
תרשים 4
.

Deadglyph Figure_04
איור 4. תצורת תזמורת

התיאור של ערכי תצורת Orchestrator מוצג ב REF _Ref111452782 h טבלתי 2
.

טבלה 2. ערכי תצורת תזמורת

מפתח

תיאור

k


מפתח AES המשמש לתצורות מודול מתמשכות.

a


שם שיטת האתחול של מודול רשת.

b


דגל לא ידוע הקשור למודול רשת.

c


שם שיטת האתחול של מודול טיימר.

d


דגל המאפשר שימוש במפתח AES ספציפי למכונה (מערכת UUID) עבור משאבים.

p


מזהה משאב מודול רשת.

t


מזהה משאב מודול טיימר.

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

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

אף אחת מהרשימות לא הוגדרה במופע המנותח, כך שאיננו יודעים אילו תהליכים עשויים להיבדק בדרך כלל; אנו מאמינים שכנראה נועד להתחמק מכלי ניתוח שעלולים לזהות פעילות חשודה ולהוביל לגילוי הדלת האחורית.

תקשורת

התזמורטור משתמש בשני מודולים משובצים לתקשורת C&C - טיימר ורשת. כמו התזמורת, מודולים אלה מעורפלים עם .NET Reactor. התצורה של שני המודולים מסופקת על ידי התזמורת. בתוך התזמורת, כלולה תצורה מוגדרת מראש עבור המודולים; באופן אופציונלי, ה-Orchestertor יכול גם לטעון גרסת תצורה מעודכנת מהרישום:

{HKCU|HKLM}SoftwareClassesCLSID{ }

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

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

מודול טיימר

מודול קטן זה מבצע את ההתקשרות חזרה שצוינה במרווח שניתן להגדרה. הוא משמש את התזמורת בשילוב עם מודול הרשת כדי לתקשר עם שרת C&C מעת לעת. כדי למנוע יצירת דפוסים הניתנים לזיהוי ביומני רשת, מרווח הביצוע כפוף לאקראי, בהתבסס על אחוז שצוין בתצורה. במקרה המנותח, המרווח נקבע לחמש דקות, עם וריאציה של ±20% עבור אקראיות.

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

מודול רשת

מודול הרשת מיישם תקשורת עם שרתי C&C שצוינו בתצורתו. זה יכול לשלוח נתונים לשרת C&C באמצעות בקשות HTTP(S) POST. יש לציין שהוא מציע מספר מנגנונים לרכישת פרטי תצורת פרוקסי. תכונה זו מציעה התמקדות פוטנציאלית בסביבות שבהן גישה ישירה לאינטרנט אינה זמינה.

דוגמה של תצורה מפוענחת (ומייפה) מוצגת ב REF _Ref144978805 h תרשים 5
.

Deadglyph Figure_06
איור 5. תצורת מודול הרשת

ערכי תצורה מכילים פרטים הקשורים לתקשורת ברשת - כתובות C&C, HTTP User-Agent, ולחלופין תצורת proxy.

בעת תקשורת עם שרת C&C, נעשה שימוש בפרוטוקול בינארי מותאם אישית עם תוכן מוצפן מתחת ל-HTTPS.

פקודות

התזמורת מקבל פקודות משרת C&C בצורה של משימות, אשר עומדות בתור לביצוע. ישנם שלושה סוגים של משימות מעובדות:

  • משימות תזמורת,
  • משימות מבצע, ו
  • העלאת משימות.

שני הסוגים הראשונים מתקבלים משרת C&C והשלישי נוצר באופן פנימי כדי להעלות פלט של פקודות ושגיאות.

משימות תזמורת

משימות תזמורת מציעות את היכולת לנהל את התצורה של מודולי הרשת והטיימר, וגם לבטל משימות ממתינות. הסקירה הכללית של משימות התזמורת מוצגת ב REF _Ref111101783 h טבלתי 3
.

טבלה 3. משימות תזמורת

סוּג

תיאור

0x80


הגדר תצורה של מודולי רשת וטיימר.

0x81


קבל תצורה של מודולי רשת וטיימר.

0x82


בטל משימה.

0x83


בטל את כל המשימות.

משימות מבצע

משימות מבצעים מציעות את היכולת לנהל את הדלת האחורית ולבצע מודולים נוספים. ראוי לציין שהפונקציונליות המסורתית של הדלת האחורית אינה קיימת מטבעה בתוך הבינארי עצמו. במקום זאת, פונקציות אלו מתקבלות משרת C&C בצורה של קבצי PE או shellcode. היקף הפוטנציאל המלא של הדלת האחורית נותר לא ידוע ללא המודולים הנוספים הללו, אשר למעשה פותחים את היכולות האמיתיות שלה. סקירה כללית של משימות מודול מוצגת ב REF _Ref117677179 h טבלתי 4
, הכולל פרטים על מעט המודולים שזוהו. באופן דומה, REF _Ref117677188 h טבלתי 5
מספק סקירה כללית של משימות ניהול הקשורות ל-Executor.

טבלה 4. משימות מבצע – מודולים

סוּג

תיאור

0x??–0x63


לא ידוע

0x64


קורא קבצים

0x65


לא ידוע

0x66


לא ידוע

0x67


לא ידוע

0x68


לא ידוע

0x69


יוצר תהליכים

0x6A


לא ידוע

0x6B


לא ידוע

0x6C


אספן מידע

0x6D


לא ידוע

0x6E


לא ידוע

טבלה 5. משימות מבצע – ניהול

סוּג

תיאור

0x6F-0x76

לא מיושם

0x77

הגדר את תצורת ה-Executor

0x78

קבל את תצורת ה-Executor

0x79-0x7C

לא מיושם

0x7D

עדכון

0x7E

להפסיק

0x7F

Uninstall

הפקודה שמגדירה את תצורת ה-Executor יכולה לשנות את:

  • רשימות תהליכים לא רצויים,
  • סף זמן של כשל בתקשורת C&C, ו
  • מגבלת זמן לביצוע מודולים נוספים.
מודולים

הצלחנו להשיג שלושה מודולים ייחודיים משרת C&C, כל אחד מתאים לסוג משימות מבצע אחר, כפי שמוצג ב- REF _Ref117677179 h טבלתי 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200650066003100310037003600370037003100370039000000
. בהתבסס על מידע זמין, אנו מעריכים שיש תשעה עד ארבעה עשר מודולים בסך הכל. מכיוון שהמודולים הם למעשה פקודות בדלת אחורית, יש להם פעולה בסיסית אחת לביצוע ולאחר מכן, אופציונלית, להחזיר את הפלט שלהם. המודולים שהשגנו הם DLLs עם ייצוא אחד ללא שם (ordinal 1), שבו הם פותרים את פונקציות ה-API הנחוצות וקוראים לפונקציה הראשית.

כאשר הם מופעלים, המודולים מסופקים עם פונקציית רזולוציית API, שיכולה לפתור ממשקי API של Windows וממשקי API מותאמים אישית של הפעלה. הפנייה לממשקי ה-API של Windows מתבצעת באמצעות hash DWORD, המחושב מהשם של ה-API וה-DLL שלו. ערכי גיבוב קטנים (<41) מטופלים במיוחד, תוך התייחסות לפונקציית ה-API של Executor. ממשק ה-API של Executor כולל 39 פונקציות נגישות למודולים. פונקציות אלו נוגעות למגוון פעולות, כולל:

  • פעולות קבצים,
  • הצפנה וגיבוב,
  • דְחִיסָה,
  • טעינת PE,
  • גישה להתחזות לאסימונים, ו
  • תוֹעֶלֶת.

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

יוצר תהליכים

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

מודול זה הוגש עם שורת הפקודה cmd.exe /c רשימת המשימות /v.

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

אספן מידע

מודול 0x6C אוסף מידע נרחב על המחשב באמצעות שאילתות WMI ומעביר אותו בחזרה ל- Orchestrator. מידע על הדברים הבאים נאסף:

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

מודול 0x64 קורא את הקובץ שצוין ומעביר את התוכן בחזרה ל- Orchestrator. לחלופין, הוא יכול למחוק את הקובץ לאחר הקריאה.

ראינו את המודול הזה בשימוש כדי לאחזר את קובץ הנתונים של הקורבן ב-Outlook

ג: משתמשים AppDataLocalMicrosoftOutlookoutlook.ost.

שרשרת עם הורדת קוד מעטפת

בתהליך חקירת Deadglyph, נתקלנו בקובץ CPL מפוקפק חתום עם תעודה שפג תוקפו וללא חתימה נגדית עם חותמת זמן, שהועלה ל-VirusTotal מקטאר. לאחר בחינה מדוקדקת יותר, התברר שקובץ CPL זה פעל כמוריד קוד מעטפת רב-שלבי, וחלק דמיון קוד מסוים עם Deadglyph. שרשרת הטעינה מוצגת ב REF _Ref143693067 h תרשים 6
.

Deadglyph Figure_03
איור 6. שרשרת טעינת Shellcode

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

If avp.exe (תהליך אבטחת נקודת הקצה של קספרסקי) פועל, %windir%system32UserAccountBroker.exe משמש. אחרת, נעשה שימוש בדפדפן ברירת המחדל. לאחר מכן, הוא יוצר את תהליך המארח במצב מושעה, מחדיר את קוד המעטפת על ידי חטיפת השרשור הראשי שלו, ומחדש את השרשור.

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

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

החלק השני של קוד המעטפת טוען קובץ PE מוטבע עם שלב שלישי וקורא לייצוא שלו עם מספר סידורי 1.

השלב השלישי, DLL, משמש כמטעין .NET ומכיל את המטען בו .rsrc סָעִיף.

כדי לטעון את המטען, זמן הריצה של .NET מאוחל. במהלך האתחול NET מבוצעות שתי טכניקות מסקרנות, שנועדו לכאורה להתחמק מ-Windows סריקת ממשק סריקה נגד תוכנות זדוניות (AMSI).:

  • מטעין .NET מחבר זמנית את GetModuleHandleW לייבא בטעון clr.dll, תוך כדי שיחה ICorRuntimeHost::Start. הקרס מתעסק בערך ההחזר כאשר GetModuleHandleW נקרא עם NULL. זה מחזיר מצביע ל-PE דמה ללא קטעים.
  • לאחר מכן הוא מתקן בעדינות את AmsiInitialize ייבוא ​​מחרוזת שם ב- .rdata קטע של הטעון clr.dll ל aMSIiליזום.

השלב הרביעי הוא הרכבת .NET, מעורפלת עם ConfuserEx, המשמשת בתור הורדת קוד מעטפת. ראשית, הוא מפענח את התצורה שלו בפורמט XML מהמשאבים שלו. גרסה מיופה של התצורה שחולצה מוצגת ב REF _Ref143695453 h תרשים 7
. ערכי התצורה מכילים פרטים הקשורים לתקשורת ברשת ולתהליכים חסומים.

Deadglyph Figure_05
איור 7. תצורת הורדת Shellcode

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

לאחר מכן, הוא שולח בקשת HTTP GET לשרת C&C כדי לאחזר קוד מעטפת כלשהו, ​​תוך שימוש בפרמטרים שצוינו בתצורה (URL, User-Agent, ואופציונלי פרוקסי). למרבה הצער, במהלך החקירה שלנו לא הצלחנו להשיג שום קוד מעטפת משרת C&C. עם זאת, אנו משערים שהתוכן שאוחזר עשוי לשמש כמתקין של Deadglyph.

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

לבסוף, הוא עושה ניסיון למחוק את עצמו לאחר מרווח של 20 שניות, תוך שימוש בפקודה הבאה, לפני סיום פעולתו ויציאה:

בחירת cmd.exe /CY /N /DY /T 20 & Del /f /q

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

סיכום

גילינו וניתחנו דלת אחורית מתוחכמת ששימשה את קבוצת Stealth Falcon שקראנו לה Deadglyph. יש לו ארכיטקטורה יוצאת דופן, ויכולות הדלת האחורית שלו מסופקות על ידי C&C שלה בצורה של מודולים נוספים. הצלחנו להשיג שלושה מהמודולים הללו, וחשפנו שבריר מהיכולות המלאות של Deadglyph.

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

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

לכל שאלה לגבי המחקר שלנו שפורסם ב-WeLiveSecurity, אנא צור איתנו קשר בכתובת threatintel@eset.com.
ESET Research מציע דוחות מודיעין פרטיים של APT והזנות נתונים. לכל שאלה לגבי שירות זה, בקר באתר ESET Threat Intelligence עמוד.

IoCs

קבצים

SHA-1

שם הקובץ

איתור

תיאור

C40F1F46D230A85F702DAA38CFA18D60481EA6C2

pbrtl.dll

Win64/Deadglyph.A

טוען Shellcode של הרישום.

740D308565E215EB9B235CC5B720142428F540DB

N / A

Win64/Deadglyph.A

Deadglyph Backdoor - מבצע.

1805568D8362A379AF09FD70D3406C6B654F189F

N / A

MSIL/Deadglyph.A

Deadglyph Backdoor - תזמורת.

9CB373B2643C2B7F93862D2682A0D2150C7AEC7E

N / A

MSIL/Deadglyph.A

מודול רשת תזמורת.

F47CB40F6C2B303308D9D705F8CAD707B9C39FA5

N / A

MSIL/Deadglyph.A

מודול טיימר תזמורת.

3D4D9C9F2A5ACEFF9E45538F5EBE723ACAF83E32

N / A

Win64/Deadglyph.A.gen

מודול יוצר תהליכים.

3D2ACCEA98DBDF95F0543B7C1E8A055020E74960

N / A

Win64/Deadglyph.A

מודול קורא קבצים.

4E3018E4FD27587BD1C566930AE24442769D16F0

N / A

Win64/Deadglyph.A

מודול אספן מידע.

7F728D490ED6EA64A7644049914A7F2A0E563969

N / A

Win64/Injector.MD

השלב הראשון של שרשרת הורדות ה- shellcode.

תעודות

מספר סידורי

00F0FB1390F5340CD2572451D95DB1D92D

טביעת אצבע

DB3614DAF58D041F96A5B916281EA0DC97AA0C29

נושא CN

RHM מוגבלת

נושא O

RHM מוגבלת

נושא ל

סנט אלבנס

נושא ש

הרטפורדשייר

נושא ג

GB

כתובת אימייל

rhm@rhmlimited[.]co.uk

בתוקף מ

2021-03-16 00:00:00

תקף ל

2022-03-16 23:59:59

שרתי C&C

IP

תְחוּם

נראה לראשונה

תגובה

185.25.50[.]60

chessandlinkss[.]com

2021-08-25

שרת Deadglyph C&C.

135.125.78[.]187

easymathpath[.]com

2021-09-11

שרת Deadglyph C&C.

45.14.227[.]55

joinushealth[.]com

2022-05-29

שרת C&C להוריד Shellcode.

טכניקות MITER ATT & CK

שולחן זה נבנה באמצעות גרסה 13 של מסגרת MITER ATT & CK.

טקטיקה

ID

שם

תיאור

פיתוח משאבים

T1583.001

רכישת תשתית: דומיינים

Stealth Falcon רשמה דומיינים עבור שרתי C&C ולהשגת אישור חתימת קוד.

T1583.003

רכישת תשתית: שרת פרטי וירטואלי

Stealth Falcon השתמשה בספקי אירוח VPS עבור שרתי C&C.

T1587.001

פיתוח יכולות: תוכנות זדוניות

Stealth Falcon פיתחה תוכנות זדוניות מותאמות אישית, כולל מעמיסים מותאמים אישית והדלת האחורית של Deadglyph.

T1588.003

השג יכולות: תעודות חתימת קוד

Stealth Falcon השיג אישור חתימת קוד.

הוצאה לפועל

T1047

של Windows Management Instrumentation

Deadglyph משתמש ב-WMI כדי לבצע את שרשרת הטעינה שלו.

T1059.003

מתורגמן פקודות ותסריטים: מעטפת הפקודות של Windows

משתמש בהורדת Shellcode cmd.exe למחוק את עצמו.

T1106

ממשק API מקומי

מודול Deadglyph משתמש CreateProcessW ו CreateProcessAsUserW פונקציות API לביצוע.

T1204.002

ביצוע משתמש: קובץ זדוני

שרשרת הורדת קוד המעטפת דורשת מהמשתמש ללחוץ פעמיים ולהפעיל אותה.

התמדה

T1546.003

ביצוע מופעלת אירוע: מנוי לאירועים של Windows Management Instrumentation

טוען Deadglyph הראשוני ממשיך באמצעות מנוי לאירועי WMI.

התחמקות הגנה

T1027

קבצים או מידע מעורפלים

רכיבי Deadglyph מוצפנים. Deadglyph Orchestrator והמודולים המוטבעים מעורפלים עם .NET Reactor.

הורדת קוד המעטפת מעורפלת עם ConfuserEx.

T1070.004

הסרת אינדיקטור: מחיקת קובץ

Deadglyph יכול להסיר את עצמו.

שרשרת הורדת ה- shellcode מוחקת את עצמה ומוחקת קבצים ב-WebDAV cache.

T1112

שנה את הרישום

Deadglyph מאחסן את התצורה והמטען המוצפן שלו ברישום.

T1134

גישה לאסימונים

Deadglyph יכול להתחזות למשתמש אחר.

T1140

בטל/פענח קבצים או מידע

Deadglyph מפענח מחרוזות מוצפנות.

שרשרת הורדות ה- shellcode מפענחת את רכיביה ותצורותיה.

T1218.011

ביצוע פרוקסי בינארי של המערכת: Rundll32

טוען Deadglyph הראשוני מבוצע באמצעות rundll32.exe.

T1480.001

מעקות ביצוע: מפתח סביבתי

Deadglyph מוצפן באמצעות מפתח ספציפי למכונה הנגזר מ-UUID של המערכת.

T1562.001

פגיעה בהגנה: השבת או שנה כלים

הורדת קוד המעטפת נמנע מסריקת AMSI על ידי תיקון clr.dll לזכר .

T1620

טעינת קוד רפלקטיבי

Deadglyph טוען באופן רפלקטיבי את המודולים שלו באמצעות מטעין PE מותאם אישית.

גילוי פערים

T1007

גילוי שירות מערכת

A מודול Deadglyph מגלה שירותים באמצעות שאילתת WMI בחר * מ-Win32_Service.

T1012

רישום שאילתות

שרשרת הורדת ה- shellcode שוללת את הרישום עבור דפדפן ברירת המחדל.

T1016

גילוי תצורת רשת מערכת

מודול Deadglyph מגלה מתאמי רשת באמצעות שאילתות WMI בחר * מ-Win32_NetworkAdapter ו בחר * מ-Win32_NetworkAdapterConfiguration שבו InterfaceIndex=%d.

T1033

גילוי בעל מערכת/משתמש

מודול Deadglyph מגלה משתמשים עם שאילתת WMI בחר * מ-Win32_UserAccount.

T1057

תהליך גילוי

מודול Deadglyph מגלה תהליכים באמצעות שאילתת WMI בחר * מ-Win32_Process.

T1082

גילוי מידע מערכת

מודול Deadglyph מגלה מידע מערכת כגון גרסת מערכת ההפעלה, כוננים, משתני סביבה ומנהלי התקנים באמצעות שאילתות WMI.

T1518

גילוי תוכנה

מודול Deadglyph מגלה תוכנה מותקנת באמצעות שאילתת WMI בחר * מ-Win32_Product.

T1518.001

גילוי תוכנה: גילוי תוכנות אבטחה

מודול Deadglyph מגלה תוכנת אבטחה באמצעות שאילתות WMI בחר * ממוצר אנטי וירוס, בחר * ממוצר AntiSpyware ו בחר * ממוצר Firewall.

שרשרת הורדת קוד המעטפת בודקת תהליכים פועלים עבור פתרון אבטחה.

אוספים

T1005

נתונים מהמערכת המקומית

ל-Deadglyph יש מודול לקריאת קבצים.

פיקוד ובקרה

T1071.001

פרוטוקול שכבת האפליקציות: פרוטוקולי אינטרנט

Deadglyph ומוריד ה- shellcode מתקשרים עם שרת C&C באמצעות פרוטוקול HTTP.

T1090

פרוקסי

Deadglyph ומוריד ה- shellcode יכולים להשתמש ב-HTTP proxy עבור תקשורת C&C.

T1573.001

ערוץ מוצפן: קריפטוגרפיה סימטרית

Deadglyph משתמש ב-AES כדי להצפין תקשורת C&C.

exfiltration

T1041

סינון מעל ערוץ C2

Deadglyph משתמש בערוץ C&C לצורך סינון.

פלקון חמקני טורף מעל שמי המזרח התיכון עם מודיעין נתונים Deadglyph PlatoBlockchain. חיפוש אנכי. איי.

בול זמן:

עוד מ אנחנו חיים אבטחה