SOC Prime Bias: High

15 Sep 2026 14:50 UTC

E4del and PINHOLE Abuse FTP Banner Dead Drops for C2

Author Photo
SOC Prime Team linkedin icon Follow
E4del and PINHOLE Abuse FTP Banner Dead Drops for C2
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Summary

Threat actors are abusing FTP server greeting banners as dead-drop resolvers to deliver E4del and PINHOLE malware. By leveraging the FTP protocol’s pre-authentication phase, attackers can pass commands directly into a victim-side interpreter without transferring traditional files. This technique enables stealthy living-off-the-land infection chains that can evade many file-based security controls.

Investigation

The investigation examined three delivery variants: piping FTP output into command interpreters, using WebDAV over HTTP for second-stage execution, and relying on BITS-based downloads. Researchers identified a cluster of FTP hosts acting as redirectors and payload-delivery nodes. Analysis of E4del and PINHOLE also revealed techniques such as Electron-based impersonation, shellcode fluctuation, and direct system calls designed to bypass API hooking.

Mitigation

Defenders should emphasize behavioral detection instead of relying on file hashes, particularly by monitoring outbound TCP/21 connections followed by immediate command interpreter execution. Strict controls over conhost.exe, bitsadmin.exe, and WebDAV-based UNC paths can reduce exposure. Security teams should also monitor suspicious child processes spawned by ApplicationFrameHost.exe.

Response

If this activity is detected, affected endpoints should be isolated immediately to prevent additional command execution or data exfiltration. Responders should perform memory forensics to identify injected code, especially within legitimate processes such as ApplicationFrameHost.exe. PowerShell Script Block logs should also be reviewed to reconstruct commands received through the FTP dead drop and determine the scope of compromise.

Attack Flow

We are still updating this part.

Detections

LOLBAS WScript / CScript (via process_creation)

SOC Prime Team
15 Sep 2026

Possible Persistence Points [ASEPs – Software/NTUSER Hive] (via registry_event)

SOC Prime Team
15 Sep 2026

Download or Upload via Powershell (via cmdline)

SOC Prime Team
14 Sep 2026

LOLBAS Conhost (via cmdline)

SOC Prime Team
14 Sep 2026

An Archive Was Extracted To Suspicious Directory Using Powershell (via powershell)

SOC Prime Team
14 Sep 2026

IOCs (SourceIP) to detect: FTP Banner Dead Drops: A Hunter’s Field Guide to E4del and PINHOLE

SOC Prime AI Rules
14 Sep 2026

IOCs (DestinationIP) to detect: FTP Banner Dead Drops: A Hunter’s Field Guide to E4del and PINHOLE

SOC Prime AI Rules
14 Sep 2026

Suspicious Use of FTP and PowerShell with Conhost [Windows Process Creation]

SOC Prime AI Rules
14 Sep 2026

Detect FTP Banner Dead Drop for E4del and PINHOLE Remote Access Trojans [Windows Network Connection]

SOC Prime AI Rules
14 Sep 2026

Simulation Execution

  • Attack Narrative & Commands: The adversary aims to retrieve a command via an FTP “dead drop.” Instead of downloading a file, the adversary initiates a connection to a controlled FTP server. When the interpreter (PowerShell) connects, it reads the server’s banner, which contains the encoded next-stage command. This avoids the “file download” signature and relies on the protocol handshake itself to deliver the trigger. We will use PowerShell to attempt a connection to a listener on port 21.

  • Regression Test Script:

    # Simulation: PowerShell attempting to connect to an FTP service on Port 21
    # This mimics the 'dead drop' behavior of E4del/PINHOLE
    
    $TargetIP = "127.0.0.1" # In a real test, point to a controlled listener
    $TargetPort = 21
    
    Write-Host "[+] Starting Simulation: Connecting to FTP Banner Dead Drop..." -ForegroundColor Cyan
    
    try {
        # Using System.Net.Sockets to trigger a Network Connection event via PowerShell
        $client = New-Object System.Net.Sockets.TcpClient
        $client.Connect($TargetIP, $TargetPort)
        Write-Host "[!] Success: Connection established. Telemetry should be generated." -ForegroundColor Green
        $client.Close()
    }
    catch {
        Write-Host "[-] Connection failed (expected if no listener is active), but telemetry should still exist." -ForegroundColor Yellow
    }
  • Cleanup Commands:

    # Cleanup: Ensure no residual connections or processes remain
    Stop-Process -Name "powershell" -ErrorAction SilentlyContinue
    Write-Host "[+] Cleanup Complete." -ForegroundColor Green