How to Scan Firewall for Open Outgoing Ports: Tools and Techniques for Network Security Testing


4 views

When working within a firewalled network environment, identifying open outgoing ports presents unique technical challenges. Traditional port scanning tools often focus on incoming connections, making outgoing port detection require specialized approaches.

While Firewalk was a pioneering tool, several modern alternatives exist:

  • Nmap with advanced scripting: The current gold standard for network exploration
  • Hping3: A powerful command-line packet crafting tool
  • Scapy: Python-based interactive packet manipulation

Here's an effective Nmap command sequence for outgoing port detection:

# Basic TCP SYN scan for common outgoing ports
nmap -Pn -sS -p 1-1024 --max-retries 1 -T4 target.example.com

# UDP port scanning (slower but necessary for UDP services)
nmap -Pn -sU -p 53,123,161 --max-retries 1 -T4 target.example.com

# Comprehensive scan with service detection
nmap -Pn -sS -sV -p- --script=banner -T4 target.example.com

For customized scanning needs, this Python script demonstrates basic port checking:

from scapy.all import *
import sys

target = sys.argv[1]
ports = [80, 443, 22, 21, 25, 53]

def scan_port(port):
    p = IP(dst=target)/TCP(dport=port, flags="S")
    resp = sr1(p, timeout=2, verbose=0)
    if resp and resp.haslayer(TCP):
        if resp.getlayer(TCP).flags == 0x12:  # SYN-ACK
            send(IP(dst=target)/TCP(dport=port, flags="R"), verbose=0)
            return f"Port {port} is open"
    return f"Port {port} is filtered"

for port in ports:
    print(scan_port(port))

When traditional scanning fails, consider these methods:

  • Set up a temporary cloud instance with netcat listeners
  • Use AWS Lambda functions as port responders
  • Leverage DNS tunneling techniques for restricted networks

Always ensure you have proper authorization before scanning any network. Document your testing scope and methodology to maintain professional standards.


When working within a firewalled network environment, identifying open outbound ports is crucial for both security auditing and network troubleshooting. Traditional port scanning tools like nmap are designed for inbound scanning, making outbound firewall rule discovery a non-trivial task.

Here are several technical approaches to identify open outgoing ports:

1. Using Nmap with External Validation

# Basic TCP outbound scan using an external validation server
nmap -Pn -sT -p 1-65535 --open validation-server.example.com

# UDP variant (slower but necessary for UDP services)
nmap -Pn -sU -p 53,123,161,500 --open validation-server.example.com

2. PowerShell TCP Connection Test

# Test specific outbound ports programmatically
1..1024 | ForEach-Object {
    try {
        $socket = New-Object System.Net.Sockets.TcpClient
        $socket.Connect("external-server.com", $_)
        if ($socket.Connected) {
            Write-Host "Port $_ is open"
            $socket.Close()
        }
    } catch {}
}

3. Python Port Scanner

import socket

def scan_outbound_ports(target_host, port_range):
    for port in port_range:
        try:
            with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
                s.settimeout(1)
                s.connect((target_host, port))
                print(f"Outbound TCP port {port} is open")
        except:
            continue

scan_outbound_ports("scanme.nmap.org", range(20, 25))
  • Hping3: Craft custom packets for firewall testing
  • Netcat: Manual port verification with verbose output
  • Metasploit Framework: Contains modules for firewall testing

When performing these scans:

  • Always obtain proper authorization
  • Use external validation servers you control
  • Be aware of IDS/IPS systems that may detect scanning activity
  • Consider rate limiting to avoid network congestion