Several people asked me recently what I
though about DeepSafe.
So, below I present my opinion...
First, for any AV system (or Host IPS,
or Personal Firewall, etc) to work effectively, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are three problems that must be addressed:
- How to protect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 AV agent (code and data) from tampering (from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rest of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS)?
- How can cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 AV agent get reliable access to (sensitive pieces of) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system memory and registers, and/or provide reliable memory protection for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 (sensitive pieces of) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS.
- What are those "sensitive pieces of” memory that should be monitored or protected?
From reading various PR materials, it
seems like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 #1 above is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 primary differentiation factor for
DeepSafe (DS). So, let's consider this problem in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 context of e.g.
a Windows OS. In order to protect its code and data, DS uses, as it
is heavily advertised, Intel VT-x virtualization technology. Now,
that sounds really secure -- after all what can be more secure than a
hardware virtualization, right? ;)
But VT-x (including EPT) is only about
CPU virtualization, which in our case translates to protecting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DS
memory and registers from CPU-originating accesses. But, as every
regular to this blog knows, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is also anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r method of accessing
memory on any PC system, and this is through DMA transactions from
devices. The OS (so also cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel malware) is free to program one
of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 many devices in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system to issue DMA reads or writes to any
physical memory it
wants...
Now, in order to protect some portion
of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system memory (DRAM, cache) against DMA accesses, we have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
Intel VT-d technology... So, one would think that DS must be also
using VT-d in order to protect itself.
Very well, let's assume cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
DeepSafe is not a total ripoff,
and that it implements also VT-d protection for its agent, although I
haven't found this mentioned in any of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 public papers or press
materials I found on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web...
This, however, would be a bit complex
to do correctly, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS (so, also cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel malware) still
has a full control over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset (MCH), which is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 entity...
that controls cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VT-d.
Now, in order to
prevent cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS (or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel malware) from playing with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset
for fun and profit, and e.g. disabling VT-d protection, DS would have
to virtualize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset.
If you look at some consumer VMMs, such
as VMware or Xen/Qemu, you would see that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y all virtualize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
chipset for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir guests (of course), but that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y
provide this way is some kind of an ancient Pentium MCH. I don't
think any of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 consumers would be especially happy if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y found
out that after installing DS on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir brand new 2012 laptop, Windows
suddenly see a Pentium-era chipset... And this is not without a
reason – chipsets, specifically MCHs, are one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most complex
devices, perhaps only beaten by GPUs in this category. There are
virtually hundreds of configuration registers exposed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset,
some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m control cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VT-d, some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r control system memory maps
and permissions, PCIe configuration, and many ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r things that I
even have no idea about, and this all makes virtualizing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset
a very challenging task.
So, it's eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r that McAfee and Intel
found some interesting way of how to securely virtualize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset
while preserving all of its (very rich) functionality, or that
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y... don't bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r with VT-d protection and chipset virtualization
at all, assuming that even without VT-d, DeepSafe is good enough and
“rises cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bar” anyway (sarcasm intended).
(Can somebody from McAfee or Intel
confirm in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 comments below what does DP really do?)
Anyway, let's assume cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y do
have VT-d protection and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y do virtualize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset
somehow...
Now, we're moving on to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 #2 point
from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 list of tasks above -- about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reliable
memory access or reliable protection.
So, let say that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DS agent decided
that some part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system memory, e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 IDT table, is sensitive
and should be monitored/protected. So it sets up EPT traps to trigger
an VT-x/EPT intercept on any access to that memory (or IDT base
register), in order to find kernel malware that tried to modify IDT.
That sounds really nice, but what if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malware uses DMA to modify
IDT? DS would not be able to catch such access! (So far we considered
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365, hypocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365tical, use of VT-d only to protect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DS agent code).
One might think that DS is programming
VT-d to sandbox each and every device in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system (so including
GPU, USB controllers, NICs, SATA, etc) so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y never be
allowed to touch any of those sensitive parts of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system, such as
IDT. Let's assume cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y do it this way...
And here we've arrived to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last
point from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 list at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 beginning: which of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system memory
constitutes those "sensitive pieces" that should be
protected/monitored? IDT? Sure. What about all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code sections of
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel modules? Yes. Are we fine now? Well, no, because
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malware can hook some pointers 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 well known IDT.
Some public NDIS data structure? Ok, we can add those to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
protected areas. But, what about some undocumented NDIS structures?
And this is just NDIS subsystem, one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 many subsystems in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
Windows kernel... When we think about it, it should be intuitively
obvious that in a general purpose Operating System like Windows, it
is not possible (at least for 3rd party) to make a
satisfactory list of all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sensitive pieces of memory that should
be monitored/protected, in order to detect all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system
compromises.
Greg Hoglund, Jamie Butler, Alex
Tereshkin, and myself, have been researching this area actively in
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 early years of this millennium. In addition to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Alex's paper
linked above, you might also check out one of my last slides from
this
period.
I don't think anything has changed
since that time. It was also cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reason why I gave up on writing
Windows compromise detectors, or forensic tools, and moved on to
researching ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r ways to secure OSes, which finally gave birth to
Qubes OS, many years later.
So, back to DS -- in order to provide a
somehow satisfactory protection level for your general purpose OS,
such as Windows, it would need to:
- Use VT-d to protect its own memory,
- Virtualize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset, at least some (sensitive) parts of it,
- Program VT-d permissions for each device to exclude all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sensitive areas in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system that should be protected, and also protect one device from DMAing into/from anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r device memory (e.g. NIC stealing GPU framebuffer, or inserting instructions to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GPU instruction buffer, or keystrokes to USB controller buffer). Ideally, this could be done by programming VT-d to grant each device only access to its own DMA buffer, but as far as I know, this would be very hard to implement, if not impossible for a 3rd party, on a Windows OS (in contrast to Linux, which mostly support this model). Please correct me, if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recent Windows version allows for such use of VT-d.
- Finally, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most hard thing to solve, how to define all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "sensitive pieces of memory" in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system that should be protected and/or monitored? Although this is a somehow more generic problem, not specific to DS, but applying to any A/V, HIPS, or forensic tool.
So, is DeepSafe anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r piece of crap not worth any special attention, or has McAfee
and Intel came up with some novel methods, e.g. for chipset
virtualization, and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r problems? Unless I see some technical info to backup cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 latter, I would have to assume,
unfortunately, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 former. But I would like to be mistaken – after
all DeepSafe seems to be just a new incarnation of my Bluepill ;)