Maaliskuussa 2019 suosittuun verkkoskannauspalveluun VirusTotaliin ladattiin uusi näyte macOS-haittaohjelmista kyberryhmältä OceanLotus. Takaoven suoritettavalla tiedostolla on samat ominaisuudet kuin tutkimamme macOS-haittaohjelman edellisellä versiolla, mutta sen rakenne on muuttunut ja sen havaitseminen on vaikeutunut. Valitettavasti emme löytäneet tähän näytteeseen liittyvää tiputinta, joten emme vielä tiedä tartuntavektoria.
Julkaisimme äskettäin
Analyysi
Seuraavat kolme osaa kuvaavat näytteen analysointia SHA-1-tiivisteellä E615632C9998E4D3E5ACD8851864ED09B02C77D2
. Tiedostoa kutsutaan taskulamppu, ESETin virustorjuntatuotteet havaitsevat sen muodossa OSX/OceanLotus.D.
Virheenkorjauksen esto ja hiekkalaatikkosuojaus
Kuten kaikki macOS OceanLotus -binaarit, näyte on pakattu UPX:llä, mutta useimmat pakkaajien tunnistustyökalut eivät tunnista sitä sellaisenaan. Tämä johtuu luultavasti siitä, että ne sisältävät enimmäkseen "UPX"-merkkijonosta riippuvan allekirjoituksen, lisäksi Mach-O-allekirjoitukset ovat harvinaisempia ja niitä ei päivitetä niin usein. Tämä ominaisuus vaikeuttaa staattisen sähkön havaitsemista. Mielenkiintoista on, että pakkauksen purkamisen jälkeen sisääntulopiste on osan alussa __cfstring
segmentissä .TEXT
. Tässä osiossa on lippumääritteet alla olevan kuvan mukaisesti.
Kuva 1. MACH-O __cfstring -osion attribuutit
Kuten kuvassa 2, koodin sijainnit osiossa __cfstring
voit huijata joitain purkutyökaluja näyttämällä koodia merkkijonoina.
Kuva 2. IDA:n tietona havaitsema takaovikoodi
Kun binaari on suoritettu, se luo säikeen virheenkorjausohjelmana, jonka ainoana tarkoituksena on jatkuvasti tarkistaa, onko debuggeri olemassa. Tätä virtausta varten:
— Yrittää irrottaa debuggerin soittamalla ptrace
с PT_DENY_ATTACH
pyyntöparametrina
- Tarkistaa, ovatko jotkin eksklusiiviset portit auki kutsumalla toimintoa task_get_exception_ports
- Tarkistaa, onko debuggeri kytketty alla olevan kuvan mukaisesti, tarkistamalla lipun olemassaolo P_TRACED
nykyisessä prosessissa
Kuva 3. Vianetsintäyhteyden tarkistaminen sysctl-funktiolla
Jos vahtikoira havaitsee debuggerin, toiminto kutsutaan exit
. Lisäksi näyte tarkistaa ympäristön suorittamalla kaksi komentoa:
ioreg -l | grep -e "Manufacturer" и sysctl hw.model
Sitten näyte tarkistaa palautusarvon tunnetuista virtualisointijärjestelmistä koodattua merkkijonoluetteloa vastaan: acle, vMware, virtualbox tai rinnastukset. Lopuksi seuraava komento tarkistaa, onko kone jokin seuraavista "MBP", "MBA", "MB", "MM", "IM", "MP" ja "XS". Nämä ovat järjestelmämallikoodeja, esimerkiksi "MBP" tarkoittaa MacBook Prota, "MBA" tarkoittaa MacBook Airia jne.
system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}
Tärkeimmät lisäykset
Vaikka takaoven komennot eivät ole muuttuneet Trend Micron tutkimuksen jälkeen, huomasimme muutamia muita muutoksia. Tässä näytteessä käytetyt C&C-palvelimet ovat melko uusia ja luotu 22.10.2018.
- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com
Resurssin URL-osoite on muuttunut muotoon /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35
.
Ensimmäinen C&C-palvelimelle lähetetty paketti sisältää lisätietoja isäntäkoneesta, mukaan lukien kaikki alla olevan taulukon komentojen keräämät tiedot.
Tämän kokoonpanomuutoksen lisäksi näyte ei käytä kirjastoa verkon suodattamiseen gFjMXBgyXWULmVVVzyxy
, pehmustettu nolilla. Jokaisen tiedoston salaus puretaan ja tallennetaan nimellä /tmp/store
, ja se yritetään ladata kirjastona funktiolla dlopen
, takaovi poimii viedyt toiminnot Boriry
и ChadylonV
, jotka ilmeisesti vastaavat verkkoyhteydestä palvelimen kanssa. Meillä ei ole dropperia tai muita tiedostoja näytteen alkuperäisestä sijainnista, joten emme voi jäsentää tätä kirjastoa. Lisäksi, koska komponentti on salattu, näihin merkkijonoihin perustuva YARA-sääntö ei vastaa levyltä löytyvää tiedostoa.
Kuten yllä olevassa artikkelissa kuvataan, se luo Asiakastunnus. Tämä tunnus on yhden seuraavista komennoista palautusarvon MD5-tiiviste:
- 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}'
(hanki MAC-osoite)
- tuntematon joukkue ("x1ex72x0a
"), jota on käytetty aikaisemmissa näytteissä
Ennen tiivistystä palautusarvoon lisätään "0" tai "1" osoittamaan pääkäyttäjän oikeuksia. Tämä Asiakastunnus tallennettu sisään /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex
, jos koodi suoritetaan pääkäyttäjänä tai tiedostossa ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML kaikissa muissa tapauksissa. Tiedosto on yleensä piilotettu käyttämällä toimintoa touch –t
satunnaisella arvolla.
merkkijonojen dekoodaus
Kuten aikaisemmissakin vaihtoehdoissa, merkkijonot salataan AES-256-CBC:llä (heksadesimaaliavain: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92
täytetty nolilla ja IV täytetty nolilla) funktion kautta
Toiminnon prototyypin tunteminen purkaa, skripti löytää kaikki ristiviittaukset tähän funktioon, kaikki argumentit, purkaa tietojen salauksen ja sijoittaa pelkkää tekstiä kommentin sisään ristiviittausosoitteeseen. Jotta komentosarja toimisi oikein, se on asetettava base64-dekoodaustoiminnon käyttämiin mukautettuihin aakkosiin ja määritettävä globaali muuttuja, joka sisältää avaimen pituuden (tässä tapauksessa DWORD, katso kuva 4).
Kuva 4. Globaalin muuttujan key_len määritelmä
Toiminto-ikkunassa voit napsauttaa salauksen purkutoimintoa hiiren kakkospainikkeella ja valita "Pura ja pura argumentit". Skriptin tulee sijoittaa salatut rivit kommentteihin kuvan 5 mukaisesti.
Kuva 5. Purettu teksti sijoitetaan kommentteihin
Näin puretut merkkijonot sijoitetaan kätevästi yhteen IDA-ikkunassa xrefs tätä toimintoa varten kuvan 6 mukaisesti.
Kuva 6. Xrefs to f_decrypt -funktioon
Lopullinen käsikirjoitus löytyy osoitteesta
johtopäätös
Kuten jo mainittiin, OceanLotus parantaa ja päivittää työkalupakettiaan jatkuvasti. Tällä kertaa kyberryhmä on parantanut haittaohjelmia toimimaan Mac-käyttäjien kanssa. Koodi ei ole juurikaan muuttunut, mutta koska monet Mac-käyttäjät jättävät tietoturvatuotteet huomiotta, haittaohjelmien suojaaminen havaitsemiselta on toissijaista.
ESET-tuotteet havaitsivat tämän tiedoston jo tutkimushetkellä. Koska C&C-viestintään käytetty verkkokirjasto on nyt salattu levylle, hyökkääjien käyttämää tarkkaa verkkoprotokollaa ei vielä tiedetä.
Kompromissin osoittimet
Kompromissin ilmaisimet sekä MITER ATT&CK -attribuutit ovat myös saatavilla
Lähde: will.com