Pustolovščine izmuzljive zlonamerne programske opreme, IV. del: DDE in Wordova polja dokumentov

Pustolovščine izmuzljive zlonamerne programske opreme, IV. del: DDE in Wordova polja dokumentov

Ta članek je del serije zlonamerne programske opreme brez datotek. Vsi ostali deli serije:

V tem članku sem se nameraval poglobiti v še bolj zapleten večstopenjski scenarij napada brez datotek s pripenjanjem na sistem. Potem pa sem naletel na neverjetno preprost napad brez kode – niso bili potrebni nobeni Wordovi ali Excelovi makri! In to veliko učinkoviteje dokazuje mojo prvotno hipotezo, ki je podlaga za to serijo člankov: prebiti zunanji meja katere koli organizacije sploh ni težka naloga.

Prvi napad, ki ga bom opisal, izkorišča ranljivost Microsoft Worda, ki temelji na zastarel dinamični protokol za izmenjavo podatkov (DDE). Bila je že določen. Drugi izkorišča splošnejšo ranljivost v zmožnostih Microsoft COM in prenosa objektov.

Nazaj v prihodnost z DDE

Se še kdo spomni DDE? Verjetno ne veliko. Bilo je eno prvih medprocesni komunikacijski protokoli, ki so aplikacijam in napravam omogočali prenos podatkov.

Sam se malo spoznam, ker sem včasih preverjal in testiral telekomunikacijsko opremo. Takrat je DDE omogočil na primer operaterjem klicnih centrov prenos ID-ja klicatelja v aplikacijo CRM, ki je na koncu odprla kartico stranke. Za to ste morali telefon in računalnik povezati s kablom RS-232. To so bili dnevi!

Kot se je izkazalo, je Microsoft Word še vedno podpira DDE.

Kaj naredi ta napad učinkovit brez kode je, da lahko dostopate do protokola DDE neposredno iz samodejnih polj v dokumentu Word (kapo dol SensePost za raziskave in objave o tem).

Kode polj je še ena starodavna funkcija MS Worda, ki vam omogoča, da svojemu dokumentu dodate dinamično besedilo in malo programiranja. Najbolj očiten primer je polje številke strani, ki ga je mogoče vstaviti v nogo z vrednostjo {PAGE *MERGEFORMAT}. To omogoča samodejno ustvarjanje številk strani.

Pustolovščine izmuzljive zlonamerne programske opreme, IV. del: DDE in Wordova polja dokumentov
Namig: Element menija Polje najdete pod Vstavi.

Spomnim se, da sem bil presenečen, ko sem prvič odkril to funkcijo v Wordu. In dokler ga popravek ni onemogočil, je Word še vedno podpiral možnost polj DDE. Zamisel je bila, da bi DDE Wordu omogočil neposredno komunikacijo z aplikacijo, tako da bi lahko nato posredoval izhod programa v dokument. To je bila takrat zelo mlada tehnologija – podpora izmenjavi podatkov z zunanjimi aplikacijami. Kasneje se je razvila v tehnologijo COM, ki si jo bomo tudi ogledali v nadaljevanju.

Sčasoma so hekerji ugotovili, da bi lahko bila ta aplikacija DDE ukazna lupina, ki je seveda zagnala PowerShell, od tam pa so lahko hekerji počeli, kar so želeli.
Spodnji posnetek zaslona prikazuje, kako sem uporabil to prikrito tehniko: majhen skript PowerShell (v nadaljevanju PS) iz polja DDE naloži drug skript PS, ki sproži drugo fazo napada.

Pustolovščine izmuzljive zlonamerne programske opreme, IV. del: DDE in Wordova polja dokumentov
Hvala sistemu Windows za pojavno opozorilo, da vgrajeno polje DDEAUTO skrivaj poskuša zagnati lupino

Najprimernejši način izkoriščanja ranljivosti je uporaba različice s poljem DDEAUTO, ki samodejno zažene skript pri odpiranju Wordov dokument.
Pomislimo, kaj lahko storimo glede tega.

Kot heker začetnik lahko na primer pošljete lažno e-poštno sporočilo, pri čemer se pretvarjate, da ste iz Zvezne davčne službe, in vstavite polje DDEAUTO s skriptom PS za prvo stopnjo (v bistvu kapalko). In sploh vam ni treba izvajati pravega kodiranja makrov itd., kot sem jaz v prejšnji članek.
Žrtev odpre vaš dokument, aktivira se vdelani skript in heker konča v računalniku. V mojem primeru oddaljeni skript PS samo natisne sporočilo, vendar bi lahko prav tako enostavno zagnal odjemalca PS Empire, ki bo zagotovil oddaljeni dostop lupine.
In preden bo žrtev imela čas povedati kaj, se bo izkazalo, da so hekerji najbogatejši najstniki v vasi.

