How To Guarantee Malware Detection 410
itwbennett writes "Dr. Markus Jakobsson, Principal Scientist at PARC, explains how it is possible to guarantee the detection of malware, including zero-day attacks and rootkits and even malware that infected a device before the detection program was installed. The solution comes down to this, says Jakobsson: 'Any program — good or bad — that wants to be active in RAM has no choice but to take up some space in RAM. At least one byte.'"
At least one byte (Score:3, Insightful)
While it might be true that any application will take up at least a byte of memory, there is no reason malware couldn't masquerade as another binary down to the exact number of bytes.
Hell, Windows is a whole slew of malware that masquerades as the whole OS.
Re:At least one byte (Score:5, Funny)
Re:At least one byte (Score:5, Funny)
While it might be true that any application will take up at least a byte of memory, there is no reason malware couldn't masquerade as another binary down to the exact number of bytes.
Oh see he didn't finish explaining.
Any program that wants to be resident has to occupy at least one byte of RAM. And that byte should include the Evil Bit, which all malware should set. Then your anti-virus program just checks the Evil Bit and problem solved!
Re: (Score:3, Informative)
You've been modded funny, but this is exactly what this "article" is all about.
If there is no malware in RAM, the results will be the expected result. [...] Or there could be malware in RAM, and the checksum will be wrong. [...] Or malware could divert the read requests [...] . That would result in the right checksum... but a delay.
Or, there could be malware in RAM, not diverting read requests, and the checksum will be the expected result, and without a delay.
The only problem with Markus Jakobsson grand theory is that all malware are of that last kind.
Well, all malware since the memory protection era. I suppose his "product" could work for DOSes (but there is no multitasking there) Windows 3, MacOS9, AmigaOS and some embedded OSes.
And if the malware does vi
Re: (Score:3, Insightful)
I think you missed the following parts :
Instead of looking for known patterns -- whether of instructions and data, or of actions -- wouldn't it be great if we could look for anything that is malicious? That may sound like a pipe dream.
Not to me.
[...]
This tells us a few interesting things. We can guarantee detection of malware. And that includes zero-day attacks and rootkits.
Even with your interpretation :
We can even guarantee that we will detect malware that infected a device before we installed our detection program.
You can't detect known malware that way if it virtualizes the computer, because you will only scan for the memory the malware is willing to show you.
By the way, the following assumption is unworkable:
Assume now that we have a detection algorithm that runs in kernel mode, and that swaps out everything in RAM. Everything except itself.
You can't swap out many parts of the kernel.
And I'm pretty sure kernel space parts of a rootkit won't let themselves swap out. Which does not mean uncooperative kernel modules are malware. If you're swapping out the disk driver, how will you
Re: (Score:3, Interesting)
You can't detect known malware that way if it virtualizes the computer, because you will only scan for the memory the malware is willing to show you.
Ah, there's where the bit about "knowing how much RAM you have" matters.
The virus has three choices:
1) Be overwritten, thus being eliminated (and showing you all of the RAM in your system.)
2) Swap part of what you're writing to disk.
3) Present less RAM than you actually have.
If you know how much RAM you have, you can detect choice 3.
If you can detect latency between secondary storage and RAM, you can dectect choid 2.
If the virus doesn't mind disappearing for the rest of the computer's runtime, you can mitig
Re: (Score:2)
He pushes the hard work off onto an "external verifier" without making it clear how that would itself remain rootkit free.
If you have a guaranteed-safe external verifier, malware detection and removal isn't rocket science. Oddly, we have the technololgy in place to create a safe verifier: Trusted Coomputing. All we really need to solve the malware problem for good is something like Trusted Computing that we actually trust! An open standard, untainted by DRM, the provides hardware-level cryptographic isol
Re: (Score:3, Informative)
He pushes the hard work off onto an "external verifier" without making it clear how that would itself remain rootkit free.
If you have a guaranteed-safe external verifier, malware detection and removal isn't rocket science. Oddly, we have the technololgy in place to create a safe verifier: Trusted Coomputing. All we really need to solve the malware problem for good is something like Trusted Computing that we actually trust! An open standard, untainted by DRM, the provides hardware-level cryptographic isolation between the running system and the verifier.
I'd rather just secure my systems, thanks.
Re: (Score:3, Interesting)
I'd rather just secure my systems, thanks.
How would you do that, then? There are so many clever rootkits these days, and no OS is "immune" (although SE Linux may be so if correctly configured, configuration is hard). Hardware-based rootkits (malware in the firmware of peripherals that attack an already kernel-mode driver process) are very dificult to defend against, you can only really hope they get enough bad press before they get you.
The only way to "just secure your system" against increasingly clever attackers is to have a safe partition, one
Re: (Score:3, Insightful)
There are several weaknesses. Note how he says something about an external verifier, which is delay-sensitive. Note how for the first 2 steps he keeps repeating "malware may of course interfere but this doesn't matter because", and then he stops considering malware interference. That's because at those points, malware interference would be fatal.
Of course, malware could simply take over the entire procedure, computing the keyed hash itself (a process which can run in a lot less memory : it doesn't actually
Re: (Score:2)
Oh, and lets consider that a virus writer would know the basic fundamentals of memory management, reporting back less RAM pages than expected. After all, we're depending on the OS memory allocator to provide correct number of pages, paged/nonpaged, etc..
In other words, we could alter the VM page table and not report all physical pages to the OS / "Guaranteed Virus Detection"
Another problem to consider is that often programs are compiled with buffer overflow detection, which writes a pattern of bytes before
Re:At least one byte (Score:5, Informative)
Assume now that we have a detection algorithm that runs in kernel mode, and that swaps out everything in RAM. Everything except itself. Well, malware may interfere, of course, as it often does, and remain in RAM. But if we know how big RAM is, we know how much space should be free. Assume we write pseudo-random bits over all this supposedly free space. Again, a malware agent could refuse to be overwritten. It could store those random bits somewhere else instead... like in secondary storage.
Then, let us compute a keyed hash of the entire memory contents -- both our detection program and all the random bits. Here is what could happen: If there is no malware in RAM, the results will be the expected result. An external verifier checks this, and tells us that the scanned device is clean. Or there could be malware in RAM, and the checksum will be wrong. The external verifier would notice and conclude that the device must be infected. Or malware could divert the read requests directed at the place it is stored to the place in secondary storage where it stored the random bits meant for the space it occupies. That would result in the right checksum... but a delay. This delay would be detected by the external verifier, which would conclude that the device is infected.
Why a delay, you ask? Because secondary storage is slower than RAM. Especially if the order of the reads and writes are done in a manner that intentionally causes huge delays if diverted to flash, hard drives, etc.
There's more details in RTFA.
Re: (Score:3, Insightful)
I did, and he doesn't say anything about this point.
Regarding making a keyed hash of the entire memory content, how would that even work? Every program modifies it's memory all the time. Then there's the programs like copy protections and Skype etc that modify it's own code in real-time too.
Refuting the imaginary article in your head (Score:5, Informative)
Still haven't read the article, eh? The technique is to swap everything out except the scanner, then write random bits to the entire memory space, then hash the memory. I could explain it all in greater detail, but, you know, there's this article, already there. Please do try to constrain your criticisms to things that actually apply to the article that was written, you know, the one we can all read. Refuting the imaginary article in your head does nothing for the rest of us.
Re: (Score:2, Interesting)
Still haven't read the article, eh? The technique is to swap everything out except the scanner, then write random bits to the entire memory space, then hash the memory. I could explain it all in greater detail, but, you know, there's this article, already there. Please do try to constrain your criticisms to things that actually apply to the article that was written, you know, the one we can all read. Refuting the imaginary article in your head does nothing for the rest of us.
I'm glad you guys have managed to work out what the article says.
I have one glaring problem with this system, and all other systems designed to detect running malware: no focus on prevention. I'm glad we have a new tool to detect malware executing on a machine that's already compromised, but that's what all of the new tools I read about intend to do. I don't see much progress being made in terms of the design decisions and best practices that prevent (Windows) machines from getting compromised in the f
Re:Refuting the imaginary article in your head (Score:5, Insightful)
Protection from malware should function like the immune system, with many lines of defense and many avenues of detection and counter attack. Prevention will never be perfect by itself.
Re:Refuting the imaginary article in your head (Score:5, Funny)
Wrong! Abstinence is the one and only preventative answer!
Re:Refuting the imaginary article in your head (Score:5, Insightful)
After reading TFA I'm still not seeing how this is supposed to detect unknown malware.
As far as I can see it would decide that a new install of any kind was a virus.
Sure if you know every program which is supposed to be installed and none of them do wierd things in memory(a big if) then you might be able to spot when some kind of change has been made but if you can do that then you have a situation where you might as well just re-image the machine from ROM every now and then.
I don't see any amazing new ideas in TFA
Re: (Score:3, Interesting)
If you have that much control over what's installed on the system then you might as well just take a snapshot of the system running in a safe state, place any data which needs to change on some kind of hardened remote server(like a seperate database) and just periodically re-image the whole machine from ROM.
Probably be more effective than this proposed system as well.
Re: (Score:3, Insightful)
"As good as this technique may or may not be, it's not security."
Ehhh, you could have been a sailor. Back in the day, we had "security alert" drills, to deal with "intruders" all the time. But, that's all we ever had, were drills. The REAL security was focused OUTSIDE! If some boat, ship, helicopter, or even a frogman came close to our ship, we just blew them out of the water or sky. There was never a need to look for an intruder INSIDE the ship!
The most likely time and place any intruder might get abo
Re:Interesting point (Score:4, Insightful)
I have a hard time believing a technique that starts with "swap out everything in RAM" could ever be used for real-time detection.
Re:Refuting the imaginary article in your head (Score:5, Insightful)
I'm not an expert and not sure if I'm missing something obvious here but what is confusing me is the part about "swap everything out except the scanner". Wouldn't you then just be moving the malware too? Into a protected space that you then have to scan and know what to look for?
If it's a zero day infection then you don't know what to look for and you swapped it out of memory for nothing really. I do get that if it tries to protect itself it will look suspicious but what if it looks like a normal program? A service or scheduled task that could be normal. What if it takes on the guise of an adobe update program in size/hash and function until it is time do act? Say a slight change to your systems dns entries. Then goes dormant again.
This may not be possible but I haven't seen why not and it leaves a pretty big hole for zero day infections that this method claims to be able to catch 100%.
Re:Refuting the imaginary article in your head (Score:5, Insightful)
If Dr. Markus Jakobsson has solved that, it is strange he hasn't also announced that he has solved the halting problem
Figuring out whether a bunch of bits is or isn't malware is going to be as hard (or harder[1]) to figure out whether a program given a particular input will halt or not.
[1] Especially when that bunch of bits might later on download a new bunch of bits. Yes I know in theory it is impossible to solve the halting problem (no general solution), but in practice some special cases can be solved.
In contrast it's harder to solve the malware problem when you assume they can fetch new instructions and data, and from an active hostile party.
Sandboxing is the way to go. Sandboxing is analogous to avoiding the halting problem by having a time limit on the program.
No need to figure out whether the program is malware or not. Just make sure it can't do what you don't want it to do. Let the OS sandbox it.
Re: (Score:3, Insightful)
From TFA:
His “solution”:
Create a sandbox consisting of all available RAM which definitely contains no “good” programs exc
Re:Refuting the imaginary article in your head (Score:4, Insightful)
Suffice it to say, you haven't understood it yet.
I think these people have all understood the article quite well, and are pointing out real flaws with this scanning method.
The #1 flaw is the assumption that an exact byte count of what is running can be known if malware is also running on the system.
If malware is actively running, then if scanning code calls any outside functions, the results must be considered tainted. Since there is no way for code that does not query the OS to even guess about what else is loaded in RAM, sufficiently intelligent malware will be able to hide itself from any scan. Hell, you can't even determine how much RAM is in a computer running in x86 protected mode without calling some OS or BIOS function, either of which can be hooked by the malware.
One of the other assumptions is that the time it takes to compute a hash of RAM on a particular machine can be known with enough precision to detect that it is being "delayed" by malware.
Last, there is one piece of code that can never be swapped out to disk, and will likely show up as malware as it refuses to be overwritten: the code that swaps and restores pages to/from disk.
Re: (Score:3, Insightful)
No, YOU are the one who doesn’t understand the concept of what is happening.
Looking for “space” that is occupied by malware in this manner will only detect malware that attempts to hide itself. There are multiple ways of defeating this scan, not the least of which is simply to not attempt to hide, allowing itself to be swapped out of memory like any other application.
In which case, you would not be “guaranteed” to detect all malware, because you’d be scanning it in the sw
Re: (Score:3, Informative)
The article never mentioned scanning for signatures
Read the damn article. I already quoted the part in question:
I.e., scan for its signature. That is how conventional antivirus works, and it is how his idea falls back to working if it doesn’t detect anything that’s trying to hide. So if it doesn’t detect anything trying to hide, it has to scan for it conventionally.
This is just an elaborate scheme to ensure
Re: (Score:3, Insightful)
Ok, so you want serious criticisms?
1. They assume that the read back from external storage doesn't overlap with computation. This is not true of any DMA-based transfer that is asynchronous. This breaks their argument as I can hide the time to do a memory / storage swap by using DMA during calculation of the hash of a different region.
2. It is brittle. It depends on a very narrow margin between computation time and retrieval time. There are many things that could cause this margin to change but their complet
Re: (Score:3, Insightful)
See people? If you read the article, you can offer cogent criticisms. If you don't you can offer irrelevant criticisms you will then have to spend the next several hours massaging and defending.
I think number 4 is the most cogent. The author claims his system can detect 0-day malware that was on the system before the scanner was installed. Maybe, if the malware tries to interfere. But if it doesn't, you have no signatures or checksums to fall back on, how could this system work?
Re: (Score:3, Interesting)
It's getting kind of boring explaining the article over and over again.
You mean the part they say they don't even need to start with a clean machine?
Re: (Score:2)
So the malware will just let itself to be swapped out too? This is especially true if it's running inside another process because you know, if the parent process is getting swapped it can't just continue running there. It will get swapped too.
Even if did run as it's own process and were actively defending it's own memory, wouldn't it be quite trivial to detect that everything is suddenly getting swapped out and go to "sleep" mode?
Re: (Score:3, Insightful)
Unless, of course, the infected system is lying to you about the memory allocations.
Re: (Score:3, Insightful)
If we start from a known clean machine
By doing this, there's really no reason to run any high-tech malware detector, as this assumes you have two machines that are identical in every way except one might have malware while the other is known to be clean. If that's the case, just clone the one that is known to be clean and you now have two known clean machines.
In other words, there is no way to use an external machine to assist you in determining things like memory used by a process because you can't have both a clean machine and one infected
Re: (Score:3, Insightful)
"Still haven't read the article, eh?"
I did. The relevant parts:
"Any program -- good or bad -- that wants to be active in RAM has no choice but to take up some space in RAM. At least one byte, right?"
More news from Captain Obvious Dept.: any program -- good or bad -- that wants to be resilient between cold bootups has not choice but to take up some space in persistent storage. At least one byte, right?
"All we need is the help of an external verifier that knows how much RAM a device we want to protect has,
Re: (Score:2)
That is a different point. And also not valid. If the malware lets itself get swapped out, it can not interfere with a scan.
Re: (Score:2)
If the malware gets swapped out it won't be detected in the scan. Which was sopssa's original point at the top of the thread.
Re: (Score:3, Interesting)
Yes, and what happens when everything gets swapped back? There's the malware again.
If you assume it would be easier to find and delete the malware when it's not resident in memory anymore, then you could do that just fine on another computer and working directly with the hard drive. You would need to do that anyway, since your RAM is swapped out. AV's are already quite integrated in to the system, never can delete anything (so you would need to do it by hand) and in worst case scenario could do the deleting
Re: (Score:3, Informative)
If the malware let's itself get swapped out, then it can't hide it's memory footprint. Assuming we have started from a known clean machine, it is then trivial to figure out what the memory footprint should be. If it is larger than it should be, there is swapped out malware.
The point is, the malware will be detected whatever it chooses to do.
Re: (Score:2)
If the malware lets itself get swapped out, it can not interfere with a scan.
No. It can not. But you still have no way of guaranteeing that, even if the scan is not interfered with, it will find the malware.
In fact, I will guarantee that no scan will detect 100% of malware, even if the scan isn’t interfered with (by masking the malware in RAM or on the secondary memory).
Re:Refuting the imaginary article in your head (Score:5, Informative)
But it does seem to be foolproof if you start from a known clean machine.
That’s the whole point of his system: to scan from a machine that isn’t known to be clean.
The standard way to scan from a “known clean machine” is one of the following:
1) Use a known-clean boot CD. This ensures that the system RAM is clean. Once booted into the clean system, scan the possibly-infected secondary storage devices.
2) Use a separate known-clean computer. Its system RAM is clean. Attach the possibly-infected secondary storage devices from the first computer to the known-clean computer and scan them.
The 3rd way, which is not foolproof, is to attempt to avoid a boot CD or second computer by scanning the system RAM. Once the system RAM is known to be clean, you can proceed from there as in either 1 or 2 above. However, there is no foolproof way to ensure that the RAM of a running system is clean.
He proposed a “foolproof” way to ensure that the RAM of a system is clean (without shutting it down and booting it from a clean boot device). That’s the only thing that makes his suggestion useful.
However, it isn’t foolproof, and even you see that.
FWIW, RootkitRevealer [microsoft.com] uses exactly the same method, so it’s not like this guy came up with anything novel. In fact, RootkitRevealer even has the disclaimer:
It only finds things that are trying to hide. If they aren’t trying to hide, you have to scan them conventionally.
Re: (Score:2)
I would also wonder about false positives on shareware, poorly written apps, custom corporate apps, etc.
Re: (Score:3, Insightful)
As near as I can tell, the article makes a HUGE assumption: the malware is actively trying to hide itself. This is not an unreasonable assumption, but it makes everything more clear. Let's go through his steps:
1) The algorithm swaps out memory.
2) The malware decides to stay active in RAM.
3) Random bits are written to memory.
4) Optional: The malware masks its presence by falsifying the memory reads.
5) A bad hash or delay reveals the presence of something trying to stay hidden.
For the special case that malw
Re: (Score:2)
Virus scanners figured this out years ago, this is why they scan the operating memory!
The difficult part is finding out which "bytes" are bad. The problem is many elements of spy tools are often used for good too. Like VNC and all of those legitimate screen capture and key logger programs for IT.
Re: (Score:2)
It doesn't need to do even that.
They forgot that malware code can reside inside another process and it's memory space, in which case comparing and writing random bytes to free RAM is a moot point.
So you mean his idea can only deal with "Computer Germs" but not "Computer Virus?"
Theory and Reality (Score:5, Insightful)
Seriously, how could this possibly work for ALL (including undocumented, and hereto unknown) threats? And if it does it by reading straight from RAM (through the kernel), wouldn't a rootkit be able to trivially defeat that?
Re: (Score:2)
Re: (Score:3, Insightful)
His whole point was not "this is how you should do it", it was "you could do this, and because you could do this it shows that it's theoretically possible". This is a variant of what is know as a gedanken experiment-- an argument that proves or disproves some fact is true while not actually being somethign you would want to carry out. For example, you could suppose that you could measure the force field is under by running a pole from the earth to the moon and pushing slightly on it. Not that you want
Re: (Score:2)
ya. coming up with a reliable virus detection scheme for unknown viruses is pretty much in the same area as the halting problem.
Even detecting polymorphic viruses has been proven to be NP complete.
Re: (Score:2)
Re: (Score:2)
A rootkit that is AWARE of this detection mechanism ought to be able to defeat it easily by just overwriting the computed and expected keys in the detectors memory space with a random number.
LOL, good point.
Re: (Score:2)
I read the article and I wasn't convinced. I don't think one can guarantee malware detection. Any detection approach has false positives and/or false negatives. Typically we err on the side of false negatives, while some other approaches (host-based IDS-type approaches) err on the side of false positives.
The method addressed here does not deal with all possible attacks, but only the problem of malware interfering with the scan. Hence even with such a mechanism, all you can use it for is guaranteeing the
Wrong from the getgo! (Score:2)
Not only that, but his initial premise is already wrong! Most people conceptualize a program like an application - it's launched, loads into memory, and then does stuff. And while that's typical, it's a grave mistake to think that's the ONLY way to go!
Off the top of my head, I can think of registering malware as a callack handler for a system event. In this case, you have an infected computer without any code running at all, in a context and namespace different than running applications!
Winows just wasn't
Re: (Score:2)
what if your external verifier was hardware based? build a little device with hardened rom and bios, give it a usb interface, or maybe even something proprietary - let the detection take place off-board.
Re: (Score:2)
So it has to be in RAM (Score:2)
Does it have to be in RAM? (Score:3, Informative)
It could be in ROM.
It could be in processor cache.
It could be in the video card's memory.
Could it be in pipelined instructions waiting to be executed?
Re: (Score:2)
Processor cache would eventually result in execution, which takes place in RAM. Video card memory would just do funky things to the display. A pipelined instruction would also eventually end up in RAM once it was executed.
Perhaps the key here is "actively executing" malware. I suppose it can lay d
Re: (Score:3, Funny)
The hard part is actually finding it.
That reminds me of a signature I've seen around here (Sorry, I don't remember who was using it)
cat /dev/ram | strings | grep llama
OMG, my RAM is full of llamas!
In case anybody was wondering... (Score:5, Informative)
Theory and hand-waving (Score:4, Interesting)
<sarcasm>Punting the problem to an "external verifier" is pretty neat. I wish I could do that with my next hard problem.</sarcasm>
That whole bit about swapping, though.... If I write malware and hide it somewhere in execution space, do I really care if it gets swapped out? So the code that steals keystrokes or sniffs for credit card numbers doesn't get executed for short while. Big deal. At some point it will get loaded again (if written properly, that is).
Or am I missing something obvious?
Re: (Score:2)
If you want it to work, with a software update, on today's general purpose x86 office boxes, your "external verifier" might as well be a magic pony that sneezes rainbows and poops out the factors of any arbitrarily large primes that you feed it. Not Happening.
On the other hand, if your target is "Paranoid embedded architectures, 2-5 years from now" you can posit pretty substantial hardware changes at onl
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
This proposal isn't to detect what malware is present, or to remove it. It is onl to detect that there is some malware present, which can then lean to more thorough scanning to detect and remove. Knowing that something is there is half the battle.
Re: (Score:2)
No, he claimed in the article that:
> This tells us a few interesting things. We can guarantee detection of malware.
> And that includes zero-day attacks and rootkits. We can even guarantee that we will
> detect malware that infected a device before we installed our detection program.
To me _guaranteeing_ detection of malware (especially zero-day ) is similar to solving the halting problem (without having the source code and knowing all the p
Re: (Score:2)
Detecting the malware depends on the malware trying to stay in memory. My point was that "properly written" malware wouldn't necessarily care if it is was swapped. Allow the swap, get a clean bill of health from the "external verifier," then get reloaded and continue Bad Activities. Downtime for the malware is negligible.
Re: (Score:2)
Finally (Score:2)
A valid criticism. And if the malware is actively resisting the scan, by moving the random bits back in from secondary storage before the hash, the external verifier knows about it because it takes even longer. By design. So, unless you are running a load balanced cluster and can afford to take a server offline for a few minutes when you want to scan, yes, this is a problem with this approach.
Re: (Score:2)
Punting the problem to an "external verifier" is pretty neat. I wish I could do that with my next hard problem.
It may be worth doing right. Look for malware from a hypervisor (memory, disk, network, etc.). Running this all inside the insecure machine is just asking for trouble, though, but is the best currently available. But even today there are cpu's shipping without virt support, so this can't be done for every machine yet or for a while. Still, I think many would spend the extra $50 if it worked wel
Still a needle (Score:5, Insightful)
A needle in a haystack wants roughly the same amount of space as a straw - doesn't make it any easier to find (indeed, that's part of the reason it's so hard to find).
Even if this technique has merits, it does nothing to correct the primary reason for computer infection - stupid users.
Re: (Score:2)
Even if this technique has merits, it does nothing to correct the primary reason for computer infection - stupid users.
As with most things in life, stupidity is the leading cause of problems.
Except death. I think god has a monopoly on causing death in that department. (Take that last sentence however you will. Just remember: however you take it is how I meant it.)
Re:Still a needle (Score:5, Insightful)
I think god has a monopoly on causing death in that department. (Take that last sentence however you will. Just remember: however you take it is how I meant it.)
You're sleeping with your mother? Gross.
Which one is the detector? (Score:5, Insightful)
How about a malware that masquerades as this detector and reports the RAM checksum is OK?
Re:Which one is the detector? (Score:4, Insightful)
Detecting a malware detector is just as hard as detecting malware. In general, detecting software of a specific type is halting-equivalent. In practice, the goal is to take shortcuts so that your adversary has a halting-equivalent problem and you don't. At present, the malware authors are winning. If we could force them to detect the malware detectors, that would be a huge advance.
My skepticism about this is the obvious one: what if the malware just lets itself get swapped out, and relies on stealth to survive the process?
"Guarantee" (Score:5, Insightful)
Re:"Guarantee" (Score:5, Funny)
Re: (Score:2)
I guarantee there's at least one thing that can be guaranteed.
Re: (Score:2)
I guarantee there's at least one thing that can be guaranteed.
You would be wrong about that.
Re: (Score:2)
I guarantee you're going to die someday.
-- Not a death threat.
Re: (Score:2)
Can you guarantee that?
Okay (Score:2)
And what if the malware lets itself be swapped out of RAM the same as all of the other apps?
I'd love to have an approach to malware that could always detect unwanted processes, I'm just trying to find holes here.
False positives? (Score:2)
Yeah you can detect that SOMETHING is there, but how do you determine whether that something is supposed to be there or not?
If you assume all "somethings" are not supposed to be there, you'll have a worse situation than UAC with users being prompted all the time and getting conditioned to click "yes".
After reading the article, it seems no different from doing an offline scan using ClamAV from a LiveCD except maybe slightly more convenient. You boot a "secure" detection mechanism in place of whatever is nor
Since I actually read the article (Score:2)
I note that he seems to have missed a rather obvious possibility: there's malware in RAM, but it allows itself to be swapped out with all the other processes. Why wouldn't it? If it got loaded into RAM once, it'll get loaded again by the same vector. In fact, it has to rely on that happening, since at some point the RAM is going to be physically powered down. There's no point in trying to dig in like a tick.
So as far as I can see, his magic technique will only catch malware that attempts to protect it
So what I'm getting... (Score:2)
That and some test for checking behavior.
The problem which he doesn't seem to resolve is, "How do we know everything that isn't malware?". I mean, I see that he goes on about running this using only in kernel mode, so there should only be kernel memory in RAM, but what if the malware exists hooked in (as many seem to be that I've found) in o
Ludicrous (no, not the rapper). (Score:2)
Assume now that we have a detection algorithm that runs in kernel mode, and that swaps out everything in RAM. Everything except itself. Well, malware may interfere, of course, as it often does, and remain in RAM. But if we know how big RAM is, we know how much space should be free. Assume we write pseudo-random bits over all this supposedly free space. Again, a malware agent could refuse to be overwritten. It could store those random bits somewhere else instead... like in secondary storage.
Then, let us compute a keyed hash of the entire memory contents -- both our detection program and all the random bits. Here is what could happen: If there is no malware in RAM, the results will be the expected result. An external verifier checks this, and tells us that the scanned device is clean. Or there could be malware in RAM, and the checksum will be wrong.
Ah ha! All you need is a kernel-mode algorithm that knows exactly what should be in RAM, at all times! In other words, it has to emulate all of the legitimate software you’ll use, because otherwise how would it tell the difference between legitimate software’s use of RAM and malicious software’s use of RAM?
What an idiot.
won't work (Score:2)
either
* the malware is in the kernel, in which case it can provide a false checksum of the memory to the external verifier
or
* the malware is in userspace in which case it gets swapped out, the verifier determines there is no malware in the system, then it gets swapped back in and carries on performing its malicious activities with its user privileges
Ok, so you have verified there's no malware in RAM (Score:2)
If the malware is /sbin/halt, you've still got a problem.
Common mistake... (Score:2)
Everyone who claims to solve a long-standing problem "guaranteed", does not know all the possibilities that could thwart their solution. Guaranteed.
Easy (Score:2, Flamebait)
What I don't get. (Score:2)
Is why didn't Microsoft make the OS files read only way back when?
Make the user give explicit permission to over right system files?
It wouldn't make it impossible to get malware but it sure a shooting could make getting ride of it easier.
Re: (Score:2)
Time to market.
Malware detection is Bogus. (Score:5, Informative)
How about we change things in Windows so it actually prevents infection in the first place?
1. Educate users. Microsoft does a piss-poor job of this.
2. STOP DEPENDING ON 3 MAGIC LETTERS TO DETERMINE IF SOMETHING IS CODE OR DATA. COME ON, SERIOUSLY. THIS SHOULD HAVE DIED WITH CP/M.
3. Kill ActiveX - I know of no legitimate website besides Microsoft.com that requires ActiveX.
4. If a file comes in from the outside world - STRIP ITS PERMISSION TO EXECUTE. MAKE THE USER UNPACK IT FROM AN ARCHIVE OR SET ITS PERMISSION.
Really. Seriously.
No, the above won't cover every situation, but it's a pretty good start.
--
BMO
Re: (Score:2)
No, the above won't cover every situation, but it's a pretty good start.
You say those as if Microsoft isn't aware of the problems with their design decisions. They by-and-large don't bear the costs of their poor security but would bear additional costs if people had to learn new ways of interacting with files (support costs, engineering, etc.).
So far they're right - their market position hasn't been adversely affected by the malware crapfest they've foisted onto their users. A cookie for he who figures ou
register (Score:5, Interesting)
Some amazingly bad assumptions (Score:5, Insightful)
Sure, malware has to occupy memory. That doesn't mean it has to be its own memory. Buffer overflows are all about corrupting another application's memory space.
His basic argument is that if you want to scan RAM, the kernel can halt all processing except its RAM scanner, and have a go at the RAM safely. If it's particularly insidious malware, it'll try to hide itself in various ways, one of which would be to masquerade the portion of RAM it was using with something legitimate looking (maybe erase that portion of memory). But you know it did this because you can see that memory which was supposed to be free is no longer free. Except the hardware has no concept of free or occupied memory. It just has memory, and the OS keeps track of what's free and not. The OS - the same space where malware is running.
OR, the malware could simply not do this, then its behavior is no different from any legitimate program. So how do you detect it now? You still need definitions that say, "When running in memory, this virus looks like X," then look through memory for that pattern.
Besides, who's to say that the kernel space is guaranteed free of malware itself? Even if you would have successfully identified the threat in RAM, you have no guarantee that the malware hasn't corrupted the identification routine.
It's like someone came along and said, "Hey, you guys are looking for malware wrong. You have to look for it! And I mean really look for it!"
Wow (Score:2)
Someone has discovered the white-list.
Please take a number and stand behind the perpetual motion people. When I'm done with them, I will explain the few finite set of cases where this method DOES work, and you can assume that in the infinite number of OTHER cases, this method does NOT work.
Its easy. (Score:2)
2) report that there is malware installed
Redeeculous idea. (Score:5, Interesting)
I tried reading TFA a few times. First time, utter confusion. Second, third times, no better. I can't make any sense out of these points:
>1) There are absolutely only three things malware can do when you scan for it. One: be active in RAM, maybe trying to interfere with the detection algorithm. Two: not be active in RAM, but store itself in secondary storage. It cannot interfere with the detection algorithm then, quite obviously. And option number three: erase itself.
Absolutely, not. There are many other things malware could be doing. Inactive in RAM, compressed and inactive in RAM, encoded as plausible-looking entries in the File Name Table or the Virtual Memory map.
>2) Any program -- good or bad -- that wants to be active in RAM has no choice but to take up some space in RAM. At least one byte, right?
No, it could be sleeping, existing only as an entry in the swapped-out process table. Or in unused space below a thread stack.
>Assume now that we have a detection algorithm that runs in kernel mode, and that swaps out everything in RAM. Everything except itself.
Whoah there fella. Everything? Are you going to turn off all timers and interrupt enables so their service routines don't get called?
Hard to do without mucking up all the device drivers. Are you going to swap out the kernel too, as malware is quite capable of infesting kernel space. And what about device drivers? They're constantly mucking with their internal tables and I/O buffers.
And if you turn off all device drivers, you lose, as there's nothing stopping malware from masquerading as a device driver. Many do.
>>But if we know how big RAM is, we know how much space should be free.
Whoa there again, big guy. There are plenty of machines with RAM at places not generally known to the OS, such as video RAM, graphics polygon RAM, network card RAM buffers, and kernel stacks.
>> Assume we write pseudo-random bits over all this supposedly free space. Again, a malware agent could refuse to be overwritten.
You don't need a checksum test to do this-- each page of virtual memory has R/W control bits.
And you're foiled here again, as there are plenty of system areas that are write-protected, such as pre code areas and the VM tables themselves.
>>Then, let us compute a keyed hash of the entire memory contents -- both our detection program and all the random bits. Here is what could happen: If there is no malware in RAM, the results will be the expected result. An external verifier checks this, and tells us that the scanned device is clean.
Nooo, that just tells you that either you overwrote the malware, so you'll never find it, or the malware during your two sweeps did not change any RAM contents. Quite possible as most malware just sits around most of the time.
>> Or there could be malware in RAM, and the checksum will be wrong.
Well, no, unless you disabled all interrupts and stopped all kernel tasks, there will still be system timers and interrupts and device drivers changing their state in RAM.
>> The external verifier would notice and conclude that the device must be infected.
Or some part of the system or some device driver is still running. Huge chance of false positives.
This essay seems to have been written by someone with only a glancing familiarity with hardware and system software.
Snake Oil, part 2... (Score:3, Insightful)
From the Our Solutions [fatskunk.com] page:
A technique known as software-based attestation can provide an alternative defense against malware by performing infection scans periodically and detect the presence of any program that refuses to be inactivated – as well as any inactivated program that is known to be malicious.
So, it can detect malware that refuses to be inactivated which is a tiny (vanishingly-tiny?) percentage of malware, as well as inactivated software that is known to be malicious (eg, because of a known virus signature.)
So what's the advantage over signature-based virus-scanners? Well, you get to detect completely hypothetical software that (somehow) refuses to allow the kernel to swap it out (and how that is possible is never explained) at the cost of hugely-expensive computations.
Great.
Re: (Score:2)
Yes; In fact, I’m going to walk out on shaky ice and claim that every program that wants to be active in RAM uses more than one byte!