Thursday, October 25, 2007

Razor-Thin Hypervisors

I just came back from Stockholm where I attended cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Virtualization Forum, and saw several, quite interesting vendor presentations. One that caught my attention was a talk by VMware, and especially cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 part that talked about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new ESX 3i hypervisor and presented it as "razor-thin". This "razor-thin" hypervisor will have, according to VMWare, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 footprint "of only 32MB".

My regular readers might sense that I’m a bit ironic here. Well, 32MB of code is definitely not a "razor-thin" hypervisor in my opinion and it’s not even close to a thin hypervisor... But why am I so picky about it? Is it really that important?

Yes, I think so, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bigger cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 more chances that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is a bug somewhere out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. And one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reasons for using virtual machines is to provide isolation. Even if we use virtualization because of business reasons (server consolidation), still we want each VM to be properly isolated, to make sure that if an attackers "gets into" one VM, she will not be able to 0wn 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 VMs on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same hardware… In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words, isolation of VMs, is an extremely important feature.

During my presentation I also talked about thin hypervisors. I first referenced a few bugs that were found in various VMMs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recent months by ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r researchers (congrats to Rafal Wojtczuk of McAfee for some interestingly looking bugs in VMWare and Microsoft products). I used cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m as an argument that we should move towards very thin hypervisor architecture, exploiting hardware virtualization extension as much as possible (e.g. Nested Paging/EPT, IOMMU/DEV/NoDMA, etc) and avoiding doing things "in software".

Nobody should be really surprised seeing VMMs bugs – after all we have seen so many bugs in OS kernels over years, so no surprise we will see more and more bugs in VMMs, unless we switch to very thin hypervisors, so thin that it would be possible to understand and verify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir code by one person. Only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n we would be able to talk about security advantage (in terms of isolation) offered by VMMs comparing to traditional OSes.

I couldn’t refrain myself from mentioning that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 existence of those bugs in popular VMMs clearly shows that having a VMM already installed doesn’t currently prevent from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "Blue Pill threat" – a point often expressed by some virtualization vendors, who notoriously try to diminish cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 importance of this problem (i.e. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem of virtualization based malware).

I also announced that Invisible Things Lab has just started working with Phoenix Technologies. Phoenix is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world leader in system firmware, particularly known for providing BIOSes for PCs for almost 25 years, and currently is working on a new product called HyperCore that would be a very thin and lightweight hypervisor for consumer systems. ITL will be helping Phoenix to ensure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security of this product.

HyperCore hypervisor will use all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 latest hardware virtualization extensions, like e.g. Nested Paging/EPT to minimize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 unnecessary complexity and to provide negligible performance impact. For cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same reasons, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 I/O access will go through almost natively, just like in case of our Blue Pill...

Speaking about Blue Pill – Phoenix is also interested in furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r research on Blue Pill, which will be used as a test bed for trying various ideas – e.g. nested virtualization, which might be adopted in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 future versions of HyperCore to allow users to use ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r commercial VMMs inside cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir already-virtualized OSes. Blue Pill’s small size and minimal functionality makes it a convenient tool for experimenting. Phoenix will also support The Blue Pill Project which means that some parts of our research will be available for ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r researchers (including code)!

In case you still feel like having a look into my slides, you can get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m here.

Wednesday, October 17, 2007

Thoughts On Browser Rootkits

Petko D. Petkov from GNUCITIZEN wrote a post about Browser Rootkits, which inspired me to give some more thoughts on this subject. Petko is an active researcher in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 field of client-side exploits (e.g. recent Adobe Acrobat PDF flaw), so it’s not a surprise that he’s thinking about browsers as a natural environment for rootkits or malware. Also it’s quite common to hear an opinion cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days that browsers become so complicated and so universal that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are almost like operating systems racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than just standard applications.

Petko in his post gives several ideas of how browser-based malware could be created and I’m sure that we will see more and more such malware in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 near future (I would actually be surprised if it didn’t exist already). His main argument for creating “Browser Rootkits” is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would be “closer to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data”, which is, of course, undisputable.

The ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r argument is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 complexity of a typical browser like e.g. Firefox or Internet Explorer. It seems like we have a very similar situation here to what we have with "classic" operating systems like e.g. Windows. Windows is so complex that nobody (including Microsoft) can really spot all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sensitive places in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel where a rootkit might "hook" – thus it’s not possible to effectively monitor all those places. We have a similar problem with Firefox and IE because of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir extensible architecture (think about all those plugins, add-ons, etc) – although we could examine cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole memory of firefox.exe process, we still would not be able to decide whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r something bad is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re or not.

I’m even quite sure that my little malware taxonomy could be used here to classify Firefox or IE infections. E.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser malware of type 0, would be nothing else cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n just additional plugins, installed using official API and not trying to hide from browser reporting mechanisms (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ý bet365y still will be visible to users when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y will ask cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser to list all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 installed plugins). And we will have type I and type II infections, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 former would be simply modifying some code (be that a code of a browser or maybe of some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r plugin) while cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 latter would be hooking some function pointers or changing some data only – this all to hide cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 offensive module.

BTW, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is a little problem with classifying JIT-generated code – should it be type I or type II infection? I don’t know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 answer for now and I welcome all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 feedback on this. And we can even imagine type III infections of browsers, but I will leave it as an exercise for my readers :)

So, should we expect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 classic, OS-based rootkits to die and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 efforts in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malware community to move towards creating Browser-based rootkits? I don’t think so. While cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser-based malware is and will definitely be more and more important problem, it has one disadvantage comparing to classic OS-based malware. Namely it’s quite easy to avoid, or at least minimize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 impact from browser-based rootkits. It’s just enough to use two different browsers – one for sensitive and 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 one for non-sensitive operations.

So, for example, I use IE to do all my sensitive browsing (e.g. online banking, blogger access, etc), while Firefox to do all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 casual browsing, which includes morning press reading, google searching, etc. The reason I use Firefox for non-sensitive browsing doesn’t come from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that I think it’s more secure (or better written) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n IE, but because I like using NoScript and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no similar plugin for IE...

Of course, an attacker still might exploit my non-sensitive browser (Firefox) and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n modify configuration or executable files that are being used by my sensitive browser (IE). However this would require write-access to those files. This is yet anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r reason why one should run cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 non-sensitive browser with limited privileges and technologies like UAC in Vista help to achieve it. I wrote an article some time ago about how one can configure Vista to implement almost-full privilege separation.

Of course, even if we decide to use 2 different browsers - one for sensitive and 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 one for non-sensitive browsing, an attacker still might be able to break out from account protection via a kernel mode exploit (e.g. exploiting one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bug that Alex and I presented in Vegas this year). However this would not be a browser malware anymore – this would be a good old kernel-mode malware :)

A solution to this problem will probably be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 use of a Virtual Machine to run cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 non-sensitive browser. Even today one might download e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Browser Appliance from VMWare and we will see more and more solutions like this in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 coming years I think. This BTW, will probably stimulate more research into VM escaping and virtualization-based malware.

Of course, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very important and sometimes non-trivial question is how to decide which type of browsing is sensitive and which is non-sensitive. E.g. most people will agree cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 online banking is a sensitive browsing, but what about webmail? Should I use my sensitive or non-sensitive browser for accessing my mail via web? Using a sensitive browser for webmail is dangerous, as it’s quite possible that it could be infected via some malicious mail that would be in our inbox. While using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 non-sensitive browser for webmail is also not a good solution, as most people would like to consider mail as sensitive and would not like to allow cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 possibly-compromised browser to learn cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 password for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mailbox.

I avoid this problem by not using a browser for webmail and by having a special account just for running a thunderbird application (see again my article on how to do this in Vista). It works well for me.

Of course, one could also do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same for browser – i.e. instead of having 2 browsers (i.e. sensitive and non-sensitive), one could have 3 or more (maybe even 3 different virtual machines). But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 question is how many accounts should we use? One for email, one for sensitive browsing, one for non-sensitive, one for accessing personal data (e.g. pictures)...? I guess cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no good answer for this and it depends on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 specific situation (i.e. different configuration for home user that uses computer mostly for "fun" and different for somebody using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same computer for both work and "fun", etc...)

On a side note – I really don’t like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 idea of using a web browser to do "everything" – I like using browser to do browsing, while to do ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r things to use specialized applications. I like having my data on my local hard drive. It’s quite amazing that so many people cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days use Google not only for searching, but also for email, calendaring and documents editing – it’s like giving all your life secretes on a plate! Google can now correlate all your web search queries with a specific email account and even see who are you meeting with next evening and also know what a new product your company will be presenting next week, as you prepared you presentation using Google Documents. I’m not sure whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r it’s Google or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 people’s naivety that disturbs me more...

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 ;)

Thursday, June 28, 2007

We're ready for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Ptacek's challenge!

Thomas Ptacek and company just came up with this funny challenge to test our Blue Pill rootkit. And, needles to say, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Invisible Things Lab team is ready to take cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir challenge, however with some additional requirements, that would assure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fairness of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contest.

First, we believe that 2 machines are definitely not enough, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chance of correct guess, using a completely random (read: unreliable) detection method is 50%. Thus we think that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reasonable number is 5 machines. Each of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m could be in a state 0 or 1 (i.e. infected or not). On each of this machines we install two files: bluepill.exe and bluepill.sys

The .sys file is digitally signed, so it loads without any problem (we could use one of our methods for loading unsigned code on vista that we're planning to demonstrate at BH, but this is not part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 challenge, so we will use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 official way).

The bluepill.exe takes one argument which is 0 or 1. If it's 1 it loads cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 driver and infects cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machines. If it's 0 it also loads cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 driver, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 driver does not infect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine.

So, on each of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 5 machines we run bluepill.exe with randomly chosen argument, being 0 or 1. We make sure that at least one machine is not infected and that at least one machine is infected.

After that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 detection team runs cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir detector.exe executable on each machine. This program can not take any arguments and must return only one value: 0 or 1. It must act autonomously -- no human assistance when interpreting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results.

The goal of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 detection team is to correctly mark each machine as eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r being infected (1) or not (0). The chance of a blind guess is:

1/(2^5-2) = 3%

The detector can not cause system crash or halt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine -- if it does cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y lose. The detector can not consume significant amount of CPU time (say > 90%) for more cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n, say 1 sec. If it does, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n it's considered disturbing for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user and thus unpractical.

The source code of our rootkit as well as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 detector should be provided to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 judges at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 beginning of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contests. The judges will compile cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rootkit and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 detector and will copy cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 resulting binaries to all test machines.

After cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 completion of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contest, regardless of who wins, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sources for both cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rootkit and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 detector will be published in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Internet -- for educational purpose to allow ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs to research this subject.

Our current Blue Pill has been in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 development for only about 2 months (please note that we do not have rights to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 previous version developed for COSEINC) and it is more of a prototype, with primary use for our training in Vegas, 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 a "commercial grade rootkit". Obviously we will be discussing all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 limitations of this prototype during our training. We believe that we would need about 6 months full-time work by 2 people to turn it into such a commercial grade creature that would win cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contest described above. We're ready to do this, but we expect that somebody compensate us for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time spent on this work. We would expect an industry standard fee for this work, which we estimate to be $200 USD per hour per person.

If Thomas Ptacek and his colleges are so certain that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y found a panacea for virtualization based malware, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n I'm sure that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y will be able to find sponsors willing to financially support this challenge.

As a side note, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 description for our new talk for Black Hat Vegas has just been published yesterday.

Friday, May 18, 2007

Invisible Things Lab, Bitlocker/TPM bypassing and some conference thoughts

Invisible Things Lab’s website is now online! However, we still don’t have a cute logo because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 company where I order cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 logo presented me with something completely unacceptable and disappointing after taking a week to prepare it :( Alex is really pissed of by this and I hope we will find something nice really soon...

Anyway, as you can see on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 website, we don’t have any product and we focus on consulting and research-on-demand only. We mainly target three groups of customers:

First cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are security vendors and OS vendors, to whom we offer our product assessment and advisory services. E.g. we can take a look at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 design and implementation of a rootkit detector, host IPS or some custom hardened OS and point out all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 weaknesses we see and also give advices what we think should be improved. We can advise about both cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 design and implementation side, sometimes without requiring all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 product internal information being shared with us.

The ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r group is corporate customers interested in unbiased evaluation of security technology cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're planning to deploy. Here we can look at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 products cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y consider to deploy and point out pros and cons of each of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m and suggest cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best choice. So e.g. we can look at various “information leak protectors” and tell how sophisticated techniques are required to bypass each of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m (because, of course, all such products are bypassable). We can also advise about various technical aspects of implementing corporate security policies.

Finally cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are law enforcement customers and forensic investigators, whom we can help to stay up-to-date with current offensive technology as used e.g. by modern malware, by running various trainings and seminars. We can also share our experience with advanced stealth malware and covert channels to help investigate more sophisticated incidents.

Ok, so what we don’t do? Well, we do not do classic code auditing, understood as looking for implementation bugs like e.g. buffer overflows or race conditions. We still do implementation analysis, when e.g. assessing a product, but we look only at feature-specific parts of implementation – e.g. how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel protection or hooking has been implemented in a given host IDS.

We also don’t do web application security nor database security. There are people who have much more experience in this area cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n we have, so go to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m!

Finally, we do not do penetration testing, simply because I don’t believe this is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best way of improving system security. I can run 101 exploits against your server and even though all of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m fail, still it tells nothing about how secure is your system. Maybe cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is some little detail I missed which caused all my exploits to fail just because I was tired that day? I would definately prefer to talk to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security team and also to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server admin and ask cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y have done to secure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first place. If I though that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir approach has some weakness cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n I would simply advise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m what I think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y should improve. Later I would kindly ask cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m to give me cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 root/admin access so that I could verify by myself 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 advices have been implemented... This approach has an advantage of being much more complete and usually taking much less time over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 standard pen-testing. It has one disadvantage though – it’s not a good material for a Hollywood movie ;)

So, all in all, we focus on OS security in contrast to application security and network security (although we can be helpful with detecting covert channels in a corporate enviroment).

Speaking of OS security (and leaving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 subject of my new company for a second) – I recently had a pleasure of giving a keynote speech at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NLUUG conference in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Necá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rlands, which this year was focused on virtualization technology. The conference was really nice (even though 2/3 of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 talks were in Dutch) and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re were couple of talks I liked in particular. First, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was a talk about Microhypervisor Verification by Hendrik Tews. Author presented cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 overview of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Nizza architecture (which was interesting, but in my opinion way too complicated and impractical for using it anywhere outside cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 lab). He also talked about challenges with formal verification of kernel and microkernel, which was very interesting. I talked to him later about feasibility of verifying cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 monolithic kernels, like those in Linux or Windows and, not surprisingly, he said it's not really possible cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days and in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 coming years, because of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cost (I need to mention that he does cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 verification "manually").

There was also a nice presentation about Kernel Virtual Machine Monitor (KVM) for Linux by one of its developer Avi Kivity. I think in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 future it might be a strong competition to Xen, especially after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y add support for IOMMU technology (which I think is expected to be introduced on AMD and Intel processors somewhere in 2008). I really like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 design of KVM which takes advantage of many features already present in Linux kernel without implementing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m from scratch.

Finally cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was a presentation by anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r polish female researcher, Asia (Joanna) Slowinska. She talked about Prospector, a system built on top of a CPU emulator (based on Qemu) to automatically generate generic signatures for buffer overflow attacks (both heap and stack based). On a side note, Asia (which by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way is pronounced “Ashyia” and not like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 continent!) is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 short form of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 name Joanna, so basically almost everybody in Poland calls me Asia as well ;)

There was also a talk by Anil Madhavapeddy of XenSource, but in my opinion it was a little bit too much of a “marketing” presentation 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 a technical one (even though Anil turned out as a very technical and knowledgeable guy).

I also had some meetings at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Vrije Universiteit in Amsterdam cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following day, where I met with MINIX3 developers and prof. Andrew Tanenbaum (what a fool I was that I didn’t bring one of his famous books to get an autograph:/). I must say really like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 design of MINIX3, which keeps all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 drivers (and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r system components) in usermode, in separated address spaces. This is, however, still problematic today, as without IOMMU we can’t really fully protect kernel from usermode drivers, because of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 potential DMA attacks – i.e. a driver can setup a DMA write-transaction to overwrite some part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 micro kernel memory, thus owning cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system completely. But I guess we will all have processors supporting IOMMU within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next 1-2 years.

Just two days ago I delivered anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r keynote presentation, this time at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 InfoSecurity conference in Honk Kong, organized by Computer World. My speech was about “Human Factor vs. technology” and basically cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message I tried to pass was that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 technology is just as flawed as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 so called “human factor”, understood here as an user’s unawareness and administrator’s incompetence. I guess this is something perfectly obvious for most of technical security people, who at least once wrote an exploit by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves. But apparently not for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security management stuff... So, even though it was by far cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 least technical speech I have every gave in my life, it was received as way too technical for many attendees (who were like “OMG, that was a shock!”). And I didn’t even mention any specific research I’ve done – just some standard stuff about exploits etc...

I also took part in a discussion panel with several C-level executives, some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m being CIOs for some huge institutions, ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs being C-level marketing guys from several security vendors.

So, I must say I was really struck by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 complete lack of understanding of even cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 basic technical concepts behind IT security shown by some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 management people who were cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. I understand, of course, that typical CIO or CSO doesn’t need to know much about technical details about how exploits and malware work, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir naivety was really shocking!

Speaking of conferences, I own apologizes to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 organizers of Confidence 2007 conference in Krakow, Poland. After spending several days in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Necá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rlands, experiencing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir rainy weacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r and also because of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 shortage of sleep in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recent weeks due to some traveling (especially lack of my afternoon naps), I got sick and couldn’t make it to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 conference. I heard it was very good this year, featuring many international speakers and, of course, Krakow, which is one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 nicest cities in Poland.

Finally, I would like to explain a little confusion around our Black Hat training. Shortly after we announced cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 training, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re appeared some press articles which incorrectly described cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel attacks that we’re going to present in Vegas. In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original blog post I said that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se attacks “work on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fly and do not require system reboot and are not afraid of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM/Bitlocker protection”, but some people understood that we were going to actually present ways to defeat Bitlocker Drive Encryption (BDE). This is quite a misunderstanding, because those attacks, which allow for inserting unsigned code into Vista x64 kernel, are “not afraid of TPM/Bitlocker” simply because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can be executed on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fly and thus do not require system reboot, while Bitlocker’s task is to secure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 boot process, but not to prevent cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel against compromises!

However I intentionally mentioned TPM and Bitlocker, just to stress that those technologies have simply nothing to do with stopping rootkits and kernel compromises, provided you’re using kernel attacks which do not require system reboot, even though cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y’re often advertised as if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y had… So, basically, even if we could break cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BDE, it still wouldn’t give us any benefit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days. The situation will change within 2-3 years or so, i.e. when Microsoft will eventually come up with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own hypervisor, but that’s a different story...

Friday, April 20, 2007

Understanding Stealth Malware



Ever wondered whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Blue Pill really works or was just a PR stunt? Ever wanted to see how practical are various timing attacks against it? (And can even those “unpractical” be cheated?) Or how many Blue Pills inside each ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r can you run and still be able to play your favorite 3D game smoothly? Or how deep Alex can hook into Windows NDIS to bypass your personal firewall? Do you want to see Patch Guard from a “bird’s eye view” perspective? Or do you simply want to find out how well cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 latest Vista x64 kernel is protected? Ever wondered how rootkits like Deepdoor and Firewalk really worked? You can’t sleep, because you’re thinking constantly about how Blue Pill-like malware can be prevented? Does Northbridge hacking sound sexy to you? :)

At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very end of July, during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Black Hat Briefings in Las Vegas, Alex Tereshkin and I will be running a training “Understanding Stealth Malware”, where you should be able to find answers to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above questions plus many more.

The training will feature many previously unpublished techniques, implementation details, and of course lots of brand new code, developed especially for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 training. The code will include sample rootkits similar to Deepdoor, Firewalk, Blue Pill and Delusion (but redesigned and rewritten from scratch) as well as some more exotic things, like e.g. anti-hardware-forensic attacks.

As cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 training will be focused on Windows platform and Vista x64 specifically, we will also present some new kernel attacks against latest Vista x64 builds. These attacks, of course, work on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fly and do not require system reboot and are not afraid of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM/Bitlocker protection. (Although cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y could also be used to bypass Vista DRM protection, this subject will not be discussed during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 training).

Attendees will mostly work with kernel debuggers in order to analyze and understand various techniques used in system compromises. The main goal of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 training is to help students understand contemporary malware techniques, enable cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m to see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “bigger picture” over technical details and show possible approaches to compromise detection.

Thus cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 course is primarily targeted for developers of security products, forensic investigators, pen-testers and OS developers. It’s recommended that attendees have a basic knowledge of OS design and implementation (specifically Windows), C programming, at least basic experience with debugging and ability to understand fragments of assembler code (IA32 architecture).

For ethical reasons we want to limit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 availability of this course to only "legitimate" companies, thus we require that you specify your official business email address and company's website when registering for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 course.

Pre-configured workstations will be provided, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no need to prepare for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 course in any specific way. You can find more information and register for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 training on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 blackhat website. Please note that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re will be only 2 public classes of this training this year – both during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Black Hat Briefings (28/29 and 30/31 of July). More classes will be available only in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form of on-site trainings for corporate customers.

Please also note that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 number of seats is hard-limited by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 number of available workstations, so we encourage registering early.

As for 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 news – I have just quit COSEINC last week and I’m in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process of establishing a new security consulting and research company. For now I can only betray cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 name: Invisible Things Lab - expect more details to be posted here in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 coming weeks :)

