πως Android- Το Gustuff Trojan αφαιρεί την κρέμα (fiat και crypto) από τους λογαριασμούς σας

πως Android- Το Gustuff Trojan αφαιρεί την κρέμα (fiat και crypto) από τους λογαριασμούς σας

Μόλις τις προάλλες Group-IB ανέφερε σχετικά με τη δραστηριότητα σε κινητές συσκευές Android- το Gustuff Trojan. Λειτουργεί αποκλειστικά σε διεθνείς αγορές, επιτιθέμενο σε πελάτες 100 από τις μεγαλύτερες ξένες τράπεζες, χρήστες κινητών 32 κρυπτονομισμάτων-πορτοφολιών και σημαντικούς ιστότοπους ηλεκτρονικού εμπορίου. Ο προγραμματιστής του Gustuff, ένας ρωσόφωνος κυβερνοεγκληματίας με το παρατσούκλι Bestoffer, πρόσφατα επαίνεσε το Trojan του ως «ένα σοβαρό προϊόν για άτομα με γνώσεις και εμπειρία».

Ειδικός ανάλυσης κακόβουλου κώδικα στο Group-IB Ιβάν Πισάρεφ στην έρευνά του, μιλάει αναλυτικά για το πώς λειτουργεί ο Gustuff και ποιοι είναι οι κίνδυνοι του.

Ποιον κυνηγάει ο Gustuff;

Το Gustuff ανήκει σε μια νέα γενιά κακόβουλου λογισμικού με πλήρως αυτοματοποιημένες λειτουργίες. Σύμφωνα με τον προγραμματιστή του, το Trojan είναι μια νέα και βελτιωμένη έκδοση του κακόβουλου λογισμικού AndyBot, το οποίο επιτίθεται σε τηλέφωνα που χρησιμοποιούν το λειτουργικό σύστημα από τον Νοέμβριο του 2017. Android και κλέβει χρήματα μέσω ηλεκτρονικών φορμών ηλεκτρονικού "ψαρέματος" (phishing) που μεταμφιέζονται σε εφαρμογές για κινητά γνωστών διεθνών τραπεζών και συστημάτων πληρωμών. Η Bestoffer ανέφερε ότι η τιμή ενοικίασης για το "Gustuff Bot" ήταν 800 δολάρια το μήνα.

Η ανάλυση του δείγματος Gustuff έδειξε ότι το Trojan στοχεύει δυνητικά πελάτες που χρησιμοποιούν εφαρμογές για κινητές συσκευές των μεγαλύτερων τραπεζών, όπως η Bank of America, η Bank of Scotland, η JPMorgan, η Wells Fargo, η Capital One, η TD Bank, η PNC Bank, καθώς και πορτοφόλια κρυπτογράφησης Πορτοφόλι Bitcoin, BitPay, Cryptopay, Coinbase κ.λπ.

Αρχικά δημιουργημένο ως ένα κλασικό τραπεζικό Trojan, η τρέχουσα έκδοση του Gustuff έχει επεκτείνει σημαντικά τη λίστα των πιθανών στόχων για επίθεση. Επιπλέον, Android- εφαρμογές τραπεζών, εταιρειών fintech και υπηρεσιών κρυπτογράφησης, το Gustuff στοχεύει χρήστες εφαρμογών αγοράς, ηλεκτρονικών καταστημάτων, συστημάτων πληρωμών και εφαρμογών ανταλλαγής μηνυμάτων. Συγκεκριμένα, PayPal, Western Union, eBay, Walmart, Skype, WhatsApp, Gett Taxi, Revolut και άλλα.

Σημείο εισόδου: υπολογισμός για μαζική μόλυνση

Το Gustuff χαρακτηρίζεται από ένα «κλασικό» διάνυσμα διείσδυσης Android-smartphones μέσω μηνυμάτων SMS με συνδέσμους προς αρχεία APK. Όταν μολυνθούν AndroidΜόλις μολυνθεί η συσκευή, το Trojan, κατόπιν εντολής του διακομιστή, μπορεί να διαδώσει περαιτέρω το Gustuff μέσω της βάσης δεδομένων επαφών του μολυσμένου τηλεφώνου ή της βάσης δεδομένων του διακομιστή. Η λειτουργικότητα του Gustuff έχει σχεδιαστεί για μαζική μόλυνση και μέγιστη κεφαλαιοποίηση επιχειρήσεων για τους χειριστές του - διαθέτει μια μοναδική λειτουργία "αυτόματης συμπλήρωσης" για νόμιμες εφαρμογές mobile banking και κρυπτονομίσματα, η οποία επιταχύνει και κλιμακώνει την κλοπή χρημάτων.

Μια εξέταση του Trojan αποκάλυψε ότι η λειτουργία αυτόματης μεταφόρτωσης υλοποιείται χρησιμοποιώντας την Υπηρεσία Προσβασιμότητας, μια υπηρεσία για άτομα με αναπηρίες. Το Gustuff δεν είναι το πρώτο Trojan που παρακάμπτει με επιτυχία την προστασία από την αλληλεπίδραση με στοιχεία των παραθύρων άλλων εφαρμογών χρησιμοποιώντας αυτήν την υπηρεσία. AndroidΩστόσο, η χρήση της Υπηρεσίας Προσβασιμότητας σε συνδυασμό με την αυτόματη μεταφόρτωση παραμένει αρκετά σπάνια.

Μόλις ληφθεί στο τηλέφωνο ενός θύματος, το Gustuff, χρησιμοποιώντας την Υπηρεσία Προσβασιμότητας, αποκτά τη δυνατότητα να αλληλεπιδρά με στοιχεία άλλων εφαρμογών (τραπεζικές συναλλαγές, κρυπτονομίσματα, ηλεκτρονικές αγορές, ανταλλαγή μηνυμάτων κ.λπ.), εκτελώντας ενέργειες που επιθυμούν οι εισβολείς. Για παράδειγμα, κατόπιν εντολής του διακομιστή, το Trojan μπορεί να κάνει κλικ σε κουμπιά και να αλλάξει τιμές πεδίων κειμένου σε τραπεζικές εφαρμογές. Η χρήση της Υπηρεσίας Προσβασιμότητας επιτρέπει στο Trojan να παρακάμπτει τους μηχανισμούς προστασίας που χρησιμοποιούνται από τις τράπεζες για την αντιμετώπιση παλαιότερων Trojan για κινητά, καθώς και τις αλλαγές στην πολιτική ασφαλείας που εφαρμόζονται από την Google σε νεότερες εκδόσεις λειτουργικών συστημάτων. AndroidΤο Gustuff, για παράδειγμα, μπορεί να απενεργοποιήσει το Google Protect: σύμφωνα με τον συγγραφέα, αυτή η λειτουργία λειτουργεί στο 70% των περιπτώσεων.

πως Android- Το Gustuff Trojan αφαιρεί την κρέμα (fiat και crypto) από τους λογαριασμούς σας

Το Gustuff μπορεί επίσης να εμφανίζει ψεύτικες ειδοποιήσεις PUSH με εικονίδια νόμιμων εφαρμογών για κινητά. Ο χρήστης κάνει κλικ στην ειδοποίηση PUSH και βλέπει ένα παράθυρο phishing που έχει ληφθεί από τον διακομιστή, όπου εισάγει τα δεδομένα της τραπεζικής κάρτας ή του κρυπτογραφικού πορτοφολιού που ζητήθηκε. Σε ένα άλλο σενάριο Gustuff, ανοίγει η εφαρμογή για λογαριασμό της οποίας εμφανίστηκε η ειδοποίηση PUSH. Σε αυτήν την περίπτωση, το κακόβουλο λογισμικό, κατόπιν εντολής του διακομιστή μέσω της Υπηρεσίας Προσβασιμότητας, μπορεί να συμπληρώσει τα πεδία φόρμας μιας τραπεζικής αίτησης για μια δόλια συναλλαγή.

Η λειτουργία του Gustuff περιλαμβάνει επίσης την αποστολή πληροφοριών για μια μολυσμένη συσκευή στον διακομιστή, τη δυνατότητα ανάγνωσης/ αποστολής μηνυμάτων SMS, αποστολή αιτημάτων USSD, εκκίνηση του SOCKS5 Proxy, ακολουθώντας έναν σύνδεσμο, αποστολή αρχείων (συμπεριλαμβανομένων σαρώσεων φωτογραφιών εγγράφων, στιγμιότυπων οθόνης, φωτογραφιών) στο διακομιστή , επαναφέρετε τη συσκευή στις εργοστασιακές ρυθμίσεις.

Ανάλυση κακόβουλου λογισμικού

Πριν από την εγκατάσταση μιας κακόβουλης εφαρμογής λειτουργικού συστήματος Android εμφανίζει στον χρήστη ένα παράθυρο που περιέχει μια λίστα με τα δικαιώματα που ζητούνται από το Gustuff:

πως Android- Το Gustuff Trojan αφαιρεί την κρέμα (fiat και crypto) από τους λογαριασμούς σας
Η εφαρμογή θα εγκατασταθεί μόνο μετά τη λήψη της συγκατάθεσης του χρήστη. Μετά την εκκίνηση της εφαρμογής, το Trojan θα εμφανίσει στον χρήστη ένα παράθυρο:

πως Android- Το Gustuff Trojan αφαιρεί την κρέμα (fiat και crypto) από τους λογαριασμούς σας
Μετά από αυτό θα αφαιρέσει το εικονίδιο του.

Το Gustuff συσκευάζεται, σύμφωνα με τον συγγραφέα, από συσκευαστή της FTT. Μετά την εκκίνηση, η εφαρμογή επικοινωνεί περιοδικά με τον διακομιστή CnC για να λάβει εντολές. Πολλά αρχεία που εξετάσαμε χρησιμοποιούσαν μια διεύθυνση IP ως διακομιστή ελέγχου 88.99.171[.]105 (εφεξής θα το ονομάζουμε ως <%CnC%>).

Μετά την εκκίνηση, το πρόγραμμα αρχίζει να στέλνει μηνύματα στον διακομιστή http://<%CnC%>/api/v1/get.php.

Η απάντηση αναμένεται να είναι JSON στην ακόλουθη μορφή:

{
    "results" : "OK",
    "command":{
        "id": "<%id%>",
        "command":"<%command%>",
        "timestamp":"<%Server Timestamp%>",
        "params":{
		<%Command parameters as JSON%>
        },
    },
}

Κάθε φορά που γίνεται πρόσβαση στην εφαρμογή, στέλνει πληροφορίες σχετικά με τη μολυσμένη συσκευή. Η μορφή του μηνύματος φαίνεται παρακάτω. Αξίζει να σημειωθεί ότι τα χωράφια πλήρη, επιπλέον, εφαρμογές и άδεια – προαιρετικό και θα σταλεί μόνο σε περίπτωση εντολής αιτήματος από το CnC.

{
    "info":
    {
        "info":
        {
            "cell":<%Sim operator name%>,
            "country":<%Country ISO%>,
            "imei":<%IMEI%>,
            "number":<%Phone number%>,
            "line1Number":<%Phone number%>,
            "advertisementId":<%ID%>
        },
        "state":
        {
            "admin":<%Has admin rights%>,
            "source":<%String%>,
            "needPermissions":<%Application needs permissions%>,
            "accesByName":<%Boolean%>,
            "accesByService":<%Boolean%>,
            "safetyNet":<%String%>,
            "defaultSmsApp":<%Default Sms Application%>,
            "isDefaultSmsApp":<%Current application is Default Sms Application%>,
            "dateTime":<%Current date time%>,
            "batteryLevel":<%Battery level%>
        },
        "socks":
        {
            "id":<%Proxy module ID%>,
            "enabled":<%Is enabled%>,
            "active":<%Is active%>
        },
        "version":
        {
            "versionName":<%Package Version Name%>,
            "versionCode":<%Package Version Code%>,
            "lastUpdateTime":<%Package Last Update Time%>,
            "tag":<%Tag, default value: "TAG"%>,
            "targetSdkVersion":<%Target Sdk Version%>,
            "buildConfigTimestamp":1541309066721
        },
    },
    "full":
    {
        "model":<%Device Model%>,
        "localeCountry":<%Country%>,
        "localeLang":<%Locale language%>,
        "accounts":<%JSON array, contains from "name" and "type" of accounts%>,
        "lockType":<%Type of lockscreen password%>
    },
    "extra":
    {
        "serial":<%Build serial number%>,
        "board":<%Build Board%>,
        "brand":<%Build Brand%>,
        "user":<%Build User%>,
        "device":<%Build Device%>,
        "display":<%Build Display%>,
        "id":<%Build ID%>,
        "manufacturer":<%Build manufacturer%>,
        "model":<%Build model%>,
        "product":<%Build product%>,
        "tags":<%Build tags%>,
        "type":<%Build type%>,
        "imei":<%imei%>,
        "imsi":<%imsi%>,
        "line1number":<%phonenumber%>,
        "iccid":<%Sim serial number%>,
        "mcc":<%Mobile country code of operator%>,
        "mnc":<%Mobile network codeof operator%>,
        "cellid":<%GSM-data%>,
        "lac":<%GSM-data%>,
        "androidid":<%Android Id%>,
        "ssid":<%Wi-Fi SSID%>
    },
    "apps":{<%List of installed applications%>},
    "permission":<%List of granted permissions%>
} 

Αποθήκευση δεδομένων διαμόρφωσης

Το Gustuff αποθηκεύει λειτουργικά σημαντικές πληροφορίες σε ένα αρχείο προτιμήσεων. Το όνομα του αρχείου, καθώς και τα ονόματα των παραμέτρων σε αυτό, είναι το αποτέλεσμα του υπολογισμού του αθροίσματος MD5 από τη συμβολοσειρά 15413090667214.6.1<%name%>Όπου <%name%> — αρχική ονομασία-τιμή. Ερμηνεία Python της συνάρτησης δημιουργίας ονόματος:

 nameGenerator(input):
    output = md5("15413090667214.6.1" + input) 

