Tuesday, December 13, 2011

Trusted Execution In Untrusted Cloud


Wouldn't it be nice if we could actually own our data and programs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cloud? By “owning” here I mean to have control over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir confidentiality and integrity. When it comes to confidentiality and integrity for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data, it's not much of a rocket since, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 classic crypto (and secure client systems) is all that we need. I have already wrote about it in an earlier post.
But it would also be nice, if we could somehow get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same confidentiality and integrity assurance for our programs that we upload for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 execution in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cloud...

For example, a company might want take cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir database application, that deal with all sorts of corporate critical sensitive data, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n upload and safely run this application on e.g. Amazon's EC2, or maybe even to some China-based EC2-clone. Currently there is really nothing that could stop cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 provider, who has a full control over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor under which our application (or our VM) executes, from reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contents of our process' memory and stealing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secrets from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. This is all easy stuff to do from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 technical point of view, and this is also not just my own paranoia...


Plus, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 usual concerns, such as: is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 infrastructure of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cloud provider really that safe and secure, as it is advertised? How do we know nobody found an exploitable bug in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor and was not able to compromise ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r customer's VMs from within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker-hired VM? Perhaps cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same question applies if we didn't decided to outsource cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 apps to a 3rd party cloud, but in case of a 3rd party clouds we really don't know about what measures have been applied. E.g. does cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 physical server on which my VMs are hosted also used to host some foreign customers? From China maybe? You get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 point.

Sometimes all we really need is just integrity, e.g. if we wanted to host an open source code revision system, e.g. a git repository or a file server. Remember cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel.org incident? On a side note, I find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Jonathan Corbet's self-comforting remarks on how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was really nothing to worry about, to be strikingly naive... I could easily think of a few examples of how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker(s) could have exploited this incident, so that Linus & co. would never (not soon) find out. But that's anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r story...

But, how can one protect a running process, or a VM, from a potentially compromised OS, or a hypervisor/VMM?

To some extent, at least cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365oretically, Intel Trusted Execution Technology (TXT), could be used to implement such protection. Intel TXT can attest to a remote entity, in that case this would be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cloud customer, about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hash of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor (or kernel) that has been loaded on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 platform. This means it should be possible for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user to know that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cloud provider uses cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 unmodified Xen 4.1.1 binary as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor and not some modified version, with a built-in FBI backdoor for memory inspection. Ok, it's a poor example, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Xen architecture (and any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r commercially used VMM) allow cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 administrator who controls Dom0 (or equivalent) to essentially inspect and modify all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system, also that belonging to ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r VMs, and no special backdoors in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor are needed for this.

But let's assume hypocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365tically that Xen 5.0 would change that architecture, and so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Dom0 would not be able to access any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r VM's memory anymore. Additionally, if we also assumed that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Xen hypervisor was secure, so that it was not possible to exploit any flaw in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervior, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n we should be fine. Of course, assuming also cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re were also no flaws in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TXT implementation, and that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM was properly sandboxed, or that we trusted (some parts of) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se are really complex problems to solve in practice, but I know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is some work going on in this area, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is some hope).

Such a TXT-bases solution, although a step forward, still requires us to trust cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cloud provider a bit... First, TXT doesn't protect against bus-level physical attacks – think of an attacker who replaces cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DRAM dies with some kind of DRAM emulator – a device that looks like DRAM to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 host, but on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r end allows full inspection/modification of its contents (well, ok, this is still a bit tricky, because of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lack of synchronization, but doable).

Additionally for Remote Attestation to make any sense, we must somehow know that we “talk to” a real TPM, and not to some software-emulated TPM. The idea here is that only a “real” TPM would have access to a private key, called Endorsement Key, used for signing during Remote Attestation procedure (or used during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 generation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 AIK key, that can be used alternatively for Remote Attestation). But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n again who generates (and so: owns) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 private endorsement keys? Well, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM manufacturer, that can be... some Asian company that we not necessarily want to trust that much...

Now we see it would really be advantageous for customers, if Intel decided to return to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 practice of implementing TPM internally inside cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y did in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir Series 4 chipsets (e.g. Q45). This would also protect against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 LCP bus-level attacks against TPM (although somebody told me recently that TPM in current systems cannot be so easily attacked from LCP bus, because of some aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication protocol being used cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re – I really don't know, as physical attacks have not been cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 area we ever looked at extensively; any comments on that?).

But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n again, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem of DRAM content sniffing always remains, although I would consider this to be a complex and expensive attack. So, it seems to me that most governments would be able to bypass such TXT-ensured guarantees in order to “tap” cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's programs executing in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cloud provides that operate within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir jurisdictions. But at least this could stop malicious companies from staring up fake cloud services with an intent to easily harvest some sensitive data from unsuspecting users.

It seems that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only way to solve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above problem of DRAM sniffing attacks is to add some protection at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor level. We can imagine two solutions that processor vendors could implement:

First, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y could opt for adding an in-processor hardware mechanism for encrypting all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data that leave cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor, to ensure that everything cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 is kept in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DRAM is encrypted (and, of course, also integrity-protected), with some private key that never leave cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor. This could be seen as an  extension to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel TXT.

This would mean, however, we still needed to relay on: 1) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor to not contain bugs, 2) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole VMM architecture to properly protect VM's memory, specifically against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Dom0, 3) Intel TXT to not be buggy eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, 4) SMM being properly sandboxed, or alternatively to trust (some parts of) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS and SMI handler, 5) TPM's EK key to be non-compromised and verifiable as genuine, and 6) TPM bus attacks made impossible (those two could be achieved by moving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM back onto cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset, as mentioned above), and finally, 7) on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 encryption key used by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor for data encryption to be safely kept in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor.

That's still quite a lot of things to trust, and it requires quite a lot of work to make it practically really secure...

The ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r option is a bit more crazy, but also more powerful. The idea is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor might allow to create untrusted supervisors (or hypervisors). Bringing this down to x86 nomenclature, it would mean that kernel mode (or VT-x root) code cannot sniff or inject code into (crypto-protected) memory of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 usermode processes (or VT-x guests). This idea is not as crazy as you might think, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re has even been some academic work done in this area. Of course, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are many catches here, as this would require specifically written and designed applications. And if we ever considered to use this technology also for client systems (how nice it would be if we could just get rid of some 200-300 kLOC of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Xen hypervisor from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TCB in Qubes OS!), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 challenges are even bigger, mostly relating to safe and secure trusted output (screen) and, especially, input (keyboard, mouse).

If this worked out, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n we would need to trust just one element: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor. But we need to trust it anyway. Of course, we also need to trust some software stack, e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 compilers we use at home to build our application, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 libraries it uses, but that's somehow an unrelated issue. What is important is that we now would be able to choose that (important) software stack ourselves, and don't care about all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r software used by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cloud provider.

As I wrote above, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor is this final element we always need to rust. In practice this comes down to also trusting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 US government :) But we might imagine users consciously choosing e.g. China-based, or Russia-based cloud providers and require (cryptographically) to run cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir hosted programs on US-made processors. I guess this could provide reasonable politically-based safety. And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is also ARM, with its licensable processor cores, where, I can imagine, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 licensee (e.g. an EU state) would be able to put cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own private key, not known to any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r government (here I assume cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 licensee also audits cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor RTL for any signs of backdoors). I'm not sure if it would be possible to hide such a private key from a foundry in Hong Kong, or somewhere, but luckily cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are also some foundries within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EU.

In any case, it seems like we could make our cloud computing orders of magnitude safer and more secure than what is now. Let's see whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry will follow this path...

Tuesday, December 06, 2011

Exploring new lands on Intel CPUs (SINIT code execution hijacking)

Today we're releasing a new paper where we describe exploiting a bug in Intel SINIT aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticated code module that allows for arbitrary code execution in what we call an “SINIT mode”. So, to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 already pretty-well explored “lands” on Intel processors, that include ring 3 (usermode), ring 0 (kernelmode), ring “-1” (VT-x root), and ring “-2” (SMM), we're now adding a new “island”, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SINIT mode, a previously unexplored territory inhabited so far only by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel-blessed opcodes.

What is really interesting about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 consequences of SINIT mode hijacking, which include ability to bypass Intel TXT, LCP, and also compromise system SMRAM.

It's also interesting how difficult was this vulnerability for Intel to patch, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y had to release not only updated SINIT modules, but also updated microcode for all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 affected processors, and also work with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS vendors so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y release updated BIOSes that would be unconditionally loading this updated microcode (plus provide anti-rollback mechanisms for both cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS and microcode). Quite an undertaking...

You can get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 paper here.

Intel also published an advisory yesterday, which can be downloaded from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir website here. The advisory is peculiar in a few ways, however...

First, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 advisory (I'm referring to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 revision 1.0) never explicitly mentions that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack allows to bypass TXT launch itself, only that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack “may compromise certain SINIT ACM functionality, including launch control policy and additionally lead to compromise of System Management Mode (SMM). Intel also recommend to disable TXT altogecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS, as a preventive measure, in case cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user doesn't “actively running Intel® TXT”... This reminds me how various vendors started actively disabling Intel VT-x after certain virtualization rootkits have been demonstrated some 5 years ago, and how many laptops still ship with this technology disabled today (or VT-d at least) to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 questionable delight of many users.

Second, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 advisory assigns only an “Important” rating to this vulnerability, even though anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Intel advisory, published some two years ago for a problem also reported by us, and which which was strictly a subset of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current vulnerability in terms of powers that it gave to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker (in ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current vulnerability provides cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker with everything that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 previous one did, plus much more), was given a “Critical” rating... This is called evolution, I guess, and I wonder what would be considered critical by Intel cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days?

UPDATE (Dec 7th, 2011): Intel has just released an updated advisory (release 1.1) that now explicitly states that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vulnerability also bypasses Intel TXT.

This is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last paper co-authored with Rafal Wojtczuk, who recently decided to try some new things and to leave ITL. Rafal has been cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most talented exploit writer I have worked with, and I will surely miss his ingenious insights, such as e.g. how to practically win an absolutely hopeless race condition with ICMP-delivered MSI! But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n again, how many times can one break Intel technologies, before getting bored? At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same time ITL is really transforming now into a development company, with all our efforts around Qubes and architecting, racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than on breaking. I wish Rafal all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best with his new endeavors, and thank him for all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 excellent contributions he made while working for ITL over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past 3+ years.

Wednesday, September 28, 2011

Playing with Qubes Networking for Fun and Profit

Today, I would like to showcase some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cool things that one can do with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Qubes networking infrastructure, specifically with all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new features that have been brought by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 just released Qubes Beta 2. This will cover cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 use of multiple Net VMs for creating isolated networks, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 use of a Proxy VM for creating a transparent Tor Proxy VM, as well as demonstration of how to use a Standalone VM with manually assigned devices, to create a “WiFi pen-testing” VM, which surely represents cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “for fun” aspect of this post.

Qubes Networking Intro

From cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 networking point of view cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are three types of VMs in Qubes:

  • Net VMs, that have networking devices assigned to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m, such as e.g. a WiFi or Ecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rnet card. Each Net VM contains a Xen network backend that is used to provide networking to all VMs that are connected to this Net VM.
  • Regular VMs (AppVMs) that use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 networking provided by Net VMs (so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y have Xen network frontends that provide virtual interfaces that are backed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backend in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 corresponding Net VM.
  • Proxy VMs that combine both of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above: to Net VMs cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y look like regular AppVMs, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are consumers of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 networking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y provide, but to ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r AppVMs cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y act as if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y were Net VMs cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves, allowing ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r VMs to connect to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. Of course cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Proxy VMs do not have directly assigned networking devices – cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 networking provided by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Net VM that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y connect to. One can chain many Proxy VMs, as we will see below.

The virtual interfaces in client VMs are called ethX, and are provided by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 xen_netfront kernel module, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 corresponding interfaces in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Net/Proxy VM are called vifX.Y and are created by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 xen_netback module.

Each Net and Proxy VM implements NAT, specifically masquerading, for all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 connected VMs. Additionally to this SNAT, each Net or Proxy VM provides also DNAT redirection for DNS resolutions, so that each VM behind a Proxy or Net VM thinks that it uses a DNS in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Net/Proxy VM, but in fact all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DNS request are DNAT-ed by all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Proxy and Net VMs down cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original DNS that is provided to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 final Net VM. This smart trick allows us to avoid running a DNS caching server in Proxy/Net VMs.

Also, any VM-to-VM traffic, among cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VMs connected to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same Net/Proxy VM is blocked by default.

Additionally, each Proxy VM enforces system-wide firewaling rules, specifically cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rules for all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 directly connected VMs. Those firewalling rules are centrally managed in Dom0 and exposed to each Proxy VM through Xen store. One useful application of this firewalling mechanism is to limit certain VMs to only specific type of white-listed traffic to minimize likelihood of user mistakes. A good example could be a work VM that might be limited to network connectivity only with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 select corporate servers and denied all ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r traffic. This way, when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user receives an email message with an embedded http link (possibly leading to a malicious website) and accidentally clicks on it, nothing wrong happens.

The current infrastructure doesn't support IPv6 routing, but we will likely add this support in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 upcoming Beta 3.

The default networking topology in Qubes OS

When you proceed with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default installation of Qubes Beta 2, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n your initial networking topology looks like on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 diagram below:
The default network configuration in Qubes.
So, by default cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is one Net VM, called 'netvm', that is automatically assigned all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 networking devices in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system. There is also one Proxy VM, called 'firewallvm' that is directly connected to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default Net VM, and which provides networking to all ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r VMs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system. This Proxy VM is used for firewall rules enforcement. Each such service VM consumes 200MB of RAM by default.

Network-isolated VMs

For some VMs it might be desirable to completely disconnect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m from any kind of networking access. This can be easy done using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following command (issued from Dom0's konsole):

[dom0]$ qvm-prefs -s netvm none

For example I have a 'vault' VM that I use for keeping my master PGP keys, and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r secrets, and this machine is not connected to any network.

Using multiple Net VMs for physically isolated networks 

In some scenarios cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine might be connected to two or more physically separate networks (e.g. safe corporate intranet, reachable via ecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rnet cable on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's desk, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 unsafe and evil Internet, reachable via WiFi card).

It is easy to use more than one Net VMs in Qubes, and assign different networking devices to different Net VMs, and also decide which VMs are connected to which Net VMs. The diagram below presents an exemplary such setup:
A simple setup with two isolated networks, and one fully isolated domain ('vault').
 
We could created such a setup using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following commands (issued in Dom0):

[dom0]$ qvm-create netvm1 --net --label red
[dom0]$ qvm-create netvm2 --net --label yellow

Currently qvm-create when used with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 --net option automatically assigns all networking devices to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 just created VM, so in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 example above you would want to remove extra devices from each Net VM using qvm-pci -d, leaving only those you really want, e.g.: 

[dom0]$ qvm-pci -l netvm1 # to get a list of currently assigned devices

[dom0]$ qvm-pci -d netvm1 02:00.0

Now we should create cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Firewall VMs:

[dom0]$ qvm-create firewallvm1 --proxy --label green
[dom0]$ qvm-create firewallvm2 --proxy --label green

... and connect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m to proper Net VMs:

[dom0]$ qvm-prefs -s firewallvm1 netvm netvm1
[dom0]$ qvm-prefs -s firewallvm2 netvm netvm2

And now, for any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r VM, just set cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 appropriate Net VM (eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r firewallvm1 or firewallvm2, or 'none), to get it assigned to eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 isolated networks, e.g.:

[dom0]$ qvm-prefs -s banking netvm firewallvm1
[dom0]$ qvm-prefs -s xfiles netvm firewallvm2
[dom0]$ qvm-prefs -s vault netvm none
...

This configuration provides very strong isolation between cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VMs belonging to network #1, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VMs belonging to network #2. Specifically, this becomes significant if we fear about potential remotely exploitable bugs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 client code of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 core TCP/IP stack (in this case cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Net VM could potentially compromise all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 connected VMs -- but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same problem applies to even physically separated machines that use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same network).

Setting up Tor Proxy using a Proxy VM

Let's now play a bit with Proxy VMs and see how we can use it to create a simple Tor proxy VM. Such a VM would provide anonymized networking to all its clients, so would allow to easily create VMs for anonymous Internet access. The simple setup we would like to prepare is depicted on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 figure below:

The 'torvm' Proxy VM provides anonymized networking to 'anon-web' and 'anon-bitcoin' VMs. All cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 traffic generated by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VMs behind 'torvm' is eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r fed into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor network, or discarded. Furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rmore, any app running in those VMs is not able to read any global system identifiers, such as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 external IP, external MAC address, etc.

Our Tor proxy would forward only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor traffic, so we don't have to fear about some Tor-not-aware applications, or even intentionally malicious ones to compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 privacy of our connection. This is because such applications have no way to generate traffic to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 outside world without going through our Tor proxy (unless cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y could exploit a hypocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365tical vulnerability in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor process running in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor VM). Also, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 applications running in any VM behind cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor proxy are not able to determine any globally identifiable IDs, such as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's external IP address, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 real MAC address used by real NICs, etc.

Interestingly just after writing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above paragraph, I discovered that one of our xenstore keys had wrong permissions and, as a result, any VM could read it and get to know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual external IP (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key is used by a Net VM to communicate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 external IP configuration to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 connected Proxy VMs, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y could know when to update cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 firewall configuration). The fix for this problem is here, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 update (qubes-core-dom0-1.6.32) is now available for Dom0 (just do qvm-dom0-update to get it installed).

So, this represents a racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r strong setup for use with Tor. Let's now have a look at how to practically create such a configuration, step by step.

First, let's create cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM that will become our Tor proxy:

[dom0]$ qvm-create torvm --proxy --label green

This will create a Proxy VM named 'torvm', based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default template. We will need to now start cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 template VM and install cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor client cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re:

[dom0]$ qvm-run -a fedora-14-x64 gnome-terminal

Alternatively, if we didn't trust cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor client rpm package to be non-malicious, specifically for its installation scripts to be non malicious, we could have based this on a different template, e.g. one used for less trusted VMs, or we could installed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor client in /usr/local, that is backed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM's private storage, but this would require compiling Tor from sources.

Now, in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 just started template VM, lets install cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor client and (optionally) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Vidalia graphical frontend:

[fedora-14-x64]$ sudo yum install tor vidalia

And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n power off cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 template VM. Now, every VM based on this template, started after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 template shutdown, will also see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor binary in its filesystem.

Let's now configure our torvm to properly start Tor proxying at boot:

[dom0]$ qvm-run -a torvm gnome-terminal

Now, we will create cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following script for starting up cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor transparent proxy and setting up traffic redirection using iptables:

[torvm]$ vim /rw/config/start_tor_proxy.sh

...and now paste cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following into this file:
#!/bin/sh
killall tor
QUBES_IP=$(xenstore-read qubes_ip)
TOR_TRANS_PORT=9040

if [ X$QUBES_IP == X ]; cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n
echo "Error getting QUBES IP!"
echo "Not starting Tor, but setting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 traffic redirection anyway to prevent leaks."
QUBES_IP="127.0.0.1"
else
/usr/bin/tor \
--SocksPort 0 \
--TransListenAddress $QUBES_IP --TransPort $TOR_TRANS_PORT \
--DNSListenAddress $QUBES_IP --DNSPort 53 \
--RunAsDaemon 1 --ControlPort 9051 \
|| echo "Error starting Tor!"

fi

echo “0” > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -F
/sbin/iptables -t nat -A PREROUTING -i vif+ -p udp --dport 53 -j DNAT --to-destination $QUBES_IP:53
/sbin/iptables -t nat -A PREROUTING -i vif+ -p tcp -j DNAT --to-destination $QUBES_IP:$TOR_TRANS_PORT
/sbin/iptables -I INPUT 1 -i vif+ -p udp --dport 53 -j ACCEPT
/sbin/iptables -I INPUT 2 -i vif+ -p tcp --dport 9040 -j ACCEPT
/sbin/iptables -F FORWARD

echo “1” > /proc/sys/net/ipv4/ip_forward

Except for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “QUBES_IP=$(xenstore-read qubes_ip)” line that reads cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 torvm's IP address, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is nothing Qubes-specific in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above listing. It's just a standard way of setting up transparent Tor proxy.

It is important that this file be located in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 /rw directory, as this directory is backed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM's private storage and will survive VM reboots. The VM's root file-system is read-only and all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 changes to it are lost on VM shutdown (VM gets an illusion of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 root fs being writeable thanks to Copy-On-Write mechanism, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual COW backing device is cleared upon each VM shutdown).

We should also modify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 /rw/config/rc.local script, to ensure that our Tor proxy is automatically started -- just paste cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following into this script:
#!/bin/sh

# Uncomment this if you would like to use a custom torrc file:
#rm -f /rw/config/log
#ln -sf /rw/config/torrc /etc/tor/torrc

chkconfig qubes_netwatcher off
chkconfig qubes_firewall off
/rw/config/start_tor_proxy.sh
Finally we should also provide a script that would restart our proxy in case cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user dynamically switched cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NetVM, which would result in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 completely different routing. This could be done by creating a script with predefined name qubes_ip_change_hook within /rw/config/ directory:
#!/bin/sh
/rw/config/start_tor_proxy.sh
Make sure that all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 scripts are executable (chmod +x). And that's all. Now, shutdown cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 torvm:

[dom0]$ qvm-run --shutdown --wait torvm

From now on, every time you start cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 torvm (or when Qubes starts it in response to start of some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r VM that uses torvm as its Net VM), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor transparent proxy should be automatically started.

Let's test this by creating a VM that would be using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 just created Tor proxy:

[dom0]$ qvm-create anon-web --label black
[dom0]$ qvm-prefs -s anon-web netvm torvm

Now, every time you start cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 anon-web VM (e.g. by clicking on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Web browser icon in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 anon-web's start menu), Qubes will also ensure that torvm is up and running, and this in turn would configure all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor proxying for this VM.

Fo additional control one might want to use Vidalia, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 graphical front end for Tor (this should be installed within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 template VM that has been used for torvm). We could easily start Vidalia by just typing:

[dom0]$ qvm-run -a torvm vidalia

We should however make sure to disable "Start cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor software when vidalia starts" option in Settings/General in Vidalia. Ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise, Vidalia might kill your original Tor (that has transparent proxy open) and start own without transparent proxy enabled.

The web browser runs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 'anon-web' VM that uses 'torvm' for networking access, and thus all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 traffic generated by 'anon-web' is routed through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tor network, or discarded if it's a different traffic than TCP or DNS.


Of course one case easily create more VMs that would be using torvm as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir Net VM, as so would have anonymized network access. The beauty of this solution is that in case one of my anonymized VM gets compromised, ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs do not. Plus, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 already mentioned benefit, that no matter whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r apps in those VMs are buggy, or even intentionally malicious, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would not be able to leak out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's external IP address.

Creating a WiFi pen-testing VM

Finally let's have some fun and create a WiFi pen-testing VM. The desired config is depicted below:

Because we would like to use all sorts of l33t h4x0r t00lz pen-testing security software in this VM, it would make sense to create it as a Standalone VM, which means that it would get its own copy of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole file-system (as opposed to just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 home directory, /rw and /usr/local, as it is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case with regular Qubes VMs). This would ease cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 installation of all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 extra software we would need cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, and also ensure that even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 install/build scripts were malicious, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 damages would be contained only to this very VM and nothing else. Also, for some reason cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 standard Linux WiFi stack and drivers still don't support injection on (all?) most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 WiFi cards out of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 box, so we would need to patch cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual kernel drivers -- yet anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r reason to use a Standalone VM in this case.

So, let's create cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM first, and assign a WiFi card to it:

[dom0]$ qvm-create wififun --standalone --label yellow
[dom0]$ qvm-prefs -s wififun memory 800 # ensure at least this mem at startup
[dom0]$ qvm-prefs -s wififun kernel none # use own copy of kernel and modules
[dom0]$ qvm-pci -a wififun

You can easily find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BDF address of any device using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lspci command in Dom0 -- this would be something like e.g. “02:00.0”. You should make sure that this WiFi card is not used by any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r VM, specifically by your default Net VM (called 'netvm' in a standard Qubes installation). Ideally you could just use a dedicated Express Card-based WiFi card, leaving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 built in WiFi assigned to your default Net VM.

Because it's a Standalone VM, Qubes will make a copy of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole root filesystem, and thus it would eat about 5GB of your disk (normal VMs would take only as much space as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir private fs takes up).

Let's now start cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM...

[dom0]$ qvm-run -a wififun gnome-terminal

... and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n install cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 prerequisite software cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, starting with downloading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reasonably new compat-wireless sources, togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 required injection patches, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n building and installing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new kernel modules. All actions below are now executed within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM. This stuff here is really nothing Qubes- or Xen-specific -- one would do more or less cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same on any Linux in order to get injection working (so, treat this as a free bonus WiFi hacking tutorial on Linux).

[wififun]$ wget http://linuxwireless.org/download/compat-wireless-2.6/compat-wireless-2011-07-14.tar.bz2

[wififun]$ wget http://patches.aircrack-ng.org/channel-negative-one-maxim.patch
[wififun]$ wget http://patches.aircrack-ng.org/mac80211-2.6.29-fix-tx-ctl-no-ack-retry-count.patch
[wififun]$ wget http://patches.aircrack-ng.org/mac80211.compat08082009.wl_frag+ack_v1.patch

[wififun]$ sudo yum install kernel-devel patch gcc

[wififun]$ tar xjf compat-wireless-2011-07-14.tar.bz2
[wififun]$ cd compat-wireless-2011-07-14
[wififun]$ patch -p1 < ../channel-negative-one-maxim.patch
[wififun]$ patch -p1 < ../mac80211-2.6.29-fix-tx-ctl-no-ack-retry-count.patch
[wififun]$ patch -p1 < ../mac80211.compat08082009.wl_frag+ack_v1.patch

[wififun]$ make
[wififun]$ sudo make unload
[wififun]$ sudo make install

Now, lets reboot cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM to ensure that all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 patched drivers will get properly loaded on each VM boot:

[dom0]$ qvm-run --shutdown --wait wififun
[dom0]$ qvm-run -a wififun gnome-terminal

Let's first see if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 WiFi driver got properly loaded and if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interface has been created (look for wlanX interface):

[wififun]$ ifconfig -a

If yes, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n proceed with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 steps below (if not, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n have a look into dmesg and see what was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem):

[wififun]$ sudo bash
[wififun]# yum install aircrack-ng dnsmasq
[wififun]# airmon-ng start wlan0
[wififun]# iptables -F INPUT
[wififun]# iptables -F FORWARD
[wififun]# echo “1” > /proc/sys/net/ipv4/ip_forward

Note that you don't need to add any explicit masquerading rules, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are applied by default on Qubes VMs (you can take a look at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 nat table in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM if you want to see by yourself).

Edit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 /etc/dnsmasq.conf, so that it contains at least cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following:

interface=at0
dhcp-range=192.168.0.50,192.168.0.150,12h

and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n start cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dnsmasq daemon -- we will use it for providing DHCP to our fake AP (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 at0 interface will be created by airbase-ng and emulates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “uplink” of a traditional AP):

[wififun]# /etc/init.d/dnsmasq start

And finally cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fake AP:

[wififun]# airbase-ng -e free_wifi mon0

and on anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r console (before any client connects, but after airbase-ng got started), configure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 at0 interface (make sure it matches what you wrote into dnsmasq.conf):

[wififun]# ifconfig at0 192.168.0.1 up

(you can also add an udev rule to that automatically).

and just to verify it really is working:

[wififun]# tcpdump -i at0

... and now, just wait for a client to connect to your AP. What you do next is only limited by your imagination... But hey, this article is about Qubes networking and not about 0wning client systems ;)

Here's an innocent example using Moxie's sslstrip (amazing this attack still works so well at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of 2011...):

My 'wififun' VM in action using a simple sslstrip attack, that surprisingly still works pretty nice...
Please note that as your wififun VM is a regular Qubes VM, it is automatically connected to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default Net VM, which in turn provides networking to it. That's why it is so easy to create a fully functioning fake AP.

When using custom driver domains, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are currently some catches you should be aware:

Catch #1: When you start a driver domain late after system boot, so after some days of uptime and extensive use of VMs, Xen might not be able to allocate enough continues (in terms of MFNs) memory for a driver domain. And PV driver domains, unlike normal domains or HVM driver domains, do require MFN-continuous memory for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir DMA buffers (HVM domains do not need that, because IOMMU can create an illusion of this; even though IOMMU is also used for PV driver domains, for protection, it doesn't actively translate bus addresses into GMFNs).

This is usually not a big problem in practice, because in most cases all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 driver domains are started early at system boot, when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is still plenty of non-fragmented memory available. However it might become a problem when one wishes to start e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 WiFi pen-testing at some later time. The work around is to close as many VMs as possible before starting such driver domain, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n also reducing, for a moment, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 amount of memory assigned to Dom0:

[dom0]$ xm mem-set 0 1600m

and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n starting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 driver domain should be fine. Now we can start all ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r domains, and that should no longer be problematic for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 already running driver domain.

Catch #2: Some network cards, notably Express Cards, might not work well with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 3.0.4 pvops kernel that we use in all VMs by default. In that case you might want to try to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 2.6.38.3 xenlinux kernel in your WiFi fun VM -- to do that, follow cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se steps:

[dom0]$ sudo qvm-dom0-update kernel-qubes-vm-2.6.38.3-10.xenlinux.qubes
[dom0]$ cp /var/lib/qubes/vm-kernels/2.6.38.3/* /var/lib/qubes/appvms/wififun/kernels/
[dom0]$ qvm-prefs wififun -s kernelopts "swiotlb=force"

And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n, in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM:

[wififun]$ sudo yum install kernel-devel-2.6.38.3-10.xenlinux.qubes

And rebuild cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 compat-wireless, unload, install modules, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n load drivers again.

Summary

As you can see, Qubes Beta 2 now offers a very advanced networking infrastructure that allows more advanced users to create very sophisticated configurations, allowing for pretty good isolation between various domains and networks. Qubes leaves it up to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user (or admin) to figure out what would be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best configuration -- most users would be happy with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default simple setup with just one Net VM and one Firewall VM, while ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs would go for much more advanced setups.

A bit more advanced networking setup. The usbvm has a 3G modem assigned, and it is possible to dynamically switch between cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Net VMs without restarting any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r VMs.

Monday, September 19, 2011

Qubes Beta 2 Released!

I'm proud to announce that we have just released Qubes Beta 2! You can view installation instructions and download cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ISO here.

We faced quite a few serious problems with this release that were caused by an upgrade to Xen 4.1 (from Xen 3.4) that we used in Beta 1. But finally we managed to solve all those problems and all in all I'm very happy with this release. It includes many performance optimizations compared to Beta 1 (CPU- and memory-wise) and also many bugfixes.

We also introduced a couple of new features:
  • Generic mechanism for inter-domain services with a centralized policy enforcement (more)
  • Network-less update mechanism for Dom0 (more)
  • VM management improvements: easy device assignment for driver domains, dynamic netvm switching, flexible VM kernel configuration, etc (see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new qvm-prefs utility)
  • Easy management of appmenus (shortcuts in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Start Menu)
  • Update to Xen 4.1 that offers, among ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r things, better VT-d support and more lightweight management stack (we have ported Qubes to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new xl now, instead of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slow and heavy xend), and also to 2.6.38-xenlinux kernel for Dom0, and to 3.0.4 pvops kernel for VMs (better hardware compatibility, better power management)
I will write some more posts shortly that would present in detail some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new features and what cool things one could do with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m.

We have also created a dedicated wiki page that enumerates all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security-critical code for Qubes OS. We hope this page would be useful for security researchers that might attempt to find weaknesses in Qubes OS eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r in our code or in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 3rd party code that we rely on (Xen hypervisor, select Xen backends). Whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r your motives are noble (gaining immortal fame, helping create a secure client OS), or not (proving ITL wrong), we would appreciate your efforts! And you might even get a job at ITL.

Speaking of which, I'm happy to announce that Marek Marczykowski, who has effectively become cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key Qubes developer over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past few months, has now officially joined ITL :)

Wednesday, September 07, 2011

Anti Evil Maid


Anti Evil Maid is an implementation of a TPM-based static trusted boot with a primary goal to prevent Evil Maid attacks.

The adjective trusted, in trusted boot, means that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 goal of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mechanism is to somehow attest to a user that only desired (trusted) components have been loaded and executed during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system boot. It's a common mistake to confuse it with what is sometimes called secure boot, whose purpure is to prevent any unauthorized component from executing. Secure boot is problematic to implement in practice, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re must be a way to tell which components are authorized for execution. This might be done using digital signatures and some kind of CA infrastructure, but this gets us into problems such as who should run cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CA, what should be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 policy for issuing certificates, etc.

The adjective static means that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole chain of trust is anchored in a special code that executes before all ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r code on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 platform, and which is kept in a non re-flashable memory, whose sole purpure is to make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 initial measurement of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next component that is going to be executed, which is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS code. This special code, also known as Core Root of Trust for Measurement (CRTM), might be part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS (but kept on a special read-only memory, or implemented by some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r entity that executes before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS reset vector, such as e.g. Intel ME or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor microcode even. Once measured, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS code is executed, and it is now its turn to measures cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 platform configuration, Option ROM code, and MBR. Then cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 loader (stored in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MBR), such as Trusted GRUB, takes over and measures its own next stages (ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MBR sector), and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor, kernel, and initramfs images that are to be loaded, togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir configuration (e.g. kernel arguments).

As explained above, trusted boot can only retrospectively tell cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r correct (trusted) software has booted or not, but cannot prevent any software from executing. But how can it communicate anything reliably to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user, if it might have just been compromised? This is possible thanks to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM unseal operation that releases secrets to software only if correct software has booted (as indicated by correct hashes in select PCR registers).

So cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 idea is that if a user can see correct secret message (or perhaps a photo) being displayed on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 screen, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n it means that correct software must have booted, or ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM would not release (unseal) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret. Of course we assume cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 adversary had no ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r way to sniff this secret and couldn't simply hardcode it into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid – more on this later.

Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r way to look at it is to realize that Anti Evil Maid is all about aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticating machine to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user, as opposed to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 usual case of aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticating cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine/OS (login and password, decryption key, token, etc). We proceed with booting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine and entering sensitive information, only after we get confidence it is still our trusted machine and not some compromised one.

Installing Anti Evil Maid

Anti Evil Maid should work for any Linux system that uses dracut/initramfs, which includes Qubes, Fedora and probably many ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r distros. You can find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Anti Evil Maid source code in a git repository here. You can also download a tarball with sources and prebuilt rpm packages from here (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y all should be signed with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Qubes signing key). Qubes Beta 2, that is coming soon, will have those RPMs already per-installed.

To install Anti Evil Maid, follow cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 instructions in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 README file.

Some Practical considerations

If you decided to use no password for your TPM SRK key (so, you passed '-z' to tpm_takeownership, see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 README), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you should definitely install Anti Evil Maid on a removable USB stick. Ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise, if you installed it on your disk boot partition, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker would be able to just boot your computer and note down cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret passphrase that will be displayed on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 screen. Then cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker can compromise your BIOS/MBR/kernel images however she likes, and just hardcode cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret passphrase to make it look like if your system was fine.

If you decided to use custom TPM SRK password (so, you did not pass -z to tpm_takeownership), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you can install Anti Evil Maid onto your regular boot partition. The attacker would not be able to see your secret passphrase without knowing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SRK password. Now, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker can try anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Evil Maid attack to steal this password, but this attack is easy to spot and prevent (see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 discussion in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next section).

However, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is still a good argument to install Anti Evil Maid on a separate USB stick racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than on your built-in disk boot partition. This is because you can use Anti Evil Maid as a provider of a keyfile to your LUKS disk encryption (as an additional file unsealable by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM). This way you could also stop adversary that is able to sniff your keystrokes (e.g. using hidden camera, or electromagnetic leak), and capture your disk decryption passphrase (see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 discussion in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next section).

In any case it probably would be a good idea to make a backup stick that you might want to use in case you lose or somehow damage your primary stick. In that case you should have a way to figure out if your system has been compromised in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 meantime or not. Use anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r stick, with anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r passphrase, and keep it in a vault for this occasion.

Finally, be aware that, depending on which PCRs you decided to seal your secrets to, you might be unable to see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret even after you changed some minor thing in your BIOS config, such as e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 order of boot devices. Every time you change something in your system that affects cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 boot process, you would need to reseal your secrets to new PCR values as described in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 installation instructions.

Attacks prevented by Anti Evil Maid

The classic Evil Maid attack is fully prevented.

If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker is able to steal your Anti Evil Maid stick, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker gets access to your computer, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker would be able to learn your secret passphrase by just booting from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stolen stick. This is not fatal, because user should get alarmed seeing that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stick has been stolen, and use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backup stick to verify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system (with a different secret messages, of course), and later create a new stick for every day use with a new secret message.

A variation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above attack is when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker silently copies cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stick, so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user cannot realize that someone got access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stick. Attacker cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n uses cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 copied stick to boot cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's computer and this way can learn cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret passphrase. Now, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker can infect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 computer with Evil Maid, and can also bypass Anti Evil Maid verification by just hardcoding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret message into Evil Maid. So, even though TPM would know that incorrect software has booted, and even though it would not unseal cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user would have no way of knowing this (as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret would still be displayed on screen).

In order to protect against this attack, one might want to use a non-default SRK password – see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 installation instructions. Now an extra SRK password would be needed to unseal any secret from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM (in addition to PCRs being correct). So cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker, who doesn't know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SRK password, is now not able to see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret message and cannot prepare cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Evil Maid Attack (doesn't know what secret passphrase to hardcode cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re).

The attacker might want to perform an additional Evil Maid attack targeted at capturing this SRK password, e.g. by infecting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's stick. This, however, could be immediately detected by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user would see that after entering cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct SRK password, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was no correct secret passphrase displayed. The user should cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n assume cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stick got compromised togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SRK password, and should start cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backup stick, verify that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backup secret is correct, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n create new AEM stick for daily usage.

If an attacker is able to capture cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's keystrokes (hidden camera, electromagnetic leaks), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker doesn't need Evil Maid attack anymore, and so doesn't need to bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r with compromising cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system boot anymore. This is because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker can just sniff cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk decryption password, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n steal cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 laptop and will get full access to all user data.

In order to prevent such a “keystroke sniffing” attack, one can use an additional sealed secret on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Anti Evil Maid stick that would be used as a keyfile for LUKS (in addition to passphrase). In this case cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 knowledge of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sniffed LUKS passphrase would not be enough for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker to decrypt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk. This has not been implemented, although would be a simple modification to dracut-antievilmaid module. If you decided to use this approach, don't forget to also create a backup passphrase that doesn't need a keyfile, so that you don't lock yourself from access to your data in case you lose your stick, or upgrade your BIOS, or something! You have been warned, anyway.

Attacks that are still possible

An adversary that is able to both: sniff your keystrokes (hidden camera, electromagnetic leak) and is also able to copy/steal/seize your Anti Evil Maid stick, can not be stopped. If a non-democratic government is your adversary, perhaps because you're a freedom fighter in one of those dark countries, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n you likely cannot ignore this type of attacks. The only thing you can do, I think, is to use some kind of easy-to-destroy USB stick for keeping Anti Evil Maid. A digestible USB stick, anyone?

Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r type of attack that is not addressed by Anti Evil Maid is an attack that works by removing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “gears” from your laptop (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rboard and disk at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very least), putting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re a fake board with a transmitter that connects back to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker's system via some radio link and proxies all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 keyboard/screen events and USB ports back to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original “gears” that execute now under supervision of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker. Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r way of thinking about this attack is as if we took cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rboard and disk away, but kept all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cables connecting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 laptop's keyboard, screen, and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r ports, such as USB (yes, very long cables). The attacker cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n waits until cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user boots cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine, passes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine-to-user aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntications (however sophisticated it was), and finally enters cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk decryption key. In practice I wouldn't worry that much about such an attack, but just mentioning it here for completeness.

Finally, if our adversary is able to extract secret keys from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM somehow, e.g. using electron microscope, or via some secret backdoor in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM, or alternatively is able to install some hardware device on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rboard that would be performing TPM reset without resetting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 platform, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n such an attacker would be able to install Evil Maid program and avoid its detection by SRTM. Still, this doesn't automatically give access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user data, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker would need to obtain cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decryption key first (e.g. using Evil Maid attack).

Implementation Specific Attacks

In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 discussion above we assumed that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trusted boot has been correctly implemented. This might not be true, especially in case of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS. In that case we would be talking about attacks against a particular implementation of your BIOS (or TrustedGRUB), and not against Anti Evil Maid approach.

One typical problem might be related to how CRTM is implemented – if it is kept in a regular BIOS reflashable memory, than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker who can find a way to reflash cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS (which might be trivial in case your BIOS doesn't check digital signatures on updates) would be able to install Evil Maid in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS but pretend that all hashes are correct, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker controls cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 root of trust.

Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r possible implementation problem might be similar to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack we used some years ago to reflash a secure Intel BIOS (that verified digital signatures on updates) by presenting a malformed input to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS that caused a buffer overflow and allowed to execute arbitrary code within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS. For such an attack to work, however, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS should not measure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 input that is used as an attack vector. I think this was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 situation with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 logo picture that was used in our attack. Ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise, even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was a buffer overflow, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chain of trust would be broken and thus cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack detected. In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 possibility of such an attack seems to be racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r slim in practice.

What about Intel TXT?

Intel TXT takes an alternative approach to trusted boot. It relies on a Dynamic instead of Static Root of Trust for Measurement (DRTM vs. SRTM), which is implemented by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SENTER instruction and special dynamic PCR registers that can be set to zero only by SENTER. Intel TXT doesn't rely anymore on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS or CRTM. This offers a huge advantage that one doesn't need to trust cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS, nor cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 boot loader, and yet can still perform a trusted boot. Amazing, huh?

Unfortunately, this amazing property doesn't hold in practice. As we have demonstrated almost 3 years ago (!), it is not really true that Intel TXT can remove cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS away from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chain of trust. This is because Intel TXT is prone to attacks through a compromised SMM, and anybody who managed to compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS would be trivially able to also compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM (because it is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS that is supposed to provide cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMI handler).

Thus, if one compares SRTM with Intel TXT, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 conclusion is that Intel TXT cannot be more secure than SRTM. This is because if an attacker can compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker can also bypass Intel TXT (via a SMM attack). On cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r hand, a BIOS compromise alone doesn't automatically allow to bypass SRTM, as it has been discussed in a paragraph above.

It really is a pity, because ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise Intel TXT would be just a great technology. Shame on you Intel, really!

Alternative approaches to mitigate Evil Maid Attacks

Various people suggested ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r methods to prevent Evil Maid attacks, so lets quickly recap and discuss some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m...

The most straight forward approach suggested by most people, has been to disable booting from external devices in BIOS, togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r with locking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS setup with an admin password.

There are two problems with such an approach. First, all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOSes have a long history of so called default passwords (AKA maintenance passwords). You don't want to rely on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lack of BIOS default passwords when protecting your sensitive data, do you?

Second, even if your BIOS doesn't have a backdoor (maintenance password), it is still possible to just take your disk away and connect to anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r laptop and infect its boot partition.

Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r suggested approach has been to keep your boot partition on a separate USB stick. This solution obviously doesn't take into account cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker might install Evil Maid into your BIOS. Many consumer laptop BIOSes do not require digital signatures on BIOS firmware updates (my Sony Vaio Z, a racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r high-end machine, is among cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m), making it simple to install Evil Maid cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most trivial attack is to make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS always boot from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HDD instead of whatever ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r device cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user wanted to boot from).

Finally, some people pointed out that many modern laptops comes with SATA disks that offer ability to “lock” cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk so that it could only be used with a specific SATA controller. Using this, combined with setting your BIOS to only boot from your internal disk, plus locking access to BIOS setup, should provide reasonable protection. This solution, of course, doesn't solve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem of a potential maintenance password in your BIOS. Also being skeptical and paranoid as I am, I would not trust this mechanism to be really robust – I would expect it would be fairly simple to unlock cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk so that it could be paired with anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, unauthorized controller, and that this probably is a matter of NOP-ing a few instructions in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 controller firmware... In fact it seems like you can buy software to unlock this mechanism for some $50... And apparently (and not very surprisingly) some drives seems to continue on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 'default passwords' tradition.

FAQ 

Q: Bitlocker implemented this already several years ago, right?
A: No.

Q: But, two-factor aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication can also be used to prevent Evil Maid, right?
A: No.

Q: Does it make any sense to use Anti Evil Maid without a full disk encryption?
A: No.

Q: Are you going to answer 'no' for each question I ask?
A: No.

Q: Why cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are no negative indicators (e.g. a big scary warning) when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 unseal process fails?
A: The lack of negative indicators is intentional. The user should keep in mind that if somebody compromised cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir computer, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker would be able to display whatever she wants on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 screen, and especially to skip displaying of any warning messages. The only thing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker would not be able to display would be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret message. Thus, it would make no sense to use negative indicators, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would likely not work in case of a real attack. One solution here would be to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 unsealed secret as a keyfile for disk encryption (as discussed above), which would make it impossible to decrypt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user disk (and so generally proceed with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 boot) without successfully unsealing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM.