Nepagaunamų kenkėjiškų programų nuotykiai, IV dalis: DDE ir Word dokumentų laukai

Nepagaunamų kenkėjiškų programų nuotykiai, IV dalis: DDE ir Word dokumentų laukai

Šis straipsnis yra „Fileless“ kenkėjiškų programų serijos dalis. Visos kitos serijos dalys:

Šiame straipsnyje ketinau pasinerti į dar sudėtingesnį kelių etapų be failų atakos scenarijų su prisegimu prie sistemos. Bet tada aš susidūriau su neįtikėtinai paprasta, be kodo ataka – nereikia jokių Word ar Excel makrokomandų! Ir tai daug veiksmingiau įrodo mano pirminę hipotezę, kuria grindžiamas šis straipsnių ciklas: bet kurios organizacijos išorinį perimetrą sulaužyti nėra sunku.

Pirmoji ataka, kurią aprašysiu, išnaudoja Microsoft Word pažeidžiamumą, kuris yra pagrįstas pasenusi dinaminis duomenų mainų protokolas (DDE). Ji jau buvo fiksuotas. Antrasis išnaudoja bendresnį Microsoft COM pažeidžiamumą ir objektų perdavimo galimybes.

Grįžkite į ateitį su DDE

Ar dar kas nors prisimena DDE? Tikriausiai ne daug. Tai buvo vienas pirmųjų tarpprocesiniai ryšio protokolai, leidžiantys programoms ir įrenginiams perduoti duomenis.

Pats esu su juo šiek tiek susipažinęs, nes tikrindavau ir testavau telekomunikacijų įrangą. Tuo metu DDE leido, pavyzdžiui, skambučių centrų operatoriams perkelti skambintojo ID į CRM programą, kuri galiausiai atidarė kliento kortelę. Norėdami tai padaryti, tarp telefono ir kompiuterio turėjote prijungti RS-232 laidą. Tos buvo dienos!

Kaip paaiškėjo, „Microsoft Word“ vis dar yra palaiko DDE.

Šią ataką veiksmingą be kodo daro tai, kad galite pasiekti DDE protokolą tiesiogiai iš automatinių laukų Word dokumente (nusileiskite kepurę prieš SensePost tyrimai ir publikacijos apie tai).

Laukų kodai yra dar viena senovinė MS Word funkcija, leidžianti į dokumentą įtraukti dinaminį tekstą ir šiek tiek programuoti. Ryškiausias pavyzdys yra puslapio numerio laukas, kurį galima įterpti į poraštę naudojant reikšmę {PAGE *MERGEFORMAT}. Tai leidžia automatiškai generuoti puslapių numerius.

Nepagaunamų kenkėjiškų programų nuotykiai, IV dalis: DDE ir Word dokumentų laukai
Patarimas: Meniu elementą Laukas rasite skiltyje Įterpimas.

Prisimenu, kai pirmą kartą atradau šią funkciją programoje „Word“, buvau nustebęs. Ir kol pataisa jo neišjungė, „Word“ vis dar palaikė DDE laukų parinktį. Idėja buvo tokia, kad DDE leistų Word tiesiogiai susisiekti su programa, kad ji galėtų perduoti programos išvestį į dokumentą. Tuo metu tai buvo labai jauna technologija – duomenų mainų su išorinėmis programomis palaikymas. Vėliau ji buvo išvystyta į COM technologiją, kurią taip pat apžvelgsime toliau.

Galiausiai įsilaužėliai suprato, kad ši DDE programa gali būti komandų apvalkalas, kuris, žinoma, paleido PowerShell, ir iš ten įsilaužėliai galėjo daryti ką nori.
Žemiau esančioje ekrano kopijoje parodyta, kaip aš naudojau šią slaptą techniką: mažas PowerShell scenarijus (toliau – PS) iš DDE lauko įkelia kitą PS scenarijų, kuris paleidžia antrąjį atakos etapą.

Nepagaunamų kenkėjiškų programų nuotykiai, IV dalis: DDE ir Word dokumentų laukai
Ačiū Windows už iššokantį įspėjimą, kad įtaisytasis DDEAUTO laukas slapta bando paleisti apvalkalą

Pageidautinas pažeidžiamumo išnaudojimo būdas yra naudoti variantą su lauku DDEAUTO, kuris automatiškai paleidžia scenarijų atidarant Word dokumentas.
Pagalvokime, ką galime šiuo klausimu padaryti.

Kaip naujokas įsilaužėlis, galite, pavyzdžiui, išsiųsti sukčiavimo el. laišką, apsimesdami, kad esate iš Federalinės mokesčių tarnybos, ir įterpti DDEAUTO lauką su pirmojo etapo PS scenarijumi (iš esmės lašintuvu). Ir net nereikia daryti jokio tikro makrokomandų kodavimo ir pan., kaip aš dariau ankstesnis straipsnis.
Auka atidaro jūsų dokumentą, suaktyvinamas įterptasis scenarijus, o įsilaužėlis patenka į kompiuterį. Mano atveju nuotolinis PS scenarijus tiesiog išspausdina pranešimą, tačiau jis taip pat gali lengvai paleisti PS Empire klientą, kuris suteiks nuotolinę apvalkalo prieigą.
Ir kol auka nespės ką nors pasakyti, įsilaužėliai pasirodys esantys turtingiausi kaimo paaugliai.