Στη συνέχεια θα το χαρακτηρίσουμε ως nameGenerator(εισαγωγή).
Άρα το πρώτο όνομα αρχείου είναι: nameGenerator("API_SERVER_LIST"), περιέχει τιμές με τα ακόλουθα ονόματα:

Όνομα μεταβλητήςΑξία
nameGenerator("API_SERVER_LIST")Περιέχει μια λίστα διευθύνσεων CnC με τη μορφή πίνακα.
nameGenerator("API_SERVER_URL")Περιέχει τη διεύθυνση CnC.
nameGenerator("SMS_UPLOAD")Η σημαία έχει οριστεί από προεπιλογή. Εάν η σημαία έχει οριστεί, στέλνει μηνύματα SMS στο CnC.
nameGenerator("SMS_ROOT_NUMBER")Αριθμός τηλεφώνου στον οποίο θα σταλούν τα μηνύματα SMS που λαμβάνονται από τη μολυσμένη συσκευή. Η προεπιλογή είναι μηδενική.
nameGenerator("SMS_ROOT_NUMBER_RESEND")Η σημαία διαγράφεται από προεπιλογή. Εάν εγκατασταθεί, όταν μια μολυσμένη συσκευή λάβει ένα SMS, θα σταλεί στον αριθμό root.
nameGenerator("DEFAULT_APP_SMS")Η σημαία διαγράφεται από προεπιλογή. Εάν οριστεί αυτή η σημαία, η εφαρμογή θα επεξεργαστεί τα εισερχόμενα μηνύματα SMS.
nameGenerator("DEFAULT_ADMIN")Η σημαία διαγράφεται από προεπιλογή. Εάν έχει οριστεί η σημαία, η εφαρμογή έχει δικαιώματα διαχειριστή.
nameGenerator("DEFAULT_ACCESSIBILITY")Η σημαία διαγράφεται από προεπιλογή. Εάν έχει οριστεί η σημαία, εκτελείται μια υπηρεσία που χρησιμοποιεί την Υπηρεσία Προσβασιμότητας.
nameGenerator ("APPS_CONFIG")Ένα αντικείμενο JSON που περιέχει μια λίστα ενεργειών που πρέπει να εκτελούνται όταν ενεργοποιείται ένα συμβάν προσβασιμότητας που σχετίζεται με μια συγκεκριμένη εφαρμογή.
nameGenerator("APPS_INSTALLED")Αποθηκεύει μια λίστα εφαρμογών που είναι εγκατεστημένες στη συσκευή.
nameGenerator("IS_FIST_RUN")Η σημαία επαναφέρεται στην πρώτη εκκίνηση.
nameGenerator("UNIQUE_ID")Περιέχει ένα μοναδικό αναγνωριστικό. Δημιουργήθηκε όταν το bot εκκινείται για πρώτη φορά.

Μονάδα επεξεργασίας εντολών από τον διακομιστή

Η εφαρμογή αποθηκεύει τις διευθύνσεις των διακομιστών CnC με τη μορφή ενός πίνακα που κωδικοποιείται από Βάση85 γραμμές. Λίστα CnCs - διακομιστές μπορούν να αλλάξουν κατά τη λήψη της αντίστοιχης εντολής, οπότε οι διευθύνσεις θα αποθηκευτούν στο αρχείο προτιμήσεων.

Σε απάντηση στο αίτημα, ο διακομιστής στέλνει μια εντολή στην εφαρμογή. Αξίζει να σημειωθεί ότι οι εντολές και οι παράμετροι παρουσιάζονται σε μορφή JSON. Η εφαρμογή μπορεί να επεξεργαστεί τις ακόλουθες εντολές:

