hacktricks/forensics/basic-forensic-methodology/malware-analysis.md

243 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Analyse de logiciels malveillants
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## Feuilles de triche en forensique
[https://www.jaiminton.com/cheatsheet/DFIR/#](https://www.jaiminton.com/cheatsheet/DFIR/)
## Services en ligne
* [VirusTotal](https://www.virustotal.com/gui/home/upload)
* [HybridAnalysis](https://www.hybrid-analysis.com)
* [Koodous](https://koodous.com)
* [Intezer](https://analyze.intezer.com)
* [Any.Run](https://any.run/)
## Outils antivirus et de détection hors ligne
### Yara
#### Installation
```bash
sudo apt-get install -y yara
```
#### Préparer les règles
Utilisez ce script pour télécharger et fusionner toutes les règles de détection de logiciels malveillants yara depuis GitHub : [https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9](https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9)\
Créez le répertoire _**rules**_ et exécutez-le. Cela créera un fichier appelé _**malware\_rules.yar**_ qui contient toutes les règles yara pour les logiciels malveillants.
```bash
wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py
mkdir rules
python malware_yara_rules.py
```
#### Analyse
L'étape initiale de l'analyse des logiciels malveillants consiste à effectuer une analyse de scan approfondie du fichier suspect. Cette analyse permet de détecter les signatures connues de logiciels malveillants et de déterminer si le fichier est potentiellement dangereux.
Il existe plusieurs outils d'analyse de scan disponibles, tels que les antivirus et les outils d'analyse de logiciels malveillants. Ces outils utilisent des bases de données de signatures pour comparer le fichier suspect à des modèles connus de logiciels malveillants.
Lors de l'analyse de scan, il est important de prendre en compte les résultats obtenus, mais aussi de les interpréter correctement. Certains fichiers peuvent être signalés comme suspects en raison de leur comportement ou de leur structure, même s'ils ne sont pas réellement malveillants.
Il est également important de noter que les logiciels malveillants peuvent utiliser des techniques d'obfuscation pour masquer leur véritable nature. Par conséquent, il est possible que certains fichiers malveillants ne soient pas détectés par les outils d'analyse de scan traditionnels.
En résumé, l'analyse de scan est une étape cruciale dans la méthodologie d'analyse des logiciels malveillants. Elle permet de détecter les signatures connues de logiciels malveillants et de déterminer si un fichier est potentiellement dangereux. Cependant, il est important de prendre en compte les résultats obtenus et de les interpréter correctement, en tenant compte des techniques d'obfuscation utilisées par les logiciels malveillants.
```bash
yara -w malware_rules.yar image #Scan 1 file
yara -w malware_rules.yar folder #Scan the whole folder
```
#### YaraGen: Vérification des logiciels malveillants et création de règles
Vous pouvez utiliser l'outil [**YaraGen**](https://github.com/Neo23x0/yarGen) pour générer des règles yara à partir d'un binaire. Consultez ces tutoriels : [**Partie 1**](https://www.nextron-systems.com/2015/02/16/write-simple-sound-yara-rules/), [**Partie 2**](https://www.nextron-systems.com/2015/10/17/how-to-write-simple-but-sound-yara-rules-part-2/), [**Partie 3**](https://www.nextron-systems.com/2016/04/15/how-to-write-simple-but-sound-yara-rules-part-3/)
```bash
python3 yarGen.py --update
python3.exe yarGen.py --excludegood -m ../../mals/
```
### ClamAV
#### Installation
To install ClamAV, follow these steps:
1. Update your package manager:
```shell
sudo apt update
```
2. Install ClamAV:
```shell
sudo apt install clamav
```
3. Update the virus database:
```shell
sudo freshclam
```
4. Scan a file or directory for malware:
```shell
clamscan <file or directory>
```
5. Remove infected files:
```shell
clamscan --remove <file or directory>
```
6. Schedule regular scans:
```shell
sudo crontab -e
```
Add the following line to the crontab file to run a daily scan at 2 AM:
```shell
0 2 * * * clamscan -r /path/to/scan
```
7. Enable automatic updates:
```shell
sudo systemctl enable clamav-freshclam
```
That's it! ClamAV is now installed and ready to use for malware analysis.
```
sudo apt-get install -y clamav
```
#### Analyse
L'étape initiale de l'analyse des logiciels malveillants consiste à effectuer une analyse approfondie du fichier suspect. Cette analyse peut être réalisée à l'aide d'outils d'analyse de logiciels malveillants tels que des scanners antivirus, des outils de détection de comportement malveillant et des outils d'analyse statique.
##### Analyse antivirus
Les scanners antivirus sont des outils couramment utilisés pour détecter les logiciels malveillants. Ils fonctionnent en comparant les signatures des fichiers suspects avec une base de données de signatures de logiciels malveillants connus. Si une correspondance est trouvée, le fichier est considéré comme malveillant.
##### Analyse de comportement malveillant
L'analyse de comportement malveillant consiste à exécuter le fichier suspect dans un environnement contrôlé pour observer son comportement. Cela peut inclure l'observation des actions effectuées par le fichier, telles que la création de fichiers ou de processus, les communications réseau, les modifications du registre, etc. Les outils d'analyse de comportement malveillant peuvent aider à détecter les activités suspectes.
##### Analyse statique
L'analyse statique consiste à examiner le fichier suspect sans l'exécuter. Cela peut inclure l'examen du code source, des métadonnées du fichier, des chaînes de caractères, des fonctions d'importation/exportation, etc. L'analyse statique peut révéler des informations sur les fonctionnalités du logiciel malveillant et aider à identifier les indicateurs de compromission.
Une fois l'analyse initiale terminée, les résultats peuvent être utilisés pour déterminer si le fichier est malveillant ou non. Si le fichier est identifié comme malveillant, des mesures appropriées peuvent être prises pour le neutraliser et prévenir toute autre infection.
```bash
sudo freshclam #Update rules
clamscan filepath #Scan 1 file
clamscan folderpath #Scan the whole folder
```
### [Capa](https://github.com/mandiant/capa)
**Capa** détecte les **capacités potentiellement malveillantes** dans les exécutables : PE, ELF, .NET. Il trouvera donc des choses telles que les tactiques Att\&ck, ou des capacités suspectes telles que :
- vérification des erreurs OutputDebugString
- exécution en tant que service
- création de processus
Obtenez-le dans le [**dépôt Github**](https://github.com/mandiant/capa).
### IOCs
IOC signifie Indicator Of Compromise. Un IOC est un ensemble de **conditions qui identifient** un logiciel potentiellement indésirable ou un **logiciel malveillant confirmé**. Les équipes Blue utilisent ce type de définition pour **rechercher ce type de fichiers malveillants** dans leurs **systèmes** et **réseaux**.\
Le partage de ces définitions est très utile, car lorsque des logiciels malveillants sont identifiés sur un ordinateur et qu'un IOC pour ce logiciel malveillant est créé, d'autres équipes Blue peuvent l'utiliser pour identifier plus rapidement le logiciel malveillant.
Un outil pour créer ou modifier des IOCs est [**IOC Editor**](https://www.fireeye.com/services/freeware/ioc-editor.html)**.**\
Vous pouvez utiliser des outils tels que [**Redline**](https://www.fireeye.com/services/freeware/redline.html) pour **rechercher des IOCs définis sur un appareil**.
### Loki
[**Loki**](https://github.com/Neo23x0/Loki) est un scanner pour les Indicateurs Simples de Compromission.\
La détection est basée sur quatre méthodes de détection :
```
1. File Name IOC
Regex match on full file path/name
2. Yara Rule Check
Yara signature matches on file data and process memory
3. Hash Check
Compares known malicious hashes (MD5, SHA1, SHA256) with scanned files
4. C2 Back Connect Check
Compares process connection endpoints with C2 IOCs (new since version v.10)
```
### Linux Malware Detect
[**Linux Malware Detect (LMD)**](https://www.rfxn.com/projects/linux-malware-detect/) est un scanner de logiciels malveillants pour Linux publié sous la licence GNU GPLv2, conçu pour faire face aux menaces rencontrées dans les environnements d'hébergement partagé. Il utilise des données de menace provenant de systèmes de détection d'intrusion en bordure de réseau pour extraire les logiciels malveillants utilisés activement dans les attaques et génère des signatures pour la détection. De plus, les données de menace sont également obtenues à partir des soumissions des utilisateurs avec la fonction de vérification de LMD et des ressources de la communauté des logiciels malveillants.
### rkhunter
Des outils comme [**rkhunter**](http://rkhunter.sourceforge.net) peuvent être utilisés pour vérifier le système de fichiers à la recherche de possibles **rootkits** et logiciels malveillants.
```bash
sudo ./rkhunter --check -r / -l /tmp/rkhunter.log [--report-warnings-only] [--skip-keypress]
```
### FLOSS
[FLOSS](https://github.com/mandiant/flare-floss) est un outil qui tentera de trouver des chaînes de caractères obfusquées à l'intérieur des exécutables en utilisant différentes techniques.
### PEpper
[PEpper](https://github.com/Th3Hurrican3/PEpper) vérifie quelques éléments de base à l'intérieur de l'exécutable (données binaires, entropie, URLs et IPs, certaines règles yara).
### PEstudio
[PEstudio](https://www.winitor.com/download) est un outil qui permet d'obtenir des informations sur les exécutables Windows tels que les imports, les exports, les en-têtes, mais qui vérifiera également VirusTotal et trouvera des techniques potentielles d'Att\&ck.
### Detect It Easy(DiE)
[DiE](https://github.com/horsicq/Detect-It-Easy/) est un outil permettant de détecter si un fichier est **crypté** et de trouver des **packers**.
### NeoPI
[NeoPI](https://github.com/CiscoCXSecurity/NeoPI) est un script Python qui utilise diverses méthodes statistiques pour détecter du contenu **obfusqué** et **crypté** dans des fichiers texte/script. L'objectif de NeoPI est d'aider à la **détection de code de coquille web caché**.
### php-malware-finder
[php-malware-finder](https://github.com/nbs-system/php-malware-finder) fait de son mieux pour détecter du **code obfusqué**/**douteux** ainsi que des fichiers utilisant des fonctions **PHP** souvent utilisées dans les **malwares**/coquilles web.
### Signatures binaires Apple
Lors de l'analyse d'un **échantillon de malware**, vous devriez toujours **vérifier la signature** du binaire car le **développeur** qui l'a signé peut déjà être **lié** à un **malware**.
```bash
#Get signer
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
#Check if the apps contents have been modified
codesign --verify --verbose /Applications/Safari.app
#Check if the signature is valid
spctl --assess --verbose /Applications/Safari.app
```
## Techniques de détection
### Empilement de fichiers
Si vous savez qu'un dossier contenant les **fichiers** d'un serveur web a été **dernièrement mis à jour à une certaine date**, **vérifiez** la **date** de création et de modification de tous les **fichiers** du serveur web et si une date est **suspecte**, vérifiez ce fichier.
### Baselines
Si les fichiers d'un dossier **ne devraient pas avoir été modifiés**, vous pouvez calculer le **hash** des **fichiers originaux** du dossier et les **comparer** avec les **fichiers actuels**. Tout ce qui a été modifié sera **suspect**.
### Analyse statistique
Lorsque les informations sont enregistrées dans des journaux, vous pouvez **vérifier des statistiques telles que le nombre de fois où chaque fichier d'un serveur web a été accédé, car un web shell pourrait être l'un des plus utilisés**.
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>