Kas išeina per tavo užpakalines duris? LuLu ir macOS išeinančių ryšių problema

Tyli naktis, garsus tinklas. Klausimas nėra "ar mano Mac saugus?". Klausimas: kas, kada ir kam siunčia duomenis iš mano kompiuterio, ir ar aš tai patvirtinau?

Įsivaizduok: 3:14 nakties. Tavo "MacBook" užvožtas, tu miegi. Bet procesorius nebūtinai. Kažkoks fono procesas - gal atnaujinimų tarnyba, gal "nemokama" PDF konvertavimo programėlė, kurią įsirašei prieš pusmetį ir pamiršai - atsidaro tinklo lizdą (socket) ir kažkam prisistato.

Dauguma "Mac" naudotojų neturi jokio būdo į tai atsakyti. Ir tai ne jų kaltė: pati sistema tokio matomumo nesuteikia.

Problema: ugniasienė, kuri žiūri ne į tą pusę

macOS turi įmontuotą ugniasienę: System Settings → Network → Firewall. Naudinga. Bet jos darbo aprašas yra vienpusis - ji rūpinasi įeinančiais ryšiais. Tai reiškia: ji gina tave nuo to, kas iš tinklo bando prisijungti prie tavo kompiuterio (atviri portai, tinklo tarnybos, kaimyno skenavimai viešame Wi-Fi).

Ko ji nedaro: nestebi, kas iš tavo kompiuterio išeina.

Ir čia atsiveria didžiulis atotrūkis, nes praktiškai visos šiuolaikinės macOS grėsmės pradeda darbą būtent išeinančiu ryšiu.

Kaip grėsmės naudoja išeinantį ryšį

GrėsmėKaip naudoja išeinantį ryšį
Infostealer'iai (Atomic/AMOS, Poseidon)Nukopijuoja naršyklių slaptažodžius, sesijų cookie'us, "Keychain", kripto pinigines ir išsiunčia operatoriui
Nuotolinio valdymo įrankiai (RAT)Prisijungia prie C2 (command & control) serverio ir "klausia" užduočių
Reklamvirusiai / adwareSiunčia naršymo istoriją, injektuoja reklamas
"Cracked" programosDažnai turi antrą naudingąją apkrovą (payload), kuri kalbasi su išore
Perteklinė telemetrijaNe kenkėjas, bet ir ne tavo sąmoningas pasirinkimas

Atkreipk dėmesį į pasikartojantį žodį: išsiunčia. Ne "ištrina", ne "užšifruoja", ne "sugadina". Šiuolaikinė ataka "Mac'e" dažniausiai yra ne sabotažas, o logistika. O logistiką galima pertraukti, jei matai maršrutą.

Analogija: apsauga prie įėjimo, bet ne prie išėjimo

Įsivaizduok prekybos centrą. Prie pagrindinio įėjimo stovi apsaugos darbuotojas ir tikrina, kas įeina. Tai įmontuota macOS ugniasienė. Puiku.

Bet niekas nestovi prie tarnybinio išėjimo iš galo. Ir vagis, kuris jau įėjo per pagrindines duris kaip normalus klientas (t. y. tu pats jį atsisiuntei ir įsirašei), spokiai išsineša prekes per užpakalines duris.

Išeinančių ryšių ugniasienė = apsaugos darbuotojas prie išėjimo. Dažnai tai vienintelis momentas, kai ataką dar galima sustabdyti.

Sprendimas: kas yra LuLu ir ką ji daro

LuLu - nemokama, atviro kodo macOS ugniasienė, kurią kuria Objective-See fondas (ne pelno siekianti organizacija). Pagrindinis autorius - Patrickas Wardle'as, vienas žinomiausių macOS saugumo tyrėjų.

Ką ji daro žmonių kalba:

  • Stebi kiekvieną naują išeinantį ryšį proceso lygmenyje (naudoja Apple oficialų "Network Extension" karkasą - ne "hackus", ne "kernel" lopus).
  • Nežinomas ryšys blokuojamas pagal nutylėjimą, kol tu jo nepatvirtini.
  • Parodo pranešimą (alert): koks procesas, kokiu keliu (path) jis diske, ar pasirašytas (code signature), ir prie ko bando prisijungti.
  • Įsimena tavo sprendimą kaip taisyklę (rule). Daugiau apie tą pačią programą neklausia.
  • Leidžia bet kada peržiūrėti ir keisti visas taisykles bei žurnalą (log).

Aktuali versija - 4.4.1, reikalauja macOS 10.15 (Catalina) ar naujesnės. Atsisiuntimas: objective-see.org/products/lulu.html. Kodas: GitHub (objective-see/LuLu). Tai reiškia, kad bet kas gali patikrinti, ką saugumo programa daro su tavo duomenimis. Ugniasienė mato viską, todėl privalo būti verifikuojama.

Svarbu: LuLu nekonfliktuoja su įmontuota Apple ugniasiene. Jos viena kitą papildo - Apple gina įėjimą, LuLu gina išėjimą. Reikia abiejų.

Hakerio žvilgsnis: kodėl užpuolikui nepatinka LuLu

Užpuolikui nereikia tavo kompiuterio. Jam reikia tavo duomenų: sesijų cookie'ų (kad apeitų dviejų faktorių autentifikaciją), naršyklės slaptažodžių, kripto piniginių, korporatyvinių VPN prieigų. Duomenys turi būti išnešti. Nėra exfiltracijos - nėra pinigų.

Kokias spragas jis mato standartiniame "Mac'e":

  • Nulinis matomumas. Vartotojas fiziškai negali pastebėti, kad procesas com.apple.WebKit.Networking-panašiu vardu pasivadinęs binaras kalbasi su serveriu Rusijoje.
  • Pasitikėjimas prekės ženklu. "Mac'ai neužsikrečia" yra geriausia socialinės inžinerijos dovana, kokią užpuolikas gali gauti.
  • "Nekenksmingas" pirmasis etapas. Pirmasis atsisiųstas failas dažnai beveik tuščias - jis tik parsiunčia tikrąją naudingąją apkrovą. Blokuok tą pirmąjį ryšį, ir ataka mirs neprasidėjusi.
  • Vartotojo nuovargis. Jei sistema rodo daug pranešimų, žmogus pradeda spausti "Leisti" nežiūrėdamas. Tai psichologijos spraga, ir ja naudojasi.

Kaip bandoma apeiti išeinančių ryšių ugniasienę

Gynėjas turi žinoti savo įrankio ribas:

  • Prisijungia prie jau patvirtinto proceso. Jei naršyklei leista viskas, kenkėjas gali bandyti veikti per ją arba per patikimą sistemos komponentą.
  • Standartiniai "nuobodūs" kanalai. Ryšys per 443 portą į *.amazonaws.com ar į "Discord"/"Telegram" API atrodo normaliai. Blokuoti tokius adresus dažniausiai nerealu.
  • DNS piktnaudžiavimas. DNS srautas dažnai leidžiamas pagal nutylėjimą, todėl duomenis galima "iškrapštyti" per DNS užklausas (DNS tunneling).
  • Tiesiog tikisi, kad ugniasienės nėra. Ir apie 95 % atvejų yra teisus.

Išvada gynėjui: LuLu nėra magiškas skydas. Ji yra matomumo ir sprendimo taškas. Jos vertė - grėsmės kaina užpuolikui: iš "tyliai suveikė" į "turi apeiti dar vieną barjerą ir rizikuoti būti pastebėtas".

Gynėjo atsakas: quick wins (šiandien, ~15 min.)

  1. Įsirašyk LuLu iš oficialaus šaltinio (objective-see.org), ne iš atsitiktinio "download" portalo. Patikrink DMG failo SHA-256 sumą, paskelbtą svetainėje.
  2. Palik gamyklinius nustatymus pirmą įrašymą. Objective-See rekomenduoja: leisti Apple pasirašytas programas, leisti jau įrašytas programas, leisti DNS. Jei šias parinktis išjungsi, gausi pranešimų lavinę ir po 20 minučių LuLu išmesi. Geriau leisti dabar ir atšaukti vėliau, nei paskęsti pranešimuose.
  3. Įjunk įmontuotą Apple ugniasienę, jei dar neįjungta. Jos viena kitos nekeičia.
  4. Perskaityk 5 pirmus pranešimus lėtai. Žiūrėk: proceso vardas, kelias diske, ar pasirašyta, koks paskirties adresas.
  5. Naują programą įsirašius - tikėkis pranešimo. Jei įsirašei paprastą PDF skaitytuvą, o jis nori kalbėtis su nežinomu serveriu - tai signalas, ne nesusipratimas.

Ilgalaikė strategija

  • Default-deny naujoms programoms. Nauja programa negauna tinklo, kol nesupranti, kodėl jai jo reikia.
  • Periodiškai peržiūrėk taisykles. Kartą per mėnesį: LuLu → Rules. Ar visos programos sąraše dar egzistuoja tavo gyvenime? Ką galima pašalinti?
  • Naudok žurnalą kaip tyrimo įrankį. Įtari, kad kažkas ne taip? Žurnalas parodo Procesas → Adresas → Taisyklė → Sprendimas. Tai jau incidento tyrimo pradas.
  • Įtrauk į onboarding'ą. Jei valdai komandą su "Mac'ais": LuLu + Apple ugniasienė + "FileVault" + slaptažodžių tvarkyklė + atnaujinimai = pigus, bet realus bazinis lygis.
  • Nesitikėk, kad LuLu pakeis EDR ar antivirusą. Ji nekeičia: antivirusinės/EDR, atsarginių kopijų, atnaujinimų disciplinos, dviejų faktorių autentifikacijos.

Ką LuLu nedaro (sąžiningas sąrašas)

  • Neaptinka kenkėjų pagal parašus. Ji nežino, kas "geras" ir kas "blogas". Sprendimą priimi tu.
  • Netvarko įeinančių ryšių.
  • Nedešifruoja tavo šifruoto srauto. Ji nemato turinio, tik kryptį.
  • Neapsaugos, jei nuosekliai spausi "Leisti" viskam.
  • VPN/proxy scenarijuose taisyklių logika gali pasidaryti painesnė. Reikia atskiro pasitestavimo.

Trumpai: LuLu paverčia tylų išėjimą į sprendimą, kurį matai. O matomas sprendimas jau yra gynyba.

← Grįžti į blogą