Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1
Πρόσφατα, ένας Ευρωπαίος κατασκευαστής εξοπλισμού ηλεκτρικής εγκατάστασης επικοινώνησε με την Group-IB - ο υπάλληλος του έλαβε μια ύποπτη επιστολή με κακόβουλο συνημμένο στο ταχυδρομείο. Ίλια Πομεράντσεφ, ένας ειδικός στην ανάλυση κακόβουλου λογισμικού στο CERT Group-IB, διεξήγαγε μια λεπτομερή ανάλυση αυτού του αρχείου, ανακάλυψε εκεί το λογισμικό κατασκοπείας AgentTesla και είπε τι να περιμένετε από τέτοιο κακόβουλο λογισμικό και πώς είναι επικίνδυνο.

Με αυτήν την ανάρτηση ανοίγουμε μια σειρά άρθρων σχετικά με τον τρόπο ανάλυσης τέτοιων δυνητικά επικίνδυνων αρχείων και περιμένουμε τους πιο περίεργους στις 5 Δεκεμβρίου για ένα δωρεάν διαδραστικό διαδικτυακό σεμινάριο σχετικά με το θέμα "Ανάλυση κακόβουλου λογισμικού: Ανάλυση πραγματικών περιπτώσεων". Όλες οι λεπτομέρειες είναι κάτω από το κόψιμο.

Μηχανισμός διανομής

Γνωρίζουμε ότι το κακόβουλο λογισμικό έφτασε στο μηχάνημα του θύματος μέσω μηνυμάτων ηλεκτρονικού ψαρέματος. Ο παραλήπτης της επιστολής ήταν πιθανότατα BCC.

Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1
Η ανάλυση των κεφαλίδων δείχνει ότι ο αποστολέας της επιστολής ήταν πλαστογραφημένος. Στην πραγματικότητα, η επιστολή έφυγε με vps56[.]oneworldhosting[.]com.

Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1
Το συνημμένο email περιέχει ένα αρχείο WinRar qoute_jpeg56a.r15 με ένα κακόβουλο εκτελέσιμο αρχείο QOUTE_JPEG56A.exe μέσα.

Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

Οικοσύστημα HPE

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

Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1
Τώρα ας δούμε κάθε ένα από τα στοιχεία κακόβουλου λογισμικού με περισσότερες λεπτομέρειες.

Φορτωτής

Αρχικό αρχείο QOUTE_JPEG56A.exe είναι ένα μεταγλωττισμένο AutoIt v3 γραφή.

Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1
Για να συσκοτίσει το αρχικό σενάριο, ένα συσκότιμο με παρόμοια PELock AutoIT-Obfuscator Χαρακτηριστικά.
Η αποσυμφόρηση πραγματοποιείται σε τρία στάδια:

  1. Αφαίρεση της συσκότισης Για-Αν

    Το πρώτο βήμα είναι να επαναφέρετε τη ροή ελέγχου του σεναρίου. Το Control Flow Flattening είναι ένας από τους πιο συνηθισμένους τρόπους προστασίας του δυαδικού κώδικα εφαρμογής από την ανάλυση. Οι μπερδεμένοι μετασχηματισμοί αυξάνουν δραματικά την πολυπλοκότητα της εξαγωγής και της αναγνώρισης αλγορίθμων και δομών δεδομένων.

    Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

  2. Ανάκτηση σειράς

    Δύο συναρτήσεις χρησιμοποιούνται για την κρυπτογράφηση συμβολοσειρών:

    • gdorizabegkvfca - Εκτελεί αποκωδικοποίηση τύπου Base64

      Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

    • xgacyukcyzxz - απλό byte-byte XOR της πρώτης συμβολοσειράς με το μήκος της δεύτερης

      Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

    Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

  3. Αφαίρεση της συσκότισης BinaryToString и Εκτέλεση

    Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

Το κύριο φορτίο αποθηκεύεται σε χωρισμένη μορφή στον κατάλογο γραμματοσειρές ενότητες πόρων του αρχείου.

Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1
Η σειρά κόλλησης έχει ως εξής: TIEQHCXWFG, IME, SPDGUHIMPV, KQJMWQQAQTKTFXTUOSW, AOCHKRWWSKWO, JSHMSJPS, NHHWXJBMTTSPXVN, BFUTIFWWXVE, HWJHO, AVZOUMVFRDWFLWU.

Η συνάρτηση WinAPI χρησιμοποιείται για την αποκρυπτογράφηση των εξαγόμενων δεδομένων CryptDecrypt, και το κλειδί περιόδου λειτουργίας που δημιουργείται με βάση την τιμή χρησιμοποιείται ως κλειδί fZgFiZlJDxvuWatFRgRXZqmNCIyQgMYc.

