Windows and Chrome Hardening
A collection of tips and scripts to harden your Windows computer and Chrome browser against attackers.
Unfortunately, both of these things need to be treated adversarially with a hardened security posture.
Any tips and well-composed content that people would like to add to this document via issues + pull requests would be greatly appreciated!
This guide is written specifically with Windows 10 Version 1809 (October 2018 Update) in mind and will be updated as newer versions are released.
If you’re not running the latest version of Windows 10 on your system, then you aren’t applying the latest security patches and kernel mitigations designed to keep you out of trouble, particularly against Spectre and Meltdown.
Also, newer versions of Windows 10 tend to have better performance and lower UX latency, so why not update?
There are too many security-relevant settings to count in Windows, but here are a few that are easily configured.
Create and Use a Standard User Account
Windows uses "two" types of primary accounts, Administrator and Standard User.
Administrator accounts are the ones that can do anything to your computer. They can install software, change firewall settings, delete any and all files, and make permanent changes to the system configuration that affect every user.
It makes no sense to use an Administrator account for everything you do, and it’s a shame that Microsoft still defaults to creating Administrator accounts first when installing Windows. This is like running with scissors. (And, to be fair, Apple still does this too.)
If your computer has only one account on it, then by default, Microsoft made this an Administrator account.
Standard User accounts cannot make permanent or fundamental changes to the operating system that threaten a computer’s ability to boot and run. They can’t delete system files or access files from other users.
This type of account should be used for day to day work and add an extra layer of security against malware getting a deep hold in your system.
Obnoxiously, Microsoft makes it as hard as they possibly can to create a non-online, standard user account.
It’s more like opt-out than opt-in, which is annoying and you have to jump through multiple dialog boxes to skip this.
It’s almost deceptive, and mildly irritating, as they don’t state upfront how to create an account that isn’t linked to them. Like, I don’t know my friend’s email address, sorry.
The account creation process is worded in such a way that it sounds like you’re doing something wrong if you don’t provide an email address to Microsoft. 🤷
No, I don’t want to log in with a Microsoft account or create a new one that Microsoft gets to know about.
No, I don’t want to have my home computer linked to their advertising backend.
In any case, once you jump through the hoops, the local, standard user account is created in the following screen.
Once the Standard User account is created, its settings can be seen by clicking on it.
Note that only the accounts created after the first account on a computer are made Standard Users.
Pump Up User Account Control
User Account Control is what shows the full-screen pop-up window when you install new software or make changes in the Windows Control Panel or Settings app. It’s gotten much less intrusive since Windows Vista.
What it does: Any time you want to do something potentially dangerous to the computer, the Windows kernel will wait until it can confirm that you, as the super-user of the computer, want to do this.
Make sure this is set to "Always notify".
Remove Internet Explorer 11 (and other Optional Windows Features)
If you’re not using a computer with corporate websites (the crappy internal websites that companies never pay to upgrade, thereby dragging down the whole web, and inflicting uncounted suffering on the worker bees), then it makes sense to completely remove Internet Explorer from Windows.
To do that, open up the Windows Features list.
Uncheck Internet Explorer 11 and click OK.
Other unnecessary Windows features (uncheck to remove):
Microsoft XPS Document Writer creates a virtual printer that you can "print" to, which then writes the output as an XPS file.
Who actually uses this?
Use PDF like everyone else. I don’t think there’s a single home user that would use this, but if it’s enabled, there is code running on your computer that you don’t need.
Windows Fax and Scan — Who faxes or scans anymore?
The "scan" portion of that is more relevant, but if you don’t have one, get rid of this.
Remote Differential Compression API Support is a Windows-specific API and it is unclear what software uses it at all.
SMB Direct is a Windows-specific technology used to increase data transfer speeds in corporate networks. This is not a technology you’ll likely need on a home laptop.
SMB Direct requires the following:
At least two computers running Windows Server 2012 R2 or Windows Server 2012
One or more network adapters with RDMA capability.
Does that sound like a home computer setup?
Work Folders Client would be useful if I had a laptop that connected to a corporate network. But I don’t, so it can go. Also, there are tons of alternative file syncing systems (Dropbox, Box, Google Drive, etc.) that have assumed this role in the modern workplace.
Do Not Install Third-Party Antivirus
Installing antivirus software like McAfee, Kaspersky, or Avira will cause your computer to slow down without necessarily providing better coverage than Windows Defender. (As it turns out, Windows Defender is already chews up a significant amount of time scanning your system.)
Also, these 3rd-party antivirus providers may increase your attack surface area with more code, which is irregularly updated and possibly even faulty.
There have definitely been cases where antivirus vendors hooking into undocumented Windows kernel interfaces actually made a system less secure (which led to Microsoft introducing PatchGuard).
Enable Secure Boot
Secure Boot ensures that your computer is running only trusted, signed firmware from the moment it turns on to the moment that it hands control of the hardware over to the Windows operating system.
It does this by instrumenting all changes to the system and attesting to the integrity of the core system components.
Certain 3rd-party add-ons, specifically graphics cards, may not have signed UEFI (Unified Extensible Firmware Interface) drivers. If you have one of these add-ons, you may not have a functional Secure Boot.
(This is the case on a Dell Optiplex system I own, that originally had an extra AMD Radeon graphics card. After removing the add-in card, the CPU-internal Intel HD Graphics unit took over and Secure Boot worked again.)
Some things to note here:
Core isolation is good, and sometimes you can turn on "Memory Integrity", but I’ve had problems with this causing Blue Screens of Death.
Microsoft explains what core isolation does here.
In a nutshell, core isolation uses virtualization technology to strictly control access to kernel memory by hardware drivers and other software components, essentially putting the kernel into a different privilege level than the drivers and surrounding it with hardware-enforced defenses against modification.
It would be excellent if the underlying remaining issues that cause it to be disabled by default could be fixed by requiring hypervisor-enforced code integrity checks in the Windows Hardware Qualification Labs (WHQL) certification process and validated in the field with Windows telemetry.
It would be good for everyone to require manufacturers to produce higher quality drivers that don’t trip kernel faults.
Security Processor — Having a Trusted Platform Module is good.
Hypervisor-Protected Code Integrity (HVCI)
The Windows System Information program shows a few key settings that are security-relevant.
Kernel DMA Protection prevents hijacks from malicious Thunderbolt devices, but requires an Intel processor with VT-d technology enabled (Virtualization Technology for Directed I/O).
Virtualization-based security is controlled by the Core Isolation Memory Integrity settings.
BitLocker is used to provide full-disk encryption (FDE) on Windows with hardware-backed key management.
Always enable this for portable computers, this is what it looks like when activated:
I don’t have screenshots of the process of activating it, but when enabling it, there is a moment when Windows will ask whether to encrypt:
only the parts of the drive currently in use
the whole drive including empty space
It is a good idea to encrypt everything including empty space, unless you have a good reason not to or you’re (re-)installing Windows on a previously-encrypted drive (in which case most of the drive is probably filled with mostly random data anyways).
Make sure to save a copy of the BitLocker Recovery Key, or print a physical copy of it and put it in a safe place. (Yes, this means that someone ransacking your office could find it, but that requires physical access anyways.)
Update UEFI Firmware / BIOS Firmware
It is very important to update firmware, because certain security features of a system can only be enabled when this software is up-to-date.
Lenovo Release Notes <2.74> UEFI: 2.74 / ECP: 1.14 - [Important] Update includes a security fix. - (Fix) Fixed an issue where BIOS silent update might fail with system account. <2.73> UEFI: 2.73 / ECP: 1.14 -[Important] Security fix addresses LEN-22133 Speculative Execution Side Channel Variants 4 and 3a (CVE-2018-3639, CVE-2018-3640). Refer to Lenovo's Security Advisory page for additional information. (https://support.lenovo.com/product_security/home) [...] VERSION INFORMATION The following versions of UEFI BIOS and ECP (Embedded Controller Program) have been released to date. Package (ID) UEFI BIOS (BIOS ID) ECP (ECP ID) Rev. Issue Date ---------------- --------------------- ---------------- ---- ---------- 2.74 (G2UJ30US) 2.74 (G2ETB4WW) 1.14 (G2HT35WW) 01 2018/11/30 2.73 (G2UJ29US) 2.73 (G2ETB3WW) 1.14 (G2HT35WW) 01 2018/06/25 2.72 (G2UJ28US) 2.72 (G2ETB2WW) 1.14 (G2HT35WW) 01 2018/04/19 2.71 (G2UJ27US) 2.71 (G2ETB1WW) 1.14 (G2HT35WW) 01 2018/03/12 2.70 (G2UJ26US) 2.70 (G2ETB0WW) 1.14 (G2HT35WW) 01 2017/10/03 2.68 (G2UJ25US) 2.68 (G2ETA8WW) 1.14 (G2HT35WW) 01 2017/04/28 2.67 (G2UJ24US) 2.67 (G2ETA7WW) 1.14 (G2HT35WW) 01 2016/09/21 2.66 (G2UJ23US) 2.66 (G2ETA6WW) 1.14 (G2HT35WW) 01 2016/03/23 2.65 (G2UJ22US) 2.65 (G2ETA5WW) 1.14 (G2HT35WW) 01 2015/10/02 2.64 (G2UJ21US) 2.64 (G2ETA4WW) 1.14 (G2HT35WW) 02 2015/07/07 2.64 (G2UJ21US) 2.64 (G2ETA4WW) 1.14 (G2HT35WW) 01 2015/04/29 2.63 (G2UJ20US) 2.63 (G2ETA3WW) 1.14 (G2HT35WW) 01 2015/02/16 2.62 (G2UJ19US) 2.62 (G2ETA2WW) 1.14 (G2HT35WW) 01 2014/09/30 2.61 (G2UJ18US) 2.61 (G2ETA1WW) 1.14 (G2HT35WW) 01 2014/05/12 2.60 (G2UJ17US) 2.60 (G2ETA0WW) 1.13 (G2HT34WW) 01 2014/03/14 2.59 (G2UJ16US) 2.59 (G2ET99WW) 1.13 (G2HT34WW) 01 2013/12/13 2.57 (G2UJ15US) 2.57 (G2ET97WW) 1.13 (G2HT34WW) 01 2013/11/12 2.56 (G2UJ14US) 2.56 (G2ET96WW) 1.12 (G2HT33WW) 02 2013/11/04 2.56 (G2UJ14US) 2.56 (G2ET96WW) 1.12 (G2HT33WW) 01 2013/09/09 2.55 (G2UJ13US) 2.55 (G2ET95WW) 1.12 (G2HT33WW) 01 2013/07/23 2.54 (G2UJ12US) 2.54 (G2ET94WW) 1.12 (G2HT33WW) 01 2013/05/08 2.52 (G2UJ11US) 2.52 (G2ET92WW) 1.10 (G2HT31WW) 01 2013/03/11 2.51 (G2UJ10US) 2.51 (G2ET91WW) 1.10 (G2HT31WW) 01 2013/01/18 2.50 (G2UJ09US) 2.50 (G2ET90WW) 1.10 (G2HT31WW) 01 2013/01/11 2.06 (G2UJ08US) 2.06 (G2ET86WW) 1.10 (G2HT31WW) 01 2012/11/27 2.02 (G2UJ07US) 2.02 (G2ET82WW) 1.10 (G2HT31WW) 01 2012/09/18 1.13 (G2UJ06US) 1.13 (G2ET33WW) 1.09 (G2HT30WW) 01 2012/08/10 1.12 (G2UJ05US) 1.12 (G2ET32WW) 1.09 (G2HT30WW) 01 2012/06/21 1.11 (G2UJ04US) 1.11 (G2ET31WW) 1.07 (G2HT28WW) 01 2012/05/29 1.10 (G2UJ03US) 1.10 (G2ET30WW) 1.07 (G2HT28WW) 01 2012/05/25 1.09 (G2UJ02US) 1.09 (G2ET29WW) 1.07 (G2HT28WW) 01 2012/05/14
Dell Release Notes Dell OptiPlex 7010 System BIOS This package provides the BIOS update for Dell OptiPlex 7010 running in the following Operating Systems: Windows and DOS. Fixes & Enhancements Fixes - Updated CPU microcode to address security advisory Intel Security Advisory INTEL-SA-00115 (CVE-2018-3639 & CVE-2018-3640). - Addressed remote control cannot find Video setup option. Enhancements - Improved OS installation from USB. Version Version A29, A29 [...] Version Release Date Importance A28 14 Mar 2018 Urgent A26 09 Jan 2018 Urgent A25 22 May 2017 Urgent A24 12 Dec 2016 Recommended A23 25 Aug 2016 Recommended A22 20 Jul 2016 Optional A21 03 Feb 2016 Recommended A20 05 Feb 2015 Urgent A19 18 Nov 2014 Recommended A18 05 Jun 2014 Recommended A16 16 Oct 2013 Recommended A15 23 Sep 2013 Recommended A14 11 Jul 2013 Recommended A13 20 May 2013 Recommended A12 25 Jan 2013 Recommended A09 26 Oct 2012 Recommended A05 03 Aug 2012 Recommended A04 13 Jul 2012 Optional A01 05 Jun 2012 Recommended
As you can see from the Dell and Lenovo Release Notes, there are a ton of changes to the lowest-level firmware over the multiyear lifecycle of a computer.
Although some of these patches may be more important than others, it is recommended to apply them regularly.
Check Spectre and Meltdown Fixes
The program prints a list of the applied mitigations, and importantly whether the CPU’s microcode has been patched to provide them.
Because they are hardware vulnerabilities and haven’t yet been completely fixed by the main CPU makers, and because hardware replacement cycles are longer than they used to be, these issues will be around for a while.
Blocking Third-Party Cookies
Third-party cookies follow you around the internet. These are the tiny pieces of data that expose you as a targetable, profiled individual online.
They are sent to servers other than the website you’re currently browsing, i.e. nobody who really needs to know.
These are how Amazon, Google, Facebook, and other advertisers know when to show you an ad for that thing you were just looking at buying.
Let’s say you visit Buzzfeed, at least a dozen ad agencies will find out exactly what you did there:
This happens on every single website you visit, so multiply the number of cookies you’re generating by a hundred.
Here’s how to disable these web tracking cookies:
Once the third-party cookies are blocked, the list of cookies per website will drop substantially.
Max Vilimpoc (@vilimpoc)