Skip to content

Flotss/redops

Repository files navigation

RedOps - Framework de Modules d'Audit

📚 Documentation Wiki complète disponible ici

📋 Sommaire

  1. Objectif du projet
  2. Aperçu rapide
  3. Architecture
  4. Démarrage rapide
  5. Créer un module
  6. Structure du projet
  7. Configuration
  8. Licence

🎯 Objectif du projet

RedOps est un framework modulaire d'audit et de simulation d'attaques qui permet de :

  • Créer des modules d'audit de sécurité de manière simple et standardisée
  • Exécuter des modules dans un ordre configurable
  • Visualiser les résultats via une interface graphique moderne
  • Étendre facilement le framework via de nouveaux modules Il sert de base pédagogique pour analyser :
  • Conception modulaire et extensible
  • Réflexion Java et chargement dynamique
  • Gestion des erreurs et statuts d'exécution
  • Interfaces utilisateur réactives

⚡ Aperçu rapide du fonctionnement

Flux principal

Main.main()
  ├── RedOpsOptions.parse(args)           // Parse les arguments CLI
  ├── AppConfig.load(options)             // Charge la configuration
  ├── AnnotationConfigLoader.loadConfig() // Scan les annotations @Module
  └── ModuleManager.startModules()        // Démarre les modules

Exemple de module

@Module(name = "Simple Ping", order = 0)
public class Ping extends AbstractModule {
    @Override
    protected ExecutionStatus process(InetAddress address) 
            throws InterruptedException {
        boolean reachable = address.isReachable(5000);
        return reachable ? ExecutionStatus.SUCCESS : ExecutionStatus.ERROR;
    }
}

Au démarrage, RedOps :

  1. Scanne le package com.redops pour trouver tous les modules annotés @Module
  2. Les trie par ordre d'exécution
  3. Les instancie et les exécute séquentiellement
  4. Affiche les résultats dans l'interface graphique

🏗️ Architecture et composants principaux

Packages clés

  • com.redops.library : Point d'entrée (Main)
  • com.redops.library.core : Framework principal
    • ModuleManager : Orchestrateur des modules
    • annotations/ : Annotation @Module
    • config/ : Chargement de configuration
    • module/ : Gestion du cycle de vie des modules
    • tools/ : Classes utilitaires (AbstractModule, ExecutionStatus)
  • com.redops.library.modules : Modules d'audit implémentés

Composants principaux

Composant Rôle
@Module Annotation pour déclarer un module
AbstractModule Classe de base pour tous les modules
ModuleManager Orchestrateur principal
ModuleInfo Encapsule un module instancié
ExecutionStatus Statuts d'exécution (SUCCESS, ERROR, etc.)

🚀 Démarrage rapide

Prérequis

  • Java 17 ou supérieur
  • Maven 3.6+

Compilation

mvn clean compile

Exécution

PowerShell :

# Mode graphique (par défaut)
mvn exec:java "-Dexec.mainClass=com.redops.library.Main"
# Mode headless (sans interface)
mvn exec:java "-Dexec.mainClass=com.redops.library.Main" "-Dexec.args=--headless"
# Mode debug
mvn exec:java "-Dexec.mainClass=com.redops.library.Main" "-Dexec.args=--debug"

Bash / CMD :

# Mode graphique (par défaut)
mvn exec:java -Dexec.mainClass="com.redops.library.Main"
# Mode headless (sans interface)
mvn exec:java -Dexec.mainClass="com.redops.library.Main" -Dexec.args="--headless"
# Mode debug
mvn exec:java -Dexec.mainClass="com.redops.library.Main" -Dexec.args="--debug"

Options CLI

Option Description
--headless Mode sans interface graphique
--debug Active les logs de debug

🔧 Créer un nouveau module

1. Créer la classe

Créez une nouvelle classe dans com.redops.library.modules :