Το αποκρυπτογραφημένο εκτελέσιμο αρχείο αποστέλλεται στην είσοδο συνάρτησης RunPE, που πραγματοποιεί ProcessInject в RegAsm.exe χρησιμοποιώντας ενσωματωμένο ShellCode (γνωστός και ως RunPE ShellCode). Η συγγραφή ανήκει στον χρήστη του ισπανικού φόρουμ ανιχνεύσιμα[.]δικτυ με το ψευδώνυμο Wardow.

Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1
Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1
Αξίζει επίσης να σημειωθεί ότι σε ένα από τα threads αυτού του φόρουμ, ένας επισκιαστής για AutoIt με παρόμοιες ιδιότητες που εντοπίστηκαν κατά την ανάλυση του δείγματος.

Ίδιος ShellCode αρκετά απλό και τραβάει την προσοχή μόνο δανεισμένο από την ομάδα χάκερ AnunakCarbanak. Λειτουργία κατακερματισμού κλήσεων API.

Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1
Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

Γνωρίζουμε επίσης περιπτώσεις χρήσης Frenchy Shellcode διαφορετικές εκδόσεις.
Εκτός από την περιγραφόμενη λειτουργικότητα, εντοπίσαμε επίσης ανενεργές συναρτήσεις:

  • Αποκλεισμός χειροκίνητου τερματισμού διαδικασίας στη διαχείριση εργασιών

    Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

  • Επανεκκίνηση μιας θυγατρικής διαδικασίας όταν τερματιστεί

    Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

  • Παράκαμψη UAC

    Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

  • Αποθήκευση του ωφέλιμου φορτίου σε ένα αρχείο

    Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

  • Επίδειξη modal windows

    Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

  • Αναμονή για αλλαγή της θέσης του δρομέα του ποντικιού

    Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

  • AntiVM και AntiSandbox

    Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

  • αυτοκαταστροφή

    Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

  • Άντληση ωφέλιμου φορτίου από το δίκτυο

    Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

Γνωρίζουμε ότι μια τέτοια λειτουργικότητα είναι χαρακτηριστική για το προστατευτικό CypherIT, που, προφανώς, είναι ο εν λόγω bootloader.

Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

Κύρια ενότητα λογισμικού

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

Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1
Κατά τη διάρκεια της ανάλυσης, ανακαλύψαμε ότι χρησιμοποιήθηκε συσκότιση ConfuserEX.

Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

IELibrary.dll

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

Το Agent Tesla είναι ένα αρθρωτό λογισμικό κατασκοπείας που διανέμεται χρησιμοποιώντας ένα μοντέλο κακόβουλου λογισμικού ως υπηρεσία υπό το πρόσχημα ενός νόμιμου προϊόντος keylogger. Ο πράκτορας Tesla είναι σε θέση να εξάγει και να μεταδίδει διαπιστευτήρια χρήστη από προγράμματα περιήγησης, προγράμματα-πελάτες email και προγράμματα-πελάτες FTP στον διακομιστή σε εισβολείς, να καταγράφει δεδομένα από το πρόχειρο και να καταγράφει την οθόνη της συσκευής. Κατά τη στιγμή της ανάλυσης, ο επίσημος ιστότοπος των προγραμματιστών δεν ήταν διαθέσιμος.

Το σημείο εισόδου είναι η λειτουργία GetSavedPasswords κατηγορία InternetExplorer.

Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1
Γενικά, η εκτέλεση του κώδικα είναι γραμμική και δεν περιέχει καμία προστασία έναντι της ανάλυσης. Μόνο η απραγματοποίητη συνάρτηση αξίζει προσοχής GetSavedCookies. Προφανώς, η λειτουργικότητα του plugin έπρεπε να επεκταθεί, αλλά αυτό δεν έγινε ποτέ.

Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

Προσάρτηση του bootloader στο σύστημα

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

  1. Σε φάκελο C:UsersPublic δημιουργείται σενάριο Visual Basic

    Παράδειγμα σεναρίου:

    Η προσέλευση απέτυχε: ας εκθέσουμε την AgentTesla σε καθαρό νερό. Μέρος 1

  2. Τα περιεχόμενα του αρχείου φόρτωσης συμπληρώνονται με έναν μηδενικό χαρακτήρα και αποθηκεύονται στο φάκελο %Temp%
  3. Δημιουργείται ένα κλειδί αυτόματης εκτέλεσης στο μητρώο για το αρχείο δέσμης ενεργειών HKCUSoftwareMicrosoftWindowsCurrentVersionRun

Έτσι, με βάση τα αποτελέσματα του πρώτου μέρους της ανάλυσης, μπορέσαμε να καθορίσουμε τα ονόματα των οικογενειών όλων των στοιχείων του υπό μελέτη κακόβουλου λογισμικού, να αναλύσουμε το μοτίβο μόλυνσης και επίσης να αποκτήσουμε αντικείμενα για τη σύνταξη υπογραφών. Θα συνεχίσουμε την ανάλυση αυτού του αντικειμένου στο επόμενο άρθρο, όπου θα εξετάσουμε την κύρια ενότητα με περισσότερες λεπτομέρειες AgentTesla. Μην χάσετε!

