כמה צעדים מחשבון הבנק שלך עד ל-CERBERUS?
August 14, 2019
תוכנה זדונית חדשה למכשירי האנדרואיד, סוס טרויאני אשר נתמך על חיישן מד הצעדים ובכך נתמע המערכת ההפעלה ומקנה לעצמו לרוץ ברקע ולהקשות על החוקרים.
תוכנות זדוניות של Cerberus נכנסו לאחרונה לעסקי תוכנות זדוניות כשירות(malware as service) שממלאות את החלל שהותיר בעקבות מותם של וירוסים בנקאיים אנדרואיד קודמים.
מחבר\ים התוכנה הזדונית טוענים כי הוא שימש באופן פרטי בשנתיים האחרונות וכי הם יצרו את Cerberus מאפס במשך מספר שנים.
כשאתה זז, Cerberus זז
עומס ועיבוי מחרוזות הם טכניקות נורמליות להקשות על ניתוח ואיתור, אך Cerberus משתמשת גם במנגנון שקובע אם המערכת הנגועה זזה או לא.
Cerberus משיג זאת על ידי קריאת נתונים מחיישן מד תנועה שנמצא במכשירי אנדרואיד למדידת כוח ההאצה בכל שלושת הצירים הפיזיים, X, Y ו- Z, בהתחשב גם בכוח הכובד.על ידי יישום מד צעדים פשוט, Cerberus יכול לעקוב אם הקורבן זז באמצעות הקוד שלהלן. אדם אמיתי ינוע סביבו, יפיק נתוני תנועה ויגדיל את מונה הצעדים.
... this.sensorService.registerListener(this, this.accelerometer, 3); Sensor localSensor = sensorEvent.sensor; this.sensorService.registerListener(this, localSensor, 3); if(localSensor.getType() == 1) { float[] values = sensorEvent.values; float Gx = values[0]; float Gy = values[1]; float Gz = values[2]; long timestamp = System.curTimeMillis(); if(timestamp - this.previousTimestamp > 100L) { long interval = timestamp - this.previousTimestamp; this.previousTimestamp = timestamp; if(Math.abs(Gx + Gy + Gz - this.curGx - this.curGy - this.curGz) / (((float)interval)) * 10000f > 600f) { this.increaseStepCount(); } this.curGx = Gx; this.curGy = Gy; this.curGz = Gz; } } ... if(Integer.parseInt( this.utils.readConfigString(arg7, this.constants.step))
התוכנה הזדונית הופכת לפעילה ומתחילה לתקשר עם שרת הפיקוד והבקרה כאשר מגיעים למספר צעדים ספציפי.
בדיקת בטיחות זו מיושמת במיוחד כדי להימנע מגילויי במהלך בדיקה בסביבות "ארגזי חול " המשמשות לניתוח תוכנות זדוניות.
תכונות סטנדרטיות לטרויאני הבנקים
מהדגימות שנמצאו בטבע, Cerberus מתחזה ליישום נגן Flash. כאשר היא מופעלת במערכת, התוכנה הזדונית מסתירה את הסמל שלה ודורשת הרשאות מוגברות באמצעות שירות הנגישות.
ואז הוא מתחיל להעניק לעצמו הרשאות נוספות המאפשרות לו לשלוח הודעות ולבצע שיחות ללא אינטראקציה של משתמשים. על פי החוקרים, התוכנה הזדונית גם השביתה את Google Play Protect כדי למנוע גילוי וחיטוי.
הקוד הבא מאפשר ל-CERBERUS לשמור על "פרופיל נמוך"
Overlaying: Dynamic (Local injects obtained from C2) Keylogging SMS harvesting: SMS listing SMS harvesting: SMS forwarding Device info collection Contact list collection Application listing Location collection Overlaying: Targets list update SMS: Sending Calls: USSD request making Calls: Call forwarding Remote actions: App installing Remote actions: App starting Remote actions: App removal Remote actions: Showing arbitrary web pages Remote actions: Screen-locking Notifications: Push notifications C2 Resilience: Auxiliary C2 list Self-protection: Hiding the App icon Self-protection: Preventing removal Self-protection: Emulation-detection Architecture: Modular
ThreatFabric מצא כמה דוגמאות של שכבות פישינג ששימשו את Cerberus לגניבת אישורים ונתוני כרטיסי אשראי.
נכון לעכשיו החוקרים מצאו ברשימת יעדים זו בזמן שרק 30 רשומות ייחודיות. בין היעדים ניתן למצוא אפליקציות בנקאיות מצרפת (7), ארה"ב (7), יפן (1). 15 נוספים מהם הם אפליקציות חוץ בנקאיות.
"רשימת יעד בלתי שכיחה זו עשויה להיות תוצאה של דרישה ספציפית של לקוחות, או כתוצאה מכמה שחקנים אשר השתמשו באופן חלקי ברשימת יעדים קיימת." - ThreatFabric
בעזרת שכבות פישינג, התוכנה הזדונית הונה את הקורבן למסור מידע רגיש שנע בין אישורים לשירותים מקוונים ,פרטי כרטיסי האשראי ומידע בנקאי.
קביעה מתי יש להשתמש בשכבת הפישינג ואיזה מהן לטעון אפשרית באמצעות ההרשאות המורחבות של הוירוס, המאפשרות לה להשיג את שם החבילה עבור אפליקציית ברקע הקדמי.
לתחקיר המלא, דוגמאות והאשים:
https://www.threatfabric.com/blogs/cerberus-a-new-banking-trojan-from-the-underworld.html
F1N4LSH4R3