Apiscout
Ce projet vise à simplifier la récupération d'importation de l'API Windows. En tant qu'entrée, les vidages de mémoire arbitraires pour un environnement connu peuvent être traités (veuillez noter: une base de données de référence doit être construite en premier, en utilisant APISCOUT / DB_BUILDER).
La sortie est une liste ordonnée des références API Windows identifiées avec certaines méta-informations et une empreinte digitale apivector.
- Scout.py - devrait donner un bon aperçu de la façon de travailler avec la bibliothèque.
- IDA_SCOUT.PY - est un wrapper GUI de commodité à utiliser dans IDA Pro.
- Ghidrascout.java - est un plugin Ghidra pour Apiscout (contribué par @ mari-mari).
- Match.py - montre comment les apivecteurs peuvent être appariés les uns contre les autres et les collections d'empreintes digitales.
- Collect.py - construit une base de données d'empreintes digitales WinAPI (APIVECTEURS) qui peuvent être utilisées pour la correspondance.
- Export.py - génère des diagrammes APIQR qui visualisent les apivecteurs.
- Update.py - Tirez le plus récent APIVECTER DB de Malpedia (nécessite un jeton de compte MALPEDIA / API).
Le code doit être entièrement compatible avec Python 2 et 3.
Il y a un article de blog décrivant plus en détail Apiscout: http://byte-atlas.blogspot.com/2017/04/apiscout.html.
En outre, un autre article de blog expliquant comment les apivecteurs sont construits et stockés: https://byte-atlas.blogspot.com/2018/04/apivectors.html.
Nous avons également présenté un article à BotConf 2018 qui décrit la méthodologie Apiscout en profondeur, y compris une évaluation sur Malpedia: https://journal.cecyf.fr/ojs/index.php/cybin/article/view/20/23
Historique des versions
- 2023-03-27: v2.0.2 - BugFix pour idascout et manipulation des ensembles, contribué par @ 7A6570 (Thx !!)
- 2023-01-02: V2.0.1 - BugFix pour l'analyse de table d'importation basée sur LIEF avec Python 3.10, contribué par @ malware-kitten (thx !!)
- 2022-08-01: V1.2.0 - Plugin ajouté pour Ghidra, contribué par @ Mari-Mari (Thx !!)
- 2022-09-20: v2.0.0 - (potentiellement de rupture) Les résultats de la rampe ont désormais un champ de sortie supplémentaire avec un ensemble de références d'appel pour un winapi donné. Ceci est également inclus dans la sortie JSON de
scout.py , contribué par @renzhexigua (thx !!) - 2022-08-01: V1.2.0 - Plugin ajouté pour Ghidra, contribué par @ Mari-Mari (Thx !!)
- 2022-01-17: V1.1.9 - Correction de
ida_scout.py pour travailler avec IDA 7.5+ lorsque Apiscout est également installé en tant que package Python. - 2021-10-04: V1.1.8 - Extension des contextes WinAPI basés sur les observations fournies par @Blattm (Thx!).
- 2021-08-30: V1.1.7 - Avertissement de dépréciation fixe dans APIQR tel que soulevé par Numpy.
- 2021-07-31: V1.1.6 - Il n'est plus nécessaire de conserver une version FIEF fixe. (Thx to @ cccs-rs!)
- 2021-01-10: V1.1.5 - Python Python3 Lief fixé à la version 0.10.1 (Thx à @akhribfarouk!)
- 2020-12-09: V1.1.4 - Python3 Correction sur DatabaseBuilder (Thx to @ Dump-Guy!)
- 2020-07-13: v1.1.3 - Ajout de "install_requires" pour setup.py pour s'assurer que les dépendances sont installées.
- 2020-06-30: v1.1.0 - Utilisation désormais de Lief pour l'analyse de table d'importation. Correction d'un bug qui ne produirait pas les apivecteurs lors de l'utilisation de l'analyse de la table d'importation. Apiscout est désormais également disponible via PYPI.
- 2020-03-03: Ajout d'un script pour extraire le plus récent APIVECTER DB de Malpedia (nécessite un jeton de compte Malpedia / API).
- 2020-03-02: porté sur IDA 7.4 (thx à @jenfrie).
- 2020-02-18: DB Builder est désormais compatible jusqu'à Python 3.7 (Thx à @Elanfer).
- 2019-10-08: solution de contournement pour le filtrage cassé de la vue de l'API dans IDA 7.3 (thx à @enzok pour l'emporter).
- 2019-08-22: Correction d'un bogue où les informations de type manquant dans IDA mèneraient à un crash (donne maintenant un message d'erreur à la place).
- 2019-08-20: Ajout de soi-même pour éliminer les pointeurs pour posséder une image de mémoire qui pourraient être traités à tort comme des références API.
- 2019-06-06: Ajout de la prise en charge de la reconstruction de type approprié pour les API annotées dans IDA Pro (Thx à @ flxp0c)
- 2019-05-15: Ajout du support Numpy pour les calculs vectoriels (basé sur la mise en œuvre fournie par @garanews - thx!)
- 2019-05-15: Correction d'un bug dans le mappeur PE où le tampon serait raccourci en raison d'une mauvaise interprétation des tailles de section.
- 2019-01-23: Améliorations de la qualité de vie: déploiement automatisé des dossiers de données lorsqu'il est utilisé comme module, journalisation en journalisation (thx à @jdval)
- 2018-08-23: Correction d'un bug dans le mappeur PE où l'en-tête PE serait écrasé par des données de section (vides).
- 2018-08-21: fonctionnalité ajoutée qui permet d'utiliser des informations sur la table d'importation au lieu de ramper pour les références.
- 2018-07-31: Fonctions de commodité fixes pour créer / exporter des vecteurs de / vers les listes et dictions, ajout de la couverture du test.
- 2018-07-23: AVERTISSEMENT: Changement au format APIVECTEUR - a introduit des apivecteurs triés qui sont encore plus économes en espace (20% +).
- 2018-06-25: Incompatibilité fixe avec IDA Pro 7.0+ (Thx à @Nazywam!)
- 2018-05-23: Ajout d'autres groupes de contexte sémantique (thx à Quoscience.io)
- 2018-03-27: Estimation heuristique des dénombrements de référence de l'API Windows ajoutés
- 2018-03-06: Visualisation APIQR des résultats vectoriels (C-1024)
- 2017-11-28: Ajout d'un analyseur de table d'importation pour enrichir les informations sur les résultats
- 2017-08-24: Support multi-segments dans IDA Pro (Thx à @Nazywam!)
- 2017-05-31: Ajout de Windows 7 SP1 64bit Import DB (compatible à Malpedia)
Crédits
L'idée a déjà traversé plusieurs itérations jusqu'à atteindre cette version refactorisée.
Merci à Thorsten Jenke et Steffen Enders pour leurs efforts précédents et à l'évaluation d'une preuve de concept de cette méthode.
Plus merci à Steffen Enders pour son travail sur la visualisation des diagrammes APIQR.
Merci également à Ero Carrera pour Pefile et Elias Bachaalany pour le modèle Ida Python AskusingForm. :)
De plus, beaucoup merci à Andrea Garavaglia pour ses références de performance qui conduisent à des accéléreuses drastiques dans le match appliqué!
Tirez les demandes de bienvenue! :)