火眼实验室恶意软件开源分析工具Flare-floss

许多恶意软件编写者都会通过混淆一个可执行文件的关键部分来躲避启发式的检测方法,而不是通过加强保护壳的方式。通常情况下,这些关键部分都是字符串以及用于配置域,文件以及感染的其它组件的资源。这些关键功能在静态分析过程中,使用strings.exe也得不到明文显示。

FireEye实验室字符串混淆解释器(FLOSS)采用了先进的静态分析技术,从恶意软件的二进制文件中自动反混淆字符串。你可以就像使用strings.exe一样来加强对未知二进制文件的基本静态分析。

FLOSS的理论知识在这里

快速运行

正确使用FLOSS,要下载一个单独的可执行文件,地址:https://github.com/fireeye/flare-floss/releases

有关FLOSS的详细说明,可以参考这篇文档

单独项目地址:

Windows:这里

Linux:这里

OSX:这里

使用方法

从恶意软件中提取混淆字符串:

$ floss /path/to/malware/binary

获取更多的帮助/使用方法:

$ ./floss -h

使用FLOSS更详细的说明,参考这篇文章

测试FLOSS更详细的说明,参考这篇文章

样本输出

$ ~/env/bin/floss -a malware.bin     Static ASCII strings  Offset       String  ----------   -------------------------------------  0x0000004D   !This program cannot be run in DOS mode.  0x00000083   _YY  0x000000D0   RichYY  0x000000F0   MdfQ  0x000001E0   .text  0x00000207   `.rdata  0x0000022F   @.data  0x00000258   .idata  0x00000280   .didat  0x000002A8   .reloc  0x000005B6   U  F  0x000005F1   ?;}  0x000006D4   [email protected];E  0x000006E4   _^[  0x000008E0   HttHt-H  0x0000099A   '9U  0x00007020   WS2_32.dll  0x00007C4E   FreeLibrary  0x00007C5C   GetProcAddress  0x00007C6E   LoadLibraryA  0x00007C7E   GetModuleHandleA  0x00007C92   GetVersionExA  0x00007CA2   MultiByteToWideChar  0x00007CB8   WideCharToMultiByte  0x00007CCE   Sleep  0x00007CD6   GetLastError  0x00007CE6   DeleteFileA  0x00007CF4   WriteFile  [..snip...]     Static UTF-16 strings  Offset       String  ----------   -------------------------------------  0x00007614   ,%d     Most likely decoding functions in: malware.bin  address:    score:  ----------  -------  0x0040102D 0.71000  0x0040101E 0.23000  0x00401046 0.23000  0x00401005 0.21000  0x0040100F 0.21000  0x00401014 0.21000  0x00401023 0.21000  0x004069BF 0.21000  0x00401041 0.21000  0x00406736 0.21000     FLOSS decoded 10 strings  Offset       Called At    String  ----------   ----------   -------------------------------------  0xBFB3B4E8   0x0040595F   WinSta0/Default  0xBFB3B4A0   0x0040472E   Software//Microsoft//Windows//CurrentVersion//Internet Settings  0xBFB3B4A0   0x0040472E   Software//Microsoft//Windows//CurrentVersion//Internet Settings  0xBFB3B4EC   0x0040472E   ProxyEnable  0xBFB3B4A0   0x0040472E   Software//Microsoft//Windows//CurrentVersion//Internet Settings  0xBFB3B4E0   0x0040472E   ProxyServer  0xBFB3B4EC   0x0040472E   ProxyEnable  0xBFB3B4A0   0x0040472E   Software//Microsoft//Windows//CurrentVersion//Internet Settings  0xBFB3B4E0   0x0040472E   ProxyServer  0xBFB3B4EC   0x0040472E   ProxyEnable  [..snip...]     FLOSS extracted 81 stack strings  Function:   Frame offset  String:  ----------  ------------  -------  0x00401005  0x001c    WinSta0/Default  0x0040100f  0x0010    WinSta0/Default  0x0040100f  0x007f    pVAD  0x0040100f  0x0034    '%s' executed.  0x0040100f  0x0038    ERR '%s' error[%d].  0x00401014  0x005c    Software//Microsoft//Windows//CurrentVersion//Internet Settings  0x00401014  0x0010    ProxyEnable  0x00401014  0x001c    ProxyServer  0x00401019  0x000c    wininet.dll  0x00401019  0x001c    InternetOpenA  0x00401019  0x0107    0/A4  0x00401019  0x00c8    InternetSetOptionA  0x00401019  0x0064    InternetConnectA  0x00401019  0x00f7    pVAInternetQueryOptionA  0x0040100a  0x0080    Mozilla/4.0 (compatible; MSIE 7.0; Win32)  0x0040100a  0x004c    -ERR  0x0040100a  0x0020    FILE(%s) wrote(%d).  0x0040100a  0x0038    Invalid ojbect.  0x0040100a  0x0040    SetFilepoint error[%d].  0x0040100a  0x003c    b64_ntop error[%d].  0x0040100a  0x0024    GetFileSize error[%d].  0x0040100a  0x0024    Creates file error[%d].  0x00401041  0x0047    pVAKCeID5Y/96QTJc1pzi0ZhEBqVG83OnXaL+oxsRdymHS4bFgl7UrWfP2v=wtjNukM  [..snip...]

 *参考来源:github.com ,FB小编老王隔壁的白帽子翻译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)