
ARTi-C2 est un framework de post-exploitation utilisé pour exécuter des cas de test Atomic Red Team avec des capacités de déploiement et d'exécution rapides de charges utiles via le DLR de .NET.
ARTC2 est un framework d'exécution moderne qui aide les équipes de sécurité à passer à l'échelle l'exécution de scénarios d'attaque à partir de points de compromission uniques ou multiples. Il vise à produire des renseignements d'attaque exploitables qui améliorent l'efficacité des produits de sécurité et la réponse aux incidents.
Les fonctionnalités et capacités principales d'ARTC2 proviennent de SILENTTRINITY, et les tests atomiques exécutés via Boo sont issus de ATOMIC-RED-TEAM. Toutes les autres améliorations ont été conçues pour garantir que le savoir-faire opérationnel, l'agilité, l'évolutivité et l'exécution rapide ne soient pas compromis.
| CAPACITÉ | DESCRIPTION |
|---|---|
| Déploiement rapide | Automatisez et passez à l'échelle les efforts de test à partir de points de compromission uniques ou multiples situés dans différents environnements régionaux |
| Commande & Contrôle moderne | Communications Implant et Serveur : Utilise les capacités de C2 chiffré ECDHE de SILENTRINITY pour chiffrer le trafic C2 via HTTPS. Communications Client et Serveur : Utilise Asyncio, WebSockets et une CLI prompt-toolkit. Fonctionnalités notables : - Marquage de l'emplacement de l'implant : Utile pour gérer les signaux et les points d'arrêt dans différentes régions. Intégration NGROK - Idéal pour préparer des charges utiles et les déployer avec des URLs ngrok |
| En-tête de signature standard | JSON PID: , Date(UTC), IsHighIntegrity, HostName, CurrentUser , IsUserAdmin, IPv4, IPv6 |
| Prise en charge de la journalisation JSON | Rationalisez, ingérez, décodez et analysez les preuves avec votre pile ELK ou toute plateforme d'analyse capable d'analyser du JSON. |
| Exécution de code en mémoire sans stade | Exécutez les tests Atomic Red Team à partir d'un processus PowerShell non managé avec une intégrité faible, moyenne et élevée. |
| Formations d'attaque dynamiques | Exécutez des chaînes d'attaque sans recompiler ou redémarrer ARTC2. Prend actuellement en charge trois fonctions d'attaque différentes. Attack Chains, Attack Profiles et Attack Scenarios |
| Livraison modulaire de charges utiles | ARTC2 exploite le framework SILENTRINITY qui utilise des stagers powershell non managé et powershell sans stade pour compiler et exécuter les charges utiles des tests atomiques Red Team en mémoire, "TELLE QUELLE" |
| Gestion opérationnelle | Les ID de tâche sont inclus pour l'exécution du contrôleur et la collecte de preuves. Ils sont utiles pour l'analyse des événements et la corrélation des preuves. "job_id": "D3l820IWpyi67" |
| Mises à jour atomiques | Le pipeline de portage ART est déclenché par les mises à jour du dépôt sur ATOMIC-RED-TEAM |
Les organisations ont besoin de :
Par défaut, les journaux d'ARTIC-C2 sont écrits dans le répertoire de travail actuel de l'outil, dans ./logs/.
Les journaux de session incluent :
utc_timestamp : horodatage UTCsession : GUID de session ciblejob_id : ID unique d'exécution de tâchettp_data : ID de techniqueevidence : preuves encodées en Base64 collectées depuis un point de compromission cibleevidence_status : statut indiquant si la TTP exécutée a été bloquée.
EN-TÊTE DE SIGNATURE D'EXÉCUTION
Les en-têtes de signature d'exécution sont utilisés pour vérifier si des défenses bloquent les atomiques. Parfois, les commandes atomiques peuvent ne pas renvoyer de données dans STDOUT. Cependant, si l'en-tête de signature d'exécution renvoie des informations d'en-tête, cela indique que le code source a été compilé, chargé dans le CLR et exécuté sur le point de compromission cible. L'en-tête de signature d'exécution inclut :
PID : utilisé lors de l'exécution de la techniqueDate : horodatage UTC produit depuis le point de compromission cibleIsHighIntegrity : statut d'intégrité du processusHostName : nom d'hôte du point de compromission cibleCurrentUser : utilisateur actuel. Idéal pour suivre quand les utilisateurs sont usurpésIsUserAdmin : statut administrateurIPv4 : informations d'adresse IPv4IPv6 : informations d'adresse IPv6EXEMPLE DE JOURNAL D'ÉVÉNEMENT D'EXÉCUTION
T1069.001-2 a été exécuté en mémoire
2021-08-21 07:42:21,146 - {"utc_timestamp": "2021-08-21T07:42:21Z", "msg": "Technique executed:", "controller": "Discovery/T1069.001-2", "last_updated_by": "ARMADO, Inc.",
"ttp_id": "T1069.001", "ttp_opts": {"OutString": {"Description": "Appends Out-String to the PowerShellCode", "Required": false, "Value": true}, "BypassLogging":
{"Description": "Bypasses ScriptBlock and Techniques logging", "Required": false, "Value": true}, "BypassAmsi": {"Description": "Bypasses AMSI", "Required": false, "Value": true}},
"decompressed_file": "n/a", "file_name": "n/a", "gzip_file": "n/a", "language": "boo", "references": ["System.Management.Automation"], "run_in_thread": "n/a", "job_id": "B5ppBWed5NF6c"}
EXEMPLE DE JOURNAL DE COLLECTE DE PREUVES
Des preuves ont été collectées depuis le point de compromission cible après l'exécution de T1069.001-2.
2021-08-21 07:42:25,076 - {"utc_timestamp": "2021-08-21T07:42:25Z", "session": "17ed378a-8cb9-4690-9087-e894c2b1e0a2", "job_id": "B5ppBWed5NF6c", "ttp_data": "T1069.001", "evidence": "IntQSUQ6IDU1NTYsIERhdGUoVVRDKTogMjAyMS0wOC0yMVQwNzo0MjoyNC45MDczMjQ5WiwgSXNIaWdoSW50ZWdyaXR5OiB0cnVlLCBIb3N0TmFtZTogYWQtZGMxLCBDdXJyZW50VXNlcjogZGVlcHJvb3RcXHJ1c3NlbF9oYW5jb2NrLCBJc1VzZXJBZG1pbjogdHJ1ZSwgSVB2NDogWzEwLjEuMC4xMDAsIDE2OS4yNTQuMTM0LjExMV0sIElQdjY6IFtmZTgwOjpkZGUxOjIyYTo3YmEzOmZlMGIlNSwgZmU4MDo6YjhmODpiNDIxOjI3Yzg6ODY2ZiUxMV19XHJcbk5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4tLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuQ2VydCBQdWJsaXNoZXJzICAgICAgICAgICAgICAgICAgICAgICAgIE1lbWJlcnMgb2YgdGhpcyBncm91cCBhcmUgcGVybWl0dGVkIHRvIHB1Ymxpc2ggY2VydGlmaWNhdGVzIHRvIHRoZSBkaXJlY3RvcnkgICAgXHJcblJBUyBhbmQgSUFTIFNlcnZlcnMgICAgICAgICAgICAgICAgICAgICBTZXJ2ZXJzIGluIHRoaXMgZ3JvdXAgY2FuIGFjY2VzcyByZW1vdGUgYWNjZXNzIHByb3BlcnRpZXMgb2YgdXNlcnMgICAgICAgICAgICAgIFxyXG5BbGxvd2VkIFJPREMgUGFzc3dvcmQgUmVwbGljYXRpb24gR3JvdXAgTWVtYmVycyBpbiB0aGlzIGdyb3VwIGNhbiBoYXZlIHRoZWlyIHBhc3N3b3JkcyByZXBsaWNhdGVkIHRvIGFsbCByZWFkLW9ubHkgZG8uLi5cclxuRGVuaWVkIFJPREMgUGFzc3dvcmQgUmVwbGljYXRpb24gR3JvdXAgIE1lbWJlcnMgaW4gdGhpcyBncm91cCBjYW5ub3QgaGF2ZSB0aGVpciBwYXNzd29yZHMgcmVwbGljYXRlZCB0byBhbnkgcmVhZC1vbmx5Li4uXHJcbiI=",
"evidence_status": "1"}
EXEMPLE DE SIGNATURE D'EN-TÊTE
"{PID: 5556, Date(UTC): 2020-01-02T06:55:47Z, IsHighIntegrity: true, HostName: ad-dc1, CurrentUser: artic\\c2operator, IsUserAdmin: true,
IPv4: [10.1.0.100, 169.254.134.111], IPv6: [fe80::dde1:22a:7ba3:fe0b%5, fe80::b8f8:b421:27c8:866f%11]}
EXEMPLE DE JOURNAL DE PREUVE DÉCODÉ EN BASE64
"{PID: 5556, Date(UTC): 2021-08-21T07:42:24.9073249Z, IsHighIntegrity: true, HostName: ad-dc1, CurrentUser: deeproot\\russel_hancock, IsUserAdmin: true,
IPv4: [10.1.0.100, 169.254.134.111], IPv6: [fe80::dde1:22a:7ba3:fe0b%5, fe80::b8f8:b421:27c8:866f%11]}
Name Description
---- -----------
Cert Publishers Members of this group are permitted to publish certificates to the directory
RAS and IAS Servers Servers in this group can access remote access properties of users
Allowed RODC Password Replication Group Members in this group can have their passwords replicated to all read-only do...
Denied RODC Password Replication Group Members in this group cannot have their passwords replicated to any read-only...
"
Par défaut, les écouteurs se lient à l'interface du système avec HTTPS:443 et HTTP:80. Ils doivent être accessibles depuis le point de compromission présumé. Définissez vos URL de rappel dans le contexte :> listeners avant de générer un stager.
git clone https://github.com/ARMADOinc/Atomic-Red-Team-intel-C2.gitcd ./Atomic-Red-Team-intel-C2./install.sh installOPTIONS DE DÉPLOIEMENT
ARTIC-C2 permet des modèles de déploiement flexibles pour répondre à toutes les exigences d'exécution de tests atomiques. Bien qu'il existe quelques dépendances de console côté client liées à la mise en cache, la console client n'est pas nécessaire pour fonctionner sur le même système que le serveur d'équipe. Bientôt, nous empaquèterons et publierons un client dédié.
REMARQUE : Les exemples ci-dessous supposent qu'ARTIC-C2 démarrera depuis la même instance.
Démarrer WSS sur le port par défaut et produire un journal ad-hoc
artic2.py wss 127.0.0.1 Art1.c25rvr >> /var/log/artic2.log &artic2.py client wss://operator:[email protected]:5000Démarrer WSS sur le port par défaut en avant-plan
artic2.py wss 127.0.0.1 Art1.c25rvrartic2.py client wss://operator:[email protected]:5000Démarrer WSS sur le port 5443, se lier à 10.0.0.43, produire un journal ad-hoc et connecter deux clients
artic2.py wss 10.0.0.43:5443 Art1.c25rvr >> /var/log/artic2.log &artic2.py client wss://operator1:[email protected]:5443artic2.py client wss://operator2:[email protected]:5443