Agent skill

remote-access-enumeration

Enumeration of remote access services: FTP, SSH, RDP, VNC, and WinRM. Checks anonymous access, default credentials, version vulnerabilities, and authentication methods. Use after network-recon identifies remote access ports.

Stars 126
Forks 14

Install this agent skill to your Project

npx add-skill https://github.com/blacklanternsecurity/red-run/tree/main/skills/network/remote-access-enumeration

SKILL.md

Remote Access Enumeration

You are helping a penetration tester enumerate remote access services (FTP, SSH, RDP, VNC, WinRM) on discovered targets. All testing is under explicit written authorization.

Engagement Logging

Check for ./engagement/ directory. If absent, proceed without logging.

When an engagement directory exists:

  • Print [remote-access-enumeration] Activated → <target> on activation.
  • Evidence → save output to engagement/evidence/ (e.g., ftp-anon-listing.txt).

Scope Boundary

This skill covers enumeration only — version detection, auth method checks, anonymous access, and known CVE identification. NOT brute force.

  • Credential brute force → route to password-spraying
  • SMB-based RCE → route to smb-exploitation
  • Exploiting confirmed RCE vulns → return to orchestrator with CVE details

State Management

Call get_state_summary() on activation. Skip already-enumerated services, use known credentials where relevant, check Blocked for previous failures.

State writes — write critical discoveries immediately:

  • FTP anonymous access → add_vuln(title="FTP anonymous access on <host>", host="<host>", vuln_type="anonymous-access", severity="medium")
  • Credentials in FTP files → add_credential(username=..., secret=..., source="FTP file on <host>")
  • SSH default creds → add_credential(username=..., secret=..., source="SSH default creds on <host>")
  • BlueKeep confirmed → add_vuln(title="BlueKeep CVE-2019-0708 on <host>", host="<host>", vuln_type="rce", severity="critical")
  • NTLM info leak → add_pivot(from_host="<host>", to_host="<domain>", pivot_type="ntlm-info", details="Domain: <domain>, Hostname: <hostname>, FQDN: <fqdn>")
  • VNC no-auth → add_vuln(title="VNC no-auth on <host>", host="<host>", vuln_type="anonymous-access", severity="medium")

Report all findings in your return summary for orchestrator deduplication.

Prerequisites

  • Network access to target host(s)
  • Open port list from orchestrator or network-recon
  • nmap available via MCP nmap-server

Port-Based Execution

Only run sections for ports confirmed open. Skip any service section whose port is not in the orchestrator's port list.

Step 1: FTP (Port 21)

bash
nmap -sV -p21 --script ftp-anon,ftp-bounce,ftp-syst TARGET_IP

Manual anonymous check:

bash
ftp TARGET_IP
# login: anonymous / anonymous@
# If connected: ls -la, pwd, cd / && ls -la

If anonymous access succeeds:

  1. List all accessible directories recursively
  2. Check for writable directories (put test.txt then del test.txt)
  3. Look for config files with credentials (.htpasswd, web.config, wp-config.php)
  4. Check if FTP root overlaps with a web root (write test file, check via HTTP)

Quick wins:

  • Anonymous write to webroot — file upload = RCE path
  • ProFTPD mod_copy (CVE-2019-12815) — copy files without auth: SITE CPFR /etc/passwdSITE CPTO /var/www/html/passwd.txt
  • vsftpd 2.3.4 backdoor — username ending in :) triggers shell on port 6200

Step 2: SSH (Port 22)

bash
nmap -sV -p22 --script ssh2-enum-algos,ssh-hostkey,ssh-auth-methods TARGET_IP

Auth method check:

bash
ssh -o PreferredAuthentications=none -o ConnectTimeout=5 root@TARGET_IP 2>&1

Look for publickey,password (password auth enabled) vs publickey only. Password auth → note for password-spraying.

Quick wins:

  • User enum (OpenSSH < 7.7 — CVE-2018-15473): timing-based enumeration
  • regreSSHion (CVE-2024-6387): OpenSSH 8.5p1–9.7p1 on glibc Linux, pre-auth RCE
  • Key reuse: matching host keys across hosts → pivot mapping

Step 3: RDP (Port 3389)

bash
nmap -sV -p3389 --script rdp-ntlm-info,rdp-enum-encryption TARGET_IP

