Permhash – Aucune boucle nécessaire
Les adversaires prennent de nombreuses directions pour obtenir l'autorisation d'effectuer des actions sur les points finaux ciblés : élévation de privilèges, chargement latéral de DLL, vol d'informations d'identification, etc. Les extensions de navigateur, les packages Android (APK) et autres fichiers déclarant des autorisations adoptent une approche différente : ils déclarent les autorisations dont ils ont besoin, sensibles ou non. Ces types de fichiers sont des sources de code externes qui sont autorisées à s'exécuter avec différents degrés d'autorisation. En raison de leur type de fichier unique, n’étant pas un exécutable standard, il existe un manque d’analyse automatisée effectuée sur ces fichiers. Les chercheurs en sécurité, les chasseurs de menaces et les cyberanalystes ont besoin d'une méthode pour regrouper, rechercher et pivoter entre les extensions de navigateur, les fichiers APK et autres fichiers qui déclarent un ensemble d'autorisations de manière reproductible et évolutive.
Permhash est un framework extensible pour hacher les autorisations déclarées appliquées aux extensions de navigateur et aux APK basés sur Chromium, permettant le clustering, la recherche et le pivotement similaires au hachage d'importation et au hachage d'en-tête riche.
Cette recherche comprendra une analyse approfondie du permhash, montrant sa théorie et démontrant ses succès et ses inconvénients dans le monde réel, tout en démontrant son potentiel d'utilisation à grande échelle dans le secteur de la sécurité.
Un fichier CRX est une collection de fichiers archivés ensemble dans un seul package qui peut être utilisé comme extension dans les navigateurs basés sur Chromium. Les extensions améliorent l'expérience de navigation en ajoutant des fonctionnalités et des fonctionnalités au navigateur.
Les extensions utilisent un ensemble d'autorisations pour clarifier la manière dont elles peuvent fonctionner et interagir avec d'autres sources de données. Extensions particulièrement malveillantes, car leurs autorisations dépassent souvent ce qui est requis, afin de collecter des données utilisateur supplémentaires. Une extension déclare son intention dans le champ des autorisations du fichier manifeste. Chaque extension nécessite un fichier au format JSON, nommé manifest.json, qui fournit des informations importantes spécifiques à l'extension. Consultez l’exemple de contenu du fichier manifeste dans la figure 1.
{
"version_manifeste": 3,
"name": "Mon poste",
"version": "1.0.1",
"default_locale": "fr",
"description": "Une description en texte brut",
"autorisations": [
"onglets",
"signets",
"Stockage illimité"
]
}
Ce manifeste précise que l'extension qui lui est associée nécessite les autorisations : onglets, signets et unlimitedStorage. Chaque mot-clé d'autorisation est associé à une API de navigateur qui permet d'effectuer un certain type d'action ou de collecter des données.
Autorisation
Description
onglets
Donne accès aux champs privilégiés des objets Tab.
signets
Donne accès à l'API chrome.bookmarks.
Stockage illimité
Fournit un quota illimité pour le stockage des données côté client, telles que les bases de données et les fichiers de stockage local.
Comme le montre la figure 2, dans leurs intentions les plus pures, les autorisations elles-mêmes ne sont pas malveillantes mais constituent le moyen dont les extensions malveillantes abusent pour obtenir des niveaux d'accès.
Les APK incluent un ensemble d’autorisations déclarées. Ces autorisations existent dans le fichier AndroidManifest.xml. Chaque application Android fonctionnelle doit disposer d'un fichier manifeste Android à la racine de la source du projet. Le fichier manifeste décrit les informations essentielles sur l'application aux outils de création Android, au système d'exploitation Android et à Google Play, y compris les autorisations de l'application. Contrairement aux fichiers manifestes d'extension, les fichiers manifestes Android sont au format AXML mais restent facilement identifiables. Voir la figure 3 pour un exemple des autorisations dans un APK.
1) and/p>