Hacktricks-skills ethernetip-pentest
How to enumerate and pentest EtherNet/IP industrial devices on port 44818. Use this skill whenever the user mentions EtherNet/IP, industrial control systems, Rockwell Automation, PLC devices, or port 44818. Also trigger for ICS/SCADA reconnaissance, factory automation security testing, or when investigating industrial Ethernet protocols. Make sure to use this skill for any pentesting task involving industrial automation networks, even if the user doesn't explicitly name EtherNet/IP.
git clone https://github.com/abelrguezr/hacktricks-skills
skills/network-services-pentesting/44818-ethernetip/SKILL.MDEtherNet/IP Pentesting
A skill for enumerating and testing EtherNet/IP industrial control system devices.
What is EtherNet/IP?
EtherNet/IP is an industrial Ethernet networking protocol used in industrial automation control systems. Developed by Rockwell Automation and managed by ODVA, it ensures multi-vendor interoperability in:
- Water processing plants
- Manufacturing facilities
- Utilities and power systems
- Factory automation networks
Default port: 44818 (TCP/UDP)
When to Use This Skill
Use this skill when:
- You need to enumerate industrial control system devices
- Port 44818 is open on a target
- You're testing ICS/SCADA security
- You encounter Rockwell Automation or Allen-Bradley devices
- You need to identify EtherNet/IP device information
- You're doing industrial network reconnaissance
Enumeration Workflow
Step 1: Identify EtherNet/IP Devices
First, confirm the target is running EtherNet/IP:
# Check if port 44818 is open nmap -p 44818 <target-ip> # Verify with service detection nmap -n -sV -p 44818 <target-ip>
Step 2: Run Enumeration Scripts
Use the bundled enumeration script for comprehensive device discovery:
# Run the enumeration script ./scripts/enumerate_enip.sh <target-ip>
This script performs:
- Nmap service detection with enip-info script
- Cpppo-based identity listing
- UDP broadcast discovery (if applicable)
Step 3: Manual Enumeration (if needed)
If you need more control, run these commands manually:
# Nmap with EtherNet/IP script nmap -n -sV --script enip-info -p 44818 <target-ip> # Cpppo identity listing (TCP) python3 -m cpppo.server.enip.list_services --list-identity -a <target-ip> # Cpppo with UDP broadcast python3 -m cpppo.server.enip.list_services --udp --broadcast --list-identity -a <target-ip>
Step 4: Shodan Reconnaissance
Search for similar devices or public exposure:
# Search for specific product names shodan search "port:44818 \"<product-name>\"" # General EtherNet/IP search shodan search "port:44818"
Required Tools
Ensure these are installed before running enumeration:
# Nmap with scripting engine sudo apt install nmap # Cpppo library for EtherNet/IP pip3 install cpppo # Shodan CLI (optional) pip3 install shodan shodan init <your-api-key>
Example Outputs
Nmap enip-info output:
PORT STATE SERVICE VERSION 44818/tcp open enip EtherNet/IP | enip-info: | Product Name: Allen-Bradley ControlLogix | Vendor: Rockwell Automation | Serial Number: 12345678 | Device Type: Controller
Cpppo list_services output:
Device: 192.168.1.100 Product Name: CompactLogix 5370 Vendor: Rockwell Automation Serial Number: ABC123 Revision: 25.007 State: Run
Common EtherNet/IP Devices
| Device Type | Vendor | Typical Use |
|---|---|---|
| ControlLogix | Rockwell | Large-scale automation |
| CompactLogix | Rockwell | Compact control systems |
| MicroLogix | Rockwell | Small automation tasks |
| PowerFlex | Rockwell | Motor drives |
| PanelView | Rockwell | HMI interfaces |
Security Considerations
⚠️ Important: EtherNet/IP devices are often part of critical infrastructure. Always:
- Get explicit authorization before testing industrial systems
- Coordinate with operations teams to avoid disrupting production
- Test during maintenance windows when possible
- Document all findings for the security team
- Avoid aggressive scanning that could trigger device alarms or shutdowns
Troubleshooting
Port 44818 appears closed but device exists
- Try UDP scan:
nmap -sU -p 44818 <target-ip> - Check for firewalls between you and the device
- Verify the device is powered on and connected
Cpppo commands fail
- Ensure Python 3.7+ is installed
- Reinstall cpppo:
pip3 install --upgrade cpppo - Check network connectivity to the target
Nmap script not found
- Update Nmap:
sudo apt update && sudo apt upgrade nmap - Verify script path:
ls /usr/share/nmap/scripts/enip-info.nse
Next Steps After Enumeration
Once you've identified EtherNet/IP devices:
- Document device inventory - Record all discovered devices, vendors, and models
- Check for known vulnerabilities - Search CVE databases for the specific device models
- Review network segmentation - Ensure ICS networks are properly isolated
- Assess authentication - Many EtherNet/IP devices have no authentication by default
- Consider specialized ICS tools - Tools like Grapl, Nozomi, or Dragos for deeper analysis