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,
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!
30 comments:
AccessChk.exe displays integrity levels (http://www.microsoft.com/technet/sysinternals/utilities/accesschk.mspx)
Regarding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Tetris installer to be able to install drivers - would it be possible to remove cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 write permissions for administrators on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 registry where kernel drivers must be registered? I'm not familiar with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process of installing kernel drivers. But if you remove cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 permissions necessary, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re would be no problem to elevate to an administrator when installing software.
Best regards,
Henning Krause
Administrators can always grant cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves any permissions cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y want, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y own SeTakeOwnershipPrivilege...
But suppose you could remove that privilege (and a couple of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs, like SeLoadDriverPrivilege and SeDebugPrivilege) as well... So, effectively you would change cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Administrator into... a limited user. But we need to have a real administrator in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system, right?
Ok, one cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365oretical solution would be to first remove all those sensitive privileges, like SeTakeOwnershipPrivilege, SeLoadDriverPrivilege, SeDebugPrivilege, etc. from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Administrators group. Then to create two users: real_admin and limited_admin (sic!) and make both of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m members of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Administrator group. Then we also have to replace all ACEs on file system and registry objects which grants access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Administrators group with ACEs that will grant write-access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 real _admin, while granting read and 'append' access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 limited_admin... Now, because both cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 real_admin and limited_admin are members of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Administrators group, UAC should offer a choice between one of those two users in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 UAC prompt...
But, I guess it would be much easier and elegant if MS just modified UAC, so that it allowed to enter credentials also for a non-admin user (i.e. account which doesn't belong to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Administrators group)
Well, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 truth is I don't like so much Vista. It's installed in my main computer and though security is better than I expected, I must say that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way is long yet... As far as UAC, I've no problems yet... At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 beginning, I was asked several times for a confirmation click, but after using and configuring my system, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 confirmations have been decreased. I agree with you at this point. In any case, I think people should wait a few months to migrate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir XP based systems to Vista, mainly gamers (my Fligh Simulator X doesn't work yet, like ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r applications :P) Best regards Joanna.
also worth mentioning keyloggers work too across ILs. Meaning that a compromised firefox can see you typing your passphrase in pgp too.
Actually, even if Vista is a great step ahead in security field (yes, UAC is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way to go) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are still lot of things to be fixed.
As Joanna said, all processes ran by user are launched by default as medium IL. Ok, cool, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can't modify processes with higher integrity levels.
But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y CAN modify processes with same or lower integrity levels :) dll injection works quite well, a trojan could exists and steal informations from pc, a user mode rootkit could hide files from user's eyes. Yes, it will be easier to detect and remove - that's forsure - but, as Joanna said, Microsoft doesn't want to let users know about a infection (marketing purposes).
Users feel secure because Windows Vista is more secure and it shouldn't need antimalware softwares - as Microsoft statements. A rootkit could exists, a trojan could exists, almost a big percentual of actual infections with a bit of re-design could work on Windows Vista.
Anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r interesting thing is that a medium integrity level process can't write into registry. So how can a malware start automatically at startup?
Yes...it can't modify registry....but it has write access to automatic startup directory of user account :)
Have fun with Windows Vista :)
Congrats Joanna for all your works :)
The heuristics listed to detect installers on Microsofts site (from your link) are pretty hilarious.
For example: Filname includes "install", "setup", "update", etc
Some of 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ý bet365rs I wish cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y went into more detail about. They are pretty vague on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 details of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 heuristics.
That said..."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."
Perhaps cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are good reasons that things like WM_TIMER and WM_SETTEXT can be blocked but things like WM_KEYDOWN and WM_MOUSEMOVE cannot.
CBT hooks would fail to work which would break compatibility with all sorts of accessibility applications something Microsoft cannot avoid.
In fact all of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 prompts for UAC can be CBT hooked around to begin with because of this same fundamental problem. Keyboard and mouse input messages must be allowed for compatibility!
Microsoft is going to have a hard time fixing this. Perhaps cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y need to redo CBT hook mechansim.
I am so thankful and heartened to see someone like you, Joanna, holding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir feet to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fire. Great job! Go get'em. Rick, Mexico City
@Nicethings
code injection, trojan, rootkits also exists in linux and Mac
@Ant:
that's why it's pretty stupid to fool users saying cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y shouldn't need any security software because Vista is "pretty" secure :)
Most users believe Vista = no malware = no need of security software (because Microsoft would so). That's simply not true :) Only this :)
Anonymous said:
Perhaps cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are good reasons that things like WM_TIMER and WM_SETTEXT can be blocked but things like WM_KEYDOWN and WM_MOUSEMOVE cannot.
CBT hooks would fail to work which would break compatibility with all sorts of accessibility applications something Microsoft cannot avoid.
What if accessibility software ran at a higher integrity level? Wouldn't cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y work as usual without letting every single low IL app do nasty things?
Ten years from now, your computer will run a Microsoft operating system that makes your job obsolete. We will look back and have a good laugh togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r
I am amazed that you are so paranoid that you regard a kilobit RSA key as a weakness. If having a key that small is truly cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 weakest part of your security mechanisms, what on earth are you doing running PGP on a machine shared with anything else? Come to that, I would be impressed by your ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r security mechanism you must have in place.
Get real --- cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are many many ways of extracting information from you more easily and more cheaply than by factoring a 1024-bit general integer. Google my name if you would like to see supporting evidence that I know what I'm talking about. You'll find that I'm one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very few people ever to have admitted to breaking a PGP by factoring its public modulus.
In fact all of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 prompts for UAC can be CBT hooked around to begin with because of this same fundamental problem. Keyboard and mouse input messages must be allowed for compatibility!
I'm not so sure about that. UAC is said to be in a different WinStation, thus I expect it to be inaccessible.
Ch.
Paul Leyland: Some good words, but think of long-term. Joanna may want a little extra measure of protection in case someone taps her e-mail and stores it for 10 years (or for 30 years), or ``finds'' hard disk with mail spool that old. Also, don't forget botnets even now. Thirdly, signing-key integrity can protect even more real-world value than encryption keys. Longer keys are cheap to use, so why not have small extra peace of mind? And (*cough*) I'm really quite sure Joanna is helpless as a baby. ;-)
As to Joanna: Keep up cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 good work. I've learnt distrust of Microsoft's lofty promises, so it is good to read some independent review before expending resources. Hopefully you will see secure and verifiable OS someday.
Nice trick, using a different account for each application. We have developed experimental software for XP called Polaris that automates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process and addresses some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 usability issues, such as where files can be saved to or read from. Polaris even protects cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 applications from each ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r by blocking Windows messages using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 JOBS UILIMIT. You can read more about it at http://www.hpl.hp.com/techreports/2004/HPL-2004-221.html.
very very nice informations...thank you very much. mr suma....
so wonderfull
Wow, what an information. It willl definately help. Thanks you for sharing such a usefull knowledge.
Regards,
Komail Noori
Web Site Design - SEO Expertn
Very interesting, thank you.
Thanks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 interesting post!
Thanks for compiling so much of data on Vista. Although Vista is very good OS security wise, but still it has a long way to go in terms of making people comfortable in working on it.
nice, at last some information that looks unbiased ;)
it's a shame one has to test installers and any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r software in sort of vm to check if it's harmful and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n finally run it as admin in vista (well, only if it's not harmful)
Thx
Hi Joanna,
firstly, a huge thanks for all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 light you always shed with each of your writings.
I have been suggested in an italia forum discussion to have a read of this one, and came across some questions concerning a simple setup I proposed in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re.
In order to create somes sort of a custom sandbox for my browser(s), I usually run my XP boxes with a LUA plus some kind of configuration of most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
settings advisably to look at, this including a dedicate user ("NoChange") I use to run cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser and which has all writing and execution permissions
denied on both all disks and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole registry; this user can only execute from within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 folders which contain cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser executables, and only write
in those which contain cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cached temporary internet files, while cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 registry is read only.
Last but not least: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user NoChange is also set up so that i can't read from any of user folders.
By doing this, I feel pretty much safe in that whatever runs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser shouldn't be able to do much damage or access user documents because NoChange
is a LUA with some very strict additional restrictions on disk and registry.
Would this be advisable with Vista as well or is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 UAC thing good enough?
Am thinking of any clever malware, perhaps downloaded because of a driveby, which might in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 near future be able to bypass UAC (if not as yet) and do
whatever on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system or access user data which, if I am right, would be possible with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only UAC.
Also, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 protected mode requires some (easy) configuration by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y prefer Firefox, Opera or whatnot, while cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 setup described above would
only require a "Runas /user:NoChange" added to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 .lnk for each program we want to run in a fully restricted mode.
Lastly, am particularly curious about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 setups story. If setups are always ran with administrative privileges regardless..of what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user would prefer
to do, what happens when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user accepts to install a third pary plugin through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser? These may be proper setups too, would cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n be treated
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same way as "normal" setups run directly by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user?
Many thanks in advance.
Kind regards,
S.
ps: I only know about RegDACL to manage cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 permissions on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 registry as well as CACLS/ICACLS on files.
pps: am one of those "paranoids" who use a dedicated account specially restricted to run setups :D
ppps: would marry you right away :D
Very interesting post about User Account Control, but this feature inside Windows Vista is a little bit annoying for me so I decided to turn it off, but with this brief description now I know more about it, Thanks!
A very good article. I installed Vista in Dec, but a tweak program destroyed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS :( I'm going to install it back now, because I'm fed up with my slow XP(torrents and external hdd-s are deadly combo --- VS 2005 install - 4 hours). And PGP now supports Vista, so let's have fun!
Regarding smart card support in gpg, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is a very nice software: http://gnupg-pkcs11.sourceforge.net/
I am using it on linux with different smart cards and it works very well.
It should run on windows, however I never tested that. Maybe you'll need to use cygwin to get an usable gpg-agent, not sure.
This is a great site. Thank you for your information. I THANK YOU I SALUTE YOU IT,S A AMZING SITE.
Thanks for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 heads up about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system integrity levels - just what I was searching for!
Post a Comment