Qu'est-ce que Capa ?
Capa détecte les fonctionnalités utilisées dans les fichiers exécutables.
Utilisez le sur un fichier PE ou un shellcode et il va vous dire ce qu'il pense que le programme est capable de faire.
Par exemple, il peut en déduire que le programme est un
cheval de Troie, est capable d’installer des services, ou se base sur HTTP pour communiquer.
Veuillez lire l'article des fonctionnalités sur le premier
article du blog capa.
$ 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 |
+-------------------------------------------------------+-------------------------------------------------+
Téléchargement et utilisation de Capa
Téléchargez les versions stables et le programme déjà compilé
ici. Vous pouvez utiliser le programme exécutable seul sans installation. Capa est un outil en ligne de commande qui doit se lancer à partir du terminal.
Pour utiliser Capa comme librairie ou l'intégrer avec un autre outil, voir
doc/installation.md pour de plus amples instructions.
Pour plus d'informations a propos de l'utilisation de Capa, y compris son exécution dans l'environnement de script/pluguin IDA, voir
doc/usage.md.
Exemple
Dans l'affichage du résultat ci-dessus, nous avons lancé Capa contre un programme exécutable inconnu (suspicious.exe),
et l'outil nous indique que le programme peut envoyer des requêtes HTTP, décode des données avec XOR et BaAse64,
installe des services et lance de nouveaux processus.
Pris tous ensemble, cela nous faire penser que suspicious.exe peut être un chaval de Troie persistant.
De plus, la prochaine étape d'analyse pourrait être de lancer suspicious.exe dans une sandbox et essayer de trouver le serveur de commande et de contrôle (CC).
En passant l'argument -vv flag (pour "very verbose", très bavard), Capa affiche exactement où se situe la preuve de ces fonctionnalités douteuse.
C'est utile pour dux raisons :
- Cela aide à expliquer pourquoi nous devons croire en ces résultats, et nous permet de vérifier les conclusions de cet outil, et
- cela montre où cela se trouve dans l'exécutable analysé et un analyste expérimenté pourrait analyser cela avec IDA Pro
λ capa.exe suspicious.exe -vv
...
execute shell command and capture output
namespace c2/shell
author matthew.williams@fireeye.com
scope function
att&ck Execution::Command and Scripting Interpreter::Windows Command Shell [T1059.003]
references https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/ns-processthreadsapi-startupinfoa
examples Practical Malware Analysis Lab 14-02.exe_:0x4011C0
function @ 0x10003A13
and:
match: create a process with modified I/O handles and window @ 0x10003A13
and:
or:
api: kernel32.CreateProcess @ 0x10003D6D
number: 0x101 @ 0x10003B03
or:
number: 0x44 @ 0x10003ADC
optional:
api: kernel32.GetStartupInfo @ 0x10003AE4
match: create pipe @ 0x10003A13
or:
api: kernel32.CreatePipe @ 0x10003ACB
or:
string: cmd.exe /c @ 0x10003AED
...
Capa utilise une collection de règles pour identifier les fonctionnalités d'un programme.
Ces règles sont faciles à écrire, même pour les débutants en rétro-ingénierie.
En créant vos règles, vous pouvez étendre les fonctionnalités que Capa reconnaît.
D'un certain point de vue, les règles de Capa sont un mix entre les formats OpenIOC, Yara, et YAML.
Voici une exemple de règles utilisée par capa:
yaml
rule:
meta:
name: hash data with CRC32
namespace: data-manipulation/checksum/crc32
author: moritz.raabe@fireeye.com
scope: function
examples:
- 2D3EDC218A90F03089CC01715A9F047F:0x403CBD
- 7D28CB106CB54876B2A5C111724A07CD:0x402350 # RtlComputeCrc32
features:
- or:
- and:
- mnemonic: shr
- number: 0xEDB88320
- number: 8
- characteristic: nzxor
- api: RtlComputeCrc32
Le dépôt
github.com/mandiant/capa-rules contient de centaines de règles de librairies standard qui sont distribuées avec Capa.
SVP, merci d'écrire de nouvelles règles et de contribuer lorsque vous trouvez des techniques intéressantes dans un malware.
Si vous utilisez IDA Pro, vous pouvez utiliser le
plugin IDA Pro pour Capa.
Ce script ajoute de nouveaux élément à l'interface utilisateur d'IDA, y compris une vue interactive d'une hiérarchie des règles trouvées dans la base de données courante.
Si vous cochez les cases, le plugin mettra en évidence les adresses associées à ces fonctionnalités.
Nous utilisons ce plugin tout le temps, et allons directement sur les parties intéressantes du programme.
Plus d'informations
Sur Capa
Sur les règles de Capa
Téléchargement
Tags
ANTIVIRUS
CYBERCRIMINALITÉ
MALWARE
WINDOWS
LINUX
MACOS
OPEN SOURCE
RÉTRO-INGENIERIE
CYBERSÉCURITÉ
OUTIL D'ADMINISTRATION
Inscription à notre lettre d'information
Inscrivez-vous à notre
lettre d'information pour vous tenir au courant de nos actualités et de nos dernières trouvailles.