NTLM info leak — parse rdp-ntlm-info for Target_Name (NetBIOS domain), DNS_Domain_Name, DNS_Computer_Name, Product_Version. Passive domain discovery.

NLA check — from rdp-enum-encryption, check if NLA is required. NLA disabled = brute force viable without valid domain creds.

BlueKeep (CVE-2019-0708):

bash
nmap -p3389 --script rdp-vuln-ms12-020 TARGET_IP

Affects Windows 7, Server 2008/2008R2. Pre-auth RCE. If confirmed, write vuln and return to orchestrator immediately.

Step 4: VNC (Ports 5900-5910)

bash
nmap -sV -p5900-5910 --script vnc-info,vnc-brute TARGET_IP

No-auth check — if vnc-info reports security type 1 (None): full desktop access without credentials. Write vuln, confirm with vncviewer TARGET_IP::5900.

CVE-2006-2369 — RealVNC 4.1.1 and earlier: auth bypass by requesting security type None even when server requires authentication.

Step 5: WinRM (Ports 5985/5986)

bash
nmap -sV -p5985,5986 TARGET_IP

Port 5985 = HTTP, 5986 = HTTPS. No anonymous access possible — credential testing routes to password-spraying.

If valid credentials already in state, test access:

bash
evil-winrm -i TARGET_IP -u 'USER' -p 'PASS'

Step 6: Escalate or Pivot

Return to orchestrator with findings:

  • FTP anon write + webroot for stack ID, then file upload RCE
  • FTP credentials found against other services
  • SSH password auth enabled with known/default creds
  • BlueKeep confirmed → return CVE details for orchestrator routing
  • regreSSHion in range → return version details for orchestrator routing
  • NTLM info leak → pass domain/hostname to ad-discovery
  • VNC no-auth → return access details for orchestrator routing
  • WinRM + valid creds → confirm access, recommend post-exploitation
  • No findings → report what was checked, mark services as enumerated

Troubleshooting

FTP connection refused or timeout

Try passive mode: ftp -p TARGET_IP. If still failing, note as filtered.

SSH connection timeout

May indicate port knocking or IP allowlisting. Note as filtered and move on.

RDP NSE scripts return no output

Try --script-args rdp.domain=DOMAIN if a domain name is known.

VNC connection refused on 5900

VNC may be on a non-standard port in 5900-5910. Scan the full range.

Expand your agent's capabilities with these related and highly-rated skills.

blacklanternsecurity/red-run

credential-recovery

Offline credential and file recovery with hashcat and john. Use when any skill captures hashes (NTLM, Kerberos TGS/AS-REP, shadow, MSCACHE2) or encrypted files (ZIP, Office, PDF, KeePass, SSH key, 7z, RAR). Trigger phrases: "recover this hash", "offline recovery", "john", "hashcat", "zip2john", "password-protected file". Do NOT use for online password attacks (spraying, brute force against services) — use password-spraying instead.

126 14
Explore
blacklanternsecurity/red-run

smb-enumeration

SMB share enumeration, access testing, password policy extraction, and content searching. Enumerates shares via null session, guest, and authenticated access. Covers share listing, per-share access testing, MANSPIDER content search, and SMB vulnerability detection (signing, EternalBlue). Use after network-recon identifies SMB ports (139/445).

126 14
Explore
blacklanternsecurity/red-run

infrastructure-enumeration

Enumeration of infrastructure services: DNS, SMTP, SNMP, IPMI, NFS, TFTP, RPC/MSRPC, and HTTP/HTTPS surface detection. Checks zone transfers, open relays, default community strings, cipher zero, NFS exports, and web technology fingerprinting. Use after network-recon identifies infrastructure ports.

126 14
Explore
blacklanternsecurity/red-run

network-recon

Network reconnaissance, host discovery, port scanning, and OS fingerprinting. Produces a port/service map that the orchestrator uses to route to service-specific enumeration skills.

126 14
Explore
blacklanternsecurity/red-run

container-escapes

Container escape, Docker breakout, and Kubernetes exploitation.

126 14
Explore
blacklanternsecurity/red-run

database-enumeration

Database service enumeration and quick-win access checks for MSSQL, MySQL, PostgreSQL, Oracle, MongoDB, and Redis. Checks default/empty passwords, unauthenticated access, and command execution capabilities. Use after network-recon identifies database ports.

126 14
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results