Sunday, April 01, 2007

The Human Factor

When you go to some security conferences, especially those targeted for management staff, you might get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 impression that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only problem in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security field that mankind is facing today is… that we’re too stupid and we do not know how to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 technology properly. So, we, use those silly simple passwords, allow strangers to look at our laptop screens over our shoulders, happily provide our e-bank credentials or credit card numbers to whoever asks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m, etc… Sure, that’s true indeed – many people (both administrators and users) do silly mistakes and this is very bad and, of course, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y should be trained not to do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m.

However, we also face anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r problem cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days… A problem of no less importance 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 human factor”. Namely, even if we were perfectly trained to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 technology and understood it very well, we would still be defenseless in many areas. Just because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 technology is flawed!

Think about all those exploitable bugs in WiFi drivers in your laptop or email clients vulnerabilities (e.g. in your GPG/PGP software). The point is, you, as a user can not do anything to prevent exploitation of such bugs. And, of course, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 worst thing is, that you don’t even have any reliable way to tell whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r somebody actually successfully attacked you or not – see my previous post. None of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 so called “industry best practices” can help – you just need to hope that your system hasn’t been 0wned. And this is really disturbing…

Of course, you can chose to believe in all this risk assessment pseudo-science, which can tell you that your system is “non-compromised with 98% probability” or you can try to comfort yourself because you know that your competition has no better security cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y you… ;)

Monday, March 26, 2007

The Game Is Over!

People often say that once an attacker gets access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game is over! That’s true indeed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days, and most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 research I have done over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past two years or so, was about proofing just that. Some people, however, go a bit furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r and say, that thus cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no point in researching ways to detect system compromises and, once an attacker got in, you should simply assume everything has been compromised and replace all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 components, i.e. buy new machine (as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker might have modified cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS or re-flashed PCI EEPROMs), reinstall OS, all applications, etc.



However, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y miss one little detail – how can cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y actually know that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker got access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system and that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 game is over indeed and we need to reinstall just now?

Well, we simply assume that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker had to make some mistake and that we, sooner or later, will find out. But what if she didn’t make a mistake?

There are several trends of how this problem should be addressed in a more general and elegant way though. Most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m are based on a proactive approach. Let’s have a quick look at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m…
  1. One generic solution is to build in a prevention technology into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS. That includes all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 anti-exploitation mechanisms, like e.g. ASLR, Non Executable memory, Stack Guard/GS, and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs, as well as some little design changes into OS, like e.g. implementation of least-privilege principle (think e.g. UAC in Vista) and some sort of kernel protection (e.g. securelevel in BSD, grsecurity on Linux, signed drivers in Vista, etc).

    This has been undoubtedly cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most popular approach for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last couple of years and recently it gets even more popular, as Microsoft implemented most of those techniques in Vista.

    However, everybody who follows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security research for at least several years should know that all those clever mechanisms have all been bypassed at least once in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir history. That includes attacks against Stack Guard protection presented back in 2000 by Bulba and Kil3r, several ways to bypass PaX ASLR, like those described by Nergal in 2001 and by ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs several months later as well as exploiting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 privilege elevation bug in PaX discovered by its author in 2005. Also cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Microsoft's Hardware DEP (AKA NX) has been demonstrated to be bypassable by skape and Skywing in 2005.

    Similarly, kernel protection mechanisms have also been bypassed over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past years, starting e.g. with this nice attack against grsecurity /dev/(k)mem protection presented by Guillaume Pelat in 2002. In 2006 Loic Duflot demonstrated that BSD's famous securelevel mechanism can also be bypassed. And, also last year, I showed that Vista x64 kernel protection is not foolproof eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r.

    The point is – all those hardening techniques are designed to make exploitation harder or to limit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 damage after a successful exploitation, but not to be 100% foolproof. 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, it must be said, that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y probably represent cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best prevention solutions available for us cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days.

  2. Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r approach is to dramatically redesign cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole OS in such a way that all components (like e.g. drivers and serves) are compartmentalized, e.g. run as separate processes in usermode, and consequently are isolated not only from each ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r but also from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS kernel (micro kernel). The idea here is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most critical components, i.e. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 micro kernel, is very small and can be easily verified. Example of such OS is Minix3 which is still under development though.

    Undoubtedly this is a very good approach to minimize impact from system or driver faults, but does not protect us against malicious system compromises. After all if an attacker exploits a bug in a web browser, she may only be interested in modifying cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser’s code. Sure, she probably would not be able to get access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 micro kernel, but why would she really need it?

    Imagine, for example, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following common scenario: many online banking systems require users to use smart cards to sign all transaction requests (e.g. money transfers). This usually works by having a browser (more specifically an ActiveX control or Firefox’s plugin) to display a message to a user that he or she is about to make e.g. a wire transfer to a given account number for a given amount of money. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user confirms that action, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y should press an ‘Accept’ button, which instructs browser to send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 smart card for signing. The message itself is usually just some kind of formatted text message specifying cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source and destination account numbers, amount of money, date and time stamp etc. Then cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user is asked to insert cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 smart card, which contains his or her private key (issued by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bank) and to also enter cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PIN code. The latter can be done eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r by using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same browser applet or, in slightly more secure implementations, by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 smart card reader itself, if it has a pad for entering PINs.

    Obviously cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 point here is that malware should not be able to forge cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 digital signature and only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 legitimate user has access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 smart card and also knows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 card’s PIN, so nobody else will be able to sign that message with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user’s key.

    However, it’s just enough for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker to replace cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message while it’s being send to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 card, while displaying cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original message in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser’s window. This all can be done by just modifying (“hooking”) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser’s in-memory code and/or data. No need for kernel malware, yet cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser more specifically) is compromised!


    Still, one good thing about such a system design is that if we don’t allow an attacker to compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 microkernel, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n, at least in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ory, we can write a detector capable of finding that some (malicious) changes to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browsers memory have been introduced indeed. However, in practice, we would have to know how exactly cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser’s memory should look like, e.g. which function pointers in Firefox’s code should be verified in order to find out whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r such a compromise has indeed occurred. Unfortunately we can not do that today.

  3. Alternative approach to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above two, which does not require any dramatic changes into OS, is to make use of so called sound static code analyzers to verify all sensitive code in OS and applications. The soundness property assures that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 analyzer has been macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matically proven not to miss even a single potential run time error, which includes e.g. unintentional execution flow modifications. The catch here is that soundness doesn’t mean that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 analyzer doesn’t generate false positives. It’s actually macá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365matically proven that we can’t have such an ideal tool (i.e. with zero false positive rate), as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem of analyzing all possible program execution paths is incomputable. Thus, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 practical analyzers always consider some superset of all possible execution flows, which is easy to compute, yet may introduce some false alarms and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole trick is how to choose that superset so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 number of false positives is minimal.

    ASTREE is an example of a sound static code analyzer for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 C language (although it doesn’t support programs which make use of dynamic memory allocation) and it apparently has been used to verify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 primary flight control software for Airbus A340 and A380. Unfortunately, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re doesn’t seem to be any publicly available sound binary code static analyzers… (if anybody knows any links, you’re more cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n welcome to paste cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 links under this post – just please make sure you’re referring to sound analyzers).

    If we had such sound and precise (i.e. with minimal rate of false alarms) binary static code analyzer that could be a big breakthrough in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS and application security.

    We could imagine, for example, a special authority for signing device drivers for various OSes and that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would first perform such a formal static validation on submitted drivers and, once passed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 test, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 drivers would be digitally signed. Plus, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS kernel itself would be validated itself by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vendor and would accept only those drivers which were signed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 driver verification authority. The authority could be an OS vendor itself or a separate 3rd party organization. Additionally we could also require that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code of all security critical applications, like e.g. web browser be also signed by such an authority and set a special policy in our OS to allow e.g. only signed applications to access network.

    The only one week point here is, that if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 private key used by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 certification authority gets compromised, 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 game is over and nobody really knows that… For this reason it would be good, to have more cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n one certification authority and require that each driver/application be signed by at least two independent authorities.

From cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above three approaches only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last one can guarantee that our system will not get compromised ever. The only problem here is that… cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are no tools today for static binary code analysis that would be proved to be sound and also precise enough to be used in practice…

So, today, as far as proactive solutions are considered, we’re left only with solutions #1 and #2, which, as discussed above, can not protect OS and applications from compromises in 100%. And, to make it worse, do not offer any clue, 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 compromise actually occurred.

That’s why I’m trying so much to promote cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 idea of Verifiable Operating Systems, which should allow to at least find out (in a systematic way) 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 system in question has been compromised or not (but, unfortunately not to find 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 single-shot incident occurred). The point is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 number of required design changes should be fairly small. There are some problems with it too, like e.g. verifying JIT-like code, but hopefully cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can be solved in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 near feature. Expect me to write more on this topic in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 near feature.

Special thanks to Halvar Flake for eye-opening discussions about sound code analyzers and OS security in general.

Monday, March 05, 2007

Handy Tool To Play with Windows Integrity Levels

Mark Minasi wrote to me recently to point out that his new tool, chml, is capable of setting NoReadUp and NoExecuteUp policy on file objects, in addition to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 standard NoWriteUp policy, which is used by default on Vista.

As I wrote before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default IL policy used on Vista assumes only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NoWriteUp policy. That means that all objects which do not have assigned any IL explicitly (and consequently are treated as if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y were marked with Medium IL) can be read by low integrity processes (only writes are prevented). Also, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 standard Windows icacls command, which allows to set IL for file objects, assumes always cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NoWriteUp policy only (unless I’m missing some secret switch).

However, it’s possible, for each object, to define not only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 integrity level but also cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 policy which will be used to access it. All this information is stored in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same SACE which also defines cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 IL.

There doesn’t seem to be too much documentation from Microsoft about how to set those permissions, except this paper about Protected Mode IE and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sddl.h file itself.

Anyway, it’s good to see a tool like chml as it allows to do some cool things in a very simple way. E.g. consider that you have some secret documents in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 folder c:\secretes and that you don’t feel like sharing those files with anybody who can exploit your Protected Mode IE. As I pointed out in my previous article, by default all your personal files are accessible to your Protected Mode IE low integrity process, so in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 event of successful exploitation cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker is free to steal cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m all. However now, using Mark Minasi’s tool, you can just do this:
chml.exe c:\secrets -i:m -nr -nx
This should prevent all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 low IL processes, like e.g. Protected Mode IE, from reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contents of your secret directory.

BTW, you can use chml to also examine cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SACE which was created:
chml.exe c:\secrets -showsddl
and you should get something like that as a result:
SDDL string for c:\secrets's integrity label=S:(ML;OICI;NRNX;;;ME)
Where S means that it’s an SACE (in contrast to e.g. DACE), ML says that this ACE defines mandatory label, OICI means “Object Inherit” and “Container Inherit”, NRNX defines that to access this object cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NoReadUp and NoExecuteUp policies should be used (which also implies cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NoWriteUp BTW) and finally cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ME stands for Medium Integrity Level.

All credits go to Mark Minasi and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Windows IL team :)

As a side note: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 updated slides for my recent Black Hat DC talk about cheating hardware based memory acquisition can be found here. You can also get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 demo movies here.

Tuesday, February 13, 2007

Confusion About The "Joke Post"

It seems that many people didn’t fully understand why I wrote cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 previous post – Vista Security Model – A Big Joke... There are two things which should be distinguished:

1) The fact that UAC design assumes that every setup executable should be run elevated (and that a user doesn't really have a choice to run it from a non-elevated account),

2) The fact that UAC implementation contains bug(s), like e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bug I pointed out in my article, which allows a low integrity level process to send WM_KEYDOWN messages to a command prompt window running at high integrity level.

I was pissed off not because of #1, but because Microsoft employee - Mark Russinovich - declared that all implementation bugs in UAC are not to be considered as security bugs.

True, I also don't like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that UAC forces users to run every setup program with elevated privileges (fact #1), but I can understand such a design decision (as being a compromise between usability and security) and this was not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reason why I wrote "The Joke Post".

Monday, February 12, 2007

Vista Security Model – A Big Joke?

[Update: if you came here from ZDNet or Slashdot - see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 post about confusion above!]

Today I saw a new post at Mark Russinovich’s blog which I take as a response to my recent musings about Vista security features, where I pointed out several problems with UAC, like e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack that allows for a low integrity process to hijack cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 high integrity level command prompt. Those who read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole article undoubtedly noticed that my overall opinion of vista security changes was still very positive – after all everybody can do mistakes and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact UAC is not perfect, doesn’t diminish cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that it’s a step into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right direction, i.e. implementing least-privilege policy in Windows OS.

However, I now read this post by Mark Russinovich (a Microsoft employee), which says:
"It should be clear cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n, that neicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r UAC elevations nor Protected Mode IE define new Windows security boundaries. Microsoft has been communicating this but I want to make sure that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 point is clearly heard. Furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, as Jim Allchin pointed out in his blog post Security Features vs Convenience, Vista makes tradeoffs between security and convenience, and both UAC and Protected Mode IE have design choices that required paths to be opened in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 IL wall for application compatibility and ease of use."

And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n we read:
"Because elevations and ILs don’t define a security boundary, potential avenues of attack, regardless of ease or scope, are not security bugs. So if you aren’t guaranteed that your elevated processes aren’t susceptible to compromise by those running at a lower IL, why did Windows Vista go to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trouble of introducing elevations and ILs? To get us to a world where everyone runs as standard user by default and all software is written with that assumption."

Oh, excuse me, is this supposed be a joke? We all remember all those Microsoft’s statements about how serious Microsoft is about security in Vista and how all those new cool security features like UAC or Protected Mode IE will improve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world’s security. And now we hear what? That this flagship security technology (UAC) is in fact… not a security technology!

I understand that implementing UAC, UIPI and Integrity Levels mechanisms on top of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 existing Windows OS infrastructure is a hard task and it would be much easier to design cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole new OS from scratch and that Microsoft can’t do this for various of reasons. I understand that all, but that doesn’t mean that once more people at Microsoft realized that too, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y should turn everything into a big joke? Or maybe I’m too much of an idealist…

So, I will say this: If Microsoft won’t change cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir attitude soon, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n in a couple of months cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security of Vista (from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 typical malware’s point of view) will be equal to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security of current XP systems (which means, not too impressive).

Sunday, February 04, 2007

Running Vista Every Day!

More cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n a month ago I have installed Vista RTM on my primary laptop (x86 machine) and have been running it since that time almost every day. Below are some of my reflections about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new security model introduced in Vista, its limitations, a few flaws and some practical info about how I configured my system.

