Zum Inhalt springen

Architektur ​

Ogma ist als lokale Desktop-Anwendung aufgebaut und umfasst ein Rust-Backend, ein Vue-Frontend, eine Electron-Shell, lokalen Projektspeicher, eine Plugin-Laufzeit und eine optionale MCP-Integration.

Hauptkomponenten ​

KomponenteSpeicherortAufgabe
Rust-Proxy-/API-Backendcrates/proxyMITM-Proxy, REST-API, Speicher, Scanner, Replay, Automatisierung, Plugins, MCP, OAST, Endpunkte zur Browsersteuerung.
Vue-Frontendfrontend/srcBenutzeroberfläche des Arbeitsbereichs, Stores, Routen, Editoren, Scanner, Plugin-Iframes, KI-Arbeitsbereich, Hilfswerkzeuge.
Electron-Desktop-ShelldesktopPaketierte Desktop-Anwendung, Integration von Browserfenstern, Bridge für Einstellungen, Anwendungslebenszyklus.
DokumentationdocsVitePress-Dokumentationswebsite.
Datenverzeichnisogma-data oder plattformspezifische AnwendungsdatenSQLite-Datenbank, CA-Material, Plugins, Exporte, Sicherungen, Dateien.

Backend ​

Das Backend stellt eine REST-API und einen Proxy-Listener bereit. Zu den wichtigsten Backend-Modulen gehören:

  • proxy_server.rs: Abfangen und Weiterleiten von HTTP-Verkehr.
  • intercept.rs und intercept_rules.rs: Warteschlange und Abgleich für die Funktion Abfangen (Intercept).
  • store.rs und store_actor.rs: Zugriff auf die Projektdatenbank und asynchrones Store-Handle.
  • api.rs: API-Routing und Handler.
  • replay.rs, automate.rs und workflows.rs: wiederholbare Ausführung von Anfragen.
  • passive_scanner.rs und active_scanner.rs: Scanner-Engines.
  • plugins.rs und plugin_runtime.rs: Plugin-Metadaten, Sandbox-Laufzeit, Berechtigungen und Ereignisse.
  • mcp.rs: MCP-Ressourcen und -Tools.
  • ca.rs, tls_cert.rs, client_cert.rs: Unterstützung für Zertifikate und TLS.
  • ws_history.rs, ws_replay.rs und sse.rs: Unterstützung für Streaming-Verkehr.
  • oast.rs: Dienste für Out-of-Band-Callbacks.

Frontend ​

Das Frontend ist eine Vue-Anwendung, die für die meisten Ansichten des Arbeitsbereichs Lazy Loading auf Routenebene verwendet.

Wichtige Bereiche:

  • router/index.ts: Routen für den Arbeitsbereich und die Einstellungen.
  • components/NavSidebar.vue: Hauptnavigation der Anwendung.
  • stores/*: Pinia-Stores für Verlauf, Replay, Automate, Befunde, Workflows, Plugins, Scope, Shell, KI und weitere Zustände.
  • api/client.ts und api/types.ts: typisierte API-Client-Schnittstelle.
  • views/*: Funktionsseiten des Arbeitsbereichs.
  • components/WorkspacePanel.vue: Panel für den KI- und Reverse-Shell-Arbeitsbereich.
  • views/PluginsView.vue und views/PluginPageView.vue: Installation und Verwaltung von Plugins sowie Hosting von Frontend-Iframes.

Desktop-Shell ​

Die Electron-Shell stellt die paketierte Desktop-Anwendung und native Bridge-Funktionen bereit:

  • Starten und Steuern des Anwendungsfensters.
  • Dauerhaftes Speichern der Desktop-Einstellungen im lokalen Speicher des Frontends.
  • Öffnen von Browserfenstern mit Ogma Browser und von eingebetteten Browseransichten.
  • Paketieren von Assets und Binärdateien für die Desktop-Distribution.

Speichermodell ​

Ogma speichert die Daten von Sicherheitsprüfungen lokal. Die Backend-Migrationen definieren projektbezogene Tabellen für:

  • HTTP-Verlauf und Nachrichteninhalte.
  • WebSocket- und SSE-Verkehr.
  • Replay-Sitzungen und -Versuche.
  • Automate-Sitzungen, -Ausführungen und -Ergebnisse.
  • Befunde und Verknüpfungen zu Nachweisen.
  • Workflows und Workflow-Ausführungen.
  • Scope-Voreinstellungen.
  • Plugins und Plugin-Berechtigungen.
  • Dateien, Exporte, Sicherungen und Einstellungen.

Plugin-Laufzeit ​

Plugins können Backend-Komponenten, Frontend-Komponenten oder beides enthalten.

Backend-Plugins laufen in einer JavaScript-Sandbox und erhalten ein sdk-Objekt. Frontend-Plugins laufen in Iframes mit Sandbox und kommunizieren über eine von Ogma kontrollierte Bridge.

Wichtige Grenzen:

  • Frontend-Plugins können nicht auf das übergeordnete DOM zugreifen.
  • Bridge-Befehle werden serverseitig validiert.
  • Geschützte Backend-Aktionen erfordern deklarierte und erteilte Berechtigungen.
  • Installierte Pakete werden in Ogmas verwaltetes Plugin-Verzeichnis kopiert, um ein stabiles Laufzeitverhalten zu gewährleisten.

Siehe Plugin-System.

MCP-Integration ​

Der MCP-Server stellt externen Assistenten Ogmas Projektkontext bereit. Er startet standardmäßig im schreibgeschützten Modus. Funktionen zum Schreiben, Exportieren, Senden von Anfragen, Ausführen von Workflows und Steuern der Funktion Abfangen erfordern ausdrückliche Berechtigungen.

Siehe MCP-Einrichtung.

Designprinzipien ​

  • Standardmäßig lokale Datenhaltung.
  • Mit Nachweisen verknüpfte Befunde.
  • Scope-Festlegung vor der Automatisierung.
  • Ausdrückliche Berechtigungsprüfungen für KI, Plugins, das Senden von Anfragen und Exporte.
  • Schnelle Navigation für wiederkehrende Testabläufe.
  • Kompatibilität mit etablierten Proxy-Arbeitsabläufen bei gleichzeitiger Erweiterbarkeit von Ogma.

Proprietäre Software. Alle Rechte vorbehalten.