Skip to content

mattyx97/Fortify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

7 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ›ก๏ธ Fortify

AI-Powered Phishing Simulation & Security Awareness Training Platform

Nuxt TypeScript PostgreSQL Drizzle

Advanced system to test employee resilience against social engineering attacks

Features โ€ข Installation โ€ข Documentation โ€ข Architecture


๐Ÿ“‹ Table of Contents


๐ŸŽฏ Overview

Fortify is an enterprise platform for simulating phishing and smishing attacks in a controlled environment, designed to increase cybersecurity awareness among corporate employees.

๐Ÿ’ก The Problem

  • 91% of security breaches start with a phishing email
  • Companies lose millions annually to social engineering attacks
  • Traditional training is ineffective and not personalized

โœจ The Solution

Fortify uses advanced AI (Llama 70B) and OSINT (LinkedIn scraping) to:

  1. ๐Ÿ” Analyze public employee profiles
  2. ๐Ÿค– Generate ultra-personalized phishing messages
  3. ๐Ÿ“Š Measure real staff vulnerability
  4. ๐Ÿ“ˆ Provide targeted training based on results

๐Ÿš€ Key Features

๐ŸŽญ AI-Powered Personalization

  • 6 pre-built campaign types (password reset, CEO fraud, invoice, etc.)
  • Personalized messages using Nebius AI (Llama 3.3 70B)
  • Tone and language analysis for maximum credibility
  • Automatic adaptation to target's role and seniority

๐Ÿ” OSINT Intelligence

  • Automated LinkedIn scraping with Puppeteer + Stealth
  • Data extraction: experiences, skills, recent posts
  • Complete versioning with profile change history
  • Intelligent rate limiting to avoid detection

๐Ÿข Enterprise Multi-Tenancy

  • Complete isolation between organizations
  • 3 roles: Admin, Company Admin, Analyst
  • Granular permissions with RBAC
  • Dedicated dashboard for each company

๐Ÿ“Š Analytics & Reporting

  • Real-time tracking: email sent, clicked, submitted
  • Advanced metrics: Click-through rate, Submission rate
  • Vulnerability heatmap by department
  • Exportable PDF reports (coming soon)

๐Ÿ” Security & Compliance

  • Soft delete with full retention
  • Audit logging of all operations
  • Encryption at rest for sensitive data
  • GDPR compliant (public data only)

๐Ÿ›  Tech Stack

Frontend (Coming Soon)

  • Nuxt 4 - Full-stack Vue framework
  • NuxtUI - Apple-style design system
  • Tailwind CSS - Utility-first styling

Backend

  • Nuxt Server API - Serverless RESTful API
  • Better Auth - Modern authentication system
  • Drizzle ORM - Type-safe database toolkit
  • PostgreSQL - Relational database

AI & Scraping

  • Nebius AI - Llama 3.3 70B Instruct
  • Puppeteer - Browser automation
  • Puppeteer Extra Stealth - Anti-detection

DevOps

  • pnpm - Fast package manager
  • Drizzle Kit - Database migrations
  • TypeScript - End-to-end type safety

โšก Quick Start

Prerequisites

node >= 18.x
pnpm >= 10.x
postgresql >= 14.x

Setup

# 1. Clone the repository
git clone <repository-url>
cd Fortify

# 2. Install dependencies
pnpm install

# 3. Configure environment
cp .env.example .env
# Edit .env with your credentials

# 4. Setup database
pnpm db:generate
pnpm db:migrate

# 5. Create admin user
pnpm setup:admin

# 6. Start development server
pnpm dev

Open http://localhost:3000 ๐ŸŽ‰


โš™๏ธ Configuration

Environment Variables

Create a .env file in the root:

# Database
DATABASE_URL=postgresql://user:password@localhost:5432/fortify

# Better Auth
BETTER_AUTH_SECRET=your-super-secret-key-min-32-chars
BETTER_AUTH_URL=http://localhost:3000

# Nebius AI
NEBIUS_API_KEY=your-nebius-api-key

# App
NODE_ENV=development
PORT=3000

Getting Nebius API Key

  1. Go to studio.nebius.ai
  2. Create an account
  3. Navigate to API Keys
  4. Generate new key for Llama 3.3 70B
  5. Copy the key to your .env file