Nepagaunamų kenkėjiškų programų nuotykiai, IV dalis: DDE ir Word dokumentų laukai
Apvalkalas buvo paleistas be menkiausio kodavimo. Net vaikas gali tai padaryti!

DDE ir laukai

Vėliau „Microsoft“ išjungė DDE programoje „Word“, bet tik tada, kai bendrovė pareiškė, kad šia funkcija buvo tiesiog piktnaudžiaujama. Suprantamas jų nenoras ką nors keisti. Iš savo patirties aš pats mačiau pavyzdį, kai atidarant dokumentą laukų atnaujinimas buvo įjungtas, tačiau IT išjungė Word makrokomandas (tačiau rodomas pranešimas). Beje, atitinkamus nustatymus galite rasti Word nustatymų skiltyje.

Tačiau net jei lauko naujinimas įjungtas, „Microsoft Word“ papildomai praneša vartotojui, kai laukas prašo prieigos prie ištrintų duomenų, kaip tai daroma DDE atveju. „Microsoft“ jus tikrai įspėja.

Tačiau greičiausiai vartotojai vis tiek nepaisys šio įspėjimo ir suaktyvins „Word“ laukų atnaujinimą. Tai viena iš retų galimybių padėkoti „Microsoft“ už pavojingos DDE funkcijos išjungimą.

Kaip sunku šiandien rasti nepataisytą „Windows“ sistemą?

Šiam testavimui naudojau AWS darbo sritis, kad galėčiau pasiekti virtualų darbalaukį. Taip gavau nepataisytą MS Office virtualią mašiną, kuri leido įterpti lauką DDEAUTO. Neabejoju, kad panašiu būdu galima rasti ir kitų įmonių, kurios dar neįdiegė reikiamų saugos pataisų.

Daiktų paslaptis

Net jei įdiegėte šį pataisą, MS Office yra kitų saugos spragų, kurios leidžia įsilaužėliams padaryti kažką labai panašaus į tai, ką mes padarėme su Word. Kitame scenarijuje mes išmoksime naudokite „Excel“ kaip masalą sukčiavimo atakai, neįrašydami jokio kodo.

Norėdami suprasti šį scenarijų, prisiminkime „Microsoft“ komponentų objektų modelį arba trumpiau COM (komponentinio objekto modelis).

COM egzistuoja nuo 1990-ųjų ir yra apibrėžiamas kaip „kalbai neutralus, į objektą orientuotas komponento modelis“, pagrįstas RPC nuotoliniais procedūrų iškvietimais. Norėdami bendrai suprasti COM terminiją, skaitykite šis įrašas „StackOverflow“.

Iš esmės galite galvoti apie COM programą kaip „Excel“ arba „Word“ vykdomąjį failą arba kokį kitą veikiantį dvejetainį failą.

Pasirodo, gali veikti ir COM programa scenarijus - JavaScript arba VBScript. Techniškai tai vadinama scenarijus. Galbūt matėte „Windows“ failų plėtinį „.sct“ – tai oficialus scenarijaus plėtinys. Iš esmės jie yra scenarijaus kodas, įvyniotas į XML paketą:

<?XML version="1.0"?>

<scriptlet>
<registration
description="test"
progid="test"
version="1.00"
classid="{BBBB4444-0000-0000-0000-0000FAADACDC}"
remotable="true">
</registration>
<script language="JScript">
<![CDATA[

var r = new ActiveXObject("WScript.Shell").Run("cmd /k powershell -c Write-Host You have been scripted!");

]]>
</script>
</scriptlet>

Įsilaužėliai ir bandytojai atrado, kad sistemoje „Windows“ yra atskirų paslaugų ir programų, kurios priima COM objektus ir atitinkamai scenarijus.

Galiu perduoti scenarijus į Windows paslaugų programą, parašytą VBS, žinomą kaip pubprn. Jis yra C: Windowssystem32Printing_Admin_Scripts gilumoje. Beje, yra ir kitų Windows paslaugų, kurios priima objektus kaip parametrus. Pirmiausia pažiūrėkime į šį pavyzdį.

Nepagaunamų kenkėjiškų programų nuotykiai, IV dalis: DDE ir Word dokumentų laukai
Visiškai natūralu, kad apvalkalą galima paleisti net iš spausdinto scenarijaus. Pirmyn Microsoft!

Bandymui sukūriau paprastą nuotolinį scenarijų, kuris paleidžia apvalkalą ir išspausdina juokingą pranešimą: „Jūs ką tik parašėme scenarijų! Iš esmės pubprn sukuria scenarijaus objektą, leidžiantį VBScript kodui paleisti paketą. Šis metodas suteikia aiškų pranašumą įsilaužėliams, kurie nori įlįsti ir pasislėpti jūsų sistemoje.

Kitame įraše paaiškinsiu, kaip COM scenarijus gali išnaudoti įsilaužėliai naudodami Excel skaičiuokles.

Norėdami atlikti namų darbus, pažiūrėkite šis vaizdo įrašas iš Derbycon 2016, kuriame tiksliai paaiškinama, kaip įsilaužėliai naudojo scenarijus. Ir taip pat skaitykite Šis straipsnis apie scenarijus ir kažkokį pravardę.

Šaltinis: www.habr.com

Добавить комментарий