main #11

Merged
mstoeck3 merged 66 commits from main into forensic-ai 2025-08-11 12:02:56 +00:00
3 changed files with 38 additions and 37 deletions
Showing only changes of commit 93783dde3d - Show all commits

View File

@ -4,15 +4,15 @@ export const AI_PROMPTS = {
toolSelection: (mode: string, userQuery: string, selectionMethod: string, maxSelectedItems: number) => { toolSelection: (mode: string, userQuery: string, selectionMethod: string, maxSelectedItems: number) => {
const modeInstruction = mode === 'workflow' const modeInstruction = mode === 'workflow'
? 'Der Benutzer möchte einen UMFASSENDEN WORKFLOW mit mehreren Tools/Methoden über verschiedene Phasen. Wählen Sie 15-25 Tools aus, die den vollständigen Untersuchungslebenszyklus abdecken.' ? 'Der Benutzer möchte einen UMFASSENDEN WORKFLOW mit mehreren Tools/Methoden über verschiedene Phasen. Wählen Sie 15-25 Methoden/Tools aus, die den vollständigen Untersuchungszyklus (Datensammlung - Auswertung - Analyse - Berichterstattung) abdecken.'
: 'Der Benutzer möchte SPEZIFISCHE TOOLS/METHODEN, die ihr konkretes Problem direkt lösen. Wählen Sie 3-8 Tools aus, die am relevantesten und effektivsten sind.'; : 'Der Benutzer möchte SPEZIFISCHE TOOLS/METHODEN, die ihr konkretes Problem direkt lösen. Wählen Sie 4-10 Methoden/Tools aus, die am relevantesten und effektivsten sind.';
return `Sie sind ein DFIR-Experte mit Zugang zur kompletten forensischen Tool-Datenbank. Sie müssen die relevantesten Tools und Konzepte für diese spezifische Anfrage auswählen. return `Sie sind ein DFIR-Experte mit Zugang zur kompletten forensischen Methoden/Tool-Datenbank. Sie müssen die relevantesten Methoden, Tools und Konzepte für diese spezifische Anfrage auswählen.
AUSWAHLMETHODE: ${selectionMethod} AUSWAHLMETHODE: ${selectionMethod}
${selectionMethod === 'embeddings_candidates' ? ${selectionMethod === 'embeddings_candidates' ?
'Diese Tools wurden durch Vektor-Ähnlichkeit vorgefiltert, sie sind bereits relevant. Ihre Aufgabe ist es, die BESTEN aus diesem relevanten Set auszuwählen.' : 'Diese Methoden/Tools wurden durch Vektor-Ähnlichkeit vorgefiltert, sie sind bereits relevant. Ihre Aufgabe ist es, die BESTEN aus diesem relevanten Set auszuwählen. Wähle mindestens eine Methode und ein Tool, wenn vorhanden.' :
'Sie haben Zugang zur vollständigen Tool-Datenbank. Wählen Sie die relevantesten Tools für die Anfrage aus.'} 'Sie haben Zugang zur vollständigen Methoden/Tool-Datenbank. Wählen Sie die relevantesten Methoden/Tools für die Anfrage aus. Wähle mindestens eine Methode und ein Tool, wenn vorhanden.'}
${modeInstruction} ${modeInstruction}
@ -25,17 +25,17 @@ KRITISCHE AUSWAHLPRINZIPIEN:
- Für SCHNELLE/DRINGENDE Szenarien Priorisieren Sie METHODEN und schnelle Antwort-Ansätze - Für SCHNELLE/DRINGENDE Szenarien Priorisieren Sie METHODEN und schnelle Antwort-Ansätze
- Für ZEITKRITISCHE Vorfälle Wählen Sie Triage-Methoden über tiefe Analyse-Tools - Für ZEITKRITISCHE Vorfälle Wählen Sie Triage-Methoden über tiefe Analyse-Tools
- Für UMFASSENDE Analysen Dann betrachten Sie detaillierte Software-Tools - Für UMFASSENDE Analysen Dann betrachten Sie detaillierte Software-Tools
- METHODEN (Typ: "method") sind oft besser als SOFTWARE für prozedurale Anleitung - METHODEN (Typ: "method") sind oft besser als SOFTWARE für prozedurale Anleitung, eine gute Mischung ist aber zwingend erforderlich.
3. **SZENARIO-SPEZIFISCHE LOGIK**: 3. **SZENARIO-SPEZIFISCHE LOGIK**:
- "Schnell/Quick/Dringend/Triage" Szenarien Rapid Incident Response und Triage METHODE > Volatility - "Schnell/Quick/Dringend/Triage" Szenarien Rapid Incident Response und Triage METHODE > Volatility oder ähnliche
- "Industrial/SCADA/ICS" Szenarien Spezialisierte ICS-Tools > generische Netzwerk-Tools - "Industrial/SCADA/ICS" Szenarien Spezialisierte ICS-Tools > generische Netzwerk-Tools
- "Mobile/Android/iOS" Szenarien Mobile-spezifische Tools > Desktop-Forensik-Tools - "Mobile/Android/iOS" Szenarien Mobile-spezifische Tools > Desktop-Forensik-Tools
- "Speicher-Analyse dringend benötigt" Schnelle Speicher-Tools/Methoden > umfassende Volatility-Analyse - "Speicher-Analyse dringend benötigt" Schnelle Speicher-Tools/Methoden > umfassende Volatility-Analyse oder ähnliche
ANALYSE-ANWEISUNGEN: ANALYSE-ANWEISUNGEN:
1. Lesen Sie die VOLLSTÄNDIGE Beschreibung jedes Tools/Konzepts 1. Lesen Sie die VOLLSTÄNDIGE Beschreibung jedes Tools/Konzepts
2. Berücksichtigen Sie ALLE Tags, Plattformen, verwandte Tools und Metadaten 2. Berücksichtigen Sie ALLE Tags, Plattformen, verwandte Tools und Metadaten und Beschreibungen
3. **PASSENDE DRINGLICHKEIT**: Schnelle Szenarien brauchen schnelle Methoden, nicht tiefe Analyse-Tools 3. **PASSENDE DRINGLICHKEIT**: Schnelle Szenarien brauchen schnelle Methoden, nicht tiefe Analyse-Tools
4. **PASSENDE SPEZIFITÄT**: Spezialisierte Szenarien brauchen spezialisierte Tools, nicht generische 4. **PASSENDE SPEZIFITÄT**: Spezialisierte Szenarien brauchen spezialisierte Tools, nicht generische
5. **BERÜCKSICHTIGEN SIE DEN TYP**: Methoden bieten prozedurale Anleitung, Software bietet technische Fähigkeiten 5. **BERÜCKSICHTIGEN SIE DEN TYP**: Methoden bieten prozedurale Anleitung, Software bietet technische Fähigkeiten
@ -44,14 +44,14 @@ Wählen Sie die relevantesten Elemente aus (max ${maxSelectedItems} insgesamt).
Antworten Sie NUR mit diesem JSON-Format: Antworten Sie NUR mit diesem JSON-Format:
{ {
"selectedTools": ["Tool Name 1", "Tool Name 2", ...], "selectedTools": ["Methode/Tool Name 1", "Methode/Tool Name 2", ...],
"selectedConcepts": ["Konzept Name 1", "Konzept Name 2", ...], "selectedConcepts": ["Konzept Name 1", "Konzept Name 2", ...],
"reasoning": "Detaillierte Erklärung, warum diese spezifischen Tools für diese Anfrage ausgewählt wurden, und warum bestimmte populäre Tools NICHT ausgewählt wurden, falls sie für den Szenario-Kontext ungeeignet waren" "reasoning": "Detaillierte Erklärung, warum diese spezifischen Methoden/Tools für diese Anfrage ausgewählt wurden, und warum bestimmte populäre Tools NICHT ausgewählt wurden, falls sie für den Szenario-Kontext ungeeignet waren"
}`; }`;
}, },
scenarioAnalysis: (isWorkflow: boolean, userQuery: string) => { scenarioAnalysis: (isWorkflow: boolean, userQuery: string) => {
const analysisType = isWorkflow ? 'forensische Szenario' : 'technische Problem'; const analysisType = isWorkflow ? 'Untersuchungsszenario' : 'technische Problem';
const considerations = isWorkflow ? const considerations = isWorkflow ?
`- Angriffsvektoren und Bedrohungsmodellierung nach MITRE ATT&CK `- Angriffsvektoren und Bedrohungsmodellierung nach MITRE ATT&CK
- Betroffene Systeme und kritische Infrastrukturen - Betroffene Systeme und kritische Infrastrukturen
@ -63,26 +63,28 @@ Antworten Sie NUR mit diesem JSON-Format:
return `Sie sind ein erfahrener DFIR-Experte. Analysieren Sie das folgende ${analysisType}. return `Sie sind ein erfahrener DFIR-Experte. Analysieren Sie das folgende ${analysisType}.
${isWorkflow ? 'FORENSISCHES SZENARIO' : 'TECHNISCHES PROBLEM'}: "${userQuery}" ${isWorkflow ? 'UNTERSUCHUNGSSZENARIO' : 'TECHNISCHES PROBLEM'}: "${userQuery}"
Führen Sie eine systematische ${isWorkflow ? 'Szenario-Analyse' : 'Problem-Analyse'} durch und berücksichtigen Sie dabei: Führen Sie eine systematische ${isWorkflow ? 'Szenario-Analyse' : 'Problem-Analyse'} durch und berücksichtigen Sie dabei:
${considerations} ${considerations}
WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen, Aufzählungen oder Markdown-Formatierung. Maximum 150 Wörter.`; WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen, Aufzählungen oder Markdown-Formatierung. Maximum 120 Wörter.`;
}, },
investigationApproach: (isWorkflow: boolean, userQuery: string) => { investigationApproach: (isWorkflow: boolean, userQuery: string) => {
const approachType = isWorkflow ? 'Untersuchungsansatz' : 'Lösungsansatz'; const approachType = isWorkflow ? 'Untersuchungsansatz' : 'Lösungsansatz';
const considerations = isWorkflow ? const considerations = isWorkflow ?
`- Triage-Prioritäten nach forensischer Dringlichkeit `- Triage-Prioritäten nach forensischer Dringlichkeit
- Phasenabfolge nach NIST-Methodik - Phasenabfolge nach Methodik (Datensammlung - Auswertung - Analyse - Bericht)
- Kontaminationsvermeidung und forensische Isolierung` : - Kontaminationsvermeidung und forensische Isolierung
- Objektivität und Transparenz` :
`- Methodik-Auswahl nach wissenschaftlichen Kriterien `- Methodik-Auswahl nach wissenschaftlichen Kriterien
- Validierung und Verifizierung der gewählten Ansätze - Validierung und Verifizierung der gewählten Ansätze
- Integration in bestehende forensische Workflows`; - Integration in bestehende forensische Workflows
- Objektivität, Transparenz, Reproduzierbarkeit`;
return `Basierend auf der Analyse entwickeln Sie einen fundierten ${approachType} nach NIST SP 800-86 Methodik. return `Basierend auf der Analyse entwickeln Sie einen fundierten ${approachType} nach Methodik (Datensammlung - Auswertung - Analyse - Bericht).
${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}" ${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}"
@ -90,17 +92,16 @@ Entwickeln Sie einen systematischen ${approachType} unter Berücksichtigung von:
${considerations} ${considerations}
WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen oder Markdown. Maximum 150 Wörter.`; WICHTIG: Antworten Sie NUR in fließendem deutschen Text ohne Listen oder Markdown. Maximum 120 Wörter.`;
}, },
criticalConsiderations: (isWorkflow: boolean, userQuery: string) => { criticalConsiderations: (isWorkflow: boolean, userQuery: string) => {
const considerationType = isWorkflow ? 'kritische forensische Überlegungen' : 'wichtige methodische Voraussetzungen'; const considerationType = isWorkflow ? 'kritische forensische Überlegungen' : 'wichtige methodische Voraussetzungen';
const aspects = isWorkflow ? const aspects = isWorkflow ?
`- Time-sensitive evidence preservation `- zeitkritische Beweissicherung vs. Gründlichkeit
- Chain of custody requirements und rechtliche Verwertbarkeit - Chain of custody requirements und rechtliche Verwertbarkeit
- Incident containment vs. evidence preservation Dilemma - Transparenz und Reproduzierbarkeit` :
- Privacy- und Compliance-Anforderungen` : `- Methoden-/Tool-Validierung und Nachvollziehbarkeit
`- Tool-Validierung und Nachvollziehbarkeit
- False positive/negative Risiken bei der gewählten Methodik - False positive/negative Risiken bei der gewählten Methodik
- Qualifikationsanforderungen für die Durchführung - Qualifikationsanforderungen für die Durchführung
- Dokumentations- und Reporting-Standards`; - Dokumentations- und Reporting-Standards`;
@ -128,41 +129,41 @@ ${phaseTools.map((tool: any, index: number) => `${index + 1}. ${tool.name}: ${to
- Skill Level: ${tool.skillLevel} - Skill Level: ${tool.skillLevel}
- Tags: ${tool.tags?.join(', ') || 'N/A'}`).join('\n\n')} - Tags: ${tool.tags?.join(', ') || 'N/A'}`).join('\n\n')}
Bewerten Sie ALLE Tools vergleichend für diese spezifische Aufgabe UND Phase. Wählen Sie die 2-3 besten aus. Bewerten Sie ALLE Methoden/Tools vergleichend für diese spezifische Aufgabe UND Phase. Wählen Sie die 2-3 besten aus. Es sollte eine Mischung aus Methoden und Tools sein, sofern verfügbar.
BEWERTUNGSKRITERIEN: BEWERTUNGSKRITERIEN:
- Wie gut löst das Tool das forensische Problem im SZENARIO-Kontext? - Wie gut löst die Methode/das Tool das forensische Problem im SZENARIO-Kontext?
- Wie gut passt es zur spezifischen PHASE "${phase.name}"? - Wie gut passt es zur spezifischen PHASE "${phase.name}"?
- Wie vergleicht es sich mit den anderen verfügbaren Tools für diese Phase? - Wie vergleicht es sich mit den anderen verfügbaren Methoden/Tools für diese Phase?
Antworten Sie AUSSCHLIESSLICH mit diesem JSON-Format: Antworten Sie AUSSCHLIESSLICH mit diesem JSON-Format:
[ [
{ {
"toolName": "Exakter Tool-Name", "toolName": "Exakter Methoden/Tool-Name",
"taskRelevance": 85, "taskRelevance": 85,
"justification": "Vergleichende Begründung warum dieses Tool für diese Phase und Aufgabe besser/schlechter als die anderen geeignet ist", "justification": "Vergleichende Begründung warum diese Methode/dieses Tool für diese Phase und Aufgabe besser/schlechter als die anderen geeignet ist",
"limitations": ["Spezifische Einschränkung 1", "Einschränkung 2"] "limitations": ["Spezifische Einschränkung 1", "Einschränkung 2"]
} }
] ]
WICHTIG: WICHTIG:
- taskRelevance: 0-100 Score basierend auf Szenario-Eignung UND Phasen-Passung im VERGLEICH zu anderen Tools - taskRelevance: 0-100 Score basierend auf Szenario-Eignung UND Phasen-Passung im VERGLEICH zu anderen Tools
- Nur die 2-3 BESTEN Tools auswählen und bewerten - Nur die 2-3 BESTEN Methoden/Tools auswählen und bewerten
- justification soll VERGLEICHEND sein ("besser als X weil...", "für diese Phase ideal weil...")`; - justification soll VERGLEICHEND sein ("besser als X weil...", "für diese Phase ideal weil...")`;
}, },
toolEvaluation: (userQuery: string, tool: any, rank: number, taskRelevance: number) => { toolEvaluation: (userQuery: string, tool: any, rank: number, taskRelevance: number) => {
return `Sie sind ein DFIR-Experte. Erklären Sie DETAILLIERT die Anwendung dieses bereits bewerteten Tools. return `Sie sind ein DFIR-Experte. Erklären Sie DETAILLIERT die Anwendung dieser/dieses bereits bewerteten Methode/Tools.
PROBLEM: "${userQuery}" PROBLEM: "${userQuery}"
TOOL: ${tool.name} (bereits bewertet mit ${taskRelevance}% Aufgaben-Eignung) TOOL: ${tool.name} (bereits bewertet mit ${taskRelevance}% Aufgaben-Eignung)
BESCHREIBUNG: ${tool.description} BESCHREIBUNG: ${tool.description}
Das Tool wurde bereits als Rang ${rank} für diese Aufgabe bewertet. Erklären Sie nun: Die Methode/das Tool wurde bereits als Rang ${rank} für diese Aufgabe bewertet. Erklären Sie nun:
Antworten Sie AUSSCHLIESSLICH mit diesem JSON-Format: Antworten Sie AUSSCHLIESSLICH mit diesem JSON-Format:
{ {
"detailed_explanation": "Detaillierte Erklärung warum und wie dieses Tool für diese spezifische Aufgabe eingesetzt wird", "detailed_explanation": "Detaillierte Erklärung warum und wie diese Methode/Tool für diese spezifische Aufgabe eingesetzt wird",
"implementation_approach": "Konkrete Schritt-für-Schritt Anleitung zur korrekten Anwendung", "implementation_approach": "Konkrete Schritt-für-Schritt Anleitung zur korrekten Anwendung",
"pros": ["Spezifischer Vorteil 1", "Spezifischer Vorteil 2"], "pros": ["Spezifischer Vorteil 1", "Spezifischer Vorteil 2"],
"limitations": ["Spezifische Einschränkung 1", "Spezifische Einschränkung 2"], "limitations": ["Spezifische Einschränkung 1", "Spezifische Einschränkung 2"],
@ -171,7 +172,7 @@ Antworten Sie AUSSCHLIESSLICH mit diesem JSON-Format:
WICHTIG: WICHTIG:
- Keine erneute Bewertung - nur detaillierte Erklärung der bereits bewerteten Eignung - Keine erneute Bewertung - nur detaillierte Erklärung der bereits bewerteten Eignung
- "limitations" soll spezifische technische/methodische Einschränkungen des Tools auflisten - "limitations" soll spezifische technische/methodische Einschränkungen der Methode/des Tools auflisten
- "pros" soll die Stärken für diese spezifische Aufgabe hervorheben`; - "pros" soll die Stärken für diese spezifische Aufgabe hervorheben`;
}, },

View File

@ -81,12 +81,13 @@ QUALITÄTSKRITERIEN FÜR FRAGEN:
- Forensisch spezifisch, nicht allgemein ( "Mehr Details?" "Welche forensischen Artefakte (RAM-Dumps, Disk-Images, Logs) stehen zur Verfügung?") - Forensisch spezifisch, nicht allgemein ( "Mehr Details?" "Welche forensischen Artefakte (RAM-Dumps, Disk-Images, Logs) stehen zur Verfügung?")
- Methodisch relevant ( "Wann passierte das?" "Liegen Log-Dateien aus dem Incident-Zeitraum vor, und welche Retention-Policy gilt?") - Methodisch relevant ( "Wann passierte das?" "Liegen Log-Dateien aus dem Incident-Zeitraum vor, und welche Retention-Policy gilt?")
- Priorisiert nach Auswirkung auf die forensische Untersuchungsqualität - Priorisiert nach Auswirkung auf die forensische Untersuchungsqualität
- Die Frage soll maximal 30 Wörter umfassen
ANTWORTFORMAT (NUR JSON, KEIN ZUSÄTZLICHER TEXT): ANTWORTFORMAT (NUR JSON, KEIN ZUSÄTZLICHER TEXT):
[ [
"Forensisch spezifische Frage 1?", "spezifische Frage 1?",
"Forensisch spezifische Frage 2?", "spezifische Frage 2?",
"Forensisch spezifische Frage 3?" "spezifische Frage 3?"
] ]
NUTZER-EINGABE: NUTZER-EINGABE:

View File

@ -172,7 +172,6 @@
font-size: 0.9em; font-size: 0.9em;
margin-top: 8px; margin-top: 8px;
display: -webkit-box; display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
overflow: hidden; overflow: hidden;
} }