UAC – The Good and The Bad

User Account Control (UAC) is a new security mechanism introduced in Vista, whose primary goal is to force users to work using restricted accounts, instead working as administrators. This is, in my opinion cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most important security mechanism introduced in Vista. That doesn’t mean it can not be bypassed in many ways (due to implementation flaws), but just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that such a design change has been made into Windows is, without doubt, a great step towards securing consumer OSes.

When UAC is active (which is a default setting) even when user logs in as an administrator, most of her programs run as restricted processes, i.e. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y have only some very limited subset of privileges in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir process token. Also, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y run at, so called, Medium integrity level, which, among ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r things, should prevent those applications from interacting with higher integrity level processes via Window messages. This mechanism also got a nice marketing acronym, UIPI, which stands for User Interface Privilege Isolation. Once cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system determines that a given program (or a given action) requires administrative privileges, because e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user wants to change system time, it displays a consent window to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user, asking her whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r she really wants to proceed. In case cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user logged in as a normal user (i.e. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 account does not belong to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Administrators group), 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 user is also asked to enter password for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 administrator's accounts. You can find more background information about UAC, e.g. at this page.

Many people complain about UAC, saying that it’s very annoying for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m to see UAC consent dialog box to appear every few minutes or so, and claim that this will discourage users from using this mechanism at all (and yes, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re’s an option to disable UAC). I strongly disagree with such opinion - I’ve been running Vista more cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n a month now and, besides cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first few days when I was installing various applications, I now do not see UAC prompt more cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n 1-2 times per day. So, I really wonder what those people are doing that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y see UAC constantly appearing every ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r minute…

One thing that I found particularly annoying though, is that Vista automatically assumes that all setup programs (application installers) should be run with administrator privileges. So, when you try to run such a program, you get a UAC prompt and you have only two choices: eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r to agree to run this application as administrator or to disallow running it at all. That means that if you downloaded some freeware Tetris game, you will have to run its installer as administrator, giving it not only full access to all your file system and registry, but also allowing e.g. to load kernel drivers! Why Tetris installer should be allowed to load kernel drivers?

How Vista recognizes installer executables? It has a compatibility database as well as uses several heuristics to do that, e.g. if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file name contains cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 string “setup” (Really, I’m not kidding!). Finally it looks at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 executable’s manifest and most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 modern installers are expected to have such manifest embedded, which may indicate that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 executable should be run as administrator.

To get around this problem, e.g. on XP, I would normally just add appropriate permissions to my normal (restricted) user account, in such a way that this account would be ale to add new directories under C:\Program Files and to add new keys under HKLM\Software (in most cases this is just enough), but still would not be able to modify any global files nor registry keys nor, heaven forbid, to load drivers. More paranoid people could chose to create a separate account, called e.g. installer and use it to install most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 applications. Of course, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 real life is not that beautiful and you sometimes need to play a bit with regmon to tweak cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 permissions, but, in general it works for majority of applications and I have been successfully using this approach for years now on my XP box.

That approach would not work on Vista, because every time Vista detects that an executable is a setup program (and believe me Vista is really good at doing this), it will only allow running it as administrator… Even though it’s possible to disable heuristics-based installer detection via local policy settings – see picture below:



that doesn’t seem to work for those installer executables which have embedded manifest saying that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y should be run as administrator.

I see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above limitation as a very severe hole in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 design of UAC. After all, I would like to be offered a choice whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r to fully trust given installer executable (and run it as full administrator) or just allow it to add a folder in C:\Program Files and some keys under HKLM\Software and do nothing more. I could do that under XP, but apparently I can’t under Vista, which is a bit disturbing (unless I’m missing some secret option to change that behavior).

Integrity Levels – Protect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS but not your data!

Integrity Levels (IL) mechanism has been introduced to help implementing UAC. This mechanism is very simple – every process can be assigned one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 four possible integrity levels:

• Low
• Medium
• High
• System

Similarly, every securable object in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system, like e.g. a directory, file or registry key, can also be assigned an integrity level. Integrity level is nothing else cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n just an ACE of a special type assigned to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SACL list. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re’s no such ACE at all, 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 integrity level of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 object is assumed to be Medium. You can use icacls command to see integrity levels on file system objects:
C:\>icacls \Users\joanna\AppData\LocalLow
\Users\joanna\AppData\LocalLow silverose\joanna:(F)
silverose\joanna:(OI)(CI)(IO)(F)
NT AUTHORITY\SYSTEM:(F)
NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(F)
BUILTIN\Administrators:(F)
BUILTIN\Administrators:(OI)(CI)(IO)(F)
Mandatory Label\Low Mandatory Level:(OI)(CI)(NW)
BTW, I don’t know any tool/command to see and modify integrity levels assigned to registry keys (I think I know how to do this in C though). Anybody?

Now, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole concept behind IL is that a process can only get write-access to those objects which have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same or lower integrity level 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 process itself.

Update (March 5th, 2007): This is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default behavior of IL and is indicated by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “(NW)” symbol on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 picture above, which stands for NoWriteUp policy. I have just learned that one can use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chml tool by Mark Minasi to set also a different policy, i.e. NoReadUp (NR) or NoExecuteUp (NX), which would result that IL mechanism will not allow a lower integrity process to read or execute cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 objects marked with higher IL. See also my recent post about this tool.

UAC is implemented using IL – even if you log in as administrator, all your processes (like e.g. explorer.exe) run with Medium IL. Once you elevated to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “real admin” your process runs at High IL. System processes, like e.g. services, runs at System IL. From cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security point of view High IL seems to be equivalent to System IL, because once you are allowed to execute code at High IL you can compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole system.

Internet Explorer’s protected mode is implemented using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 IL mechanism. The iexplore.exe process runs at Low IL and, in a system with default configuration, can only write to %USERPROFILE%\AppData\LocalLow and HKCU\Software\AppDataLow because all ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r objects have higher ILs (usually Medium).

If you don’t like surfing using IE, you can very easily setup your Firefox (or ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r browser of your choice) to run as Low integrity process (here we assume that Firefox user’s profile is in j:\config\firefox-profile):
C:\Program Files\Mozilla Firefox>icacls firefox.exe /setintegritylevel low
J:\config>icacls firefox-profile /setintegritylevel (OI)(CI)low
Because firefox.exe is now marked as a Low integrity file, Vista will also create a Low integrity process from this file, unless you are going to start this executable from a High integrity process (e.g. elevated command prompt). Also, if you, for some reason (see below), wanted to use runas or psexec to start a Low integrity process, it won’t work and will start cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process as Medium, regardless that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 executable is marked as Low integrity.

It should be stressed that IL, by default, protects only against modifications of higher integrity objects. It’s perfectly ok for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Low IL process to read e.g. files, even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are marked as Medium or High IL. In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words, if somebody exploits IE running in Protected Mode (at Low IL), she will be able to read (i.e. steal) all user’s data.

