Zapisi in dokumenti iz področja prava, človekovih pravic in tehnologije.

Spreminjanje metapodatkov DOCX datotek

V tokratnem prispevku si bomo ogledali preprost, a včasih zelo uporaben hack za spreminjanje metapodatkov v DOCX datotekah. Konkretno, gre za metapodatke, ki izvirajo iz funkcije sledenja spremembam.

Avtor spremembe.

Avtor spremembe.

Ko namreč v MS Word ali LibreOffice Writer vključimo funkcijo beleženja sprememb, urejevalnik besedila vsako spremembo besedila zabeleži, poleg nje pa tudi datum in čas spremembe ter avtorja.

Teh podatkov se v urejevalniku besedila ne da spreminjati. Seveda pa to ne pomeni, da jih ni mogoče spremeniti. DOCX datoteke imajo namreč strukturo, ki jo je mogoče relativno enostavno spreminjati.

Kako to naredimo?

Datoteko DOCX najprej shranimo v neko prazno mapo. Nato jo s programom unzip razširimo:

unzip dokument.docx

V mapi se nam sedaj pojavi datoteka “[Content_Types].xml” ter tri mape: “docProps“, “_rels” in “word“. V teh mapah se nahajajo druge podmape in kup XML datotek.

Vstopimo v mapo word in v njej v vseh XML datotekah poiščemo niz “w:author=“:

cd word
grep *.xml -e "w:author="

Ukaz nam vrne izpis vseh datotek z označenimi najdenimi nizi. Le-ti se praviloma nahajajo v datotekah comments.xml in document.xml.

Iskani podatki v XML datoteki.

Iskani podatki v XML datoteki.

Sedaj želeno ime avtorja v vseh XML datotekah spremenimo. Npr., takole:

sed -i 's/"Neznani avtor"/"Znani pisec"/g' *.xml

Na podoben način (lahko tudi z ročnim urejanjem) lahko spreminjamo tudi datume in čase sprememb, itd.

Sedaj vsebino DOCX datoteke, ki smo jo prej razširili (torej datoteko “[Content_Types].xml” ter tri mape “docProps“, “_rels” in “word“) ponovno stisnemo v enotno ZIP datoteko, le-to pa nato preimenujemo v DOCX.

To datoteko sedaj odpremo z urejevalnikom besedil (MS Word, LibreOffice Writer,…). Rezultat je pričakovan.

Spremenjeni avtor spremembe.

Spremenjeni avtor spremembe.

In če imamo namesto DOCX datoteke navadno DOC datoteko? No, potem jo odpremo v urejevalniku besedil, pretvorimo v DOCX, izvedemo opisan postopek in na koncu ponovno shranimo v DOC zapisu.

Preprosto, kajne?

Ministrstvo za obrambo kupuje IMSI lovilec

Če v iskalnik Google vpišemo iskalni niz “IMSI filetype:xls site:vlada.si“, bo iskalnik Google poiskal vse dokumente vrste XLS (Excel datoteke), ki se nahajajo na domeni vlada.si (pa tudi na njenih poddomenah) ter vsebujejo besedo “IMSI”.

Iskalnik nam v tem primeru vrne zanimiv dokument, ki je bil nazadnje spremenjen 1. 8. 2016 ob 8:15 in sicer s strani osebe, ki je na ministrstvu za javno upravo zaposlena kot sekretarka.

Dokument Prem.2017prip.xls

Dokument Prem.2017prip.xls

Gre za Excelovo preglednico z dvema zavihkoma, zanimiv pa je zavihek “Načrt pridobivanja premičnega premoženja“.

V vrstici 350 namreč preberemo, da ministrstvo za obrambo za 60.000 EUR načrtuje nakup naprave “Mini IMSI catcher za preverjanje prisotnosti posameznih GSM“.

Minintrstvo za obrambo načrtuje nakup lovilca IMSI številk.

Minintrstvo za obrambo načrtuje nakup lovilca IMSI številk.

Iz URL naslova lahko uganemo, da gre za dokument, ki je del vladnih gradiv. Če na spletni strani vlade v iskalnik vpišemo ime datoteke (“Prem.2017prip.xls“), ugotovimo, da je datoteka del predloga odloka o načrtu ravnanja s stvarnim premoženjem države za organe državne uprave, pravosodne organe, javne zavode, javne gospodarske zavode, javne agencije in javne sklade za leto 2017 (šifra dokumenta: 00714-19/2016/3, EVA: 2016-3130-0032).

Očitno torej ministrstvo za obrambo oziroma najbolj verjetno kar njegova obveščevalno varnostna služba OVS v letu 2017 načrtuje nakup lovilca IMSI številk.