ΟμάδαΠεριγραφή
μπροστινή ΈναρξηΞεκινήστε να στέλνετε μηνύματα SMS που λαμβάνονται από τη μολυσμένη συσκευή στον διακομιστή CnC.
εμπρός ΣταματήστεΣταματήστε την αποστολή μηνυμάτων SMS που λαμβάνονται από τη μολυσμένη συσκευή στον διακομιστή CnC.
ussdRunΕκτελέστε αίτημα USSD. Ο αριθμός στον οποίο πρέπει να υποβάλετε ένα αίτημα USSD βρίσκεται στο πεδίο JSON "αριθμός".
αποστολή SMSΣτείλτε ένα μήνυμα SMS (εάν είναι απαραίτητο, το μήνυμα "χωρίζεται" σε μέρη). Ως παράμετρος, η εντολή παίρνει ένα αντικείμενο JSON που περιέχει τα πεδία "to" - τον αριθμό προορισμού και "body" - το σώμα του μηνύματος.
sendSmsAbΣτείλτε μηνύματα SMS (εάν είναι απαραίτητο, το μήνυμα "χωρίζεται" σε μέρη) σε όλους στη λίστα επαφών της μολυσμένης συσκευής. Το διάστημα μεταξύ της αποστολής μηνυμάτων είναι 10 δευτερόλεπτα. Το σώμα του μηνύματος βρίσκεται στο πεδίο JSON "body"
sendSmsMassΣτείλτε μηνύματα SMS (εάν είναι απαραίτητο, το μήνυμα "χωρίζεται" σε μέρη) στις επαφές που καθορίζονται στις παραμέτρους εντολών. Το διάστημα μεταξύ της αποστολής μηνυμάτων είναι 10 δευτερόλεπτα. Ως παράμετρος, η εντολή παίρνει έναν πίνακα JSON (το πεδίο "sms"), τα στοιχεία του οποίου περιέχουν τα πεδία "to" - τον αριθμό προορισμού και "body" - το σώμα του μηνύματος.
changeServerΑυτή η εντολή μπορεί να πάρει μια τιμή με το κλειδί "url" ως παράμετρο - τότε το bot θα αλλάξει την τιμή του nameGenerator("SERVER_URL") ή του "array" - μετά το bot θα γράψει τον πίνακα στο nameGenerator ("API_SERVER_LIST") Έτσι, η εφαρμογή αλλάζει τη διεύθυνση των διακομιστών CnC.
Αριθμός διαχειριστήΗ εντολή έχει σχεδιαστεί για να λειτουργεί με έναν αριθμό ρίζας. Η εντολή δέχεται ένα αντικείμενο JSON με τις ακόλουθες παραμέτρους: "number" — αλλαγή nameGenerator("ROOT_NUMBER") στη ληφθείσα τιμή, "resend" — change nameGenerator("SMS_ROOT_NUMBER_RESEND"), "sendId" — αποστολή στο nameGenerator("ROOT_NUMBER" ) μοναδική ταυτότητα.
updateInfoΣτείλτε πληροφορίες σχετικά με τη μολυσμένη συσκευή στον διακομιστή.
εκκαθάριση δεδομένωνΗ εντολή προορίζεται για τη διαγραφή δεδομένων χρήστη. Ανάλογα με το όνομα που ξεκίνησε η εφαρμογή, είτε τα δεδομένα διαγράφονται πλήρως με επανεκκίνηση της συσκευής (κύριος χρήστης), είτε διαγράφονται μόνο τα δεδομένα χρήστη (δευτερεύων χρήστης).
κάλτσεςΈναρξηΕκκινήστε τη μονάδα Proxy. Η λειτουργία της μονάδας περιγράφεται σε ξεχωριστή ενότητα.
κάλτσεςΣταματήστεΔιακόψτε τη μονάδα Proxy.
Ανοίξτε σύνδεσμοΑκολουθήστε τον σύνδεσμο. Ο σύνδεσμος βρίσκεται στην παράμετρο JSON κάτω από το κλειδί "url". Το "android.intent.action.VIEW" χρησιμοποιείται για το άνοιγμα του συνδέσμου.
uploadAllSmsΣτείλτε όλα τα μηνύματα SMS που λαμβάνονται από τη συσκευή στον διακομιστή.
μεταφόρτωσηΌλων των ΦωτογραφιώνΣτείλτε εικόνες από μια μολυσμένη συσκευή σε μια διεύθυνση URL. Το URL έρχεται ως παράμετρος.
ανέβασμα αρχείουΣτείλτε ένα αρχείο σε μια διεύθυνση URL από μια μολυσμένη συσκευή. Το URL έρχεται ως παράμετρος.
μεταφορτώστε Αριθμούς τηλεφώνουΣτείλτε αριθμούς τηλεφώνου από τη λίστα επαφών σας στον διακομιστή. Εάν μια τιμή αντικειμένου JSON με το κλειδί "ab" ληφθεί ως παράμετρος, η εφαρμογή λαμβάνει μια λίστα επαφών από τον τηλεφωνικό κατάλογο. Εάν ληφθεί ως παράμετρος ένα αντικείμενο JSON με το κλειδί «sms», η εφαρμογή διαβάζει τη λίστα των επαφών από τους αποστολείς των μηνυμάτων SMS.
changeArchiveΗ εφαρμογή κατεβάζει το αρχείο από τη διεύθυνση που έρχεται ως παράμετρος χρησιμοποιώντας το κλειδί "url". Το ληφθέν αρχείο αποθηκεύεται με το όνομα "archive.zip". Στη συνέχεια, η εφαρμογή θα αποσυμπιέσει το αρχείο, προαιρετικά χρησιμοποιώντας τον κωδικό πρόσβασης αρχείου "b5jXh37gxgHBrZhQ4j3D". Τα αποσυμπιεσμένα αρχεία αποθηκεύονται στον κατάλογο [εξωτερικός χώρος αποθήκευσης]/hgps. Σε αυτόν τον κατάλογο, η εφαρμογή αποθηκεύει απομιμήσεις ιστού (που περιγράφονται παρακάτω).
ενεργειώνΗ εντολή έχει σχεδιαστεί για να λειτουργεί με το Action Service, το οποίο περιγράφεται σε ξεχωριστή ενότητα.
δοκιμήΝα μην κάνεις τίποτα.
κατεβάσετεΗ εντολή προορίζεται για τη λήψη ενός αρχείου από έναν απομακρυσμένο διακομιστή και την αποθήκευση του στον κατάλογο "Λήψεις". Η διεύθυνση URL και το όνομα αρχείου έρχονται ως παράμετροι, πεδία στο αντικείμενο παραμέτρου JSON, αντίστοιχα: "url" και "fileName".
αφαιρέστεΑφαιρεί ένα αρχείο από τον κατάλογο "Λήψεις". Το όνομα αρχείου έρχεται σε μια παράμετρο JSON με το κλειδί "fileName". Το τυπικό όνομα αρχείου είναι "tmp.apk".
κοινοποίησηΕμφάνιση μιας ειδοποίησης με κείμενα περιγραφής και τίτλου που ορίζονται από τον διακομιστή διαχείρισης.

Μορφή εντολών κοινοποίηση:

{
    "results" : "OK",
    "command":{
    "id": <%id%>,
    "command":"notification",
    "timestamp":<%Server Timestamp%>,
    "params":{
        "openApp":<%Open original app or not%>,
        "array":[
                      {"title":<%Title text%>,
                      "desc":<%Description text%>,
                      "app":<%Application name%>}
                   ]
                   },
        },
}

Η ειδοποίηση που δημιουργείται από το υπό εξέταση αρχείο μοιάζει πανομοιότυπη με τις ειδοποιήσεις που δημιουργούνται από την εφαρμογή που καθορίζεται στο πεδίο app. Εάν η τιμή του πεδίου openApp — Αλήθεια, όταν ανοίγει μια ειδοποίηση, εκκινείται η εφαρμογή που καθορίζεται στο πεδίο app. Εάν η τιμή του πεδίου openApp — Λάθος, λοιπόν:

  • Ανοίγει ένα παράθυρο phishing, τα περιεχόμενα του οποίου κατεβαίνουν από τον κατάλογο <%εξωτερικός χώρος αποθήκευσης%>/hgps/<%όνομα αρχείου%>
  • Ανοίγει ένα παράθυρο phishing, τα περιεχόμενα του οποίου κατεβαίνουν από τον διακομιστή <%url%>?id=<%Bot id%>&app=<%Application name%>
  • Ανοίγει ένα παράθυρο phishing, μεταμφιεσμένο σε κάρτα Google Play, με την ευκαιρία να εισαγάγετε τα στοιχεία της κάρτας.

Η εφαρμογή στέλνει το αποτέλεσμα οποιασδήποτε εντολής στο <%CnC%>set_state.php ως αντικείμενο JSON στην ακόλουθη μορφή:

{
    "command":
    {
        "command":<%command%>,
        "id":<%command_id%>,
        "state":<%command_state%>
    }
    "id":<%bot_id%>
}

ActionsService
Η λίστα των εντολών που περιλαμβάνει οι διαδικασίες της εφαρμογής δράση. Όταν λαμβάνεται μια εντολή, η μονάδα επεξεργασίας εντολών έχει πρόσβαση σε αυτήν την υπηρεσία για να εκτελέσει την εκτεταμένη εντολή. Η υπηρεσία δέχεται ένα αντικείμενο JSON ως παράμετρο. Η υπηρεσία μπορεί να εκτελέσει τις ακόλουθες εντολές:

1. PARAMS_ACTION — όταν λαμβάνει μια τέτοια εντολή, η υπηρεσία λαμβάνει πρώτα από την παράμετρο JSON την τιμή του κλειδιού Type, η οποία μπορεί να είναι η εξής:

  • serviceInfo – η υποεντολή λαμβάνει την τιμή με κλειδί από την παράμετρο JSON περιλαμβάνειΜηΣημαντικό. Εάν η σημαία είναι True, η εφαρμογή ορίζει τη σημαία FLAG_ISOLATED_PROCESS σε μια υπηρεσία που χρησιμοποιεί την Υπηρεσία Προσβασιμότητας. Με αυτόν τον τρόπο η υπηρεσία θα ξεκινήσει σε ξεχωριστή διαδικασία.
  • ρίζα — λάβετε και στείλτε στον διακομιστή πληροφορίες σχετικά με το παράθυρο που εστιάζεται αυτήν τη στιγμή. Η εφαρμογή λαμβάνει πληροφορίες χρησιμοποιώντας την κλάση AccessibilityNodeInfo.
  • διαχειριστής — ζητήστε δικαιώματα διαχειριστή.
  • delay — ανέστειλε το ActionsService για τον αριθμό των χιλιοστών του δευτερολέπτου που καθορίζεται στην παράμετρο για το κλειδί "data".
  • παράθυρα — στείλτε μια λίστα με παράθυρα ορατά στον χρήστη.
  • εγκαθιστώ — εγκαταστήστε την εφαρμογή στη μολυσμένη συσκευή. Το όνομα του πακέτου αρχειοθέτησης βρίσκεται στο κλειδί "fileName". Το ίδιο το αρχείο βρίσκεται στον κατάλογο Λήψεις.
  • παγκόσμια – η υποεντολή προορίζεται για πλοήγηση από το τρέχον παράθυρο:
    • στο μενού Γρήγορες ρυθμίσεις
    • προς τα πίσω
    • Σπίτι
    • στις ειδοποιήσεις
    • στο παράθυρο εφαρμογών που άνοιξε πρόσφατα

  • ξεκινήσει - εκκινήστε την εφαρμογή. Το όνομα της εφαρμογής έρχεται ως παράμετρος προς κλειδί ημερομηνία.
  • ήχοι — αλλάξτε τη λειτουργία ήχου σε σιωπή.
  • ξεκλειδώσετε — ενεργοποιεί τον οπίσθιο φωτισμό της οθόνης και του πληκτρολογίου σε πλήρη φωτεινότητα. Η εφαρμογή εκτελεί αυτήν την ενέργεια χρησιμοποιώντας το WakeLock, προσδιορίζοντας τη συμβολοσειρά [Application lable]:INFO ως ετικέτα
  • permissionOverlay — η συνάρτηση δεν υλοποιείται (η απάντηση στην εκτέλεση εντολής είναι {"message":"Not support"} ή {"message":"low sdk"})
  • χειρονομία — η συνάρτηση δεν υλοποιείται (η απάντηση στην εκτέλεση εντολής είναι {"message":"Not support"}ή {"message":"Low API"})
  • δικαιώματα — αυτή η εντολή είναι απαραίτητη για να ζητήσετε δικαιώματα για την εφαρμογή. Ωστόσο, η συνάρτηση ερωτήματος δεν υλοποιείται, επομένως η εντολή δεν έχει νόημα. Η λίστα των ζητούμενων δικαιωμάτων έρχεται ως πίνακας JSON με το κλειδί "permissions". Τυπική λίστα:
    • android.permission.READ_PHONE_STATE
    • android.permission.READ_CONTACTS
    • android.permission.CALL_PHONE
    • android.permission.RECEIVE_SMS
    • android.permission.SEND_SMS
    • android.permission.READ_SMS
    • android.permission.READ_EXTERNAL_STORAGE
    • android.permission.WRITE_EXTERNAL_STORAGE

  • ανοίξτε — εμφάνιση ενός παραθύρου phishing. Ανάλογα με την παράμετρο που προέρχεται από τον διακομιστή, η εφαρμογή μπορεί να εμφανίζει τα ακόλουθα παράθυρα phishing:
    • Εμφάνιση ενός παραθύρου phishing του οποίου τα περιεχόμενα είναι γραμμένα σε ένα αρχείο σε έναν κατάλογο <%εξωτερικός κατάλογος%>/hgps/<%param_filename%>. Το αποτέλεσμα της αλληλεπίδρασης του χρήστη με το παράθυρο θα σταλεί στο <%CnC%>/records.php
    • Εμφάνιση ενός παραθύρου phishing του οποίου τα περιεχόμενα είναι προφορτωμένα από τη διεύθυνση <%url_param%>?id=<%bot_id%>&app=<%packagename%>. Το αποτέλεσμα της αλληλεπίδρασης του χρήστη με το παράθυρο θα σταλεί στο <%CnC%>/records.php
    • Εμφάνιση ενός παραθύρου phishing μεταμφιεσμένο σε κάρτα Google Play.

  • διαδραστικό — η εντολή έχει σχεδιαστεί για να αλληλεπιδρά με στοιχεία παραθύρου άλλων εφαρμογών που χρησιμοποιούν το AcessibilityService. Στο πρόγραμμα έχει εφαρμοστεί ειδική υπηρεσία για αλληλεπίδραση. Η εφαρμογή υπό διερεύνηση μπορεί να αλληλεπιδράσει με τα Windows:
    • Επί του παρόντος ενεργός. Σε αυτήν την περίπτωση, η παράμετρος περιέχει το αναγνωριστικό ή το κείμενο (όνομα) του αντικειμένου με το οποίο πρέπει να αλληλεπιδράσετε.
    • Ορατό στον χρήστη τη στιγμή που εκτελείται η εντολή. Η εφαρμογή επιλέγει τα παράθυρα κατά id.

    Έχοντας λάβει αντικείμενα AccessibilityNodeInfo Για στοιχεία παραθύρου που ενδιαφέρουν, η εφαρμογή, ανάλογα με τις παραμέτρους, μπορεί να εκτελέσει τις ακόλουθες ενέργειες:

    • εστίαση — ορίστε την εστίαση στο αντικείμενο.
    • κλικ — κάντε κλικ σε ένα αντικείμενο.
    • actionId — εκτελέστε μια ενέργεια ανά αναγνωριστικό.
    • setText — αλλαγή του κειμένου ενός αντικειμένου. Η αλλαγή του κειμένου είναι δυνατή με δύο τρόπους: εκτελέστε μια ενέργεια ACTION_SET_TEXT (αν η έκδοση Android η μολυσμένη συσκευή είναι νεότερη ή ίση με ΓΛΕΙΦΙΤΖΟΥΡΙ), ή τοποθετώντας μια συμβολοσειρά στο πρόχειρο και επικολλώντας την σε ένα αντικείμενο (για παλαιότερες εκδόσεις). Αυτή η εντολή μπορεί να χρησιμοποιηθεί για την αλλαγή δεδομένων σε μια τραπεζική εφαρμογή.

2. PARAMS_ACTIONS - το ίδιο με PARAMS_ACTION, φτάνει μόνο ένας πίνακας εντολών JSON.

Φαίνεται ότι πολλοί άνθρωποι θα ενδιαφέρονται για το πώς μοιάζει η λειτουργία της αλληλεπίδρασης με στοιχεία παραθύρου μιας άλλης εφαρμογής. Αυτός είναι ο τρόπος με τον οποίο υλοποιείται αυτή η λειτουργία στο Gustuff:

boolean interactiveAction(List aiList, JSONObject action, JsonObject res) {
    int count = action.optInt("repeat", 1);
    Iterator aiListIterator = ((Iterable)aiList).iterator();
    int count = 0;
    while(aiListIterator.hasNext()) {
        Object ani = aiListIterator.next();
        if(1 <= count) {
            int index;
            for(index = 1; true; ++index) {
                if(action.has("focus")) {
                    if(((AccessibilityNodeInfo)ani).performAction(1)) {
                        ++count;
                    }
                }
                else if(action.has("click")) {
                    if(((AccessibilityNodeInfo)ani).performAction(16)) {
                        ++count;
                    }
                }
                else if(action.has("actionId")) {
                    if(((AccessibilityNodeInfo)ani).performAction(action.optInt("actionId"))) {
                        ++count;
                    }
                }
                else if(action.has("setText")) {
                    customHeader ch = CustomAccessibilityService.a;
                    Context context = this.getApplicationContext();
                    String text = action.optString("setText");
                    if(performSetTextAction(ch, context, ((AccessibilityNodeInfo)ani), text)) {
                        ++count;
                    }
                }
                if(index == count) {
                    break;
                }
            }
        }
        ((AccessibilityNodeInfo)ani).recycle();
    }
    res.addPropertyNumber("res", Integer.valueOf(count));
}

Λειτουργία αντικατάστασης κειμένου:

boolean performSetTextAction(Context context, AccessibilityNodeInfo ani, String text) {
    boolean result;
    if(Build$VERSION.SDK_INT >= 21) {
        Bundle b = new Bundle();
        b.putCharSequence("ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE", ((CharSequence)text));
        result = ani.performAction(0x200000, b);  // ACTION_SET_TEXT
    }
    else {
        Object clipboard = context.getSystemService("clipboard");
        if(clipboard != null) {
        ((ClipboardManager)clipboard).setPrimaryClip(ClipData.newPlainText("autofill_pm", ((CharSequence)text)));
        result = ani.performAction(0x8000);  // ACTION_PASTE
        }
        else {
            result = false;
        }
    }
    return result;
}

Έτσι, με τη σωστή διαμόρφωση του διακομιστή ελέγχου, ο Gustuff μπορεί να συμπληρώσει πεδία κειμένου στην τραπεζική εφαρμογή και να κάνει κλικ στα κουμπιά που είναι απαραίτητα για την ολοκλήρωση της συναλλαγής. Ο Trojan δεν χρειάζεται καν να συνδεθεί στην εφαρμογή — αρκεί να στείλετε μια εντολή για να εμφανίσετε μια ειδοποίηση PUSH και στη συνέχεια να ανοίξετε την προηγούμενη τραπεζική εφαρμογή. Ο χρήστης θα επικυρώσει τον εαυτό του και μετά ο Gustuff θα μπορεί να γεμίσει το αυτοκίνητο.

Μονάδα επεξεργασίας μηνυμάτων SMS

Η εφαρμογή εγκαθιστά ένα πρόγραμμα χειρισμού συμβάντων για τη μολυσμένη συσκευή να δέχεται μηνύματα SMS. Η υπό μελέτη εφαρμογή μπορεί να λάβει εντολές από τον χειριστή, οι οποίες μπαίνουν στο σώμα του μηνύματος SMS. Οι εντολές έρχονται στη μορφή:

7!5=<%Base64 κωδικοποιημένη εντολή%>

Η εφαρμογή αναζητά τη συμβολοσειρά σε όλα τα εισερχόμενα μηνύματα SMS 7!5=, όταν ανιχνεύεται μια συμβολοσειρά, αποκωδικοποιεί τη συμβολοσειρά από το Base64 στο offset 4 και εκτελεί την εντολή. Οι εντολές είναι παρόμοιες με αυτές με το CnC. Το αποτέλεσμα της εκτέλεσης αποστέλλεται στον ίδιο αριθμό από τον οποίο προήλθε η εντολή. Μορφή απάντησης:

7*5=<%Base64 κωδικοποιεί "εντολή Result_code"%>

Προαιρετικά, η εφαρμογή μπορεί να στείλει όλα τα ληφθέντα μηνύματα στον αριθμό Root. Για να γίνει αυτό, πρέπει να καθοριστεί ο αριθμός Root στο αρχείο προτιμήσεων και να οριστεί η σημαία ανακατεύθυνσης μηνύματος. Ένα μήνυμα SMS αποστέλλεται στον αριθμό του εισβολέα με τη μορφή:

<%Από τον αριθμό%> — <%Ώρα, μορφή: ηη/ΜΜ/εεεε ΩΩ:λλ:δδ%> <%Σώμα SMS%>

Επίσης, προαιρετικά, η εφαρμογή μπορεί να στείλει μηνύματα στο CnC. Το μήνυμα SMS αποστέλλεται στον διακομιστή σε μορφή JSON:

{
    "id":<%BotID%>,
    "sms":
    {
        "text":<%SMS body%>,
        "number":<%From number%>,
        "date":<%Timestamp%>
    }
}

Εάν η σημαία έχει οριστεί nameGenerator("DEFAULT_APP_SMS") – η εφαρμογή σταματά την επεξεργασία του μηνύματος SMS και διαγράφει τη λίστα των εισερχόμενων μηνυμάτων.

Μονάδα διακομιστή μεσολάβησης

Η υπό μελέτη εφαρμογή περιέχει μια λειτουργική μονάδα Backconnect Proxy (εφεξής καλούμενη μονάδα Proxy), η οποία έχει μια ξεχωριστή κλάση που περιλαμβάνει στατικά πεδία με διαμόρφωση. Τα δεδομένα διαμόρφωσης αποθηκεύονται στο δείγμα σε σαφή μορφή:

πως Android- Το Gustuff Trojan αφαιρεί την κρέμα (fiat και crypto) από τους λογαριασμούς σας

Όλες οι ενέργειες που εκτελούνται από τη μονάδα Proxy συνδέονται σε αρχεία. Για να γίνει αυτό, η εφαρμογή στον Εξωτερικό χώρο αποθήκευσης δημιουργεί έναν κατάλογο που ονομάζεται "logs" (το πεδίο ProxyConfigClass.logsDir στην κλάση διαμόρφωσης), στον οποίο αποθηκεύονται τα αρχεία καταγραφής. Η καταγραφή πραγματοποιείται σε αρχεία με ονόματα:

  1. main.txt – η εργασία της κλάσης που ονομάζεται CommandServer είναι συνδεδεμένη σε αυτό το αρχείο. Στη συνέχεια, η καταγραφή της συμβολοσειράς str σε αυτό το αρχείο θα συμβολίζεται ως mainLog(str).
  2. συνεδρία-<%id%>.txt — αυτό το αρχείο αποθηκεύει δεδομένα καταγραφής που σχετίζονται με μια συγκεκριμένη περίοδο λειτουργίας διακομιστή μεσολάβησης. Στη συνέχεια, η καταγραφή της συμβολοσειράς str σε αυτό το αρχείο θα συμβολίζεται ως sessionLog (str).
  3. server.txt – αυτό το αρχείο χρησιμοποιείται για την καταγραφή όλων των δεδομένων που έχουν εγγραφεί στα παραπάνω περιγραφόμενα αρχεία.

