Skip to main content

Overview

SharpUp is a privilege escalation enumeration tool that identifies common Windows misconfigurations and vulnerabilities. This guide provides practical workflows for different scenarios.

Common Workflows

Workflow 1: Initial System Enumeration

When you first gain access to a Windows system as a non-privileged user:
What happens:
  1. SharpUp checks if you’re already in high integrity or local administrator
  2. If not, it runs all 15 vulnerability checks
  3. Results are displayed showing vulnerable configurations
  4. You can then target specific vulnerabilities for exploitation

Workflow 2: Comprehensive Security Audit

For security assessments where you need to identify all potential issues:
Use cases:
  • Security audits and compliance checks
  • Vulnerability assessments
  • Finding all potential escalation paths
  • Documenting system weaknesses
Note: Running in high integrity will produce more results but may include false positives.

Workflow 3: Targeted Service Exploitation

Focus on service-related privilege escalation vectors:
What this finds:
  • Services with weak permissions
  • Service binaries you can modify
  • Service registry keys you can change
  • Unquoted service paths you can exploit
Follow-up actions:

Workflow 4: Credential Hunting

Search for plaintext credentials and password storage issues:
What this finds:
  • GPP passwords in cached policy files or SYSVOL
  • Auto-logon credentials in registry
  • Credentials in unattended install files
  • McAfee SiteList.xml files with encrypted credentials
Follow-up actions:
  • Extract and decrypt found credentials
  • Use credentials for lateral movement
  • Escalate privileges if credentials belong to privileged users

Workflow 5: Registry-Based Escalation

Target registry misconfigurations:
What this finds:
  • Modifiable autorun binaries
  • Auto-logon credentials
  • AlwaysInstallElevated policy misconfigurations
Follow-up actions:
  • Replace autorun binaries with malicious versions
  • Use auto-logon credentials
  • Create malicious MSI installers if AlwaysInstallElevated is set

Workflow 6: DLL Hijacking Opportunities

Identify DLL hijacking possibilities:
What this finds:
  • Writable DLLs loaded by privileged processes
  • Modifiable folders in system PATH
Follow-up actions:
  • Replace vulnerable DLLs
  • Place malicious executables in modifiable PATH folders
  • Wait for privileged processes to load your code

Scenario-Based Examples

Why this works:
  • Domain environments often have GPP passwords in SYSVOL
  • Cached policies may contain old GPP credentials
  • Auto-logon may be configured for service accounts
Why this works:
  • Standalone systems rely on local services
  • May have remnants from unattended installations
  • PATH and DLL hijacking are common on workstations
Why this works:
  • Servers often have special privileges assigned
  • Many services run on servers
  • Scheduled tasks are common for automation
Why this works:
  • Some checks work better with limited privileges
  • Audit mode may reveal additional opportunities
  • User-level checks don’t require admin access

Interpreting Results

Understanding Output Format

Each vulnerable finding is grouped by check type, with specific details about the vulnerability.

Example Output Analysis

What this means:
  • You have permissions to modify the VulnSvc service
  • The service is currently running
  • It starts automatically (will restart on reboot)
Next steps:
  • Use sc config to change the service binary path
  • Restart the service or reboot to execute your code
  • See Modifiable Services for details

Practical Exploitation Examples

Example 1: Exploiting Modifiable Service

Example 2: Exploiting Unquoted Service Path

Example 3: Using AlwaysInstallElevated

Example 4: Leveraging Registry Autoruns

Integration with Other Tools

Combining with Mimikatz

Combining with PowerShell Empire

Combining with Metasploit

Best Practices

Start Broad

Begin with a full SharpUp scan to identify all potential vectors before focusing on specific checks.

Prioritize Quick Wins

Target easily exploitable vulnerabilities first (registry credentials, AlwaysInstallElevated).

Document Findings

Save SharpUp output for reporting and tracking which vectors you’ve attempted.

Chain Techniques

Combine multiple vulnerabilities to increase success rate and maintain persistence.

Operational Considerations

Consider the following when using SharpUp in live environments:

Stealth Considerations

  • File Naming: Rename SharpUp.exe to something innocuous
  • Execution Method: Use in-memory execution when possible
  • Targeted Checks: Run specific checks instead of all checks to reduce noise
  • Timing: Avoid running during business hours for stealth operations

Environmental Awareness

  • Domain vs Standalone: Tailor your checks to the environment type
  • Server vs Workstation: Different check priorities based on system role
  • Patching Level: Older systems may have more vulnerabilities
  • Security Tools: Be aware of EDR/AV that may detect enumeration

Troubleshooting Common Issues

Possible reasons:
  • System is properly hardened
  • Running with insufficient permissions
  • Specific configurations not present
  • Need to use audit mode
Try:
Common with:
  • ProcessDLLHijack (needs access to process modules)
  • ModifiableScheduledTask (needs access to tasks folder)
  • Domain checks (needs domain connectivity)
Solution:
  • This is expected in some contexts
  • Try with higher privileges if available
  • Focus on checks that work in your context
Why it happens:
  • Running in high integrity shows more results
  • Some checks assume low-privilege context
  • Access control checks behave differently when elevated
Solution:
  • Run without audit mode for accurate results
  • Manually verify findings before exploitation
  • Understand which checks are context-dependent

Next Steps

Check Documentation

Detailed documentation for each vulnerability check

Remediation Guide

Learn how to fix identified vulnerabilities

Compilation Guide

Build and configure SharpUp

PowerUp (PowerShell)

Original PowerShell implementation