mandiant / flare-floss

FLARE Obfuscated String Solver - Automatically extract obfuscated strings from malware.
Apache License 2.0
3.17k stars 445 forks source link

ELF analysis -a/--all-strings option doesn't work #276

Closed Mohannadcse closed 3 years ago

Mohannadcse commented 6 years ago

I've using FLOSS on Ubuntu machine for analyzing strings in ELF files. Seems the option -a isn't supported as described in the usage document of FLOSS. So could you please advise me about this issue. It's also not clear how to ask FLOSS for doing the obfuscation. Also seems FLOSS doesn't support analyzing ELFs because I received the following error message after running FLOSS over an ELF ERROR:floss:FLOSS currently supports the following formats for string decoding and stackstrings: PE

williballenthin commented 6 years ago

Hi @Mohannadcse

As you've found, we've only provided support for analyzing PE files via FLOSS. The is primarily because our corpus of obfuscated samples is nearly all PE files. If you were able to share some ELF files with obfuscated strings, we can begin looking into adding ELF support. The underlying analysis framework, Vivisect, already supports ELF files.

Mohannadcse commented 6 years ago

Thanks for the swift response Yes, I have a dataset of ELFs but don't know if they contain obfuscated strings. If you please inform me how to check that, then I can verify and let you know Also, How about the 2nd part of my inquiry, the documentation shows there is -a option, but the actual executable FLOSS doesn't.

williballenthin commented 6 years ago

Hi @Mohannadcse

There's a little bit of a chicken-and-egg problem here: I haven't seen many obfuscated ELF binaries, so I haven't been able to update FLOSS, but since I haven't updated FLOSS, I can't easily find obfuscated ELF binaries.

We initially developed FLOSS using our experience from manually reversing malware. We knew how to look for obfuscated strings cause we had seen it scores of times across hundreds of binaries. Its possible (probable, even) that many of these ideas translate easily to ELF files, but I don't have the data set or experience to be confident.

Here are some (non-exhaustive) ways you might decide if an ELF file contains obfuscated strings:

williballenthin commented 6 years ago

@Mohannadcse would you clarify where you saw references to the -a flag? We'll create a new issue to track that item.

Mohannadcse commented 6 years ago

I found it in the readme file that came with FLOSS after cloning it. Under the sample output, there is $ ~/env/bin/floss -a malware.bin, that's why I also was expecting that FLOSS supports analyzing ELF files.

README.md.txt

mr-tz commented 6 years ago

Hey, we've changed FLOSS default behavior and usage in v1.3.0. The -a command line option is now the default behavior. Please see the most current documentation here: https://github.com/fireeye/flare-floss/blob/master/doc/usage.md

mr-tz commented 3 years ago

Closing per old discussion above.

idanr1986 commented 2 years ago

here is a good example of an obfuscated elf binary: a0cd554c35dee3fed3d1607dc18debd1296faaee29b5bd77ff83ab6956a6f9d6 https://www.intezer.com/blog/research/new-linux-threat-symbiote/

mr-tz commented 2 years ago

Thanks for the sample, I've referenced it in #40.