Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
Security Programming IT Technology News

Stealing Data With Obfuscated Code 101

Posted by Soulskill
from the malware-arms-race dept.
Weblver1 writes "A recent report by web security firm Finjan shows how easily data can be accessed on PCs by malware which circumvents existing defenses. With the use of obfuscated code, antivirus software and static Web filters could not identify the scrambled attack code as a threat. The report walks through a real-life scenario of the infection process step-by-step, and tracks what happens to the stolen data. This demonstrates how stealing sensitive data has become unbearably easy — especially, given the abundance of easy-to-use DIY crimeware toolkits. Finjan's report is available here (PDF, registration required). Shortly after this report, Security firm RSA has released their findings of a huge amount of stolen 'virtual wallets' in one of the largest discoveries of stolen data from computers compromised by the Sinowal trojan. While the trojan can be traced back to 2006, it managed to become more productive over time with frequent variants. Given the scale, ease of use, and hiding techniques making infections extremely difficult to find, no wonder today's crimeware achieves such 'impressive' results."
This discussion has been archived. No new comments can be posted.

Stealing Data With Obfuscated Code

Comments Filter:
  • by CSMatt (1175471) on Saturday November 01, 2008 @11:52AM (#25595623)

    Except that a lot of distributions are based on only a handful of larger distributions. Any bugs present in the parent distribution can surface in all of the others that are based on it. Debian's OpenSSL flaws are a good example.

  • by Anonymous Coward on Saturday November 01, 2008 @12:31PM (#25595915)

    I've heard about a project at cert called function extraction that might be relevant to this. It's been going on a few years and they've produced some tools. Don't know much more.

    http://www.cert.org/sse/function_extraction.html [cert.org]

  • That's what I said. (Score:5, Informative)

    by khasim (1285) <brandioch.conner@gmail.com> on Saturday November 01, 2008 @12:41PM (#25595995)

    Because you'll be p0wn3d in no time. Trust what? AV libraries are mostly behind the times and can't smell subtle variations.

    That's what I said. While there isn't an infinite number of variations, there are far more variations possible than there are known good bits.

    So do NOT try to solve this problem by matching "bad" patterns.

    Match known good patterns and quarantine everything else.

    Getting disinfected doesn't necessarily work, either. Usually the initial infection vector still exists (the hapless user).

    The user will ALWAYS be the weakest link. As the article I linked to stated, if education could work, it would have worked by now.

    Instead, focus on building systems that MINIMIZE the vulnerability and that make it EASY to RECOVER when it is cracked.

    Quarantining code is folly.

    That's your opinion. I can show that it does work.

    Active and varied defenses and re-writes and restores to RO media help.

    Huh? How about some specifics? Because that isn't making sense to me.

    I scape so much crap from friends and relatives machines that I've got BartsCD built for most of them. I just re-write the registry after active scans, and re-write kernel, vmm, browser crap.

    How do you "re-write the registry"?

    Instead, imagine an anti-virus system that refuses to allow code to be installed in they system directories (or registered) unless it matches the checksums, names, etc on a list of known good apps. Then it just becomes a issue of keeping that list updated with the latest patches and upgrades.

    Instead of downloading the daily list of suspected BAD patterns, you'd be downloading a list of known good patterns. And that would only need to be updated prior to something being installed on the system.

    For a business looking to manage thousands of PC's ... all with the same basic apps and patch levels and such ... this would be so much easier than trying to maintain the current anti-virus system (engine upgrades, signature upgrades). Nothing would be installed that was not pre-approved by their department.

  • by psydeshow (154300) on Saturday November 01, 2008 @12:52PM (#25596065) Homepage

    According to the Register article, the method of attack was DOM manipulation. The code waits until it sees a login form from a targeted site, and then it injects markup that sends the credentials to the bad guys on submit.

    We can speculate on whether that's true or not, but if it is then it should be fairly easy to use a bit more javascript (why not? heh.) to check the integrity of the DOM. Banks should also be randomizing the structure of their forms and the names/ids of form fields as a matter of course.

    Of course the attacks will evolve, but as long as you're going to play the game you've got to keep moving.

  • by ShinmaWa (449201) on Saturday November 01, 2008 @01:23PM (#25596313)

    Outbound firewalls are for people who don't know what they're doing

    What an incredibly ignorant and stupid thing to say.

    I definitely know what I'm doing and I use my outbound firewall to its fullest extent. Having the ability to proactively determine what software can and can't touch the network, be it establishing a connection or binding to a port, in conjunction with a proper hardware solution provides not only good protection, but also serves as an early warning system when an unknown program attempts to go to an unknown site for an unknown reason.

    Granted, outbound firewalls are not perfect. If a whitelisted application is compromised, then it this firewall doesn't provide much protection. This is why outbound firewalls should be but one of several items in your security toolbox.

    However, to wave your hand and claim they are only for people who don't know what they are doing shows a level of arrogance that usually gets corrected only after you are compromised.

  • by Xenna (37238) on Saturday November 01, 2008 @01:32PM (#25596371)

    We used to call it polymorphic code. A much prettier name if you ask me.

    Been around since 1990:

    http://en.wikipedia.org/wiki/1260_(computer_virus) [wikipedia.org]

  • Re:Obfuscation 101 (Score:5, Informative)

    by bone_idol (782109) on Saturday November 01, 2008 @01:49PM (#25596489)

    Best Use of Light and Spheres:

            Anders Gavare
            Gibraltargatan 82-156
            SE-412 79 Gothenburg
            Sweden

            http://www.mdstud.chalmers.se/~md1gavan/ [chalmers.se]

    Judges' Comments:

            To build:

            make gavare

            To run: ./gavare > ioccc_ray.ppm

            For users of systems that distinguish between text and binary mode
            (you know who you are), add a library call that specifies binary mode
            for stdout as the first statement of main(),
            or use freopen("ioccc_ray.ppm", "wb", stdout) and do not use redirection.

            A freely distributable command-line version of Microsoft Visual C
            exhibits an optimizer bug when compiling this entry. Disable /Og for
            best results.

            The judges were able to figure out how to control position
            (in all 3 coordinates), size, and color (to some extent) of the balls.

    Selected Author's Comments:

            It is possible to write some kinds of programs in C without using reserved
            words. For very short and trivial programs, it usually isn't very hard to
            write a variant using no reserved words, but with this program I want to
            show that also non-trivial programs can be written this way. This IOCCC
            entry contains no reserved words (I don't count 'main' as a reserved word,
            although the compiler gives it special meaning) and no preprocessor
            directives.

            The program is a small ray-tracer. The first line of the source code may
            be modified if you want the resulting image to be of some other resolution
            than the predefined. The 'A' value is an anti-alias factor. Setting it to
            1 disables the anti-aliasing feature (this makes the output look bad), but
            setting it too high makes the trace take a lot more time to complete.

            The ppm image can then be viewed using an image viewer of your own choice.
            (Running the ray-tracer may take several minutes, even on fast machines,
            so be patient.)

            I am very much aware about the fact that I'm breaking the guidelines. For
            example, the word 'int' is a reserved word and therefore all variable
            declarations are implicit. There will no doubt be _lots_ of warnings,
            no matter which compiler is used. Still, the source code should be word-
            length-independent and endianess-independent.

            Another reason for writing code without using reserved words is that many
            text editors will make all reserved words turn BOLD when printed on
            paper. Since I care for the global environment, we shouldn't waste any
            more laser toner, or ink, than necessary. Everyone should write C code
            with no reserved words, and our world will be a better place.

  • by liquidpele (663430) on Saturday November 01, 2008 @10:39PM (#25600039) Journal
    Wow... your ignorance on the subject is quite funny.
  • by Bounb (1398651) on Sunday November 02, 2008 @06:24AM (#25601601)
    Actually, polymorphic code is that which mutates whilst obfuscated code is that which is intentionally written as to mask the function of the code.

"Anyone attempting to generate random numbers by deterministic means is, of course, living in a state of sin." -- John Von Neumann

Working...