Mimogrede, enak znesek, torej 60.000 EUR namerava porabiti tudi SOVA, pri čemer vrsto premičnega premoženja opisuje zgolj kot “Drugo premično premoženje”. Za kaj točno gre seveda lahko le ugibamo.

Naj še dodamo, da ima dva lovilca IMSI številk tudi slovenska policija, vendar pa za njuno uporabo še vedno nima pravne podlage (predvidoma naj bi jo pridobila šele naslednje leto).

Glede na dolgo zgodovino policijskega zavajanja javnosti in odvetnikov glede obstoja in uporabe IMSI lovilca lahko sklepamo, da je nadzor nad uporabo tovrstnih naprav s strani policije precej pomanjkljiv. Zato se lahko utemeljeno vprašamo kakšen je šele nadzor nad IMSI lovilci v lasti SOVE in ministrstva za obrambo.

A to verjetno ni tako pomembno. Pomembno je, da je bila opravljena ocena finančnih posledic.

USB Guard – orodje za nadzor nad priključenimi USB napravami

Zlonamerne USB naprave lahko ogrozijo naš računalnik na različne načine. Najbolj enostaven način je, da USB disk vsebuje zlonamerno kodo, ki jo po možnosti še samodejno zažene (tim. autorun). Zato je funkcijo samodejnega zagona programske opreme iz prenosnih nosilcev podatkov smiselno onemogočiti. V Ubuntu to nastavimo, med Nastavitve – Podrobnosti, a četudi je samodejen zagon programske opreme omogočen, nas bo Ubuntu pred zagonom še vedno vprašal ali naj se aplikacija zažene ali ne.

Autorun funkcija v Ubuntu sistemu.

Autorun funkcija v Ubuntu sistemu.

Naslednja skupina zlonamernih naprav so strojni prestrezniki tipkanja. Gre za napravice, ki jih napadalec priključi med tipkovnico in računalnik in prestrezajo pritisnjene tipke. Nekatere teh naprav se predstavijo kot USB razdelilci in jih je mogoče zaznati, nekatere pa so povsem pasivne. Take naprave je sicer mogoče zaznati s fizičnim pregledom računalnika, saj so večinoma zunanje, čeprav obstajajo tudi USB naprave, ki jih je mogoče skriti v notranjost računalnika.

Obstajajo tudi simulatorji tipkanja, ki se sprožijo ob določenem dogodku. Tako bo na primer zlonamerna naprava počaka, da se nekdo v sistem prijavi z administratorskimi privilegiji, nato pa s pomočjo simulacije tipkovnice vnese serijo ukazov za spremembo nastavitev požarnega zidu ali dodajanje novega uporabnika.

Obstajajo pa tudi naprave, ki jih pri forenzičnem zasegu uporablja policija. Gre za naprave, ki preprečujejo zaklep zaslona, na primer tako, da simulirajo stalno premikanje miške.

Na srečo za nekatere teh napadov obstajajo rešitve. Poleg fizičnega pregleda kaj vse je priključeno v računalnik, pa obstajajo tudi rešitve, ki na nivoju operacijskega sistema zaznajo katera USB naprava je bila vključena v računalnik in potem na podlagi določenih pravil uporabo dovolijo ali pa onemogočijo.

Ena izmed takšnih aplikacij je USB Guard. Gre za programsko ogrodje, ki omogoča določanje pravil dostopa do USB naprav. Ko je v računalnik vstavljena nova USB naprava, USB Guard na podlagi pravil uporabo naprave dovoli, blokira ali napravo nemudoma odklopi iz sistema. Privzeta akcija je blokada, lahko pa to spremenimo.

Prevajanje in namestitev

Žal USB Guard (še) ni na voljo za Ubuntu sisteme, oziroma bo na voljo z naslednjo različico Ubuntuja. Tisti, ki uporabljamo Ubuntu 16.04 LTS (Xenial), moramo USB Guard namestiti ročno.

Na srečo namestitev ni preveč težavna.

Najprej iz interneta na naš računalnik potegnemo programsko kodo USB Guarda:

git clone https://github.com/dkopecek/usbguard

Nato namestimo potrebne programske pakete:

sudo apt install libgcrypt11-dev libsodium-dev protobuf-compiler libprotobuf-dev libdbus-1-dev libdbus-glib-1-dev libpolkit-gobject-1-dev

Na koncu pa prevedemo in namestimo programsko kodo:

cd usbguard/
./autogen.sh
./configure --prefix=/usr --sysconfdir=/etc --with-bundled-catch --with-bundled-pegtl --with-gui-qt=qt4 --enable-systemd
make
sudo make install

