Τον Μάρτιο του 2019, ένα νέο δείγμα κακόβουλου λογισμικού macOS από την ομάδα κυβερνοχώρου OceanLotus μεταφορτώθηκε στο VirusTotal, μια δημοφιλή διαδικτυακή υπηρεσία σάρωσης. Το εκτελέσιμο αρχείο backdoor έχει τις ίδιες δυνατότητες με την προηγούμενη έκδοση του κακόβουλου λογισμικού macOS που μελετήσαμε, αλλά η δομή του έχει αλλάξει και έχει γίνει πιο δύσκολο να εντοπιστεί. Δυστυχώς, δεν μπορέσαμε να βρούμε ένα σταγονόμετρο που να σχετίζεται με αυτό το δείγμα, επομένως δεν γνωρίζουμε ακόμη τον φορέα μόλυνσης.
Πρόσφατα δημοσιεύσαμε
Ανάλυση
Τα επόμενα τρία μέρη περιγράφουν την ανάλυση ενός δείγματος με κατακερματισμό SHA-1 E615632C9998E4D3E5ACD8851864ED09B02C77D2
. Το αρχείο καλείται φακός, τα προϊόντα προστασίας από ιούς της ESET το εντοπίζουν ως OSX/OceanLotus.D.
Anti-debugging και προστασία sandbox
Όπως όλα τα δυαδικά αρχεία macOS OceanLotus, το δείγμα είναι συσκευασμένο με UPX, αλλά τα περισσότερα εργαλεία αναγνώρισης συσκευαστή δεν το αναγνωρίζουν ως τέτοιο. Πιθανώς επειδή περιέχουν ως επί το πλείστον μια υπογραφή που εξαρτάται από την παρουσία της συμβολοσειράς "UPX" και επίσης επειδή οι υπογραφές Mach-O είναι λιγότερο συνηθισμένες και δεν ενημερώνονται τόσο συχνά. Αυτή η δυνατότητα καθιστά δύσκολη τη στατική ανίχνευση. Είναι ενδιαφέρον ότι μετά την αποσυσκευασία, το σημείο εισόδου βρίσκεται στην αρχή του τμήματος __cfstring
στο τμήμα .TEXT
. Αυτή η ενότητα έχει χαρακτηριστικά σημαίας όπως φαίνεται στην παρακάτω εικόνα.
Εικόνα 1. Χαρακτηριστικά ενότητας MACH-O __cfstring
Όπως φαίνεται στο Σχήμα 2, οι θέσεις του κώδικα στην ενότητα __cfstring
σας επιτρέπει να ξεγελάσετε ορισμένα εργαλεία αποσυναρμολόγησης εμφανίζοντας κώδικα ως συμβολοσειρές.
Σχήμα 2. Κωδικός οπισθόπορτας που ανιχνεύθηκε από το IDA ως δεδομένα
Μόλις εκτελεστεί, το δυαδικό δημιουργεί ένα νήμα ως πρόγραμμα αντιμετώπισης σφαλμάτων, του οποίου ο μοναδικός σκοπός είναι να ελέγχει συνεχώς για την παρουσία ενός προγράμματος εντοπισμού σφαλμάτων. Για αυτή τη ροή:
— Προσπαθεί να αποσυνδέσει οποιοδήποτε πρόγραμμα εντοπισμού σφαλμάτων, καλώντας ptrace
с PT_DENY_ATTACH
ως παράμετρος αιτήματος
- Ελέγχει εάν ορισμένες αποκλειστικές θύρες είναι ανοιχτές καλώντας μια λειτουργία task_get_exception_ports
- Ελέγχει εάν το πρόγραμμα εντοπισμού σφαλμάτων είναι συνδεδεμένο, όπως φαίνεται στην παρακάτω εικόνα, ελέγχοντας την παρουσία της σημαίας P_TRACED
στην τρέχουσα διαδικασία
Εικόνα 3. Έλεγχος της σύνδεσης του προγράμματος εντοπισμού σφαλμάτων χρησιμοποιώντας τη συνάρτηση sysctl
Εάν ο φύλακας εντοπίσει την παρουσία εντοπισμού σφαλμάτων, καλείται η συνάρτηση exit
. Επιπλέον, το δείγμα ελέγχει στη συνέχεια το περιβάλλον εκτελώντας δύο εντολές:
ioreg -l | grep -e "Manufacturer" и sysctl hw.model
Στη συνέχεια, το δείγμα ελέγχει την επιστρεφόμενη τιμή έναντι μιας κωδικοποιημένης λίστας συμβολοσειρών από γνωστά συστήματα εικονικοποίησης: Acle, vmware, VirtualBox ή παραλληλισμούς. Τέλος, η επόμενη εντολή ελέγχει εάν το μηχάνημα είναι ένα από τα ακόλουθα «MBP», «MBA», «MB», «MM», «IM», «MP» και «XS». Αυτοί είναι κωδικοί μοντέλων συστήματος, για παράδειγμα, "MBP" σημαίνει MacBook Pro, "MBA" σημαίνει MacBook Air κ.λπ.
system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}
Βασικές προσθήκες
Ενώ οι εντολές του backdoor δεν έχουν αλλάξει από την έρευνα της Trend Micro, παρατηρήσαμε μερικές άλλες τροποποιήσεις. Οι διακομιστές C&C που χρησιμοποιούνται σε αυτό το δείγμα είναι αρκετά νέοι και δημιουργήθηκαν στις 22.10.2018/XNUMX/XNUMX.
- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com
Η διεύθυνση URL του πόρου έχει αλλάξει σε /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35
.
Το πρώτο πακέτο που αποστέλλεται στον διακομιστή C&C περιέχει περισσότερες πληροφορίες σχετικά με τον κεντρικό υπολογιστή, συμπεριλαμβανομένων όλων των δεδομένων που συλλέγονται από τις εντολές στον παρακάτω πίνακα.
Εκτός από αυτήν την αλλαγή διαμόρφωσης, το δείγμα δεν χρησιμοποιεί βιβλιοθήκη για φιλτράρισμα δικτύου gFjMXBgyXWULmVVVzyxy
, γεμισμένο με μηδενικά. Κάθε αρχείο αποκρυπτογραφείται και αποθηκεύεται ως /tmp/store
, και γίνεται προσπάθεια φόρτωσης ως βιβλιοθήκης χρησιμοποιώντας τη συνάρτηση dlopen
, το backdoor εξάγει εξαγόμενες λειτουργίες Boriry
и ChadylonV
, τα οποία είναι προφανώς υπεύθυνα για την επικοινωνία δικτύου με τον διακομιστή. Δεν έχουμε το dropper ή άλλα αρχεία από την αρχική τοποθεσία του δείγματος, επομένως δεν μπορούμε να αναλύσουμε αυτήν τη βιβλιοθήκη. Επιπλέον, δεδομένου ότι το στοιχείο είναι κρυπτογραφημένο, ένας κανόνας YARA που βασίζεται σε αυτές τις συμβολοσειρές δεν θα ταιριάζει με το αρχείο που βρίσκεται στο δίσκο.
Όπως περιγράφεται στο παραπάνω άρθρο, δημιουργεί ταυτότητα πελάτη. Αυτό το αναγνωριστικό είναι ο κατακερματισμός MD5 της τιμής επιστροφής μιας από τις ακόλουθες εντολές:
- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformSerialNumber/ { split($0, line, """); printf("%s", line[4]); }'
- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { split($0, line, """); printf("%s", line[4]); }'
- ifconfig en0 | awk '/ether /{print $2}'
(λάβετε διεύθυνση MAC)
- άγνωστη ομάδα ("x1ex72x0a
"), το οποίο χρησιμοποιείται σε προηγούμενα δείγματα
Πριν από τον κατακερματισμό, ένα "0" ή "1" προστίθεται στην τιμή επιστροφής για να υποδείξει τα δικαιώματα root. Αυτό ταυτότητα πελάτη αποθηκευμένο σε /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex
, εάν ο κώδικας εκτελείται ως root ή στο ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML σε όλες τις άλλες περιπτώσεις. Το αρχείο συνήθως κρύβεται χρησιμοποιώντας τη συνάρτηση touch –t
με τυχαία τιμή.
Αποκωδικοποίηση συμβολοσειρών
Όπως και με τις προηγούμενες επιλογές, οι συμβολοσειρές κρυπτογραφούνται χρησιμοποιώντας AES-256-CBC (δεκαεξαδικό κλειδί: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92
γεμισμένο με μηδενικά και IV γεμάτο με μηδενικά) μέσω της συνάρτησης
Γνωρίζοντας το πρωτότυπο λειτουργίας αποκρυπτογραφήσει, το σενάριο βρίσκει όλες τις παραπομπές σε αυτήν τη συνάρτηση, όλα τα ορίσματα, στη συνέχεια αποκρυπτογραφεί τα δεδομένα και τοποθετεί απλό κείμενο μέσα σε ένα σχόλιο στη διεύθυνση παραπομπής. Για να λειτουργήσει σωστά το σενάριο, πρέπει να οριστεί στο προσαρμοσμένο αλφάβητο που χρησιμοποιείται από τη συνάρτηση αποκωδικοποίησης base64 και πρέπει να οριστεί μια καθολική μεταβλητή που να περιέχει το μήκος του κλειδιού (σε αυτήν την περίπτωση ένα DWORD, βλέπε Εικόνα 4).
Εικόνα 4. Ορισμός της καθολικής μεταβλητής key_len
Στο παράθυρο Συνάρτηση, μπορείτε να κάνετε δεξί κλικ στη συνάρτηση αποκρυπτογράφησης και να κάνετε κλικ στην επιλογή «Εξαγωγή και αποκρυπτογράφηση ορισμάτων». Το σενάριο πρέπει να τοποθετεί τις αποκρυπτογραφημένες γραμμές στα σχόλια, όπως φαίνεται στο Σχήμα 5.
Εικόνα 5. Το αποκρυπτογραφημένο κείμενο τοποθετείται στα σχόλια
Με αυτόν τον τρόπο οι αποκρυπτογραφημένες συμβολοσειρές τοποθετούνται εύκολα μαζί στο παράθυρο IDA xrefs για αυτή τη λειτουργία όπως φαίνεται στην Εικόνα 6.
Εικόνα 6. Xrefs to f_decrypt συνάρτηση
Το τελικό σενάριο βρίσκεται στο
Παραγωγή
Όπως ήδη αναφέρθηκε, η OceanLotus βελτιώνει και ενημερώνει συνεχώς την εργαλειοθήκη της. Αυτή τη φορά, η ομάδα του κυβερνοχώρου έχει βελτιώσει το κακόβουλο λογισμικό για να λειτουργεί με χρήστες Mac. Ο κώδικας δεν έχει αλλάξει πολύ, αλλά επειδή πολλοί χρήστες Mac αγνοούν τα προϊόντα ασφαλείας, η προστασία του κακόβουλου λογισμικού από τον εντοπισμό είναι δευτερεύουσας σημασίας.
Τα προϊόντα της ESET ανίχνευαν ήδη αυτό το αρχείο τη στιγμή της έρευνας. Επειδή η βιβλιοθήκη δικτύου που χρησιμοποιείται για την επικοινωνία C&C είναι πλέον κρυπτογραφημένη στο δίσκο, το ακριβές πρωτόκολλο δικτύου που χρησιμοποιείται από τους εισβολείς δεν είναι ακόμη γνωστό.
Δείκτες συμβιβασμού
Οι δείκτες συμβιβασμού καθώς και τα χαρακτηριστικά MITER ATT&CK είναι επίσης διαθέσιμα στο
Πηγή: www.habr.com