stellar-cyber-mcp-agents
Version:
Model Context Protocol (MCP) server for Stellar Cyber security operations with specialized multi-agent analysis capabilities
238 lines • 6.99 kB
TypeScript
import { BaseAgent } from '../core/base-agent.js';
import { AgentMetadata, AgentRegistry, AgentCommunicationChannel, AgentLogger, AgentMetrics, AgentHealth, AgentRequest, AgentContext } from '../types/agent.js';
export interface MalwareAnalysisConfig {
apiUrl: string;
apiToken: string;
analysisTimeout?: number;
maxConcurrentAnalysis?: number;
sandboxEnabled?: boolean;
virusTotalApiKey?: string;
yaraRulesPath?: string;
}
export interface MalwareAnalysisResult {
id: string;
caseId: string;
timestamp: string;
summary: {
totalArtifacts: number;
maliciousArtifacts: number;
suspiciousArtifacts: number;
cleanArtifacts: number;
riskLevel: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW';
overallVerdict: 'MALICIOUS' | 'SUSPICIOUS' | 'CLEAN' | 'UNKNOWN';
};
artifacts: MalwareArtifact[];
detections: MalwareDetection[];
families: MalwareFamily[];
behaviors: MalwareBehavior[];
recommendations: string[];
iocs: string[];
mitre: {
tactics: string[];
techniques: string[];
};
}
export interface MalwareArtifact {
id: string;
name: string;
type: 'file' | 'hash' | 'url' | 'domain' | 'ip' | 'email';
value: string;
size?: number;
mimeType?: string;
hashes: {
md5?: string;
sha1?: string;
sha256?: string;
};
analysis: MalwareArtifactAnalysis;
detectedAt: string;
source: string;
}
export interface MalwareArtifactAnalysis {
verdict: 'MALICIOUS' | 'SUSPICIOUS' | 'CLEAN' | 'UNKNOWN';
confidence: number;
engines: EngineResult[];
signatures: string[];
behaviors: string[];
family?: string;
variant?: string;
capabilities: string[];
persistence: PersistenceMechanism[];
networkActivity: NetworkActivity[];
fileOperations: FileOperation[];
registryOperations: RegistryOperation[];
processOperations: ProcessOperation[];
}
export interface EngineResult {
engine: string;
version: string;
result: string;
confidence: number;
categories: string[];
timestamp: string;
}
export interface MalwareDetection {
id: string;
name: string;
type: 'signature' | 'heuristic' | 'behavioral' | 'ml' | 'yara';
description: string;
severity: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW';
confidence: number;
artifacts: string[];
evidence: string[];
rule?: string;
engine: string;
timestamp: string;
}
export interface MalwareFamily {
id: string;
name: string;
aliases: string[];
description: string;
type: string;
platforms: string[];
capabilities: string[];
firstSeen: string;
lastSeen: string;
prevalence: number;
artifacts: string[];
iocs: string[];
references: string[];
}
export interface MalwareBehavior {
id: string;
category: string;
action: string;
description: string;
severity: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW';
artifacts: string[];
indicators: string[];
mitre: {
tactic: string;
technique: string;
subtechnique?: string;
};
timestamp: string;
}
export interface PersistenceMechanism {
type: string;
location: string;
value: string;
description: string;
mitreId: string;
}
export interface NetworkActivity {
type: 'dns' | 'http' | 'tcp' | 'udp' | 'icmp';
protocol: string;
destination: string;
port?: number;
data?: string;
purpose: string;
suspicious: boolean;
}
export interface FileOperation {
operation: 'create' | 'modify' | 'delete' | 'copy' | 'move' | 'read' | 'write';
path: string;
details: string;
suspicious: boolean;
}
export interface RegistryOperation {
operation: 'create' | 'modify' | 'delete' | 'read';
key: string;
value?: string;
data?: string;
purpose: string;
suspicious: boolean;
}
export interface ProcessOperation {
operation: 'create' | 'inject' | 'hollow' | 'migrate' | 'terminate';
process: string;
pid?: number;
parentPid?: number;
commandLine?: string;
suspicious: boolean;
}
export interface SandboxAnalysis {
id: string;
artifactId: string;
environment: string;
duration: number;
status: 'COMPLETED' | 'FAILED' | 'TIMEOUT' | 'ERROR';
verdict: 'MALICIOUS' | 'SUSPICIOUS' | 'CLEAN' | 'UNKNOWN';
confidence: number;
behaviors: MalwareBehavior[];
networkTraffic: NetworkActivity[];
fileChanges: FileOperation[];
registryChanges: RegistryOperation[];
processActivity: ProcessOperation[];
screenshots: string[];
logs: string[];
}
export interface YaraMatchResult {
rule: string;
tags: string[];
meta: Record<string, any>;
strings: Array<{
identifier: string;
instances: Array<{
offset: number;
length: number;
plaintext: string;
}>;
}>;
}
export declare class MalwareAnalysisAgent extends BaseAgent {
private config;
private activeAnalyses;
private analysisCache;
private yaraRules;
private knownFamilies;
private accessToken;
private tokenExpiresAt;
private refreshPromise;
constructor(metadata: AgentMetadata, registry: AgentRegistry, channel: AgentCommunicationChannel, logger: AgentLogger, metrics: AgentMetrics, config: MalwareAnalysisConfig);
protected onInitialize(): Promise<void>;
protected onStart(): Promise<void>;
protected onStop(): Promise<void>;
protected onDestroy(): Promise<void>;
protected onHealthCheck(): Promise<AgentHealth>;
protected handleRequest(request: AgentRequest, context: AgentContext): Promise<any>;
private analyzeMalware;
private performMalwareAnalysis;
private analyzeArtifact;
private performStaticAnalysis;
private performYaraScanning;
private performVirusTotalLookup;
private performSandboxAnalysisInternal;
private calculateFinalVerdict;
private calculateOverallConfidence;
private calculateMalwareSummary;
private generateMalwareRecommendations;
private mapToMITRE;
private refreshToken;
private performTokenRefresh;
private getAccessToken;
private makeRequest;
private loadYaraRules;
private loadMalwareFamilies;
private getKnownMalwareHashes;
private simulateYaraMatch;
private simulateVirusTotalLookup;
private simulateSandboxAnalysis;
private mapConfidenceToSeverity;
private scanWithYara;
private performSandboxAnalysis;
private identifyMalwareFamily;
private extractBehaviors;
private generateIOCs;
private getFamilyInfo;
private performBulkAnalysis;
private getAnalysisReport;
private extractBehaviorsFromArtifact;
private generateIOCsFromArtifact;
private startRuleUpdates;
private updateRules;
private cancelActiveAnalyses;
}
export declare function createMalwareAnalysisAgentMetadata(): AgentMetadata;
//# sourceMappingURL=malware-agent.d.ts.map