This is not an implementation bug, this is a design decision and it’s cleverly called cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “read-up policy”. If we think about it for a while, it should become clear why Microsoft decided to do it that way. First, we should observe, that what Microsoft is most concerned about, is malware which permanently installs itself in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system and that could later be detected by some anti-malware programs. Microsoft doesn’t like it, because it’s cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source of all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 complains about how insecure Windows is and also cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 A/V companies can publish cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir statistics about how many percent of computers is compromised, etc… All in all, a very uncomfortable situation, not only for Microsoft but also for all those poor users, who now need to try all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 various methods (read buy A/V programs) to remove cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malware, instead just focus on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir work…

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, imagine a reliable exploit (i.e. not crashing a target too often) which, after exploiting e.g. IE Protected Mode process, steals all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user’s DOC and XLS files, sends cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m back somewhere and afterwards disappears in an elegant fashion. Our user, busy with his every day work, does not even notice anything, so he can continue working undisturbed and focus on his real job. The A/V programs do not detect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 exploit (why should cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y? – after all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re’s no signature for it nor cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 shellcode uses any suspicious API) so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y do not report cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine as infected – because, after all it’s not infected. So, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 statistics look better and everybody is generally happier. Including cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 competition, who now has access to stolen data ;)

User Interface Privilege Isolation and some little Fun

UAC and Integrity Levels mechanism makes it possible for processes running with different ILs to share cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same desktop. This raises potential security problem, because Windows implements a mechanism to allow one process to send a “window message”, like e.g. WM_SETTEXT, to anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r process. Moreover, some messages, like e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 infamous WM_TIMER, could be used cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 redirect execution flow of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target thread. This has been popular a few years ago in so called “Shatter Attacks”.

UIPI, introduced in Vista, is for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rescue. UIPI basically enforces cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 obvious policy that lower integrity processes can not send messages to higher integrity processes.

Interestingly, UIPI implementation is a bit “unfinished” I would say… For example, in contrast to design assumption, on my system at least, it is possible for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Low integrity process to send e.g. WM_KEYDOWN to e.g. open Administrative shell (cmd.exe) running at High IL and gets arbitrary commands executed.

One simple scenario of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack is that a malicious program, running at Low IL, can wait for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user to open elevated command prompt – it can e.g. poll cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 open window handles e.g. every second or so (Window enumeration is allowed even at Low IL). Once it finds cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 window, it can send commands to execute… Probably not that cool as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recent “Vista Speech Exploit”, but still something to play with ;)

It’s my feeling that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are more holes in UAC, but I will leave finding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m all as an exercise for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 readers...

Do-It-Yourself: Implementing Privilege Separation

Because of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 limitations of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 UAC and IL mentioned above (i.e. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 read-up policy), I decided to implement a little privilege-separation policy in my system. The first thing we need, is to create a few more accounts, each for a specific type of applications or tasks. E.g. I decided that I want a separate account to run my web browser, a different one for running my email client as well as IM client (which I occasionally run) and a whole ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r account to deal with my super-secret projects. And, of course, I need a main account, that is, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 one which I will use to log in to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system. All in all, here is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 list of all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 accounts on my Vista laptop:

admin
joanna
joanna.web
joanna.email
joanna.sensitive

So, joanna is used to log into system (this is, BTW, a truly limited account, i.e. it doesn’t belong to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Administrators group) and Explorer and all applications like e.g. Picassa are started using this account. Firefox and Thunderbird run as joanna.web and joanna.email respectively. However, a little trick is needed here, if we want to start those applications as Low IL processes (and we want to do this, because we want UIPI to protect, at least in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ory, ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r applications from web and mail clients if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y got compromised somehow). As it was mentioned above, if one uses runas or psexec cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 created process will run as Medium IL, regardless cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 integrity level assigned to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 executable. We can get around this, buy using this simple trick (note cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 nested quotations):
runas /user:joanna.web "cmd /c start \"c:\Program Files\Mozilla Firefox\firefox.exe\""
c:\tools\psexec -d -e -u joanna.web -p l33tp4ssw0rd "cmd" "/c start "c:\Program Files\Mozilla Firefox\firefox.exe""
Obviously, we also need to set appropriate ACLs on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 directories containing Firefox and Thunderbird user’s profiles, so that each of those two users get full access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 respective directories as well as to a \tmp folder, used to store email attachments and downloaded files. No ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r personal files should be accessible to joanna.web and joanna.email.

Finally, being a paranoid person as I am, I have also a special user joanna.sensitive, which is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only one granted access to my \projects directory. It may come as a surprise, but I decided to make joanna.sensitve a member of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Administrators group. The reason for that is that I need to make all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 applications which run as joanna.sensitve (e.g. gvim, cmd, Visual Studio, KeePass, etc) to have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir UI isolated from all ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r normal applications, which run as joanna at Medium IL. It seems like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only way to start a processes at High IL is to make it part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Administrators group and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n use ‘Run As Administrator’ or runas command to start it.

That way we have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 highly dangerous applications, like web browser or email client, run at Low IL and as very limited users (joanna.web and joanna.email), who have access only to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 necessary profile directories (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 restriction, this time, applies both to read- and write- accesses, because it’s enforced by normal ACLs on file system objects and not by IL mechanism). Then we have all ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r applications, like Explorer, various Office applications, etc. running as joanna at Medium IL and finally cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most critical programs, those running as joanna.sensitve, like KeePass and those which get access to my \projects directory, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y all run at High IL.

Thunderbird, GPG and Smart Cards

Even though cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 above configuration might look good, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re’s still a problem with it I haven’t solved yet. The problem is related to mail encryption and how to isolate email client from my PGP private keys. I use Thunderbird togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r with Enigmail’s OpenPGP extension. The extension is just a wrapper around gpg.exe, a GnuPG implementation of PGP. When I open encrypted email, my Thunderbird processes spawns a new gpg.exe process and passes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passphrase to it as an argument. There are two alarming things here – first Thunderbird process needs to know my passphrase (in fact I enter it into a dialog box displayed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Enigmail’s extension) and second, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 gpg.exe process runs as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same user and at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same IL level as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 thunderbird.exe process. So, if thunderbird.exe gets compromised, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malicious code executing inside thunderbird.exe will not only be able to get to know my passphrase, but will also be free to read my private key from disk (because it has cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same rights as gpg.exe).

Theoretically it should be possible to solve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem with passphrase stealing by using GPG Agent, which could run in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 background as a service and gpg.exe would ask cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 agent for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passphrase instead asking thunderbird.exe process, which will never be in possession of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 passphrase. Ignoring 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ý bet365re doesn’t seem to be a working GPG Agent implementation for Win32 environment, this still is not a good solution, because thunderbird.exe still gets access to gpg.exe process, which is its own child after all – so it’s possible for thunderbird.exe to read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contents of gpg.exe memory and to find a decrypted PGP private key cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re.

It would help if GPG was implemented as a service running in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 background and thunderbird.exe would only communicate with it using some sort of LPC to send request to encrypt, decrypt, sign and verify buffers. Unfortunately I’m not aware of such implementation, especially for Win32.

The only practical solution seems to be to use a Smart Card, which would perform all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
necessary crypto operations using its own processor. Unfortunately, GnuPG supports only, a so called, OpenPGP smart cards, but it seems that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only two cards which implements this standard (i.e. Fellowship card and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 g10 card) implement only 1024 bits RSA keys, which is definitely not enough for even a moderately paranoid person ;)

In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last hope, I turned to commercial PGP, downloaded cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 trial of PGP Desktop and… it turned out that it doesn’t support Vista yet (what a shame, BTW).