Παρεμπιπτόντως, στις 5 Δεκεμβρίου προσκαλούμε όλους τους αναγνώστες σε ένα δωρεάν διαδραστικό διαδικτυακό σεμινάριο με θέμα «Ανάλυση κακόβουλου λογισμικού: ανάλυση πραγματικών περιπτώσεων», όπου ο συγγραφέας αυτού του άρθρου, ειδικός του CERT-GIB, θα δείξει στο διαδίκτυο το πρώτο στάδιο του Ανάλυση κακόβουλου λογισμικού - ημιαυτόματη αποσυσκευασία δειγμάτων χρησιμοποιώντας το παράδειγμα τριών πραγματικών μίνι περιπτώσεων από την πρακτική, και μπορείτε να λάβετε μέρος στην ανάλυση. Το διαδικτυακό σεμινάριο είναι κατάλληλο για ειδικούς που έχουν ήδη εμπειρία στην ανάλυση κακόβουλων αρχείων. Η εγγραφή γίνεται αυστηρά από εταιρικό email: εγγραφείτε. Σε περιμένω!

Yara

rule AgentTesla_clean{
meta:
    author = "Group-IB"
    file = "78566E3FC49C291CB117C3D955FA34B9A9F3EEFEFAE3DE3D0212432EB18D2EAD"
    scoring = 5
    family = "AgentTesla"
strings:
    $string_format_AT = {74 00 79 00 70 00 65 00 3D 00 7B 00 30 00 7D 00 0D 00 0A 00 68 00 77 00 69 00 64 00 3D 00 7B 00 31 00 7D 00 0D 00 0A 00 74 00 69 00 6D 00 65 00 3D 00 7B 00 32 00 7D 00 0D 00 0A 00 70 00 63 00 6E 00 61 00 6D 00 65 00 3D 00 7B 00 33 00 7D 00 0D 00 0A 00 6C 00 6F 00 67 00 64 00 61 00 74 00 61 00 3D 00 7B 00 34 00 7D 00 0D 00 0A 00 73 00 63 00 72 00 65 00 65 00 6E 00 3D 00 7B 00 35 00 7D 00 0D 00 0A 00 69 00 70 00 61 00 64 00 64 00 3D 00 7B 00 36 00 7D 00 0D 00 0A 00 77 00 65 00 62 00 63 00 61 00 6D 00 5F 00 6C 00 69 00 6E 00 6B 00 3D 00 7B 00 37 00 7D 00 0D 00 0A 00 73 00 63 00 72 00 65 00 65 00 6E 00 5F 00 6C 00 69 00 6E 00 6B 00 3D 00 7B 00 38 00 7D 00 0D 00 0A 00 5B 00 70 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 73 00 5D 00}
    $web_panel_format_string = {63 00 6C 00 69 00 65 00 6E 00 74 00 5B 00 5D 00 3D 00 7B 00 30 00 7D 00 0D 00 0A 00 6C 00 69 00 6E 00 6B 00 5B 00 5D 00 3D 00 7B 00 31 00 7D 00 0D 00 0A 00 75 00 73 00 65 00 72 00 6E 00 61 00 6D 00 65 00 5B 00 5D 00 3D 00 7B 00 32 00 7D 00 0D 00 0A 00 70 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 5B 00 5D 00 3D 00 7B 00 33 00 7D 00 00 15 55 00 52 00 4C 00 3A 00 20 00 20 00 20 00 20 00 20 00 20 00 00 15 55 00 73 00 65 00 72 00 6E 00 61 00 6D 00 65 00 3A 00 20 00 00 15 50 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 3A 00}
condition:
     all of them
}

rule  AgentTesla_obfuscated {
meta:
    author = "Group-IB"
    file = "41DC0D5459F25E2FDCF8797948A7B315D3CB075398D808D1772CACCC726AF6E9"
    scoring = 5
    family = "AgentTesla"
strings:
    $first_names = {61 66 6B 00 61 66 6D 00 61 66 6F 00 61 66 76 00 61 66 79 00 61 66 78 00 61 66 77 00 61 67 6A 00 61 67 6B 00 61 67 6C 00 61 67 70 00 61 67 72 00 61 67 73 00 61 67 75 00}
    $second_names = "IELibrary.resources"
condition:
     all of them
}