package com.redops.library.modules;
import com.redops.library.core.annotations.Module;
import com.redops.library.core.tools.AbstractModule;
import com.redops.library.core.tools.ExecutionStatus;
import java.net.InetAddress;
@Module(name = "Port Scanner", order = 10)
public class PortScanner extends AbstractModule {
    @Override
    protected ExecutionStatus process(InetAddress address) 
            throws InterruptedException {
        // Votre logique ici
        // ...
        return ExecutionStatus.SUCCESS;
    }
}

2. Implémenter la logique

@Override
protected ExecutionStatus process(InetAddress address) 
        throws InterruptedException {
    List<Integer> openPorts = new ArrayList<>();
    // Scanner les ports communs
    for (int port : new int[]{80, 443, 22, 21, 25}) {
        try (Socket socket = new Socket()) {
            socket.connect(new InetSocketAddress(address, port), 1000);
            openPorts.add(port);
        } catch (IOException e) {
            // Port fermé
        }
    }
    // Stocker les résultats
    result.setMessage("Ports ouverts : " + openPorts);
    return openPorts.isEmpty() ? ExecutionStatus.WARNING : ExecutionStatus.SUCCESS;
}

3. C'est tout !

Le module sera automatiquement détecté et exécuté au prochain lancement.

📁 Structure du projet

redops/
├── src/main/java/com/redops/library/
│   ├── Main.java                    # Point d'entrée
│   ├── core/                        # Framework
│   │   ├── ModuleManager.java       # Orchestrateur
│   │   ├── annotations/
│   │   │   └── Module.java          # Annotation @Module
│   │   ├── config/                  # Configuration
│   │   ├── module/                  # Gestion des modules
│   │   ├── entity/                  # Entités métier
│   │   ├── graphics/                # Interface graphique
│   │   └── tools/                   # Utilitaires
│   │       ├── AbstractModule.java  # Classe de base
│   │       └── ExecutionStatus.java # Statuts
│   └── modules/                     # Modules implémentés
│       ├── Ping.java
│       └── PingAdvanced.java
├── src/main/resources/
│   └── log4j2.xml                   # Configuration logs
├── docs/wiki/                       # Documentation
├── pom.xml                          # Configuration Maven
└── README.md

⚙️ Configuration

Statuts d'exécution

Statut Code Description
SUCCESS 0 Module exécuté avec succès
WARNING 1 Exécuté avec avertissements
ERROR -1 Erreur d'exécution
CRITICAL_ERROR -2 Erreur critique
IN_PROGRESS 4 En cours d'exécution
NOT_STARTED 3 Pas encore démarré
SKIPPED 2 Sauté

Logging

Configuration dans src/main/resources/log4j2.xml :

<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

📚 Documentation


🛠️ Technologies utilisées

  • Java 17 - Langage de base
  • Maven - Gestion de dépendances
  • Reflections - Scanning d'annotations
  • Log4j2 - Journalisation
  • FlatLaf - Look & Feel moderne
  • JFreeChart - Génération de graphiques
  • Swing - Interface graphique

🤝 Contribution

Les contributions sont les bienvenues ! Consultez le guide de contribution.

Étapes pour contribuer

  1. Fork le projet
  2. Créez une branche (git checkout -b feature/AmazingFeature)
  3. Commitez vos changements (git commit -m 'Add some AmazingFeature')
  4. Push vers la branche (git push origin feature/AmazingFeature)
  5. Ouvrez une Pull Request

⚠️ Avertissement légal

RedOps est un outil pédagogique et de sécurité offensive.

  • ✅ À utiliser uniquement sur des systèmes dont vous avez l'autorisation
  • Ne pas utiliser sur des systèmes tiers sans permission écrite
  • ⚖️ L'utilisateur est seul responsable de l'usage de cet outil Consultez Legal-Ethics.md pour plus d'informations.

📄 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.

👥 Auteurs

  • Mathys Haubert - Développement initial

🙏 Remerciements

  • Communauté Java et sécurité offensive
  • Contributeurs open source
  • Testeurs et reviewers

Made with ❤️ for learning and security research

About

Automated attack simulation tool for web apps and servers (brute force, OWASP Top 10, DoS) with report generation and GUI.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors