FLARE团队的开源工具,用于识别可执行文件中的功能。
flare-capa的Python项目详细描述
capa检测可执行文件中的功能。 你用一个PE文件或外壳代码运行它,它告诉你它认为这个程序可以做什么。 例如,它可能暗示该文件是后门,能够安装服务,或者依赖HTTP进行通信。在
{a4}第一次查看。在
$ capa.exe suspicious.exe
+------------------------+--------------------------------------------------------------------------------+
| ATT&CK Tactic | ATT&CK Technique |
|------------------------+--------------------------------------------------------------------------------|
| DEFENSE EVASION | Obfuscated Files or Information [T1027] |
| DISCOVERY | Query Registry [T1012] |
| | System Information Discovery [T1082] |
| EXECUTION | Command and Scripting Interpreter::Windows Command Shell [T1059.003] |
| | Shared Modules [T1129] |
| EXFILTRATION | Exfiltration Over C2 Channel [T1041] |
| PERSISTENCE | Create or Modify System Process::Windows Service [T1543.003] |
+------------------------+--------------------------------------------------------------------------------+
+-------------------------------------------------------+-------------------------------------------------+
| CAPABILITY | NAMESPACE |
|-------------------------------------------------------+-------------------------------------------------|
| check for OutputDebugString error | anti-analysis/anti-debugging/debugger-detection |
| read and send data from client to server | c2/file-transfer |
| execute shell command and capture output | c2/shell |
| receive data (2 matches) | communication |
| send data (6 matches) | communication |
| connect to HTTP server (3 matches) | communication/http/client |
| send HTTP request (3 matches) | communication/http/client |
| create pipe | communication/named-pipe/create |
| get socket status (2 matches) | communication/socket |
| receive data on socket (2 matches) | communication/socket/receive |
| send data on socket (3 matches) | communication/socket/send |
| connect TCP socket | communication/socket/tcp |
| encode data using Base64 | data-manipulation/encoding/base64 |
| encode data using XOR (6 matches) | data-manipulation/encoding/xor |
| run as a service | executable/pe |
| get common file path (3 matches) | host-interaction/file-system |
| read file | host-interaction/file-system/read |
| write file (2 matches) | host-interaction/file-system/write |
| print debug messages (2 matches) | host-interaction/log/debug/write-event |
| resolve DNS | host-interaction/network/dns/resolve |
| get hostname | host-interaction/os/hostname |
| create a process with modified I/O handles and window | host-interaction/process/create |
| create process | host-interaction/process/create |
| create registry key | host-interaction/registry/create |
| create service | host-interaction/service/create |
| create thread | host-interaction/thread/create |
| persist via Windows service | persistence/service |
+-------------------------------------------------------+-------------------------------------------------+
下载和使用
下载独立的capa二进制文件的稳定版本here。您可以在不安装的情况下运行独立的二进制文件。capa是一个命令行工具,应该从终端运行。在
要将capa用作库或与其他工具集成,请参见doc/installation.md以获取进一步的设置说明。在
有关如何使用capa的详细信息,请参见doc/usage.md。在
示例
在上面的示例输出中,我们对一个未知的二进制文件(suspicious.exe
)运行capa,
该工具报告程序可以发送HTTP请求,通过XOR和Base64解码数据,
安装服务,并生成新进程。
总之,这让我们认为suspicious.exe
可能是一个持久的后门。
因此,我们的下一个分析步骤可能是在沙盒中运行suspicious.exe
,并尝试恢复命令和控制服务器。在
通过传递-vv
标志(非常详细),capa准确地报告了它在哪里发现了这些功能的证据。
这至少有两个原因是有用的:
- 它有助于解释为什么我们应该相信结果,并使我们能够验证结论,以及
- 它显示了一个有经验的分析员可以在二进制代码中使用idapro进行研究的地方
capa使用一组规则来识别程序中的功能。 这些规则很容易编写,即使对于那些新的逆向工程人员也是如此。 通过编写规则,您可以扩展capa识别的功能。 在某些方面,capa规则是OpenIOC、Yara和YAML格式的混合体。在
以下是capa使用的规则示例:
rule:meta:name:hash data with CRC32namespace:data-manipulation/checksum/crc32author:moritz.raabe@fireeye.comscope:functionexamples:-2D3EDC218A90F03089CC01715A9F047F:0x403CBD-7D28CB106CB54876B2A5C111724A07CD:0x402350# RtlComputeCrc32features:-or:-and:-mnemonic:shr-number:0xEDB88320-number:8-characteristic:nzxor-api:RtlComputeCrc32
github.com/fireeye/capa-rules存储库包含数百个与capa一起分发的标准库规则。 请学习编写规则和贡献新的条目,因为你发现有趣的技术在恶意软件。在
如果您使用IDA-Pro,那么您可以使用可以使用capa explorer IDA plugin。 capaexplorer允许您快速识别和导航到程序的有趣区域,并在 程序集级别。在
更多信息
卡帕
capa规则
- 项目
标签: