November 16, 2019

כמה צעדים מחשבון הבנק שלך עד ל-CERBERUS?

F1N4LSH4R3

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