Μορφή δεδομένων καταγραφής:

<%Date%> [Νήμα[<%thread id%>], id[]]: log-string

Οι εξαιρέσεις που προκύπτουν κατά τη λειτουργία της λειτουργικής μονάδας Proxy καταγράφονται επίσης σε ένα αρχείο. Για να γίνει αυτό, η εφαρμογή δημιουργεί ένα αντικείμενο JSON στην ακόλουθη μορφή:

{
    "uncaughtException":<%short description of throwable%>
    "thread":<%thread%>
    "message":<%detail message of throwable%>
    "trace":        //Stack trace info
        [
            {
                "ClassName":
                "FileName":
                "LineNumber":
                "MethodName":
            },
            {
                "ClassName":
                "FileName":
                "LineNumber":
                "MethodName":
            }
        ]
}

Στη συνέχεια, το μετατρέπει σε αναπαράσταση συμβολοσειράς και το καταγράφει.

Η μονάδα Proxy εκκινείται μετά τη λήψη της αντίστοιχης εντολής. Όταν λαμβάνεται μια εντολή για την εκκίνηση της λειτουργικής μονάδας Proxy, η εφαρμογή ξεκινά μια υπηρεσία που καλείται MainService, το οποίο είναι υπεύθυνο για τη διαχείριση της λειτουργίας της μονάδας Proxy - εκκίνηση και διακοπή της.

Στάδια έναρξης της υπηρεσίας:

1. Ξεκινά ένα χρονόμετρο που εκτελείται μία φορά το λεπτό και ελέγχει τη δραστηριότητα της μονάδας Proxy. Εάν η μονάδα δεν είναι ενεργή, την εκκινεί.
Επίσης όταν ενεργοποιείται το συμβάν android.net.conn.CONNECTIVITY_CHANGE Εκκινείται η λειτουργική μονάδα Proxy.

2. Η εφαρμογή δημιουργεί ένα wake-lock με την παράμετρο PARTIAL_WAKE_LOCK και τον αιχμαλωτίζει. Αυτό αποτρέπει τη μετάβαση της CPU της συσκευής σε κατάσταση αναστολής λειτουργίας.

3. Εκκινεί την κλάση επεξεργασίας εντολών της μονάδας Proxy, καταγράφοντας πρώτα τη γραμμή mainLog ("έναρξη διακομιστή") и

Διακομιστής::start() κεντρικός υπολογιστής[<%proxy_cnc%>], commandPort[<%command_port%>], proxyPort[<%proxy_port%>]

όπου proxy_cnc, command_port και proxy_port – οι παράμετροι που λαμβάνονται από τη διαμόρφωση του διακομιστή μεσολάβησης.

Καλείται η κλάση επεξεργασίας εντολών CommandConnection. Αμέσως μετά την εκκίνηση, εκτελεί τις ακόλουθες ενέργειες:

4. Συνδέεται με ProxyConfigClass.host: ProxyConfigClass.commandPort και στέλνει δεδομένα σχετικά με τη μολυσμένη συσκευή εκεί σε μορφή JSON:

{
    "id":<%id%>,
    "imei":<%imei%>,
    "imsi":<%imsi%>,
    "model":<%model%>,
    "manufacturer":<%manufacturer%>,
    "androidVersion":<%androidVersion%>,
    "country":<%country%>,
    "partnerId":<%partnerId%>,
    "packageName":<%packageName%>,
    "networkType":<%networkType%>,
    "hasGsmSupport":<%hasGsmSupport%>,
    "simReady":<%simReady%>,
    "simCountry":<%simCountry%>,
    "networkOperator":<%networkOperator%>,
    "simOperator":<%simOperator%>,
    "version":<%version%>
}

Πού:

  • id – identifier, προσπαθεί να πάρει μια τιμή με το πεδίο «id» από το αρχείο Shared Preference με το όνομα «x». Εάν αυτή η τιμή δεν μπορεί να ληφθεί, δημιουργεί μια νέα. Έτσι, η λειτουργική μονάδα Proxy έχει το δικό της αναγνωριστικό, το οποίο δημιουργείται παρόμοια με το Bot ID.
  • imei — IMEI της συσκευής. Εάν προέκυψε σφάλμα κατά τη διαδικασία λήψης της τιμής, αντί για αυτό το πεδίο θα γραφτεί ένα μήνυμα κειμένου σφάλματος.
  • imsi — Διεθνής ταυτότητα συνδρομητή κινητής τηλεφωνίας της συσκευής. Εάν προέκυψε σφάλμα κατά τη διαδικασία λήψης της τιμής, αντί για αυτό το πεδίο θα γραφτεί ένα μήνυμα κειμένου σφάλματος.
  • μοντέλο — Το ορατό όνομα στον τελικό χρήστη για το τελικό προϊόν.
  • κατασκευαστής — Ο κατασκευαστής του προϊόντος/υλισμικού (Build.MANUFACTURER).
  • androidVersion - μια συμβολοσειρά με τη μορφή "<%release_version%> (<%os_version%>),<%sdk_version%>"
  • χώρα — τρέχουσα θέση της συσκευής.
  • Το partnerId είναι μια κενή συμβολοσειρά.
  • packageName – όνομα πακέτου.
  • networkType — τύπος τρέχουσας σύνδεσης δικτύου (παράδειγμα: "WIFI", "MOBILE"). Σε περίπτωση σφάλματος, επιστρέφει null.
  • hasGsmSupport – true – εάν το τηλέφωνο υποστηρίζει GSM, διαφορετικά false.
  • simReady – κατάσταση κάρτας SIM.
  • simCountry - Κωδικός χώρας ISO (με βάση τον πάροχο κάρτας SIM).
  • networkOperator — όνομα χειριστή. Εάν προέκυψε σφάλμα κατά τη διαδικασία λήψης της τιμής, αντί για αυτό το πεδίο θα γραφτεί ένα μήνυμα κειμένου σφάλματος.
  • simOperator — Το όνομα του παρόχου υπηρεσιών (SPN). Εάν προέκυψε σφάλμα κατά τη διαδικασία λήψης της τιμής, αντί για αυτό το πεδίο θα γραφτεί ένα μήνυμα κειμένου σφάλματος.
  • έκδοση - αυτό το πεδίο αποθηκεύεται στην κλάση config· για τις δοκιμασμένες εκδόσεις του bot ήταν ίσο με "1.6".

5. Μεταβαίνει στη λειτουργία αναμονής εντολών από τον διακομιστή. Οι εντολές από τον διακομιστή έχουν τη μορφή:

  • 0 μετατόπιση – εντολή
  • 1 μετατόπιση – sessionId
  • 2 μετατόπιση – μήκος
  • 4 μετατόπιση - δεδομένα

