Friday, August 31, 2007

Tricky Tricks

I want to make a short philosophical comment about how some approaches to building security are wrong.

Let’s move back in time to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last decade of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XX century, to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 90’s... Back in those days one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most annoying problems in computer security was viruses, or, more precisely, executable file infectors. Many smart guys were working on both sides to create more stealthy infectors and also better detectors for those infectors…

Russian virus write Z0mbie with his Mistfall engine and Zmist virus went probably closest to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Holy Grail in this arm race – cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 creation of an undetectable virus. Peter Szor, a Symantec’s chief antivirus researcher, wrote about his work in 2001:

Many of us will not have seen a virus approaching this complexity for a few years. We could easily call Zmist one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most complex binary viruses ever written.

But nothing is really undetectable if you have a sample of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malware in your lab and can spent XXX hours analyzing it – you will always come up with some tricks to detect it sooner or later. The question is – were any of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 A/V scanners back cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n ready to detect such an infection if it was a 0day in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wild? Will any of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 today’s scanners detect a modified/improved Zmist virus, or would cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y have to count on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 virus author being nice enough to send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m a sample for an analysis first?

Interestingly, file infectors stopped being a serious problem a few years ago. But this didn’t happen because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 A/V industry discovered a miracle cure for viruses, but racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 users’ habits changed. People do not exchange executables that often as 10 years ago. Today people racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r download an executable from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Web (legal or not) racá 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ý bet365n copy it from a friend’s computer.

But could cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry have solved cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem of file infectors in an elegant, definite way? The answer is yes and we all know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 solution – digital signatures for executable files. Right now, most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 executables (but unfortunately still not all) on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 laptop I’m writing this text on are digitally signed. This includes programs from Microsoft, Adobe, Mozilla and even some open source ones like e.g. True Crypt.

With digital signatures we can "detect" any kind of executable modifications, starting form cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 simplest and ending with those most complex, metamorphic EPO infectors as presented e.g. by Z0mbie. All we need to do (or more precisely cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS needs to do) is to verify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 signature of an executable before executing it.

I hear all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 counter arguments: that many programs out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are still not digitally signed, that users are too stupid to decide which certificates to trust, that sometimes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bad guys might be able to obtain a legitimate certificate, etc...

But all those minor problems can be solved and probably will eventually be solved in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 coming years. Moreover, solving all those problems will probably cost much less cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 research on file infectors cost over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last 20 year. But that also means no money for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 A/V vendors.

Does it mean we get a secure OS this way? Of course not! Digital signatures do not protect against malicious code execution, e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can't stop an exploit from executing its shellcode. So why bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r? Because certificates allow to verify that what we have is really what we should have (e.g. that nobody infected any of our executable files). It’s cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first step in ensuring integrity of an OS.

The case of digital signatures vs. file infectors is a good example of how problems in security should be addressed. But we all know that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 A/V industry took a different approach – cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y invested zillions of dollars into research on polymorphic virus detection, built advanced emulators for analysis of infected files, etc. The outcome – lots of complex heuristics that usually work quite well against known patterns of infection, but are often useless against new 0day engines and also are so complex that nobody really knows how many false positives cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can produce and how buggy cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code itself is. Tricks! Very complex and maybe even interesting (from a scientific point of view) tricks.

So, do I want to say that all those years of A/V research on detecting file infections was a waste time? I’m afraid that is exactly what I want to say here. This is an example of how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security industry took a wrong path, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 path that never could lead to an effective and elegant solution. This is an example of how people decided to employ tricks, instead looking for generic, simple and robust solutions.

Security should not be built on tricks and hacks! Security should be built on simple and robust solutions. Oh, and we should always assume that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 users are not stupid – building solutions to protect uneducated users will always fail.

Friday, August 03, 2007

Virtualization Detection vs. Blue Pill Detection

