Operační systémy 14. Microsoft Windows Obsah: DOS, Windows pro DOS Windows NT, Windows CE uživatelé, MIC, UAC SMB, Doména Windows, Active Directory LM hash, NT hash © Milan Keršláger http://www.pslib.cz/ke/slajdy 30. 4. 2015 http://creativecommons.org/licenses/by-nc-nd/3.0/
DOS Disk Operating System žádný DOS se nejmenoval DOS :-) Q-DOS, MS-DOS, IBM-DOS, Dr.DOS, FreeDOS, … pro počítače IBM PC a kompatibilní první v roce 1981 (IBM PC)
DOS a 16bitový Intel 8086 20bitová adresní sběrnice max 1 MiB RAM rezervovaná oblast paměti pro rozšiřující karty → pro systém a programy jen 640 KiB DOS nelze pokládat za skutečný operační systém kvůli procesoru nemohl udržet plnou kontrolu nad počítačem 16bitový režim nepodporuje klíčové vlastnosti: ochrana paměti, privilegovaný režim, stránkování DOS využívá služby BIOSu BIOS je firmware od výrobce základní desky I/O: práce s diskem, grafickou kartou, obsluha klávesnice...
Rozhraní DOSu příkazový řádek COMMAND.COM → obdoba shellu z Unixu textový režim po startu DOSu je grafická karta v textovém režimu šachovnice znaků → VGA: 25 řádků, 40/80 sloupců bez podpory myši pro myš speciální ovladač (rezidentní) myš musel program sám podporovat jen jeden spuštěný program tj. žádný multitasking (jen jednoduché „rezidentní programy“)
Windows pro DOS 16bitová grafická nadstavba pro DOS nejprve se spustil na počítači DOS poté se spustily Windows (win.com) Windows vytvořily grafickou nadstavbu GUI – Graphical User Interface systémové záležitosti řešil DOS Windows volaly např. pro práci se soubory služby DOSu DOS zase využíval služby BIOSu proto označení „nadstavba DOSu“ později vlastní 32bitové ovladače pro řadiče k pevným diskům → optimalizace výkonu
Verze Windows pro DOS Windows 1.0 (1985) okna se nemohla překrývat možný překryv oken verze pro CPU 286 a 386 využití paměti nad hranici 1 MiB Windows 3.0 (1990), 3.1 (1992) podpora 32bitových ovladačů hardware některé části systému stále 16bitové aplikace může způsobit zamrznutí nebo pád systému
Verze Windows pro DOS Windows 95 (1995) změna grafického rozhraní jiný správce oken, který měl spodní lištu (panel) standardně s podporou TCP/IP kvůli nastupujícímu Internetu standardně podpora 32bitových aplikací (Win32s) části jádra stále 16bitové dlouhé názvy souborů až 255 znaků (DOS podporoval 8+3 znaky) Windows 98, Windows ME další drobná vylepšení (např. FAT32)
Windows NT pro procesor Intel 80386 a kompatibilní 32bitový, již skutečný operační systém systém nikdy neztrácí kontrolu nad počítačem vadná aplikace nemůže způsobit havárii systému na starších procesorech Windows NT nefungují pro aplikace rozhraní Win32s (z 16bit. Windows) definitivní odklon od OS/2 (projekt společně s IBM) umožněn i běh 16bitových aplikací ze starších Windows
Verze Windows NT Windows NT 3.1 (1993) Windows NT 3.5 (1994) převzato rozhraní z Windows 95 Windows 2000 (2000) Windows XP (2001) Windows Server 2003 (2003)
Verze Windows NT Windows XP, 64bit (2005) málo ovladačů, prakticky se neprodávaly pro 64bitový procesor AMD Opteron (2003) Intel P4 „Prescot“ (2004) Windows Vista (2007) Windows Server 2008 (2008) Windows 7 (2009) Windows Server 2008 R2 (2009)
Verze Windows NT Windows 8 (2012) dlaždice (aka „dotykové rozhraní“) převzato z Windows Phone 7 rozhraní „Metro“ (Modern UI) → používá HTML5 klasický „desktop“ ponechán jako alternativní rozhraní pro starší aplikace, ale byla odstraněno tlačítko „Start“ Windows Server 2012 (2012) též „dlaždicové“ rozhraní Windows 8.1 (2013) aktualizace Windows 8, návrat tlačítka Start později
Windows CE
Uživatelé lokálně autentizovaní uživatelé definováni v tom kterém příslušném počítači rozlišeni dlouhým číslem (SID → Security Identifier) heslo → LM hash, NT hash heslo lze přepsat → start z CD (Linux → chntpw) síťoví uživatelé definováni na serveru stanice je může akceptovat (důvěřovat serveru) je-li v Doméně Windows nebo v Active directory tj. lokálně uživatel neexistuje, ale může se přihlásit je mu vytvořen profil, převezme se SID ze serveru
Oprávnění ve Windows posuzuje se SID, oprávnění zapsána v ACL některá SID jsou speciální: lokální uživatelé: Administrator, guest, System user, ... skupiny Administrators, PowerUsers, PrintOperators, ... oprávnění v NTFS klasický DAC systém s vlastníkem (jako Unix) dnes navíc ještě MIC (tokeny, UAC) síťová oprávnění čtení, zápis, čtení+zápis (z Windows pro DOS) uplatňují se při přístupu skrze síť
Oprávnění v NTFS „zjednodušená“ a „skutečná oprávnění“ tj. dva dialogy pro nastavení oprávnění zjednodušená obsahují několik skutečných běžně se používají pouze ta zjednodušená viz http://www.pslib.cz/ke/files/PravaWin.pdf
Problém Administrátora ve Win ještě ve Windows XP všichni jako Administrator problém: uživatel může snadno poškodit systém nový problém: Internet přináší do počítače bez možnosti důkladné kontroly nedůvěryhodná data → malware se snadno šíří skrz e-mail, www jenže aplikace (včetně Microsoft Office) potřebovaly ke své funkci Administrátorské oprávnění například zápis konfigurace do globálních registrů nebo do adresáře, kde je nainstalován program Microsoft se ani nepokusil zajistit, aby uživatelé pracovali jako běžný uživatel Unix: odjakživa je účet správce jen pro správu systému (pozn)
MIC Mandatory Integrity Control uvedeno ve Windows Vista (2007), Server 2008 dodatečné zabezpečení a separace procesů opatření v rámci jednoho uživatele (!!!) tím je možné být „Administrátor“, ale zároveň jím nebýt proces uživatele má „bezpečnostní token“ funguje jen na procesy zahrnuté do UAC tedy nikoliv na služby (services), síťové služby apod. systém při přístupu k objektu, který je krytý bezpečnostním atributem zjišťuje, zda proces má díky tokenu oprávnění operaci provést (čtení, zápis) → MAC problém interakce procesů stejného uživatele
Bezpečnostní token token je přidělen běžícímu procesu přiděluje ho logon proces prvnímu procesu uživatelova sezení po po úspěšné autentizaci uživatele (něco jako tikety u Kerberosu) další procesy ho dědí správce oken, panel, Skype, programy spuštěné z menu nebo pomocí Průzkumníka, příkazy v CMD.exe, ... obsahuje ID uživatele, GID, seznam oprávnění obsah tokenu nelze za běhu procesu měnit služba AIC umí přidělit novému procesu token s vyšším oprávněním
Integrity Level (IL) čtyři „bezpečnostní úrovně“ pro MIC Low (SID: S-1-16-4096) Protected mode pro Internet Explorer Medium (SID: S-1-16-8192) běžný uživatel (User group) High (SID: S-1-16-12288) na základě členství ve skupině Administrators System (SID: S-1-16-16384)
Člen skupiny Administrators je v podstatě Administrátor, jenže... :-) prvnímu procesu jsou přiděleny dva tokeny: administrátorský obyčejný (jako člen skupiny „Users“) při práci uživatele je aktivní ten druhý, obyčejný program si může vyžádat elevaci oprávnění: pomocí XML manifestu (součást EXE souboru) pro privilegovanou operaci je nutné spustit nový proces (helper) uživatel ručně pomocí „Run as Administrator“ program může svoje oprávnění snížit „Protected mode“ pro Internet Explorer 7+
UAC User Account Control česky „Řízení uživatelských účtů“ když (nový) proces potřebuje vyšší oprávnění zobrazí se okno s žádostí o potvrzení od uživatele kvůli zamezení spoofingu okolní plocha potemní tzv. „Secure desktop mode“ při vyšším UAC je nutné stisknout CTRL+ALT+DEL nebo i vložit heslo správce, přestože jsem správce tuto kombinaci nelze běžnou aplikací odchytit (jedině modifikací jádra, podvrženým ovladačem) převzato ze systému DOS → CTRL+ALT+DEL → restart PC mohla by to být jakákoliv jiná kombinace kláves
Vypnutí UAC nevyřadí MIC z činnosti tj. i člen Administrators je stále „běžný uživatel“ požadavek na elevaci ale nespustí UAC tím pádem nebude požadavek na elevaci proveden vyřadí však z činnosti přemapování zápisů tj. „File and Registry Virtualization“: HKLM „Program Files“ → %AppData% Poznámka: mám dojem, že po zakázání UAC mají procesy v systému menší překážky
Run as Administrator spuštění procesu s privilegovaným tokenem kontextové menu (klik pravým tlačítkem myši) vyskočí UAC jsem-li členem Administrators → jen potvrzení (OK) jsem-li běžný uživatel → UAC žádá heslo správce při vyšším nastavení UAC: nutno stisknout CTRL+ALT+DEL, příp. i heslo správce proces pak běží skutečně s Administrátorským oprávněním (jinak běží s běžnými, viz dříve) viz výstup příkazu whoami v CMD.exe
Tichá elevace oprávnění ve Windows 7 (a novějších) pro programy v %system32% musí být navíc elektronicky podepsány Microsoftem je-li uživatel členem skupiny Administrators tedy má i „administrátorský“ token v takovém případě nevyskočí UAC tichá elevace je snahou o omezení počtu výzev UAC protože uživatel si „nacvičí prostě souhlasit“ ...a text v potvrzovacím okně prostě nečte zneužíváno pro „sideload“ jiného kódu je velmi obtížné ošetřit všechny možné scénáře
UIPI User Interface Privilege Isolation UAC má „různá oprávnění“ u stejného uživatele s tím jádro OS nepočítá procesty stejného uživatele se mohou ovlivňovat s UAC je nežádoucí, aby proces s nižší Integrity level (IL) mohl ovlivnit proces s vyšším IL pro řešení útoku „shatter attack“ omezuje zasílání zpráv (se spustitelným kódem) bohužel funguje dobře jen pro low IL neřeší tedy všechny možné shatter attacky (!!!)
Protokol SMB SMB je zkratka pro Server Message Block původně protokol LAN Manager IBM a Microsoft, původně NetBIOS, dnes TCP/IP SMB zprávy se „vozí“ uvnitř nějakého síťového protokolu NetBIOS pro adresaci MAC adresy (funguje bez nastavování) IP adresy se musí přidělit, ale stejně je dnes každý potřebuje 1992: Andrew Tridgell → projekt Samba odhalil totožnost mezi DEC Pathworks a LAN Manager poskytované služby (pomocí RPC) sdílení souborů → UNC tisk na vzdálené tiskárny autentizace uživatelů (Doména Windows, Active Directory)
UNC Uniform Naming Convention označení umístění síťového zdroje pro sítě Microsoft Windows sdílený adresář, soubor, tiskárna \\Počítač\SdílenýAdresář\Upřesnění Počítač je jméno počítače (platné v síti Microsoft) sdílený adresář je název sdíleného prostředku upřesnění může být cesta (novější implementace) kořen připojeného disku lze umístit do podadresáře
Jména počítačů broadcast stanice vysílá svoje jméno ostatní naslouchají a doplňují si svůj seznam WINS server server udržuje databázi jmen stanic opuštěno ve prospěch DNS řešení DNS příklon k řešení podle Internetu tj. převod jméno → IP adresa
Mapování uživatelů winbind démon poskytující ve Windows mapování UID → jméno uživatele (a zpět) je nutné při sdílení souborů s oprávněními databáze uživatelů je na vzdáleném stroji sdělení jména uživatele (podle SID) při výpisu adresáře ugidd obdoba pro unixové systémy
Příklad (přístup ze sítě)
Počítače samostatné nejsou nijak vázané na ostatní počítače v síti takto fungovaly až do Windows 98 v doméně Windows počítač má na serveru vlastní účet vzniká „vstupem do domény“ (na heslo správce domény) při startu se počítač „přihlásí“ větší vztah důvěry mezi počítačem a serverem počítač uznává uživatele definované na serveru tzv. „doménový uživatel“
Doména Windows plochá centrální databáze uloženi uživatelé, skupiny, počítače uživatel: jméno, heslo, členství ve skupinách databáze uložena na PDC (Primary Domain Controller) usnadnění správy uživatel nemusí existovat na všech počítačích v doméně uživatel má jeden účet a jedno heslo v celé síti stěhující se profil domácí adresář se při přihlášení kopíruje na stanici při odhlášení se kopíruje zase zpět na server bohužel je to poměrně pomalá operace
Active Directory AD je nástupcem Domény Windows proprietální implementace LDAP + Kerberos Kerberos dává autentizační tokeny na omezenou dobu stromová databáze uživatelé, skupiny, tiskárny → objekty v AD kontext objektu → je v nějakém podstromu AD na kontext může být definován „malý administrátor“ větší škálovatelnost pro větší sítě jednodušší vztahy mezi stromy implementace AD serveru → Samba 4 je teprve ve vývoji, v roce 2012 pre-release
Autentizace v SMB NTLM (NT LAN Manager) autentizace pomocí jména a hesla problém odposlechnutí autentizačních údajů nutná kryptografická ochrana na serveru uložen hash, klient posílá také hash (MD5) NTLMv1 → DES, NTLNv2 → MD5, NTLMv2 Session → MS-CHAP z odposlechnutého hashe není možné získat původní heslo problém → šifrovaný tvar je vždy stejný (např. MD5) komunikaci lze odposlechnou a zašifrovaný tvar použít → toto je tzv. replay attack řeší se pomocí challenge-response (tj. NTLMv2)
Challenge-reponse metoda výzva → odpověď klient pošle serveru žádost o autentizaci server nabídne náhodné číslo klient použije na heslo hash a pak ono náhodné číslo výsledek je přenesen na server (odpověď klienta) server má na disku uložen hash hesla na hash stejná operace s náhodným číslem porovnání výsledku s odpovědí klienta je nepravděpodobné, že příště zvoleno stejné číslo nelze proto využít replay-attack, protože komunikace je závislá na vybrané náhodné hodnotě
LM hash původní způsob uložení hesla pro uložení hesel používáno do Windows NT později používáno kvůli zpětné kompatibilitě ve Windows Vista implicitně vypnuto → NT hash (NTLM) pro uložení hesla se nepoužívá kryptografická sůl pro autentizaci lze využít i ukradený hash → replay attack uložení hesla heslo je převedeno na velká písmena heslo je doplněno nulami na délku 14 bajtů heslo je rozděleno na dvě poloviny (po 7 bajtech) poloviny zvlášť zašifrovány pomocí DES
NTLM nástupce za LM hash autentizační protokol → challenge-response NTLMv1 NTLMv2 od Windows NT 4.0 SP4 NTLM2 session napadnutelné pomocí duhových tabulek