התמקדה בעיקר באסיה, קבוצת ריגול סייבר חדשה זו משתמשת בכלים לא מתועדים, כולל חילוץ סטגנוגרפי של מטענים של PowerShell מקובצי PNG
חוקרי ESET מצאו לאחרונה התקפות ממוקדות שהשתמשו בכלים לא מתועדים נגד חברות בעלות פרופיל גבוה וממשלות מקומיות, בעיקר באסיה. התקפות אלו בוצעו על ידי קבוצת ריגול שלא הייתה ידועה קודם לכן שקראנו לה Worok ושפועלת מאז 2020 לפחות. ערכת הכלים של Worok כוללת CLRLoad מטעין C++, PowerShell PowHeartBeat עם דלת אחורית ומטען C# PNGLoad שמשתמש בסטגנוגרפיה כדי לחלץ זדוני נסתר. מטענים מקבצי PNG.
מי זה וורוק?
במהלך ProxyShell (CVE-2021-34523) חשיפת פגיעות בתחילת 2021, ראינו פעילות מקבוצות APT שונות. אחד הציג מאפיינים משותפים עם TA428:
- זמני פעילות
- אנכיים ממוקדים
- שימוש ב-ShadowPad
שאר ערכת הכלים שונה מאוד: לדוגמה, TA428 לקח חלק ב- פשרה בשולחן העבודה בשנת 2020. אנו רואים שהקישורים אינם חזקים מספיק כדי לראות ב-Worok אותה קבוצה כמו TA428, אך ייתכן ששתי הקבוצות חולקות כלים ובעלי תחומי עניין משותפים. החלטנו ליצור אשכול וקראנו לו Worok. השם נבחר על פי mutex במטען ששימש את הקבוצה. פעילות נוספת עם גרסאות של אותם כלים נקשרתה אז לקבוצה זו. על פי הטלמטריה של ESET, Worok פעיל מאז סוף 2020 וממשיך להיות פעיל נכון לכתיבת שורות אלה.
בסוף 2020, וורוק פנה לממשלות וחברות במספר מדינות, במיוחד:
- חברת תקשורת במזרח אסיה
- בנק במרכז אסיה
- חברה לתעשייה ימית בדרום מזרח אסיה
- ישות ממשלתית במזרח התיכון
- חברה פרטית בדרום אפריקה
הייתה הפסקה משמעותית בפעולות שנצפו מ-2021-05 עד 2022-01, אך פעילות Worok חזרה ב-2022-02, והתמקדה ב:
- חברת אנרגיה במרכז אסיה
- ישות במגזר הציבורי בדרום מזרח אסיה
איור 1 מציג מפת חום ויזואלית של האזורים הממוקדים והאנכיים.
בהתחשב בפרופילי המטרות והכלים שראינו נפרסים נגד הקורבנות הללו, אנו חושבים שהמטרה העיקרית של וורוק היא לגנוב מידע.
ניתוח טכני
בעוד שרוב הגישות הראשוניות אינן ידועות, במקרים מסוימים עד 2021 ו-2022 ראינו ניצולים בשימוש נגד פגיעויות ProxyShell. במקרים כאלה, בדרך כלל הועלו קליעות אינטרנט לאחר ניצול פגיעויות אלו, על מנת לספק התמדה ברשת של הקורבן. לאחר מכן השתמשו המפעילים בשתלים שונים כדי להשיג יכולות נוספות.
לאחר השגת גישה, המפעילים פרסו כלים מרובים וזמינים לציבור לסיור, כולל מימיקץ, שִׁלשׁוּל, ReGeorg, ו NBTscan, ולאחר מכן פרסו את השתלים המותאמים אישית שלהם: מטעין שלב ראשון, ואחריו מטעין .NET שלב שני (PNGLoad). למרבה הצער, לא הצלחנו לאחזר אף אחד מהמטענים הסופיים. בשנת 2021, המעמיס בשלב הראשון היה מכלול CLR (CLRLoad), בעוד שבשנת 2022 הוא הוחלף, ברוב המקרים, בדלת אחורית בעלת תכונות מלאות של PowerShell (PowHeartBeat) - שתי שרשראות הביצוע מתוארות באיור 2. שלושת אלה הכלים מתוארים בפירוט בתתי הסעיפים הבאים.
CLRLoad: מעמיס מכלול CLR
CLLRoad הוא Windows PE גנרי שראינו גם בגרסת 32 וגם ב-64 סיביות. זה מטעין שנכתב ב-C++ שטוען את השלב הבא (PNGLoad), שחייב להיות הרכבת זמן ריצה של שפה משותפת (CLR). קובץ DLL. הקוד הזה נטען מקובץ שנמצא בדיסק בספרייה לגיטימית, ככל הנראה כדי להטעות קורבנות או מגיבים לאירועים לחשוב שזו תוכנה לגיטימית.
חלק מדגימות CLRLoad מתחילות בפענוח הנתיב המלא של הקובץ שאת תוכנו הם יטענו כשלב הבא. נתיבי קבצים אלה מקודדים עם XOR של בייט בודד, עם מפתח שונה בכל דוגמה. בפענוח או בטקסט ברור, נתיבי הקבצים הללו הם מוחלטים, כאשר הבאים הם אלה שנתקלנו בהם:
- C:Program FilesVMwareVMware ToolsVMware VGAuthxsec_1_5.dll
- C:Program FilesUltraViewermsvbvm80.dll
- C:Program FilesInternet ExplorerJsprofile.dll
- C:Program FilesWinRarRarExtMgt.dll
- C:Program Files (x86)Foxit SoftwareFoxit Readerlucenelib.dll
לאחר מכן, נוצר mutex וראינו שם שונה בכל דגימה. המטען בודק את המוטקס הזה; אם נמצא, הוא יוצא, מכיוון שהמטעין כבר פועל. באחת הדוגמאות, המוטקס Wo0r0KGWhYGO נתקל, מה שהעניק לקבוצה את שמה וורוק.
לאחר מכן, CLLRoad טוען מכלול CLR מנתיב הקובץ שאולי מפוענח. כקוד לא מנוהל, CLLRoad משיגה זאת באמצעות CorBindToRuntimeEx Windows API קריאות בגרסת 32 סיביות, או CLRCreateInstance שיחות בגרסאות 64 סיביות.
PowHeartBeat: דלת אחורית של PowerShell
PowHeartBeat היא דלת אחורית בעלת תכונות מלאות שנכתבה ב-PowerShell, מוסתרת באמצעות טכניקות שונות כגון דחיסה, קידוד והצפנה. בהתבסס על טלמטריית ESET, אנו מאמינים ש- PowHeartBeat החליף את CLLRoad בקמפיינים עדכניים יותר של Worok ככלי ששימש להפעלת PNGLoad.
השכבה הראשונה של קוד הדלת האחורית מורכבת ממספר נתחים של קוד PowerShell מקודד base64. לאחר שחזור המטען, הוא מבוצע באמצעות IEX. לאחר הפענוח, מבוצעת שכבה נוספת של קוד מעורפל, אותה אנו יכולים לראות באיור 3.
השכבה השנייה של הדלת האחורית first base64 מפענחת את השכבה הבאה של הקוד שלו, אשר לאחר מכן מפענחת עם טריפל DES (מצב CBC). לאחר הפענוח, קוד זה מפורק באמצעות ה- מופעלת דחיסת אלגוריתם, ובכך נותן את השכבה השלישית של קוד PowerShell, שהיא הדלת האחורית בפועל. הוא מחולק לשני חלקים עיקריים: תצורה וטיפול בפקודות דלת אחורית.
השכבה העיקרית של קוד הדלת האחורית כתובה גם היא ב- PowerShell ומשתמשת ב-HTTP או ICMP כדי לתקשר עם שרת C&C. זה עובד כפי שמתואר באיור 4.
תְצוּרָה
התצורה מכילה שדות מרובים, כולל מספר גרסה, תצורת proxy אופציונלית וכתובת C&C. טבלה 1 מתארת את המשמעויות של שדות התצורה בגרסאות השונות בהן צפינו.
טבלה 1. משמעויות שדה תצורה
שם שדה | תיאור |
---|---|
nouse / ikuyrtydyfg (דוגמאות אחרות) |
לא בשימוש. |
זיהוי לקוח | מזהה לקוח, המשמש למטרות הבאות: · כערך בעת בניית ה כותרת העוגיה עבור תקשורת C&C. · כחפץ קריפטוגרפי להצפנת נתונים שנשלחו. |
גִרְסָה | מספר גרסה של PowHeartBeat. |
ExecTimes | מספר ניסיונות הביצוע המותרים בעת הנפקת א RunCmd פקודה (ריצת הפקודה). |
UserAgent | סוכן משתמש המשמש לתקשורת C&C. |
מפנה | מפנה כותרת המשמשת לתקשורת C&C. |
קבל קידוד | לא בשימוש. |
CookieClientId CookieTaskId CookieTerminalId |
ערכים המשמשים לבניית ה עוגיה כותרת לתקשורת C&C. |
UrlHttps | פרוטוקול לשימוש עבור תקשורת C&C. |
URLDomain כתובת ה - IP תחומים |
כתובת URL, דומיינים או כתובת IP המשמשים כשרת C&C. אם תחומים אינו ריק, הוא נבחר במקום כתובת ה - IP. במקרים אחרים, כתובת ה - IP תפוס. |
UrlSendHeartBeat | נתיב כתובת האתר משמש כאשר הדלת האחורית מבקשת משרת C&C פקודות. |
UrlSendResult | נתיב כתובת האתר המשמש כאשר הדלת האחורית שולחת את תוצאות הפקודה בחזרה לשרת C&C. |
GetUrl | כתובת URL מלאה, המשמשת את PowHeartBeat לבקשת פקודות משרת C&C. זהו השרשור של רכיבי כתובת האתר שלמעלה. |
PutUrl | כמו GetUrl אך משמש לשליחת תוצאות הפקודה בחזרה לשרת C&C. |
נתיב הנוכחי | לא בשימוש. |
ProxyEnableFlag | דגל המציין אם הדלת האחורית חייבת להשתמש בפרוקסי או לא כדי לתקשר עם שרת C&C. |
פרוקסימסג | כתובת ה-proxy לשימוש אם ProxyEnableFlag מוגדר $נכון. |
הפסקה | זמן בשניות שהסקריפט יורד בין בקשות GET. |
BasicConfigPath | נתיב לקובץ תצורה אופציונלי המכיל זמן, זמן השבתה, DefaultInterval, ו תחומים. ערכים אלה יעקפו אם הקובץ קיים. |
זמן | השעה ביום שממנה הדלת האחורית מתחילה לפעול, כלומר היא מתחילה לשלוח בקשות GET לשרת C&C. |
זמן השבתה | שעה ביום שעד אליה הדלת האחורית יכולה לפעול, כלומר הזמן שבו היא מפסיקה לשלוח בקשות לשרת C&C. |
DomainIndex | אינדקס של שם הדומיין הנוכחי לשימוש עבור תקשורת עם שרת C&C. במקרה שבקשה מחזירה הודעת שגיאה שונה מ 304 ("לא שונה"), DomainIndex הוא גדל. |
מפתח סודי | מפתח המשמש לפענוח/הצפנת התצורה. התצורה מוצפנת עם XOR מרובים בתים. |
IfLog | לא בשימוש. |
IfLogFilePath | דגל המציין אם רישום מופעל. |
logpath | נתיב קובץ היומן. |
ProxyFile | נתיב הקובץ של תצורת ה-proxy האופציונלית. אם הוא ריק או לא נמצא במערכת הקבצים, הדלת האחורית מאחזרת את הגדרות ה-proxy של המשתמש מערך הרישום HKCUSoftwareMicrosoftWindowsCurrentVersionInternet SettingsProxyServer . |
IfConfig | דגל המציין אם להשתמש בקובץ תצורה. |
איור 5 מציג דוגמה של התצורה שחולצה מדגימת PowHeartBeat (SHA-1: 757ABA12D04FD1167528FDD107A441D11CD8C427).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
$Script:nouse = 100; if(Test-Path $MyInvocation.MyCommand.Path){Remove-item $MyInvocation.MyCommand.Path -Force;} $Script:ClientId = “83”; $Script:Version = “2.1.3.0003”; $Script:ExecTimes = 10; $Script:UserAgent = “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3487.100 Safari/537.36”; $Script:Referer = “www.adobe.com”; $Script:AcceptEncoding = “text/html,app1ication/xhtml+xml,app1ication/xml;q=0.9,*/*;q=0.8”; $Script:CookieClientId = “s_ecid”; $Script:CookieTaskId = “aam_uuid”; $Script:CookieTerminalId = “AAMC_adobe_0”; $Script:UrlHttps = “http://”; $Script:UrlDomain= ” 118.193.78[.]22:443″; $Script:UrlSendHeartBeat = “/latest/AdobeMessagingClient.js”; $Script:UrlSendResult = “/content/dam/offers-homepage/homepage.jpg”; $Script:GetUrl = $Script:UrlHttps + $Script:UrlDomain + $Script:UrlSendHeartBeat; $Script:PutUrl = $Script:UrlHttps + $Script:UrlDomain + $Script:UrlSendResult; $Script:currentPath = Split-Path -Parent $MyInvocation.MyCommand.Definition; $Script:ProxyEnableFlag = $false; $Script:Proxymsg; $Script:Interval = 10 ; $Script:BasicConfigPath = “C:ProgramDataunins.dat”; $Script:UpTime = 0; $Script:DownTime = 24; $Script:Domains; $Script:DomainIndex; $Script:SecretKey = “###ConfigKey###”; #$Script:IfLog = $true; $Script:IfLogFilePath = “C:ProgramDatatpncp.dat”; $Script:logpath = “C:ProgramDataunins000.dat”; $Script:ProxyFile = “C:ProgramDatahwrenalm.dat”; $Script:IfConfig = $false; |
איור 5. דוגמה לתצורה
הצפנת מידע
PowHeartBeat מצפין יומנים ותוכן קובץ תצורה נוסף.
תוכן קובץ היומן מוצפן באמצעות XOR מרובים בתים עם מפתח שצוין בטקסט ברור בדוגמה. מעניין, זיהוי לקוח משמש כמלח עבור האינדקס לתוך מערך המפתחות. המפתח הוא מערך של 256 בתים, שהיה זהה בכל דגימה שנתקלנו בה. תוכן קובץ תצורה נוסף מוצפן באמצעות XOR מרובים בתים עם הערך מ מפתח סודי כמפתח שלו.
תקשורת C&C
PowHeartBeat השתמש ב-HTTP לתקשורת C&C עד גרסה 2.4, ולאחר מכן עבר ל-ICMP. בשני המקרים התקשורת אינה מוצפנת.
HTTP
בלולאה אינסופית, הדלת האחורית שולחת בקשת GET לשרת C&C, ומבקשת פקודה להנפיק. התשובה המוצפנת מפוענחת על ידי הדלת האחורית, המעבדת את הפקודה, וכותבת את פלט הפקודה לקובץ שהתוכן שלו נשלח לשרת C&C באמצעות בקשת POST.
הפורמט של בקשות GET הוא הבא:
GET <UrlSendHeartBeat> HTTP/1.1 User-Agent: <UserAgent> Referer: <Referer> Host: <Domain> Cookie: <CookieClientId>=<ClientId> Connection: close |
שימו לב שהבקשה נבנית באמצעות שדות התצורה בעלי השם.
בתגובה משרת C&C, הביט השלישי של התוכן הוא מזהה הפקודה המציין את הפקודה שתעובד על ידי הדלת האחורית. אנחנו נקרא לזה command_id. שאר התוכן של התגובה יועבר כארגומנט לפקודה שתעובד. תוכן זה מוצפן בעזרת האלגוריתם המוצג באיור 6, מזהה משימה בהיותו הערך של קובץ ה-cookie על שמה CookieTaskIdהערך של מהתצורה.
1 2 3 4 5 6 7 8 9 10 |
o[int] $pos = $taskId % 256; for ($i = 0; $i -lt $tmpBytes.Value.Length; $i++) { $pos = $pos + $clientId; if ($pos -ge 256) { $pos = $pos % 256; } $tmpBytes.Value[$i] = [byte]($tmpBytes.Value[$i] -bxor $hexEnc[$pos]); } |
איור 6. מבקש אלגוריתם הצפנת נתוני תוכן
התגובה משרת C&C מכילה גם קובץ Cookie נוסף, ששמו מצוין על ידי הדלת האחורית CookieTerminalId משתנה תצורה. הערך של קובץ Cookie זה חוזר על עצמו בבקשת ה-POST מהדלת האחורית, ואסור שהוא יהיה ריק. לאחר ביצוע פקודת הדלת האחורית, PowHeartBeat שולח את התוצאה כבקשת POST לשרת C&C. התוצאה נשלחת כקובץ ששמו הוא .png.
ICMP
החל מגרסה 2.4 של PowHeartBeat, HTTP הוחלף ב-ICMP, מנות שנשלחו עם פסק זמן של שש שניות והן לא מקוטע. תקשורת דרך ICMP היא ככל הנראה דרך להתחמק מגילוי.
אין שינוי מהותי בגירסאות 2.4 ואילך, אבל שמנו לב לכמה שינויים בקוד:
- PowHeartBeat שולח חבילת פעימות לב בכל לולאה המכילה את המחרוזת a B C D E F G H I J K L M O P Q R S T U V w x y z, לפני בקשת פקודה. זה מודיע לשרת C&C שהדלת האחורית מוכנה לקבל פקודות.
- בקשות לקבל פקודות שבוצעו על ידי הדלת האחורית מכילות את המחרוזת abcdefghijklmnop.
למנות פעימות לב יש את הפורמט המתואר באיור 7.
ההבדל בין מזהה לקוח ו דגל הלקוח הוא כי מזהה לקוח שונה בכל מדגם ואילו דגל הלקוח זהה בכל מדגם המשתמש ב-ICMP. דגל דופק מציין שהדלת האחורית שולחת פעימת לב. לתגובה משרת C&C יש את הפורמט המתואר באיור 8.
דגל כאן מציין אם יש פקודה להנפיק לדלת האחורית. בקשות לקבל פקודות הן בפורמט המתואר באיור 9.
שימו לב שמצב ה-ICMP של הדלת האחורית מאפשר קבלת כמות בלתי מוגבלת של נתונים, המחולקים לנתחים ולמשתנים אורך נתונים, מיקום נוכחי ו אורך כולל משמשים למעקב אחר הנתונים המועברים. התגובות לבקשות אלו הן בפורמט המתואר באיור 10.
כמו בתגובות HTTP, מזהה הפקודה הוא הבית השלישי של נתונים.
לאחר שבע תשובות רצופות של ICMP עם תוכן ריק או בפורמט לא עקבי, ההעברות בין הדלת האחורית לשרת C&C נחשבות שהסתיימו.
לגבי הבקשות לשלוח את התוצאה של הפקודה שהונפקה לשרת C&C, מצב השרת שונה למצב פוסט, והמחרוזת הסופית (abcdefghijklmnop) משתנה עבור נתוני התוצאה.
פקודות דלת אחורית
ל-PowHeartBeat יכולות שונות, לרבות ביצוע פקודות/תהליכים ומניפולציה של קבצים. טבלה 2 מפרטת את כל הפקודות הנתמכות על ידי הדגימות המנותחות השונות.
טבלה 2. תיאורי פקודות PowHeartBeat
שם | מזהה פקודה | תיאור |
---|---|---|
Cmd | 0x02 | בצע פקודת PowerShell. |
אקסה | 0x04 | בצע פקודה בתור א תהליך. |
העלאת קבצים | 0x06 | העלה קובץ למכשיר הקורבן. תוכן הקובץ דחוס ב-gzip. |
הורדת קבצים | 0x08 | הורד קובץ מהמחשב הנפגע, והחזר את נתיב הקובץ, אורך הקובץ, זמן היצירה, זמני הגישה ותוכן הקובץ לשרת C&C. |
FileView | 0x0A | קבל מידע על קובץ של ספרייה ספציפית, בפרט: · שמות קבצים · תכונות קובץ · זמני כתיבה אחרונים · תוכן הקובץ |
FileDelete | 0x0C | מחק קובץ. |
שם קובץ | 0x0E | שנה שם או העבר קובץ. |
ChangeDir | 0x10 | שנה את מיקום העבודה הנוכחי של הדלת האחורית. |
מידע | 0x12 | קבל קטגוריית מידע לפי הטיעון שצוין: · "מידע בסיסי": זיהוי לקוח, גִרְסָה, שם מארח, כתובות IP, explorer.exe מידע על גרסה וגודל, מערכת הפעלה (ארכיטקטורה ודגל המציינים אם המכונה היא שרת), הפסקה, ספרייה נוכחית, מידע על הכונן (שם, סוג, שטח פנוי וגודל כולל), זמן נוכחי · "מידע על מרווח זמן": הפסקה והשעה הנוכחית · "מידע תחום": תוכן קובץ תצורה מפוענח |
Config | 0x14 | עדכן את תוכן קובץ התצורה וטען מחדש את התצורה. |
N / A | 0x63 | יציאה מדלת אחורית. |
במקרה של שגיאות בצד הדלת האחורית, הדלת האחורית משתמשת במזהה פקודה ספציפי 0x00 בבקשת ה-POST לשרת C&C, ובכך מעידה על אירעה שגיאה.
שימו לב שלפני שליחת המידע חזרה לשרת C&C, הנתונים נדחסים ב-gzip.
PNGLoad: טוען סטגנוגרפי
PNGLoad הוא מטען השלב השני שנפרס על ידי Worok במערכות שנפרצו, ולפי הטלמטריה של ESET, נטען על ידי CLLRoad או PowHeartBeat. למרות שאיננו רואים שום קוד ב-PowHeartBeat הטוען ישירות את PNGLoad, לדלת האחורית יש את היכולות להוריד ולהפעיל עומסים נוספים משרת ה-C&C, מה שככל הנראה כיצד התוקפים פרסו PNNGLoad במערכות שנפגעו עם PowHeartBeat. PNGLoad הוא מטעין שמשתמש בתים מקובצי PNG כדי ליצור מטען לביצוע. זהו קובץ הפעלה של 64 סיביות .NET - מעורפל עם כור .NET - שמתחזה לתוכנה לגיטימית. לדוגמה, איור 11 מציג את כותרות ה-CLR של דוגמה המתחזה ל-DLL של WinRAR.
לאחר ביטול הערפול, רק מחלקה אחת קיימת. בכיתה זו יש א MainPath תכונה המכילה את נתיב הספרייה שהדלת האחורית מחפשת, כולל ספריות המשנה שלה, עבור קבצים עם a . Png הרחבה, כפי שמוצג באיור 12.
כל אחד . Png קובץ שנמצא בחיפוש זה של MainPath לאחר מכן נבדק עבור תוכן מוטבע סטגנוגרפית. ראשית, ה-bit הכי פחות משמעותי של ערכי R (אדום), G (ירוק), B (כחול) ו-A (אלפא) של כל פיקסל נשלפים ומורכבים למאגר. אם שמונת הבתים הראשונים של המאגר הזה תואמים למספר הקסם המופיע באיור 13 וערך שמונה הבתים הבא, control, לא יהיה ריק, הקובץ עובר את בדיקת התוכן הסטגנוגרפית של PNGLoad. עבור קבצים כאלה, העיבוד ממשיך כששאר המאגר מפוענח באמצעות XOR מרובים בתים, באמצעות המפתח המאוחסן ב-PNNGLoad's SecretKeyBytes תכונה, ולאחר מכן המאגר המפוענח מפורק ב-gzip. התוצאה צפויה להיות סקריפט PowerShell, המופעל באופן מיידי.
מעניין שפעולות המבוצעות על ידי PNGLoad נרשמות בקובץ שהנתיב שלו מאוחסן במשתנה LogFilePath. פעולות נרשמות רק אם קיים קובץ שהנתיב שלו מצוין על ידי המשתנה הפנימי IfLogFilePath.
לא הצלחנו להשיג דוגמה . Png קובץ בשימוש יחד עם PNGLoad, אבל האופן שבו PNNGLoad פועל מציע שהוא צריך לעבוד עם קובצי PNG חוקיים. כדי להסתיר את המטען הזדוני, Worok משתמש באובייקטי Bitmap ב-C#, שלוקחים מידע פיקסלים בלבד מקבצים, לא ממטא נתונים של הקובץ. המשמעות היא ש-Worok יכולה להסתיר את המטענים הזדוניים שלו בתמונות PNG חוקיות ותמימות למראה ובכך להסתתר לעין.
סיכום
Worok היא קבוצת ריגול סייבר המפתחת כלים משלה, כמו גם מינוף כלים קיימים, כדי להתפשר על יעדיה. גניבת מידע מהקורבנות שלהם היא מה שאנחנו מאמינים שהמפעילים מחפשים מכיוון שהם מתמקדים בגופים בעלי פרופיל גבוה באסיה ובאפריקה, ומכוונים למגזרים שונים, פרטיים וציבוריים כאחד, אך עם דגש ספציפי על גופים ממשלתיים. זמני פעילות וערכת כלים מצביעים על קשר אפשרי עם TA428, אך אנו מבצעים הערכה זו בביטחון נמוך. ערכת הכלים המותאמים אישית שלהם כוללת שני מעמיסים - אחד ב-C++ ואחד ב-C# .NET - ודלת אחורית אחת של PowerShell. למרות שהנראות שלנו מוגבלת, אנו מקווים ששפוך אור על קבוצה זו יעודד חוקרים אחרים לשתף מידע על קבוצה זו.
ESET Research מציעה כעת גם דוחות מודיעין פרטיים של APT והזנות נתונים. לכל שאלה לגבי שירות זה, בקר באתר ESET Threat Intelligence עמוד.
IOCs
קבצים
SHA-1 | שם הקובץ | שם זיהוי ESET | תגובה |
---|---|---|---|
3A47185D0735CDECF4C7C2299EB18401BFB328D5 | תסריט | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0003. |
27ABB54A858AD1C1FF2863913BDA698D184E180D | תסריט | PowerShell/PowHeartBeat.A | PowHeartBeat 2.4.3.0003. |
678A131A9E932B9436241402D9727AA7D06A87E3 | תסריט | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0003. |
757ABA12D04FD1167528FDD107A441D11CD8C427 | תסריט | PowerShell/PowHeartBeat.B | PowHeartBeat 2.1.3.0003. |
54700A48D934676FC698675B4CA5F712C0373188 | תסריט | PowerShell/PowHeartBeat.A | PowHeartBeat 1.1.3.0002. |
C2F53C138CB1B87D8FC9253A7088DB30B25389AF | תסריט | PowerShell/PowHeartBeat.A | PowHeartBeat 1.1.3.0002. |
C2F1954DE11F72A46A4E823DE767210A3743B205 | tmp.ps1 | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0004. |
CE430A27DF87A6952D732B4562A7C23BEF4602D1 | tmp.ps1 | PowerShell/PowHeartBeat.A | PowHeartBeat 2.1.3.0004. |
EDE5AB2B94BA85F28D5EE22656958E4ECD77B6FF | תסריט | PowerShell/PowHeartBeat.A | PowHeartBeat 2.4.3.0003. |
4721EEBA13535D1EE98654EFCE6B43B778F13126 | vix64.dll | MSIL/PNGLoader.A | PNGLoader. |
728A6CB7A150141B4250659CF853F39BFDB7A46C | RarExtMgt.dll | MSIL/PNGLoader.A | PNGLoader. |
864E55749D28036704B6EA66555A86527E02AF4A | Jsprofile.dll | MSIL/PNGLoader.A | PNGLoader. |
8DA6387F30C584B5FD3694A99EC066784209CA4C | vssxml.dll | MSIL/PNGLoader.A | PNGLoader. |
AA60FB4293530FBFF00D200C0D44EEB1A17B1C76 | xsec_1_5.dll | MSIL/PNGLoader.A | PNGLoader. |
B2EAEC695DD8BB518C7E24C4F37A08344D6975BE | MSVBVM80.DLL | MSIL/PNGLoader.A | PNGLoader. |
CDB6B1CAFEE098615508F107814179DEAED1EBCF | lucenelib.dll | MSIL/PNGLoader.A | PNGLoader. |
4F9A43E6CF37FF20AE96E564C93898FDA6787F7D | vsstrace.dll | Win64/CLRLoad.C | CLLRLoad. |
F181E87B0CD6AA4575FD51B9F868CA7B27240610 | ncrypt.dll | Win32/CLRLoad.A | CLLRLoad. |
4CCF0386BDE80C339EFE0CC734CB497E0B08049C | ncrypt.dll | Win32/CLRLoad.A | CLLRLoad. |
5CFC0D776AF023DCFE8EDED5CADA03C6D7F9C244 | wlbsctrl.dll | Win64/CLRLoad.E | CLLRLoad. |
05F19EBF6D46576144276090CC113C6AB8CCEC08 | wlbsctrl.dll | Win32/CLRLoad.A | CLLRLoad. |
A5D548543D3C3037DA67DC0DA47214B2C2B15864 | secur32.dll | Win64/CLRLoad.H | CLLRLoad. |
CBF42DCAF579AF7E6055237E524C0F30507090F3 | dbghelp.dll | Win64/CLRLoad.C | CLLRLoad. |
נתיבי קובץ
חלק MainPath, LogFilePath ו IfLogFilePath ערכים שנתקלנו בהם בדוגמאות PNGLoad:
MainPath | LogFilePath | IfLogFilePath |
---|---|---|
C:Program FilesVMwareVMware Tools | C:Program FilesVMwareVMware ToolsVMware VGAuthreadme.txt | C:Program FilesVMwareVMware ToolsVMware VGAuthVMWSU_V1_1.dll |
C:Program FilesWinRar | C:Program FilesWinRarrarinstall.log | C:Program FilesWinRardes.dat |
C:Program FilesUltraViewer | C:Program FilesUltraViewerCopyRights.dat | C:Program FilesUltraVieweruvcr.dll |
רשת
תְחוּם | IP |
---|---|
ללא חתימה | 118.193.78[.]22 |
ללא חתימה | 118.193.78[.]57 |
סוכנות airplane.travel-commercials[.] | 5.183.101[.]9 |
central.suhypercloud[.]org | 45.77.36[.]243 |
מוטקסים
בדגימות CLLRoad, שמות המוטקס שבהם נתקלנו הם:
aB82UduGX0EX
ad8TbUIZl5Ga
Mr2PJVxbIBD4
oERiQtKLgPgK
U37uxsCsA4Xm
Wo0r0KGWhYGO
xBUjQR2vxYTz
zYCLBWekRX3t
3c3401ad-e77d-4142-8db5-8eb5483d7e41
9xvzMsaWqxMy
רשימה מקיפה של אינדיקטורים של פשרה (IoCs) ודוגמאות ניתן למצוא ב מאגר GitHub שלנו.
טכניקות MITER ATT & CK
שולחן זה נבנה באמצעות גרסה 11 של מסגרת MITER ATT & CK.
טקטיקה | ID | שם | תיאור |
---|---|---|---|
סִיוּר | T1592.002 | אסוף מידע מארח הקורבן: תוכנה | PowHeartBeat מתאספת של explorer.exe מידע. |
T1592.001 | אסוף מידע מארח הקורבן: חומרה | PowHeartBeat אוסף מידע על כוננים. | |
T1590.005 | אסוף מידע על רשת הקורבן: כתובות IP | PowHeartBeat אוסף כתובות IP של המחשב שנפגע. | |
פיתוח משאבים | T1583.004 | רכישת תשתית: שרת | Worok משתמשת בשרתי C&C משלה. |
T1588.002 | להשיג יכולות: כלי | Worok פרסה כלים מרובים זמינים לציבור במכונות שנפרצו. | |
T1583.001 | רכישת תשתית: דומיינים | ל-Worok רשומים דומיינים כדי להקל על תקשורת ו-C&C. | |
T1588.005 | השג יכולות: ניצול | Worok השתמש בפגיעות ProxyShell. | |
T1587.001 | פיתוח יכולות: תוכנות זדוניות | Worok פיתחה תוכנה זדונית משלה: CLLRoad, PNGLoad, PowHeartBeat. | |
T1587.003 | פיתוח יכולות: תעודות דיגיטליות | Worok יצרה Let's Encrypt אישורי SSL על מנת לאפשר אימות TLS הדדי עבור תוכנות זדוניות. | |
הוצאה לפועל | T1059.001 | מתורגמן פקודות וסקריפטים: PowerShell | PowHeartBeat כתוב ב-PowerShell. |
התמדה | T1505.003 | רכיב תוכנת שרת: Web Shell | Worok משתמש ב-webshell ReGeorg. |
התחמקות הגנה | T1140 | בטל/פענח קבצים או מידע | Worok משתמש בסכימות שונות מבוססות XOR כדי להצפין מחרוזות ויומנים ב-PowHeartBeat, PNGLoad ו-CLLRoad. |
T1036.005 | התחזות: התאם לשם או מיקום לגיטימיים | דגימות PNGLoad נפרסות בספריות VMWare בעלות מראה לגיטימי. | |
גישה לאישור | T1003.001 | השלכת אישורי מערכת ההפעלה: זיכרון LSASS | Worok משתמש ב-Mimikatz כדי לזרוק אישורים מזיכרון LSASS. |
גילוי פערים | T1082 | גילוי מידע מערכת | PowHeartBeat אוסף מידע על מערכת ההפעלה. |
T1083 | גילוי קבצים וספריות | PowHeartBeat יכול לרשום קבצים וספריות. | |
T1046 | גילוי שירותי רשת | ורוק משתמש NbtScan כדי לקבל מידע רשת על מכונות שנפרצו. | |
T1124 | גילוי זמן מערכת | PowHeartBeat אוסף את מידע הזמן של הקורבן. | |
אוספים | T1005 | נתונים מהמערכת המקומית | PowHeartBeat אוסף נתונים מהמערכת המקומית. |
T1560.002 | ארכיון נתונים שנאספו: ארכיון באמצעות ספריה | PowHeartBeat gzip דוחס נתונים לפני שליחתם לשרת C&C. | |
פיקוד ובקרה | T1071.001 | פרוטוקול שכבת האפליקציות: פרוטוקולי אינטרנט | גרסאות מסוימות של PowHeartBeat משתמשות ב-HTTP כפרוטוקול התקשורת עם שרת C&C. |
T1090.001 | פרוקסי: פרוקסי פנימי | PowHeartBeat מטפל בתצורת פרוקסי במחשב של הקורבן. | |
T1001.002 | ערפול נתונים: סטגנוגרפיה | PNGLoad מחלץ ערכי פיקסלים . Png קבצים לשחזור מטענים. | |
T1573.002 | ערוץ מוצפן: קריפטוגרפיה אסימטרית | PowHeartBeat מטפל בתקשורת HTTPS עם שרת C&C. | |
T1095 | פרוטוקול Non-Applic Layer Protocol | כמה גרסאות של PowHeartBeat משתמשות ב-ICMP כפרוטוקול התקשורת עם שרת C&C. | |
T1132.001 | קידוד נתונים: קידוד רגיל | Worok משתמש בקידוד XOR ב-PowHeartBeat, וב-PNNGLoad. | |
T1132.002 | קידוד נתונים: קידוד לא סטנדרטי | Worok משתמש באלגוריתמים של קידוד XOR שעושים שימוש במלח נוסף. | |
exfiltration | T1041 | סינון מעל ערוץ C2 | PowHeartBeat משתמש בערוץ התקשורת שלה C&C כדי לסנן מידע. |