So, it’s all over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 press now, but, as usual, many people didn’t quite get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main points of our Black Hat talk. So, let’s clear things up... First, please note that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 talk was divided into two separate, independent, parts – cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first one about bypassing vista kernel protection and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second one about virtualization based malware.

The message of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first part was that we don’t believe it’s possible to implement effective kernel protection on any general purpose OS based on monolithic kernel design.

The second part, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one about virtualization, had several messages...
  1. The main point was that detecting virtualization is not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same as detecting virtualization based malware. As hardware virtualization technology gets more and more widespread, many machines will be running with virtualization mode enabled, no matter whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r blue pilled or not. In that case blue pill-like malware doesn’t need to cheat that virtualization is not enabled, as it’s actually expected that virtualization is being used for some legitimate purposes. In that case using a "blue pill detector", that in fact is just a generic virtualization detector is completely pointless.

    Obviously in such scenarios blue pill-like malware must support nested hypervisors. And this is what we have implemented in our New Blue Pill. We can run tens of blue pills inside each ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y all work! You can try it by yourself, but you should disable comport debug output to do more cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n twenty nested pills. We still fail at running Virtual PC 2007 as a nested hypervisor (when it’s guest switches to protected mode), but we hope to have this fixed in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 coming weeks (please note that VPC’s hypervisor doesn’t block blue pill from loading – see our slides for more info).

    In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words, if somebody announces to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can fight virtualization based malware using generic virtualization detectors, it’s like if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y said that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can detect e.g. a botnet agent, just by detecting that an executable is using networking!

  2. We have also decided to discuss how blue pill could potentially cheat those generic virtualization detectors, even though we don’t believe it would be necessary in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 coming years, as everything will be virtualized anyways (see previous point). But, we still decided to look into some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SVM detection methods. First, we found out that many methods that people described as a way to detect virtualization do not work in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 simple form as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y were described. We took a closer look e.g. at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TLB profiling methods that were suggested by several researchers as a reliable method for virtualization detection. However all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 papers that were describing this method missed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 caches are not fully associative and one needs to use special effort (which means additional complexity) to make sure to e.g. fill cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole TLB L2 buffer. Obviously we provided all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 necessary details of how to write those detectors properly (we even posted one such detector).

    In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words - we believe that it will always be possible to detect virtualization mode using various tricks and hacks, but: 1) those hacks could be forced to be very complex and 2) in case virtualization is being used on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target computer for some legitimate purposes all those methods fail anyway (see point 1).

  3. Some people might argue that maybe cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n we should build cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se virtualization detectors into all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 legitimate hypervisors (e.g. Virtual PC hypervisor), so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y know at least 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ý bet365y are being run on a native machine or maybe inside blue pill. However this approach contradicts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rules we use to build secure and effective hypervisors. These rules say that hypervisors should be as small as possible and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re should be no 3rd party code allowed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re.

    Now imagine that A/V company try to insert cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir virtualization detectors (which BTW would have to be updated from time to time to support e.g. new processor models) into hypervisors – if that ever happened, it would be a failure of our industry. We need ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r methods to address this threat, methods that would be based on documented, robust and simple methods. Security should not be built on bugs, hacks and tricks!

We posted cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 full source code of out New Blue Pill here. We believe that it will help ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r researchers to to analyze this threat and hopefully we will find a good solution soon, before this ever become widespread.

Happy bluepilling!

On a side note: now I can also explain (if this is not clear already) how we were planning to beat our challengers. We would simply ask cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m to install Virtual Server 2005 R2 on all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 test machines and we would install our New Blue Pill on just a few of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. Then cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir wonderful detectors would simply detect that all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machines have SVM mode enabled, but that would be a completely useless information. Yes, we still believe we would need a couple of months to get our proof-of-concept to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 level we would be confident that we will win anyway (e.g. if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y used memory scanning for some “signature).

BTW, you might be wondering why I introduced cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “no CPU peek for more cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n 1s” requirement? I will leave finding an answer as an exercise from a psychology to my dear readers ;)