๐Ÿ“– Usage

1. Create Organization (Admin)

POST /api/organizations
Content-Type: application/json

{
  "nome": "Acme Corporation",
  "email": "admin@acmecorp.com"
}

2. Add Employee Targets

POST /api/targets
Content-Type: application/json

{
  "nome": "John Doe",
  "email": "john.doe@acmecorp.com",
  "posizione": "Senior Developer",
  "dipartimento": "Engineering",
  "linkedinUrl": "https://linkedin.com/in/johndoe"
}

3. Profile Scraping

POST /api/scraping/linkedin
Content-Type: application/json

{
  "targetId": "target-uuid",
  "profileUrl": "https://linkedin.com/in/johndoe"
}

4. Create Campaign

POST /api/campaigns
Content-Type: application/json

{
  "nome": "Q1 2025 Security Awareness",
  "targetIds": ["uuid1", "uuid2", "uuid3"],
  "campaignType": "password_reset",
  "descrizione": "Baseline awareness test for engineering team"
}

AI will automatically generate personalized messages for each target!

5. Launch Campaign

POST /api/campaigns/{campaignId}/launch

6. Monitor Results

GET /api/campaigns/{campaignId}

๐Ÿ— Architecture

Database Schema

organization โ”€โ”ฌโ”€> user (role, organizationId)
              โ”œโ”€> employee_target
              โ””โ”€> phishing_campaign โ”€> campaign_target โ”€> interaction_log

employee_target โ”€> social_profile โ”€> scraping_history (versioning)

API Structure

server/
โ”œโ”€โ”€ api/
โ”‚   โ”œโ”€โ”€ organizations/    # Organization CRUD (admin)
โ”‚   โ”œโ”€โ”€ targets/          # Employee targets CRUD
โ”‚   โ”œโ”€โ”€ scraping/         # LinkedIn scraping
โ”‚   โ”œโ”€โ”€ profiles/         # Social profiles data
โ”‚   โ””โ”€โ”€ campaigns/        # Phishing campaigns
โ”œโ”€โ”€ db/
โ”‚   โ””โ”€โ”€ schema.ts         # Drizzle schema
โ””โ”€โ”€ utils/
    โ”œโ”€โ”€ auth.ts           # Better Auth config
    โ”œโ”€โ”€ db.ts             # Database client
    โ”œโ”€โ”€ rbac.ts           # Access control
    โ”œโ”€โ”€ scraper/          # Puppeteer scrapers
    โ”‚   โ”œโ”€โ”€ base.ts       # Base classes
    โ”‚   โ””โ”€โ”€ linkedin.ts   # LinkedIn scraper
    โ””โ”€โ”€ ai/
        โ””โ”€โ”€ nebius.ts     # AI integration

Data Flow

graph LR
    A[Company Admin] --> B[Create Target]
    B --> C[LinkedIn Scraping]
    C --> D[Scraping History DB]
    D --> E[Create Campaign]
    E --> F[Nebius AI]
    F --> G[Personalized Messages]
    G --> H[Launch Campaign]
    H --> I[Track Interactions]
    I --> J[Analytics Dashboard]
Loading

๐Ÿ”Œ API Reference

Organizations

Endpoint Method Auth Description
/api/organizations POST Admin Create organization
/api/organizations GET Admin List organizations
/api/organizations/:id GET Admin/Own Organization details
/api/organizations/:id PATCH Admin Update organization

Targets

Endpoint Method Auth Description
/api/targets POST Company Admin Create target
/api/targets GET Company Admin List targets
/api/targets/:id GET Company Admin Target details
/api/targets/:id PATCH Company Admin Update target
/api/targets/:id DELETE Company Admin Delete target (soft)

Scraping

Endpoint Method Auth Description
/api/scraping/linkedin POST Company Admin Start scraping
/api/scraping/history/:targetId GET Company Admin Scraping history
/api/profiles/:profileId/latest GET Company Admin Latest data

Campaigns

Endpoint Method Auth Description
/api/campaigns POST Company Admin Create campaign
/api/campaigns GET Company Admin List campaigns
/api/campaigns/:id GET Company Admin Campaign details
/api/campaigns/:id PATCH Company Admin Update campaign
/api/campaigns/:id/launch POST Company Admin Launch campaign

๐ŸŽฌ Complete Workflow

Scenario: Phishing Test for Engineering Team

# 1. Login as Company Admin
POST /api/auth/sign-in/email
{"email": "admin@acme.com", "password": "****"}

# 2. Add 5 developers as targets
POST /api/targets ร— 5
# Include LinkedIn URL for each

# 3. Automatic profile scraping
POST /api/scraping/linkedin ร— 5
# Wait for completion (30-60s per profile)

# 4. Create "Password Reset" campaign
POST /api/campaigns
{
  "nome": "Engineering Team - Password Test",
  "targetIds": ["dev1", "dev2", "dev3", "dev4", "dev5"],
  "campaignType": "password_reset"
}
# AI generates 5 personalized messages

# 5. Review messages (optional)
GET /api/campaigns/{id}
# Verify generated messages

# 6. Launch campaign
POST /api/campaigns/{id}/launch
# Simulate immediate email sending

# 7. Monitor real-time results
GET /api/campaigns/{id}
# See who clicked, who submitted credentials

# 8. Analyze metrics
# Click rate: 60% (3/5)
# Submit rate: 40% (2/5)
# โ†’ 2 developers need urgent training!

๐Ÿ”’ Security & Privacy

GDPR Compliance

โœ… Only publicly available data (LinkedIn)
โœ… No passwords or real credentials saved
โœ… Soft delete with retention policy
โœ… Client company consent (contract)
โœ… Optional results anonymization

Best Practices

  • Use HTTPS in production
  • Rotate BETTER_AUTH_SECRET regularly
  • Rate limiting on public APIs
  • Daily database backups
  • Audit logging for sensitive operations

Ethics

Fortify is an educational tool. Authorized use only:

  • โœ… With explicit organization consent
  • โœ… For training and awareness purposes
  • โœ… In controlled and authorized environments
  • โŒ NOT for real or illegal attacks

๐Ÿ—บ Roadmap

โœ… Phase 1 - Backend (Completed)

  • Complete database schema
  • Full RESTful API
  • LinkedIn scraper with Puppeteer
  • Nebius AI integration
  • Campaign system
  • Multi-tenancy + RBAC

๐Ÿšง Phase 2 - Frontend (Q1 2025)

  • Admin dashboard with NuxtUI
  • Organization management UI
  • Target management interface
  • Campaign builder wizard
  • Real-time analytics charts
  • PDF report generator

๐Ÿ”ฎ Phase 3 - Advanced Features (Q2 2025)

  • Real email sending (SendGrid/AWS SES)
  • SMS phishing (Twilio)
  • Custom template editor
  • Machine learning risk scoring
  • Webhook notifications
  • Public API for integrations

๐Ÿค Contributing

Contributions welcome! Please:

  1. Fork the repository
  2. Create a branch: git checkout -b feature/amazing-feature
  3. Commit: git commit -m 'Add amazing feature'
  4. Push: git push origin feature/amazing-feature
  5. Open a Pull Request

Coding Standards

  • โœ… TypeScript strict mode
  • โœ… ESLint + Prettier
  • โœ… Conventional Commits
  • โœ… Test coverage > 80% (future)

๐Ÿ“„ License

This project is developed for educational and research purposes within the university context.

ยฉ 2025 University - Fortify Project


๐Ÿ‘ฅ Authors

Mattia Guariglia
Mattia Guariglia

@mattyx97
๐Ÿ’ป ๐ŸŽจ ๐Ÿ”ฌ
Giuseppe Cerella
Giuseppe Cerella

@cerella17
๐Ÿ’ป ๐Ÿ“– ๐Ÿ“Š

๐Ÿ’ป Code ยท ๐ŸŽจ Design ยท ๐Ÿ“– Documentation ยท ๐Ÿ”ฌ Research ยท ๐Ÿ“Š Data Analysis

๐Ÿ™ Acknowledgments

  • Nuxt Team - Amazing framework
  • Nebius AI - Llama 70B access
  • Drizzle Team - Best ORM ever
  • Better Auth - Modern auth solution
  • Puppeteer Team - Automation magic

โญ If Fortify is useful to you, give it a star!

Built with โค๏ธ to make the web safer

โฌ†๏ธ Back to top

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published