Pustolovščine izmuzljive zlonamerne programske opreme, IV. del: DDE in Wordova polja dokumentov
Lupina je bila zagnana brez najmanjšega kodiranja. To zmore tudi otrok!

DDE in polja

Microsoft je kasneje onemogočil DDE v Wordu, vendar ne preden je podjetje izjavilo, da je bila funkcija preprosto zlorabljena. Njihova nepripravljenost, da bi kaj spremenili, je razumljiva. Sam sem po svojih izkušnjah videl primer, ko je bilo omogočeno posodabljanje polj ob odpiranju dokumenta, vendar je IT onemogočil Wordove makre (vendar prikazuje obvestilo). Mimogrede, ustrezne nastavitve najdete v razdelku z nastavitvami Worda.

Tudi če je omogočeno posodabljanje polja, Microsoft Word dodatno obvesti uporabnika, ko polje zahteva dostop do izbrisanih podatkov, kot je to v primeru DDE zgoraj. Microsoft vas res opozarja.

Najverjetneje pa bodo uporabniki še vedno prezrli to opozorilo in aktivirali posodobitev polj v Wordu. To je ena redkih priložnosti, da se Microsoftu zahvalimo za onemogočanje nevarne funkcije DDE.

Kako težko je danes najti sistem Windows brez popravkov?

Za to testiranje sem za dostop do virtualnega namizja uporabil AWS Workspaces. Tako sem dobil nepopravljen virtualni stroj MS Office, ki mi je omogočil vstavljanje polja DDEAUTO. Ne dvomim, da lahko na podoben način najdete tudi druga podjetja, ki še niso namestila potrebnih varnostnih popravkov.

Skrivnost predmetov

Tudi če ste namestili ta popravek, obstajajo druge varnostne luknje v MS Officeu, ki hekerjem omogočajo, da naredijo nekaj zelo podobnega temu, kar smo storili z Wordom. V naslednjem scenariju se bomo naučili uporabite Excel kot vabo za lažno predstavljanje brez pisanja kode.

Da bi razumeli ta scenarij, se spomnimo Microsoftovega komponentnega objektnega modela ali na kratko COM (komponentni objektni model).

COM obstaja že od devetdesetih let prejšnjega stoletja in je opredeljen kot "jezikovno nevtralen, objektno usmerjen komponentni model", ki temelji na klicih oddaljenih postopkov RPC. Za splošno razumevanje terminologije COM preberite ta objava na StackOverflow.

V bistvu si lahko aplikacijo COM predstavljate kot izvršljivo datoteko Excel ali Word ali kakšno drugo binarno datoteko, ki se izvaja.

Izkazalo se je, da lahko deluje tudi aplikacija COM scenarij — JavaScript ali VBScript. Tehnično se imenuje skriptlet. Morda ste že videli pripono .sct za datoteke v sistemu Windows – to je uradna pripona za skripte. V bistvu so skriptna koda, ovita v ovoj XML:

<?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>

Hekerji in pentesterji so odkrili, da v sistemu Windows obstajajo ločeni pripomočki in aplikacije, ki sprejemajo objekte COM in s tem tudi skripte.

Skript lahko posredujem pripomočku Windows, napisanem v VBS, znanem kot pubprn. Nahaja se v globinah C:Windowssystem32Printing_Admin_Scripts. Mimogrede, obstajajo tudi drugi pripomočki Windows, ki sprejemajo predmete kot parametre. Poglejmo najprej ta primer.

Pustolovščine izmuzljive zlonamerne programske opreme, IV. del: DDE in Wordova polja dokumentov
Povsem naravno je, da je lupino mogoče zagnati tudi iz skripta za tiskanje. Naprej Microsoft!

Kot preizkus sem ustvaril preprost oddaljeni skriptni programček, ki zažene ukazno lupino in natisne smešno sporočilo "Pravkar ste bili skriptirani!" V bistvu pubprn instancira predmet skripte, kar omogoča kodi VBScript, da zažene ovoj. Ta metoda zagotavlja jasno prednost hekerjem, ki se želijo vdreti in skriti v vaš sistem.

V naslednji objavi bom razložil, kako lahko hekerji izkoristijo skripte COM, ki uporabljajo Excelove preglednice.

Za domačo nalogo si oglejte ta videoposnetek iz Derbycon 2016, ki natančno pojasnjuje, kako so hekerji uporabili skripte. In tudi brati ta članek o skriptletih in nekakšnem vzdevku.

Vir: www.habr.com

Dodaj komentar