Če želimo, poženemo še test:

make check

Na koncu poženemo še ldconfig, da bo aplikacijo mogoče takoj zaganjati (brez potrebe po ponovnem zagonu sistema):

sudo ldconfig

Priprava na zagon

Sedaj določimo začetno politiko – dovolimo uporabo vseh trenutno priključenih USB naprav:

sudo usbguard generate-policy > rules.conf
sudo install -m 0600 -o root -g root rules.conf /etc/usbguard/rules.conf

Sedaj je potrebno odpreti in nekoliko popraviti nastavitveno datoteko:

sudo nano /etc/usbguard/usbguard-daemon.conf

Poiščemo naslednji dve nastavitvi:

IPCAllowedUsers=root
IPCAllowedGroups=wheel

Ti dve nastavitvi povesta kateri uporabniki in katere skupine lahko nastavljajo pravila za USB naprave. Težava je v tem, da Ubuntu in Debian sistemi privzeto sploh nimajo skupine wheel. Zato bodo nastavitve lahko spreminjali kar vsi uporabniki! To je seveda resna varnostna ranljivost, zato skupino wheel zamenjamo s sudo:

IPCAllowedGroups=sudo

Nato pa lahko zaženemo demona:

sudo systemctl restart usbguard

Ali USB Guard res teče lahko preverimo z ukazom:

sudo systemctl status usbguard.service

Dobimo približno takle izpis:

● usbguard.service - USBGuard daemon
Loaded: loaded (/lib/systemd/system/usbguard.service; disabled; vendor preset: enabled)
Active: active (running) since pon 2016-12-12 11:01:25 CET; 6s ago
Docs: man:usbguard-daemon(8)
Main PID: 29930 (usbguard-daemon)
CGroup: /system.slice/usbguard.service
└─29930 /usr/sbin/usbguard-daemon -k -c /etc/usbguard/usbguard-daemon.conf

Zagon grafičnega vmesnika

Na koncu zaženemo še grafični vmesnik, oziroma tim. aplet, ki bdi nad dogajanjem na USB vodilu in nas v primeru priključitve nove naprave vpraša kaj storiti.

Aplet zaženemo z ukazom:

usbguard-applet-qt

Še bolje je, če v Ubuntu sistemu nastavimo, da se samodejno zažene ob prijavi uporabnika v sistem. To storimo preko aplikacije “Začetni programi“:

Samodejni zagon USB Guard apleta.

Samodejni zagon USB Guard apleta.

Po zagonu se bo aplet v obliki modrega ščita pojavil v menijski vrstici zgoraj desno.

Uporaba

Sedaj v USB vmesnik vtaknemo novo USB napravo. USB Guard bo napravo zaznal in nas vprašal ali naj uporabo dovoli ali ne.

USB Guard v akciji.

USB Guard v akciji.

Uporabnik ima sedaj 20 sekund časa za določitev pravila. Če ne stori nič, bo uporaba naprave blokirana.

Pravila sicer lahko tudi ročno popravljamo v datoteki /etc/usbguard/rules.conf. Za urejanje potrebujemo skrbniški dostop. Pravila so v obliki:

allow id XXXX:XXXX serial "099XXXAD205U2XXX" name "Mass Storage Device" hash "87lv9bcYDR1HRSSXXJ0XXXCIAbXXXjwIepdz9mmNfng=" with-interface XX:XX:XX

V primeru, da želimo pravilo spremeniti, samo poiščemo ustrezno napravo in spremenimo prvo besedo (allow/block/reject), nato pa USB Guard demon ponovno zaženemo:

sudo systemctl restart usbguard

Podrobnejša navodila za pisanje pravil (npr. pravilo, da blokiramo vse nosilce podatkov, ki imajo tudi funkcionalnost tipkovnice, itd.) so na voljo na spletu.

Naj za konec dodamo, da ima aplikacija še nekaj porodnih težav. Nekateri uporabniki so poročali, da jim je USB Guard po nadgradnji sistema zablokiral priklop vseh USB naprav (tudi tipkovnice in miške), zato je ob večjih nadgradnjah sistema morda smiselno delovanje aplikacije začasno onemogočiti.

Predvsem pa je problematična varnostna ranljivost povezana z neobstoječo skupino wheel ter dejstvo, da za spreminjanje nastavitev UB Guard aplet ne zahteva vnosa sistemskega (oz. sudo) gesla. No, napaka je sicer razvijalcem že prijavljena…

A te težave bodo slej ko prej odpravljene in upajmo, da bo aplikacija nekoč postala obvezen del vsakega Linux sistema.