So, for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time being I’m defenseless like a baby against all those mean people who would try to exploit my thunderbird.exe and steal my private PGP key :(

The forgotten part: Detection

One might think that it’s a pretty secure system configuration… Well, more precisely, it could be considered as pretty secure, if UIPI was not buggy and UAC didn’t force me to run random setup programs with full administrator rights and if GPG supported Smart Cards with RSA keys > 1024 (or alternatively PGP Desktop supported Vista). But let’s not be that scrupulous and forgot about those minor problems…

Still, even though that might look like a secure configuration, this is all just an illusion of security! The whole security of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system can be compromised if attacker finds and exploits e.g. a bug in kernel driver.

It should be noted that Microsoft has also implemented several anti-exploitation techniques in Vista, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 two most advertised are Address Space Layout Randomization (ASLR) and Data Execution Prevention (DEP). However, ASLR does not protect against local kernel exploitation, because it’s possible, even for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Low IL process, to query system about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 list of loaded kernel modules 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 base addresses (using ZwQuerySystemInformation function). Also, hardware DEP, which works only on 64-bit processors, is not applied to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole non-paged pool (as well as some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r areas, but non-paged pool is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 biggest one). 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 hardware NX bit is not set on all pages comprising cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 non-paged pool. BTW, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is a reason for Microsoft doing this and this is not due to compatibility issues (at least I believe so). I wonder who else can guess... ;)

UPDATE (see above): David Solomon, pointed out, that Hardware DEP is also available on many modern 32-bit processors (as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NX bit is implemented in PAE mode).

It’s very good that Microsoft implemented those anti-exploitation technologies (besides ASLR and NX, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are also some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs). However cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 point is, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y could be bypassed by a clever attacker under some circumstances. Now think about how many 3rd party kernel drivers are typically present in an average Windows systems – all those graphics card drivers, audio drivers, SATA drivers, A/V drivers, etc... and try answering cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 question how many possible bugs could be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re? (BTW, it should be mentioned that Microsoft did a clever step by moving some classes of kernel drivers into user mode, like e.g. USB drivers – this is called UMDF).

When attacker successfully exploits kernel bug, 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 security scheme implemented by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS is just worth nothing. So, what can we do? Well, we need to complement all those cool prevention technologies with effective detection technology. But has Microsoft done anything to make systematic detection possible? This is a rhetoric question of course and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 negative answer applies unfortunately not only to Microsoft products but also to all ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r general purpose operating systems I’m aware of :(

My favorite quote of all those people who negate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 value of detection is this: “once cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system is compromised we can’t do anything!”. BS! Even though it might be true today – because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Operating System are not designed to be verifiable, but that doesn’t mean we can’t change this!

Bottom Line

Microsoft did a good job with securing Vista. They could do better, of course, but remember that Windows is a system for masses and also that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y need to take care about compatibility issues, which sometimes can be a real pain. If you want to run Microsoft OS, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n I believe that Vista is definitely a better choice cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n XP from a security standpoint. It has bugs, but which OS doesn't? What I wish for, is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y paid more attention to make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir system verifiable...

Acknowledgements

I would like to thank John Lambert and Andrew Roths, both of Microsoft, for answering my questions about UAC design.

Saturday, January 20, 2007

Beyond The CPU: Cheating Hardware Based RAM Forensics


We all know that any software-based system compromise detector can always be cheated if malware runs at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same privilege level as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 detector (usually both run in kernel mode). This is what I call Implementation Specific Attacks (ISA). Because of that, mankind has tried to find some better, more reliable ways for analyzing systems, which would not be subject to interference from malware…

And we all know what we’ve come up with as a solution – hardware based devices for obtaining cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 image of volatile memory (RAM), usually in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 form of a PCI card. As far as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PC architecture is concerned, probably cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first two papers in this area are those about Tribble and CoPilot. As an alternative to expensive dedicated PCI cards, one can also use a FireWire bus, as it has been described by Maximillian Dornseif at el., and later by Adam Boileau.

The point is: once we get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory image, we can analyze it for signs of compromises on a trusted machine or we can have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PCI device to do some checks itself (like e.g. CoPilot does).

The whole idea behind hardware based RAM acquisition is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process of reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory is using Direct Memory Access (DMA) to read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 physical memory. DMA, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 name suggests, does not involve CPU in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process of accessing memory. So, it seems to be a very reliable way for reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 physical memory…

But it is not! At least in some cases...

Next month, at Black Hat DC, I will be demonstrating how to cheat hardware based memory acquisition on AMD based systems. In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words, I will be showing that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 image obtained using DMA, can be made different from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 real contents of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 physical memory as seen by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 CPU. Even though cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack is AMD-specific, it does not rely on virtualization extensions. Also, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack does not require system reboot. Nor does it require soldering ;)

I have tested my proof-of-concept code against a FireWire-based method of memory acquisition, using tools from Adam Boileau’s presentation.

I wanted to test it also against some PCI cards, but it turned out, that for an ordinary mortal person like myself, it is virtually impossible to buy a sample of a dedicated PCI card for memory acquisition… E.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tribble card is still unavailable for sale, according to its author, even though cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 prototype has been build in 2003... BBN, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 US company known for doing lots of project for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 US government, apparently has a prototype (see page 45) of something similar to Tribble, but is not willing to discuss any details with somebody who is not involved in a project with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 US government... Finally, Komoku Inc., whose main customers, according to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 website, are also US government agencies, also rejected my inquiry for buying a sample of CoPilot, claiming that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 device "is not generally available right now" ;)

Anyway, even though I was able to test cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack only against FireWire based method, I’m pretty confident that it will work against all ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r devices which use DMA to access cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 physical memory, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack itself is very generic.

See you in DC!

Wednesday, January 03, 2007

Towards Verifiable Operating Systems

Last week I gave a presentation at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 23rd Chaos Communication Congress in Berlin. Originally cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 presentation was supposed to be titled "Stealth malware - can good guys win?", but in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very last moment I decided to redesign it completely and gave it a new title: "Fighting Stealth Malware – Towards Verifiable OSes". You can download it from here.

The presentation first debunks The 4 Myths About Stealth Malware Fighting that surprisingly many people believe in. Then my stealth malware classification is briefly described, presenting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 malware of type 0, I and II and challenges with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir detection (mainly with type II). Finally I talk about what changes into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS design are needed to make our systems verifiable. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS were designed in such a way, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n detection of type I and type II malware would be a trivial task...

There are only four requirements that an OS must satisfy to become easily verifiable, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se are:
  1. The underlying processors must support non-executable attribute on a per-page level,

  2. OS design must maintain strong code and data separation on a per-page level (this could be first only in kernel and later might be extended to include sensitive applications),

  3. All code sections should be verifiable on a per-page level (usually this means some signing or hashing scheme implemented),

  4. OS must allow to safely read physical memory by a 3rd party application (kernel driver/module) and for each page allow for reliable determination whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r it is executable or not.

The first three requirements are becoming more and more popular cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days in various operating systems, as a side effect of introducing anti-exploitation/anti-malware technologies (which is a good thing, BTW). However, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 4th requirement presents a big challenge and it is not clear now whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r it would be feasible on some architectures.

Still, I think that it's possible to redesign our systems in order to make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m verifiable. If we don't do that, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n we will always have to rely on a bunch of "hacks" to check for some known rootktis and we will be taking part in endless arm race with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bad guys. 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, such situation is very convenient for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security vendors, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can always improve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir "Advanced Rootkit Detection Technology" and sell some updates... ;)

Happy New Year!