rule AgentTesla_module_for_IE{
meta:
    author = "Group-IB"
    file = "D55800A825792F55999ABDAD199DFA54F3184417215A298910F2C12CD9CC31EE"
    scoring = 5
    family = "AgentTesla_module_for_IE"
strings:
    $s0 = "ByteArrayToStructure" 
    $s1 = "CryptAcquireContext" 
    $s2 = "CryptCreateHash" 
    $s3 = "CryptDestroyHash" 
    $s4 = "CryptGetHashParam" 
    $s5 = "CryptHashData"
    $s6 = "CryptReleaseContext" 
    $s7 = "DecryptIePassword" 
    $s8 = "DoesURLMatchWithHash" 
    $s9 = "GetSavedCookies" 
    $s10 = "GetSavedPasswords" 
    $s11 = "GetURLHashString"  
condition:
     all of them
}

rule RunPE_shellcode {
meta:
    author = "Group-IB"
    file = "37A1961361073BEA6C6EACE6A8601F646C5B6ECD9D625E049AD02075BA996918"
    scoring = 5
    family = "RunPE_shellcode"
strings:
    $malcode = {
      C7 [2-5] EE 38 83 0C // mov     dword ptr [ebp-0A0h], 0C8338EEh
      C7 [2-5] 57 64 E1 01 // mov     dword ptr [ebp-9Ch], 1E16457h
      C7 [2-5] 18 E4 CA 08 // mov     dword ptr [ebp-98h], 8CAE418h
      C7 [2-5] E3 CA D8 03 // mov     dword ptr [ebp-94h], 3D8CAE3h
      C7 [2-5] 99 B0 48 06 // mov     dword ptr [ebp-90h], 648B099h
      C7 [2-5] 93 BA 94 03 // mov     dword ptr [ebp-8Ch], 394BA93h
      C7 [2-5] E4 C7 B9 04 // mov     dword ptr [ebp-88h], 4B9C7E4h
      C7 [2-5] E4 87 B8 04 // mov     dword ptr [ebp-84h], 4B887E4h
      C7 [2-5] A9 2D D7 01 // mov     dword ptr [ebp-80h], 1D72DA9h
      C7 [2-5] 05 D1 3D 0B // mov     dword ptr [ebp-7Ch], 0B3DD105h
      C7 [2-5] 44 27 23 0F // mov     dword ptr [ebp-78h], 0F232744h
      C7 [2-5] E8 6F 18 0D // mov     dword ptr [ebp-74h], 0D186FE8h
      }
condition:
    $malcode 
}

rule AgentTesla_AutoIT_module{
meta:
    author = "Group-IB"
    file = "49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08C05B5E3BD36FD52668D196AF"
    scoring = 5
    family = "AgentTesla"
strings:                                    
    $packedexeau = {55 ED F5 9F 92 03 04 44 7E 16 6D 1F 8C D7 38 E6 29 E4 C8 CF DA 2C C4 E1 F3 65 48 25 B8 93 9D 66 A4 AD 3C 39 50 00 B9 60 66 19 8D FC 20 0A A0 56 52 8B 9F 15 D7 62 30 0D 5C C3 24 FE F8 FC 39 08 DF 87 2A B2 1C E9 F7 06 A8 53 B2 69 C3 3C D4 5E D4 74 91 6E 9D 9A A0 96 FD DB 1F 5E 09 D7 0F 25 FB 46 4E 74 15 BB AB DB 17 EE E7 64 33 D6 79 02 E4 85 79 14 6B 59 F9 43 3C 81 68 A8 B5 32 BC E6}
condition:
     all of them
}

Πασάκια

Όνομα qoute_jpeg56a.r15
MD5 53BE8F9B978062D4411F71010F49209E
SHA1 A8C2765B3D655BA23886D663D22BDD8EF6E8E894
SHA256 2641DAFB452562A0A92631C2849B8B9CE880F0F8F

890E643316E9276156EDC8A

Χαρακτηριστικά Αρχειοθέτηση WinRAR
Μέγεθος 823014
Όνομα QOUTE_JPEG56A.exe
MD5 329F6769CF21B660D5C3F5048CE30F17
SHA1 8010CC2AF398F9F951555F7D481CE13DF60BBECF
SHA256 49F94293F2EBD8CEFF180EDDD58FA50B30DC0F08

C05B5E3BD36FD52668D196AF

Χαρακτηριστικά PE (Μεταγλωττισμένο σενάριο AutoIt)
Μέγεθος 1327616
Αρχικό Όνομα Άγνωστος
Σφραγίδα ημερομηνίας 15.07.2019
Links Microsoft Linker (12.0)[EXE32]
MD5 C2743AEDDADACC012EF4A632598C00C0
SHA1 79B445DE923C92BF378B19D12A309C0E9C5851BF
SHA256 37A1961361073BEA6C6EACE6A8601F646C5B6ECD

9D625E049AD02075BA996918

Χαρακτηριστικά ShellCode
Μέγεθος 1474

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο