Learn Ethical Hacking (#49) - Deepfakes and AI Deception - The New Social Engineering

avatar

Learn Ethical Hacking (#49) - Deepfakes and AI Deception - The New Social Engineering

leh-banner.jpg

What will I learn

  • What deepfakes are and how generative AI creates convincing fake audio, video, and images;
  • Voice cloning attacks -- replicating a person's voice from minutes of public audio for vishing at scale;
  • Video deepfakes -- real-time face swapping for video call impersonation;
  • AI-generated phishing -- how LLMs create personalized, context-aware social engineering at scale;
  • Detecting deepfakes -- technical and procedural methods for identifying AI-generated content;
  • The $25 million deepfake heist -- the 2024 Hong Kong case where a CFO was impersonated on a video call;
  • Synthetic identity fraud -- AI-generated personas that pass KYC checks;
  • Defense: out-of-band verification, code words, AI detection tools, procedural controls for high-value actions.

Requirements

  • A working modern computer running macOS, Windows or Ubuntu;
  • Understanding of social engineering from episodes 8 and 46;
  • No specific lab needed for this episode;
  • The ambition to learn ethical hacking and security research.

Difficulty

  • Intermediate

Curriculum (of the Learn Ethical Hacking Series):

Learn Ethical Hacking (#49) - Deepfakes and AI Deception - The New Social Engineering

Solutions to Episode 48 Exercises

Exercise 1: Insider threat SIEM detection rules.

Rule 1: Mass file download
  Source: SharePoint/OneDrive audit logs
  Logic: user downloads >100 files in 1 hour
  FP rate: Medium (legitimate for some roles like data migration)
  Action: alert SOC, check if user is in notice period

Rule 2: After-hours access to sensitive systems
  Source: authentication logs + HR schedule data
  Logic: login to finance/HR systems between 22:00-06:00
  FP rate: Low (few legitimate reasons for night access)
  Action: alert + require manager confirmation within 4 hours

Rule 3: USB mass storage on restricted endpoints
  Source: endpoint agent (USB device events)
  Logic: USB storage device connected to classified workstation
  FP rate: Low (USB should be blocked by policy anyway)
  Action: alert + auto-block device + notify security

Rule 4: Email forwarding rule creation
  Source: Exchange/O365 audit logs
  Logic: new auto-forward rule to external domain
  FP rate: Medium (some legitimate use cases exist)
  Action: alert + check if destination is personal email

Rule 5: Anomalous database query volume
  Source: database audit logs
  Logic: user runs SELECT queries returning >10x daily baseline
  FP rate: Medium (report generation can trigger this)
  Action: alert + inspect query content for PII/financial data

The key to writing good SIEM rules is accepting the false positive problem upfront. A rule with a high FP rate is not a bad rule -- it just needs to feed into a scoring system rather than generate standalone alerts. As we discussed in episode 48, layered risk scoring (UEBA) beats binary alerting every time because it lets you combine five "maybe suspicious" signals into one "definitely investigate" alert.

Exercise 2: Tesla and Twitter insider cases.

Tesla (2018):
  Category: malicious insider (revenge motivation)
  Access abused: Manufacturing OS source code, production data
  Motivation: passed over for promotion, resentment
  Detection: tip from another employee + internal investigation
  What failed: no DLP on engineering workstations, no behavioral
    baseline monitoring, no automated export alerts
  Prevention: code review for large exports, UEBA baseline for
    each engineer's normal data access patterns, exit monitoring
    for employees with negative performance reviews

Twitter (2020):
  Category: mix of compromised + recruited insiders
  Access abused: internal admin tools ("God Mode") for account
    password resets and MFA disabling on high-profile accounts
  Motivation: paid by external party ($100K+ in Bitcoin)
  Detection: public incident (scam tweets from verified accounts)
  What failed: no tiered admin access, no rate limiting on
    admin actions, no separation of duties (one person could
    reset password AND disable MFA), no real-time alerting
  Prevention: dual-authorization for account changes on verified
    accounts, rate limiting (>3 resets/hour = lockout), real-time
    SOC alerting on any admin action touching verified accounts

Common thread: both cases exploited the gap between the access
  level granted and the monitoring applied at that access level.
  The people with the most dangerous access had the least oversight.

The uncomfortable pattern: organizations grant their most privileged users the least monitoring. Sysadmins, engineers with production access, support staff with admin tools -- these are the people who can do the most damage, and they are the people whose activity is least scrutinized. This is backwards. Monitoring should be proportional to access level, not inversely proportional to it.

Exercise 3: DLP bypass difficulty ratings.

Channel          Detectability  Volume    Best counter-measure
Email            4/5 (high)     High      DLP content inspection
Cloud storage    3/5            High      CASB + SSL inspection
USB              4/5            High      Endpoint agent + port block
Screenshots      1/5 (very low) Low       Camera detection (expensive)
Printing         2/5            Medium    Print logging + watermarks
Steganography    1/5            Medium    Specialized stego detection
Encrypted cont.  2/5            High      Block unknown file types

Hardest to defend: screenshots/phone photos of screens. No
technology can prevent someone from photographing their screen
with a personal device. The only mitigations are physical: no
phones in secure areas (enforced how?), cameras monitoring
screens (privacy nightmare), visible watermarks that survive
photography (traceable but not preventative).

Layered strategy: endpoint DLP + network DLP + CASB + USB
blocking + print monitoring + metadata watermarking + behavioral
analytics. No single layer catches everything, but combined
coverage makes high-volume exfiltration across any channel
significantly harder without triggering at least one alert.

The screenshot/phone camera channel is the great equalizer. You can spend millions on DLP, CASB, endpoint agents, network inspection, and a determined insider defeats ALL of it by pointing their phone at the screen for 30 seconds. This is why the cultural and process controls from episode 48 (background checks, financial wellness programs, positive workplace culture, exit procedures) aren't optional extras -- they're the only defense against the channel that technology cannot close.


Learn Ethical Hacking (#49) - Deepfakes and AI Deception - The New Social Engineering

Episode 48 covered insider threats -- the attacks that come from people who are already past every perimeter defense because they have a badge, credentials, and a legitimate reason to be on the network. We walked through the three categories (malicious, negligent, compromised), data exfiltration channels that range from trivially detectable (email DLP catches it) to fundamentally undetectable (phone cameras pointed at screens), User and Entity Behavior Analytics for baseline anomaly detection, DLP deployment at endpoint, network, and cloud layers, the Snowden and Twitter case studies, and the uncomfortable truth that the people with the most dangerous access typically receive the least monitoring. The core defensive model was layered: technical controls (UEBA, DLP, USB blocking, PAM) combined with process controls (separation of duties, least privilege, mandatory vacations) combined with cultural controls (anonymous reporting, non-punitive culture, addressing grievances before they become motives).

Today the ground shifts under our feet. Everything we've relied on to verify identity -- voice, face, writing style, video presence -- is now replicable by machines. And not expensive military-grade machines either. Consumer hardware. Open-source software. An afternoon of setup.

Here we go.

The Trust Collapse

Think about how you verify identity in everyday professional life. Someone calls you -- you recognise their voice. Someone joins a video call -- you see their face. Someone sends you an email -- the writing sounds like them, the email address looks right, the context makes sense. These are the trust anchors that human communication has depended on for all of history. Voice, face, writing style, contextual knowledge.

Every single one of them is now spoofable with consumer-grade AI.

Voice? Cloneable from 30 seconds of audio. Face? Real-time deepfake on video calls with an RTX 3060. Writing style? Any LLM can replicate a person's email voice given a few examples. Email headers? Spoofable since 1982 (we covered that in episode 39). And the critical point: these capabilities aren't locked behind classified government programs or million-dollar budgets. They're open-source, free, and getting better every month.

#!/usr/bin/env python3
"""trust_anchor_assessment.py -- evaluate which trust signals still hold"""

# Conceptual framework: for each traditional identity verification
# method, assess whether AI can now defeat it, and what remains.

TRUST_ANCHORS = {
    'voice_recognition': {
        'traditional_reliability': 'HIGH',
        'ai_defeat_capability': 'COMPLETE',
        'tools': ['RVC', 'So-VITS-SVC', 'XTTS', 'ElevenLabs'],
        'data_required': '3-30 seconds of clean audio',
        'cost': 'Free (open source) to $22/month (commercial)',
        'latency': '50-200ms (real-time conversation possible)',
        'current_status': 'BROKEN -- voice is no longer proof of identity'
    },
    'video_face_recognition': {
        'traditional_reliability': 'HIGH',
        'ai_defeat_capability': 'HIGH',
        'tools': ['DeepFaceLive', 'SimSwap', 'FaceSwap'],
        'data_required': 'A few photos or minutes of video',
        'cost': 'Free (open source), consumer GPU required',
        'latency': 'Real-time at 720p (standard video call quality)',
        'current_status': 'BROKEN for video calls -- artifacts visible '
                         'only at high res with good lighting'
    },
    'writing_style': {
        'traditional_reliability': 'MEDIUM',
        'ai_defeat_capability': 'COMPLETE',
        'tools': ['Any LLM (GPT-4, Claude, Llama, etc.)'],
        'data_required': '5-10 example emails/messages',
        'cost': 'Free to pennies per email',
        'latency': 'Seconds',
        'current_status': 'BROKEN -- LLMs replicate any writing voice'
    },
    'email_headers': {
        'traditional_reliability': 'LOW',
        'ai_defeat_capability': 'N/A (always been spoofable)',
        'tools': ['Any SMTP client'],
        'data_required': 'None',
        'cost': 'Free',
        'latency': 'Instant',
        'current_status': 'BROKEN since 1982 -- DMARC/SPF help but '
                         'are not universally deployed'
    },
    'shared_secret_challenge': {
        'traditional_reliability': 'HIGH',
        'ai_defeat_capability': 'NONE (attacker lacks the secret)',
        'tools': 'N/A',
        'data_required': 'N/A',
        'cost': 'Free',
        'latency': 'Instant',
        'current_status': 'INTACT -- still works'
    },
    'cryptographic_signature': {
        'traditional_reliability': 'VERY HIGH',
        'ai_defeat_capability': 'NONE (requires private key)',
        'tools': 'N/A',
        'data_required': 'N/A',
        'cost': 'Free (software) to $50 (hardware key)',
        'latency': 'Instant',
        'current_status': 'INTACT -- still works'
    },
    'out_of_band_callback': {
        'traditional_reliability': 'HIGH',
        'ai_defeat_capability': 'LOW (caller ID spoofing possible, '
                                'but answering a callback is hard)',
        'tools': 'N/A',
        'data_required': 'N/A',
        'cost': 'Free',
        'latency': 'Minutes',
        'current_status': 'MOSTLY INTACT -- works if you call THEIR '
                         'known number, not the number they gave you'
    },
}

print("=== Trust Anchor Status Report ===\n")
for anchor, data in TRUST_ANCHORS.items():
    status = data['current_status']
    marker = 'X' if 'BROKEN' in status else 'OK'
    print(f"[{marker}] {anchor.replace('_', ' ').title()}")
    print(f"    Status: {status}")
    print()

# Output:
# [X] Voice Recognition
#     Status: BROKEN -- voice is no longer proof of identity
# [X] Video Face Recognition
#     Status: BROKEN for video calls -- artifacts visible only...
# [X] Writing Style
#     Status: BROKEN -- LLMs replicate any writing voice
# [X] Email Headers
#     Status: BROKEN since 1982 -- DMARC/SPF help but...
# [OK] Shared Secret Challenge
#     Status: INTACT -- still works
# [OK] Cryptographic Signature
#     Status: INTACT -- still works
# [OK] Out Of Band Callback
#     Status: MOSTLY INTACT -- works if you call THEIR known number

Look at that output. Four of seven traditional trust anchors are broken. The three that survive are the three that do NOT depend on biometric or stylistic recognition -- they depend on something the person knows (shared secret), something the person has (cryptographic key), or verification through a separate channel (callback). The pattern is clear: anything based on "does this look/sound/read like the right person" is defeated. Only mechanisms based on secrets or independent verification remain viable.

Voice Cloning -- Your Voice Is Not Your Password Anymore

Modern voice cloning has reached a point where the technology itself is no longer the bottleneck. The hard part used to be quality. Now the hard part is that there IS no hard part.

The evolution of voice cloning:

2018: Requires ~20 hours of high-quality studio recordings.
      Cost: $50,000+ for custom model training.
      Quality: recognizable but uncanny -- sounds "off."
      Use case: entertainment industry only.

2020: Requires 5-10 minutes of clean audio.
      Cost: cloud compute ($50-100 in GPU hours).
      Quality: convincing on phone calls, not in person.
      Use case: proof-of-concept attacks, some fraud cases.

2023: Requires 30 seconds to 3 minutes of audio.
      Cost: free (open-source tools, consumer GPU).
      Quality: indistinguishable on phone calls.
      Use case: widespread criminal fraud, vishing at scale.

2025: Requires as little as 3 seconds of reference audio.
      Cost: free.
      Quality: indistinguishable in most conditions.
      Use case: anyone can do this. No technical skill required.
      Some commercial services offer it as a feature.

Here's what that means in practice. Your CEO gave a 20-minute talk at a conference last year. That talk is on Youtube. From that single video, an attacker can extract enough clean audio to produce a voice clone that is indistinguishable from the real CEO on a phone call. Not "close." Not "reminds you of." Indistinguishable.

Real attack workflow (2024):

1. Find target voice sample:
   - Conference talk on YouTube (most common source)
   - Podcast interview
   - Earnings call recording (publicly available for
     any public company)
   - Voicemail greeting (call their desk phone after hours)
   - Social media videos

2. Clone the voice:
   - Download audio, extract clean speech segments
   - Feed to voice cloning tool (RVC, XTTS, or commercial)
   - 30 minutes of compute on a consumer GPU
   - Result: a model that speaks in the target's voice

3. Deploy:
   Option A -- pre-recorded messages:
     Type text, voice model speaks it as the target.
     Good for voicemail, one-way audio messages.

   Option B -- real-time voice conversion:
     Attacker speaks into microphone normally.
     AI converts to target's voice in real-time (<200ms).
     Enables live, interactive phone conversations.
     The attacker controls what is said, the AI controls
     how it SOUNDS. Lethal combination.

4. Execute the social engineering:
   Call the target's assistant/finance team/family.
   "Hi, it's [CEO name]. I need you to process a wire
   transfer for me -- it's urgent, the deal closes today."
   The person on the other end hears a voice they know
   and trust. They comply.

Documented case (2019):
  UK energy company CEO received a call from his "boss"
  (parent company CEO in Germany). Voice was AI-generated.
  Instructed to wire $243,000 to a Hungarian supplier.
  He did. The money was gone within hours.
  This was 2019 -- the technology has improved enormously.

The real-time conversion is the one that keeps me up at night. A pre-recorded deepfake message is concerning, but it's one-directional -- the victim can't have a conversation with it, can't ask unexpected questions, can't verify by asking something only the real person would know. Real-time voice conversion destroys that defense. The attacker IS having a conversation with you. They're thinking, responding, improvising -- the AI just makes them sound like someone else. You ask "what did we discuss at lunch yesterday?" and a skilled attacker who has done their OSINT homework (episode 47) can answer correctly while sounding exactly like the person they're impersonating ;-)

#!/usr/bin/env python3
"""voice_clone_risk_assessment.py -- evaluate organizational exposure"""

import json

def assess_voice_exposure(executives):
    """Score how vulnerable an org's leadership is to voice cloning.

    For each executive, check how much public audio exists that
    could be used to train a voice clone.
    """
    results = []

    for exec_info in executives:
        risk_score = 0
        sources = []

        # Conference talks (highest quality audio)
        talks = exec_info.get('public_talks', 0)
        if talks > 0:
            risk_score += min(talks * 15, 40)
            sources.append(f"{talks} conference talks on YouTube")

        # Podcast appearances
        podcasts = exec_info.get('podcast_appearances', 0)
        if podcasts > 0:
            risk_score += min(podcasts * 10, 30)
            sources.append(f"{podcasts} podcast episodes")

        # Earnings calls (public companies only)
        if exec_info.get('public_company', False):
            risk_score += 25
            sources.append("quarterly earnings calls (public record)")

        # Social media video presence
        if exec_info.get('social_media_videos', False):
            risk_score += 15
            sources.append("social media videos (LinkedIn, Twitter)")

        # Voicemail accessibility
        if exec_info.get('direct_phone_public', False):
            risk_score += 10
            sources.append("voicemail greeting accessible")

        level = ('CRITICAL' if risk_score >= 60
                 else 'HIGH' if risk_score >= 40
                 else 'MEDIUM' if risk_score >= 20
                 else 'LOW')

        results.append({
            'name': exec_info['name'],
            'title': exec_info['title'],
            'risk_score': min(risk_score, 100),
            'risk_level': level,
            'audio_sources': sources,
            'recommendation': _get_recommendation(level)
        })

    return results

def _get_recommendation(level):
    recs = {
        'CRITICAL': 'Implement code word protocol immediately. '
                    'All financial requests verified out-of-band.',
        'HIGH': 'Establish challenge phrases with finance team. '
                'Train staff that voice alone is not verification.',
        'MEDIUM': 'Include in security awareness briefing. '
                  'Monitor for voice phishing attempts.',
        'LOW': 'Standard awareness training sufficient.'
    }
    return recs[level]

# Example assessment
leadership = [
    {
        'name': 'Sarah Mitchell',
        'title': 'CEO',
        'public_talks': 5,
        'podcast_appearances': 3,
        'public_company': True,
        'social_media_videos': True,
        'direct_phone_public': False
    },
    {
        'name': 'David Park',
        'title': 'CFO',
        'public_talks': 2,
        'podcast_appearances': 0,
        'public_company': True,
        'social_media_videos': False,
        'direct_phone_public': True
    },
    {
        'name': 'Lisa Torres',
        'title': 'VP Engineering',
        'public_talks': 0,
        'podcast_appearances': 1,
        'public_company': True,
        'social_media_videos': False,
        'direct_phone_public': False
    }
]

for result in assess_voice_exposure(leadership):
    print(f"\n{result['name']} ({result['title']})")
    print(f"  Risk: {result['risk_level']} (score: {result['risk_score']})")
    print(f"  Audio sources: {', '.join(result['audio_sources'])}")
    print(f"  Action: {result['recommendation']}")

That assessment script is simplified, but the underlying principle is sound: the more public audio exists for a person, the easier their voice is to clone, and the more urgently they need procedural safeguards. A CEO who keynotes four conferences a year and appears on podcasts monthly is a trivial voice cloning target. The CFO whose voice has never appeared in public media is significantly harder (though a single voicemail greeting may be enough with current technology).

Video Deepfakes -- Seeing Is No Longer Believing

If voice cloning breaks phone trust, video deepfakes break the last remaining "high-assurance" verification method most organisations rely on: the video call.

The Hong Kong case (January 2024):

A finance worker at a multinational firm received a message
from the company's UK-based CFO requesting a secret transaction.
The worker was suspicious -- the request came out of nowhere and
involved a large amount. So he did the responsible thing: he
joined a video call with the CFO and several other colleagues
to verify the request in person.

Everyone on the video call looked right. Sounded right.
The CFO explained the transaction. Other colleagues nodded
along, asked questions, responded naturally.

Satisfied, the worker transferred $25.6 million across
15 separate transactions over the following days.

Every single person on that video call was a deepfake.

The attackers had used publicly available video footage of
the real employees (from corporate videos, conference talks,
LinkedIn) to create real-time face and voice clones. They
ran a multi-person deepfake video call -- something that
was considered science fiction just two years earlier.

$25.6 million. Gone.

The worker did everything "right" by conventional security
wisdom: he was suspicious, he demanded visual verification,
he held a multi-person call. The problem is that "visual
verification via video call" is no longer verification.

Let that sink in. The victim was CAUTIOUS. He didn't just wire the money on an email request -- he demanded a video call. He saw faces he recognized. He heard voices he knew. Multiple people, not just one. And it was all fake. The standard security advice of "verify by video call" failed completely because the advice assumed that video calls cannot be faked.

Real-time deepfake tools (all open-source, all free):

1. DeepFaceLive
   - Real-time face swapping during video calls
   - Uses OBS Studio as a virtual camera
   - Feed the deepfake output into Zoom/Teams/Meet
   - The other participants see the swapped face
   - Requirements: source photos/video of target,
     RTX 3070+ GPU, OBS Studio

2. SimSwap
   - Face swapping from a single photograph
   - Lower quality than DeepFaceLive but needs less data
   - One clear photo of the target is sufficient

3. Wav2Lip
   - Lip-sync a face to any audio track
   - Combine with voice cloning: clone the voice, then
     lip-sync the deepfake face to the cloned speech
   - Result: a video of someone saying words they never said,
     in a voice that matches their real voice, with lip
     movements that sync perfectly

Why video calls are particularly vulnerable:
- Standard video call quality is 720p, often lower
- Compression artifacts mask deepfake artifacts
- Mediocre webcam lighting hides inconsistencies
- Small video windows mean faces occupy few pixels
- Network jitter provides cover for rendering delays
- People expect slight video glitches in calls

What can still expose a video deepfake:
- Ask the person to hold their hand in front of their face
  (occlusion breaks most current face-swap models)
- Ask them to turn completely sideways (profile view is
  harder to generate)
- Extreme close-up (reveals boundary artifacts)
- Unusual lighting changes (hold a phone flashlight to face)
- But asking your CFO to wave their hand in front of their
  face during a call about wire transfers... is awkward at best

AI-Generated Phishing -- The Death of Bad Grammar as a Red Flag

For 20 years, security awareness training taught people to spot phishing by looking for poor grammar, awkward phrasing, and generic greetings. "Dear Valued Customer" and "Please to verify your informations" were the hallmarks of a phishing email. That detection method is now completely obsolete.

#!/usr/bin/env python3
"""phishing_evolution.py -- compare old vs AI-generated phishing"""

PHISHING_COMPARISON = {
    'traditional': {
        'example': (
            "Dear Sir/Madam,\n\n"
            "We are needing you to verify your account informations "
            "by clicking the below link. Failing to do will result "
            "in permanent account suspension.\n\n"
            "Click here: http://secur1ty-verify.com/login\n\n"
            "Regards,\nIT Department"
        ),
        'red_flags': [
            'Generic greeting (no name)',
            'Grammatical errors ("are needing", "informations")',
            'Urgency threat ("permanent suspension")',
            'Suspicious URL (misspelled, .com TLD)',
            'Vague sender ("IT Department" -- which one?)',
        ],
        'detection_rate': '70-80% by trained users',
        'personalization': 'None -- same email to 10,000 people',
        'cost_per_target': '$0.001 (bulk email)',
    },
    'ai_generated': {
        'example': (
            "Hi Sarah,\n\n"
            "Quick heads up -- the security team flagged an issue "
            "with your Azure AD token during last night's maintenance "
            "window. Nothing urgent, but could you re-authenticate "
            "through the portal when you get a chance? Here's the "
            "direct link so you don't have to hunt for it.\n\n"
            "https://portal.azure-auth-refresh.com/sso\n\n"
            "Thanks!\nJames Wilson\n"
            "IT Security, Building 3"
        ),
        'red_flags': [
            'Domain looks plausible but is not microsoft.com',
            'No grammatical errors to trigger suspicion',
            'Casual tone avoids urgency red flag',
            'Specific details make it feel real',
        ],
        'detection_rate': '10-20% by trained users (estimated)',
        'personalization': 'First name, specific technology, '
                          'manager name, building number',
        'cost_per_target': '$0.002 (LLM API call)',
    }
}

for style, data in PHISHING_COMPARISON.items():
    print(f"=== {style.upper()} PHISHING ===")
    print(f"\nExample:\n{data['example']}")
    print(f"\nRed flags: {', '.join(data['red_flags'])}")
    print(f"Detection rate: {data['detection_rate']}")
    print(f"Personalization: {data['personalization']}")
    print(f"Cost per target: {data['cost_per_target']}")
    print()

The AI-generated version uses the target's first name (from LinkedIn), references the specific technology stack (from job postings -- remember episode 47's OSINT section), mentions the manager's name (also LinkedIn), and adopts a casual, non-urgent tone that deliberately avoids the "urgency" red flag that training programs emphasize. There are zero grammatical errors. The domain looks plausible. The writing style matches what a real IT department email sounds like.

Spear Phishing at Scale

Before AI, there was a fundamental tradeoff in phishing: quality versus quantity. Bulk phishing hit thousands of inboxes but was generic and easy to spot. Spear phishing was highly targeted and effective but required hours of manual work per target. You couldn't have both.

AI eliminates that tradeoff entirely.

The old economics:
  Bulk phishing:  1 template x 10,000 targets = 10,000 emails
                  Cost: $10 (email infrastructure)
                  Quality: terrible (generic, broken English)
                  Success rate: 1-3%
                  Yield: 100-300 compromised accounts

  Spear phishing: 1 custom email per target, 2 hours per email
                  Cost: $100/hour x 2 hours = $200 per target
                  Quality: excellent (researched, personalized)
                  Success rate: 30-50%
                  Scale limit: ~5 targets per day per operator

The new economics with AI:
  AI spear phishing: 1 custom email per target, 3 seconds per email
                     Cost: $0.002 per email (API call)
                     Quality: excellent (OSINT-enriched, personalized)
                     Success rate: 30-50% (same as manual spear phishing)
                     Scale: 10,000 perfectly personalized emails in
                            minutes. For twenty dollars.

The workflow:
  1. Scrape target company's LinkedIn (employee names, roles,
     reporting structure, projects, technology stack)
  2. Feed each employee profile to LLM:
     "Write a phishing email to [name], [role] at [company],
     working on [project]. Email should appear from [manager].
     Reference [specific context from OSINT]."
  3. LLM generates a unique, contextual, personalized email
     for each of the 500 employees in the organization
  4. Each email references real projects, real colleagues,
     real technology -- because the OSINT is real
  5. Send all 500 simultaneously

This used to require a team of skilled red team operators
working for days. Now it requires a Python script and an API key.
#!/usr/bin/env python3
"""phishing_cost_model.py -- the economics have changed"""

def compare_phishing_economics(target_count):
    """Compare cost and yield of phishing approaches."""

    approaches = {
        'bulk_template': {
            'label': 'Bulk (one template)',
            'cost_per_target': 0.001,
            'success_rate': 0.02,
            'time_per_target_seconds': 0.01,
        },
        'manual_spear': {
            'label': 'Manual spear phishing',
            'cost_per_target': 200.00,
            'success_rate': 0.40,
            'time_per_target_seconds': 7200,  # 2 hours
        },
        'ai_spear': {
            'label': 'AI-generated spear phishing',
            'cost_per_target': 0.01,  # OSINT + LLM API
            'success_rate': 0.35,
            'time_per_target_seconds': 5,  # scrape + generate
        },
    }

    print(f"Target organization: {target_count} employees\n")

    for key, approach in approaches.items():
        total_cost = approach['cost_per_target'] * target_count
        expected_compromised = int(
            target_count * approach['success_rate']
        )
        total_time_hours = (
            approach['time_per_target_seconds'] * target_count / 3600
        )
        cost_per_compromise = (
            total_cost / expected_compromised
            if expected_compromised > 0 else float('inf')
        )

        print(f"{approach['label']}:")
        print(f"  Total cost: ${total_cost:,.2f}")
        print(f"  Time: {total_time_hours:,.1f} hours")
        print(f"  Expected compromises: {expected_compromised}")
        print(f"  Cost per compromise: ${cost_per_compromise:,.2f}")
        print()

compare_phishing_economics(500)
# Output:
# Bulk (one template):
#   Total cost: $0.50
#   Time: 0.0 hours
#   Expected compromises: 10
#   Cost per compromise: $0.05
#
# Manual spear phishing:
#   Total cost: $100,000.00
#   Time: 1,000.0 hours
#   Expected compromises: 200
#   Cost per compromise: $500.00
#
# AI-generated spear phishing:
#   Total cost: $5.00
#   Time: 0.7 hours
#   Expected compromises: 175
#   Cost per compromise: $0.03

Look at that last line. $0.03 per compromised account. Five dollars total to spear-phish an entire 500-person organization with personalized, context-aware emails that each reference real colleagues, real projects, and real technology. The economics are staggering. The cost of a high-quality, targeted social engineering campaign has dropped from "national intelligence agency budget" to "lunch money."

Detecting Deepfakes

So how do you spot this stuff? The honest answer: technical detection is an arms race that defenders will probably lose in the long run. But there are approaches that work today, and -- more importantly -- procedural defenses that work regardless of how good the deepfakes get.

#!/usr/bin/env python3
"""deepfake_detection_checklist.py -- what to look for"""

AUDIO_INDICATORS = [
    {
        'indicator': 'Unnatural breathing patterns',
        'description': 'AI-generated speech often has perfectly '
                      'regular pauses or no breathing sounds at all. '
                      'Real speech has irregular micro-pauses, inhales '
                      'mid-sentence, and breathing artifacts.',
        'reliability': 'MEDIUM -- newer models simulate breathing',
    },
    {
        'indicator': 'Background noise consistency',
        'description': 'Real phone calls have variable background '
                      'noise (shifting, fading, environmental changes). '
                      'Generated audio often has perfectly consistent '
                      'or completely absent background noise.',
        'reliability': 'MEDIUM -- post-processing can add noise',
    },
    {
        'indicator': 'Emotional micro-expressions in voice',
        'description': 'Real speech has subtle emotional variations '
                      'that are hard to model -- slight tension when '
                      'discussing money, micro-hesitations on lies. '
                      'Cloned voices often sound emotionally "flat."',
        'reliability': 'LOW -- next-gen models handle emotion well',
    },
]

VIDEO_INDICATORS = [
    {
        'indicator': 'Face boundary artifacts',
        'description': 'Blurring or color mismatch at the boundary '
                      'between the swapped face and the real head. '
                      'Especially visible along the jawline and '
                      'hairline.',
        'reliability': 'MEDIUM -- visible at high resolution only',
    },
    {
        'indicator': 'Eye reflection inconsistency',
        'description': 'Reflections in both eyes should match. '
                      'Deepfakes sometimes generate different '
                      'reflections in each eye.',
        'reliability': 'LOW -- requires very close inspection',
    },
    {
        'indicator': 'Occlusion failure',
        'description': 'Ask the person to hold their hand in front '
                      'of their face. Most face-swap models fail '
                      'when the face is partially covered -- the '
                      'swap glitches or the hand appears to "melt" '
                      'into the face.',
        'reliability': 'HIGH -- this is the best active test',
    },
    {
        'indicator': 'Profile view degradation',
        'description': 'Ask the person to turn sideways. Real-time '
                      'face-swap models are trained primarily on '
                      'frontal faces. Profile views often show '
                      'significant quality drops or glitches.',
        'reliability': 'MEDIUM-HIGH -- effective with current tools',
    },
]

print("=== Audio Deepfake Detection ===")
for ind in AUDIO_INDICATORS:
    print(f"\n[{ind['reliability']}] {ind['indicator']}")
    print(f"  {ind['description']}")

print("\n=== Video Deepfake Detection ===")
for ind in VIDEO_INDICATORS:
    print(f"\n[{ind['reliability']}] {ind['indicator']}")
    print(f"  {ind['description']}")

print("\n=== Fundamental Problem ===")
print("Every technical indicator is temporary. Deepfake models")
print("are specifically trained to defeat known detection methods.")
print("Today's detector is tomorrow's training target.")
print("Procedural defenses are the only ones that scale.")

The occlusion test (asking someone to put their hand in front of their face) is the best active test available right now, because current real-time face-swap models handle occlusion poorly. But it's also socially awkward to ask your CFO to cover half their face during a call about a wire transfer. And by the time you read this, the next generation of models may handle occlusion just fine.

Procedural Detection -- The Only Defense That Ages Well

Since technical detection is an arms race, the real defense is procedural. Procedures don't care how good the deepfake is. They work regardless of technology:

1. Code words / challenge phrases
   Pre-establish a shared secret phrase with key stakeholders.
   "Before we process any transfer over $10,000, what is our
   code word?"
   A deepfake attacker does NOT know the code word. Period.
   The voice can be perfect, the face can be perfect, but
   without the shared secret the request is denied.

   Implementation: each C-suite member has a unique code word
   shared only with the finance team. Rotate quarterly.
   Store in a secure vault, NOT in email or Slack.

2. Out-of-band verification
   If someone contacts you requesting any action, hang up
   and call them back on a KNOWN number (from your contacts,
   the company directory, the number you've always used --
   NOT the number that appeared on caller ID, NOT a number
   from the email).

   "I'll call you right back on your direct line to confirm."

   This defeats voice cloning because the attacker cannot
   answer the real person's phone. It defeats caller ID
   spoofing because you are choosing the number.

3. Multi-channel confirmation
   Verify the request through a DIFFERENT communication channel
   than the one it arrived on.
   - Phone request? Verify via Slack DM.
   - Email request? Verify via phone call.
   - Video call request? Verify via in-person walk to office.
   The attacker controls one channel. They rarely control two.

4. Behavioral challenges
   Ask something only the real person would know from recent
   private interaction.
   "What did we talk about at lunch yesterday?"
   "What's the color of the mug on your desk?"
   "What was the joke Tom told in standup this morning?"

   Caution: if the answer is available via OSINT or social
   media, the challenge is worthless. Choose questions whose
   answers are ephemeral and private.

5. Process controls (most reliable of all)
   "Wire transfers above $10,000 require two authorized
   signers, one of whom must approve IN PERSON or via
   FIDO2-authenticated channel. No exceptions."

   The deepfake simply does not matter if the process
   requires multi-person, multi-channel authorization with
   cryptographic identity verification. You can deepfake a
   face and a voice. You cannot deepfake a FIDO2 key.

Synthetic Identity Fraud

Deepfakes don't just impersonate real people. AI can create completely fictional people who pass identity verification systems that were designed to catch humans using fake documents:

Components of a modern synthetic identity:

1. Face: AI-generated (Stable Diffusion, Midjourney)
   -- indistinguishable from a real photograph
   -- generates infinite variations: different angles,
      expressions, lighting, clothing, aging
   -- no reverse image search matches (the person
      does not exist, so no photos exist online)

2. Background: fabricated but consistent
   -- AI-generated employment history matching real
      companies and plausible career progression
   -- AI-generated educational credentials
   -- Purchased SSN (dark web, often belonging to
      children, elderly, or deceased individuals --
      credit bureaus have no existing file to compare)

3. Digital footprint: pre-built over months
   -- Social media accounts with months of "organic" posts
   -- LinkedIn profile with endorsements and connections
      (from other synthetic identities or purchased follows)
   -- GitHub profile with contributed code
   -- Forum posts, blog comments, community participation

4. Biometric verification: AI-generated
   -- Deepfake video for live KYC verification calls
   -- Cloned voice for phone verification
   -- AI-generated document photos (passport, ID)

These synthetic identities are used for:
   -- Opening bank accounts and credit lines
   -- Passing background checks for insider placement
   -- Creating credible personas for long-con social engineering
   -- Money laundering through synthetic account networks
   -- Evading sanctions, blacklists, and watchlists
   -- Building trust relationships that enable larger fraud

The "bust-out" pattern:
   1. Create synthetic identity (month 1)
   2. Open credit accounts, make small purchases, pay on time
      (months 2-8 -- building credit history)
   3. Request credit limit increases (months 9-10)
   4. Max out all credit lines simultaneously (month 11)
   5. Disappear (month 12)
   6. The "person" never existed -- nobody to pursue

The bust-out pattern is particularly insidious because credit bureaus rely on historical behavior to assess risk. A synthetic identity that makes small purchases and pays on time for 8 months looks exactly like a responsible consumer. There is nothing in the behavioral data that distinguishes it from a real person. The fraud only becomes apparent after the disappearence, at which point the credit is already extended and the money is gone.

Defense: Surviving the Deepfake Era

#!/usr/bin/env python3
"""deepfake_defense_framework.py -- organizational defense model"""

ORGANIZATIONAL_DEFENSES = {
    'immediate': [
        {
            'control': 'Code word protocol for financial authorization',
            'cost': 'Free (policy change)',
            'effectiveness': 'HIGH',
            'defeats': 'Voice cloning, video deepfakes',
            'implementation': 'C-suite + finance team, rotate quarterly',
        },
        {
            'control': 'Multi-person approval for large transactions',
            'cost': 'Free (policy change)',
            'effectiveness': 'HIGH',
            'defeats': 'Single-target deepfake impersonation',
            'implementation': '>$10K requires two approvers, '
                            '>$50K requires in-person or FIDO2',
        },
        {
            'control': 'Callback verification on known numbers',
            'cost': 'Free (behavioral change)',
            'effectiveness': 'HIGH',
            'defeats': 'Voice cloning, caller ID spoofing',
            'implementation': 'Any request for action -> hang up -> '
                            'call back on number from internal directory',
        },
    ],
    'short_term': [
        {
            'control': 'Employee training: voice/video not proof',
            'cost': 'Low (training program update)',
            'effectiveness': 'MEDIUM',
            'defeats': 'Naive trust in voice/video',
            'implementation': 'Update security awareness: "seeing and '
                            'hearing are no longer believing"',
        },
        {
            'control': 'FIDO2 hardware keys for high-value approvals',
            'cost': 'Low ($50/key x critical staff)',
            'effectiveness': 'VERY HIGH',
            'defeats': 'All impersonation attacks',
            'implementation': 'Finance team + C-suite + IT admins',
        },
    ],
    'long_term': [
        {
            'control': 'AI detection tools (audio + video)',
            'cost': 'Medium (enterprise subscription)',
            'effectiveness': 'MEDIUM (arms race, degrades over time)',
            'defeats': 'Current-generation deepfakes',
            'implementation': 'Microsoft Video Authenticator, '
                            'Intel FakeCatcher, Sensity AI',
        },
        {
            'control': 'Cryptographic message signing for all '
                       'internal communications',
            'cost': 'High (infrastructure + training)',
            'effectiveness': 'VERY HIGH',
            'defeats': 'Email spoofing, message tampering',
            'implementation': 'S/MIME or PGP for email, signed '
                            'messages in internal channels',
        },
    ],
}

INDIVIDUAL_DEFENSES = [
    'Establish code words with family members (prevents '
    '"grandparent scam" -- attacker calls elderly relative '
    'impersonating grandchild in distress)',
    'Be skeptical of ANY unsolicited contact requesting '
    'money, credentials, or urgent action',
    'Verify through a separate channel before acting on '
    'ANY request (even if voice/face look familiar)',
    'Limit public audio/video exposure where possible -- '
    'every public appearance is training data for cloning',
    'Never use voice biometrics as sole authentication '
    '(your bank\'s "voice is your password" is broken)',
]

print("=== Organizational Defense Framework ===\n")
for timeline, controls in ORGANIZATIONAL_DEFENSES.items():
    print(f"--- {timeline.upper()} ---")
    for c in controls:
        print(f"\n  Control: {c['control']}")
        print(f"  Cost: {c['cost']}")
        print(f"  Effectiveness: {c['effectiveness']}")
        print(f"  Defeats: {c['defeats']}")
    print()

print("=== Individual Defenses ===")
for defense in INDIVIDUAL_DEFENSES:
    print(f"  - {defense}")

The pattern in that framework is worth noting: the free controls (code words, callback verification, multi-person approval) are the most effective. The expensive controls (AI detection tools, cryptographic infrastructure) are either temporary (detection is an arms race) or difficult to deploy (try getting an entire organization to adopt PGP email signing). The best defenses against deepfakes cost literally nothing. They just require policy changes and behavioral discipline.

The AI Slop Connection

This entire episode IS the AI slop connection, and it's the most direct one in the series. Generative AI has not merely accelerated social engineering -- it has fundamentally broken the trust model that human communication relied on since the beginning of civilization. The same neural network architectures that let a developer generate code from a text prompt also let an attacker generate a CEO's voice from a Youtube video. The same diffusion models that create art also create faces for fictitious people who pass KYC checks. The same language models that write marketing copy also write perfect spear phishing emails, personalised for every employee in an organization, for five dollars.

The tragedy is that there is no separation between "good AI" and "attack AI." They are the same technology, the same models, often the same open-source repositories. The voice cloning tool that helps a person with ALS communicate in their own voice is the same tool that enables wire fraud. The face generation model that powers entertainment is the same model that defeats video-based identity verification. You cannot ban the attack capability without banning the legitimate capability. They are inseperable.

The only answer -- and I genuinely belive this is the ONLY answer that works long-term -- is to stop trusting biometric signals entirely and shift to cryptographic and procedural verification. "I see your face" is not proof. "I hear your voice" is not proof. The only things that still constitute proof are: something only you KNOW (shared secret, code word), something only you HAVE (cryptographic key, hardware token), and verification through an independent channel the attacker does not control. Everything else is cosplay.

What Comes Next

With episode 49 we've reached a natural boundary in this series. We've spent 48 episodes on the attacker's perspective -- finding vulnerabilities, exploiting them, moving through networks, social engineering humans, escalating privileges, exfiltrating data, and now -- fabricating reality itself. The attacker's toolkit is comprehensive.

The next phase flips the perspective entirely. What happens when an organization decides to test all of these attacks against itself? How do you plan, execute, and report on a simulated attack that covers the full spectrum -- from OSINT and phishing through exploitation, lateral movement, and data exfiltration -- without breaking anything (or getting yourself arrested)? And when the real attack comes (not if, when), how does an organization actually respond in the first critical hours? The incident response and threat intelligence dimensions of security are where most of the hard problems live, and where the defender finally gets some structural advantages.

Exercises

Exercise 1: Research the Hong Kong deepfake video call heist ($25.6M, January 2024) in depth. Document: (a) how the attackers obtained source material for the deepfakes, (b) how many participants were faked on the call, (c) what the victim's verification steps were (and why they failed), (d) what procedural controls would have prevented the loss. Save to ~/lab-notes/deepfake-heist-analysis.md.

Exercise 2: Design a deepfake-resistant verification protocol for a finance department handling wire transfers over $50,000. The protocol must assume that: voice can be cloned, video can be faked, email can be spoofed, and phone numbers can be spoofed. Define: (a) the verification steps, (b) what communication channels are used, (c) what shared secrets or challenge-response mechanisms are employed, (d) the maximum dollar amount that can be authorized without in-person verification.

Exercise 3: Test an AI text detection tool (GPTZero, Originality.ai, or similar) against 3 types of text: (a) a paragraph you wrote yourself, (b) a paragraph generated by an LLM, (c) a paragraph generated by an LLM then lightly edited by you. Document the detection accuracy for each. Then consider: if a phishing email is AI-generated and lightly edited, would the detector catch it? What does this mean for email security?


Thanks for your time!

@scipio



0
0
0.000
0 comments