Όταν φτάσει μια εντολή, η εφαρμογή καταγράφει:
mainLog("Header { sessionId<%id%>], type[<%command%>], length[<%length%>] }")

Οι ακόλουθες εντολές από τον διακομιστή είναι δυνατές:

ΌνομαεντολήημερομηνίαΠεριγραφή
αναγνωριστικό σύνδεσης0Αναγνωριστικό σύνδεσηςΔημιουργήστε μια νέα σύνδεση
SLEEP3ΧρόνοςΠαύση της λειτουργικής μονάδας Proxy
ΠΙΝΓΚ ΠΟΝΓΚ4-Στείλτε μήνυμα PONG

Ένα μήνυμα PONG αποτελείται από 4 byte και μοιάζει με αυτό: 0x04000000.

Όταν ληφθεί η εντολή connectId (για δημιουργία νέας σύνδεσης) CommandConnection δημιουργεί ένα παράδειγμα μιας κλάσης ProxyConnection.

  • Δύο τάξεις συμμετέχουν στο proxying: ProxyConnection и τέλος. Κατά τη δημιουργία μιας τάξης ProxyConnection σύνδεση με τη διεύθυνση ProxyConfigClass.host: ProxyConfigClass.proxyPort και μεταβίβαση του αντικειμένου JSON:

 {
    "id":<%connectionId%>
}

Σε απόκριση, ο διακομιστής στέλνει ένα μήνυμα SOCKS5 που περιέχει τη διεύθυνση του απομακρυσμένου διακομιστή με τον οποίο πρέπει να πραγματοποιηθεί η σύνδεση. Η αλληλεπίδραση με αυτόν τον διακομιστή πραγματοποιείται μέσω της κλάσης τέλος. Η ρύθμιση της σύνδεσης μπορεί να αναπαρασταθεί σχηματικά ως εξής:

πως Android- Το Gustuff Trojan αφαιρεί την κρέμα (fiat και crypto) από τους λογαριασμούς σας

Αλληλεπιδράσεις δικτύου

Για να αποτραπεί η ανάλυση κίνησης από sniffers δικτύου, η αλληλεπίδραση μεταξύ του διακομιστή CnC και της εφαρμογής μπορεί να προστατευτεί χρησιμοποιώντας το πρωτόκολλο SSL. Όλα τα δεδομένα που μεταδίδονται τόσο από όσο και προς τον διακομιστή παρουσιάζονται σε μορφή JSON. Η εφαρμογή εκτελεί τα ακόλουθα αιτήματα κατά τη λειτουργία:

  • http://<%CnC%>/api/v1/set_state.php — το αποτέλεσμα της εκτέλεσης της εντολής.
  • http://<%CnC%>/api/v1/get.php — λήψη εντολής.
  • http://<%CnC%>/api/v1/load_sms.php — λήψη μηνυμάτων SMS από μολυσμένη συσκευή.
  • http://<%CnC%>/api/v1/load_ab.php — ανέβασμα λίστας επαφών από μολυσμένη συσκευή.
  • http://<%CnC%>/api/v1/aevents.php – το αίτημα υποβάλλεται κατά την ενημέρωση των παραμέτρων που βρίσκονται στο αρχείο προτιμήσεων.
  • http://<%CnC%>/api/v1/set_card.php — μεταφόρτωση δεδομένων που ελήφθησαν χρησιμοποιώντας ένα παράθυρο ηλεκτρονικού ψαρέματος που μεταμφιέζεται στο Google Play Market.
  • http://<%CnC%>/api/v1/logs.php – μεταφόρτωση δεδομένων καταγραφής.
  • http://<%CnC%>/api/v1/records.php – μεταφόρτωση δεδομένων που λαμβάνονται μέσω παραθύρων phishing.
  • http://<%CnC%>/api/v1/set_error.php – ειδοποίηση για ένα σφάλμα που έχει συμβεί.

συστάσεις

Προκειμένου να προστατεύσουν τους πελάτες τους από την απειλή των Trojans για κινητά, οι εταιρείες πρέπει να χρησιμοποιούν ολοκληρωμένες λύσεις που τους επιτρέπουν να παρακολουθούν και να αποτρέπουν κακόβουλη δραστηριότητα χωρίς την εγκατάσταση πρόσθετου λογισμικού στις συσκευές των χρηστών.

Για να γίνει αυτό, οι μέθοδοι υπογραφής για τον εντοπισμό κινητών Trojans πρέπει να ενισχυθούν με τεχνολογίες για την ανάλυση της συμπεριφοράς τόσο του πελάτη όσο και της ίδιας της εφαρμογής. Η προστασία θα πρέπει επίσης να περιλαμβάνει μια λειτουργία αναγνώρισης συσκευής που χρησιμοποιεί τεχνολογία ψηφιακών δακτυλικών αποτυπωμάτων, η οποία θα καθιστά δυνατή την κατανόηση πότε ένας λογαριασμός χρησιμοποιείται από μια άτυπη συσκευή και έχει ήδη πέσει στα χέρια ενός απατεώνα.

Ένα θεμελιωδώς σημαντικό σημείο είναι η διαθεσιμότητα διακαναλικής ανάλυσης, η οποία επιτρέπει στις εταιρείες να ελέγχουν τους κινδύνους που προκύπτουν όχι μόνο στο Διαδίκτυο, αλλά και στο κανάλι κινητής τηλεφωνίας, για παράδειγμα, σε εφαρμογές για mobile banking, για συναλλαγές με κρυπτονομίσματα και οποιεσδήποτε άλλες οι συναλλαγές μπορούν να πραγματοποιηθούν.οικονομική συναλλαγή.

Κανόνες ασφαλείας για τους χρήστες:

  • Μην εγκαθιστάτε εφαρμογές για κινητή συσκευή με λειτουργικό σύστημα Android από πηγές εκτός του Google Play, δώστε ιδιαίτερη προσοχή στα δικαιώματα που ζητούνται από την εφαρμογή.
  • να εγκαθιστάτε τακτικά ενημερώσεις λειτουργικού συστήματος Android;
  • δώστε προσοχή στις επεκτάσεις των ληφθέντων αρχείων.
  • μην επισκέπτεστε ύποπτους πόρους.
  • Μην κάνετε κλικ σε συνδέσμους που λαμβάνονται σε μηνύματα SMS.

Πρωταγωνιστής Semyon Rogacheva, κατώτερος ειδικός στην έρευνα για κακόβουλο λογισμικό στο Group-IB Computer Forensics Laboratory.

Πηγή: www.habr.com

Αγοράστε αξιόπιστη φιλοξενία για ιστότοπους με προστασία DDoS, διακομιστές VPS VDS 🔥 Αγοράστε αξιόπιστη φιλοξενία ιστοσελίδων με προστασία DDoS, διακομιστές VPS VDS | ProHoster