- Add date_added to all 950+ skills for complete tracking - Update version to 6.5.0 in package.json and README - Regenerate all indexes and catalog - Sync all generated files Features from merged PR #150: - Stars/Upvotes system for community-driven discovery - Auto-update mechanism via START_APP.bat - Interactive Prompt Builder - Date tracking badges - Smart auto-categorization All skills validated and indexed. Made-with: Cursor
346 lines
7.3 KiB
Markdown
346 lines
7.3 KiB
Markdown
---
|
|
name: network-101
|
|
description: "This skill should be used when the user asks to \"set up a web server\", \"configure HTTP or HTTPS\", \"perform SNMP enumeration\", \"configure SMB shares\", \"test network services\", or ne..."
|
|
risk: unknown
|
|
source: community
|
|
date_added: "2026-02-27"
|
|
---
|
|
|
|
# Network 101
|
|
|
|
## Purpose
|
|
|
|
Configure and test common network services (HTTP, HTTPS, SNMP, SMB) for penetration testing lab environments. Enable hands-on practice with service enumeration, log analysis, and security testing against properly configured target systems.
|
|
|
|
## Inputs/Prerequisites
|
|
|
|
- Windows Server or Linux system for hosting services
|
|
- Kali Linux or similar for testing
|
|
- Administrative access to target system
|
|
- Basic networking knowledge (IP addressing, ports)
|
|
- Firewall access for port configuration
|
|
|
|
## Outputs/Deliverables
|
|
|
|
- Configured HTTP/HTTPS web server
|
|
- SNMP service with accessible communities
|
|
- SMB file shares with various permission levels
|
|
- Captured logs for analysis
|
|
- Documented enumeration results
|
|
|
|
## Core Workflow
|
|
|
|
### 1. Configure HTTP Server (Port 80)
|
|
|
|
Set up a basic HTTP web server for testing:
|
|
|
|
**Windows IIS Setup:**
|
|
1. Open IIS Manager (Internet Information Services)
|
|
2. Right-click Sites → Add Website
|
|
3. Configure site name and physical path
|
|
4. Bind to IP address and port 80
|
|
|
|
**Linux Apache Setup:**
|
|
|
|
```bash
|
|
# Install Apache
|
|
sudo apt update && sudo apt install apache2
|
|
|
|
# Start service
|
|
sudo systemctl start apache2
|
|
sudo systemctl enable apache2
|
|
|
|
# Create test page
|
|
echo "<html><body><h1>Test Page</h1></body></html>" | sudo tee /var/www/html/index.html
|
|
|
|
# Verify service
|
|
curl http://localhost
|
|
```
|
|
|
|
**Configure Firewall for HTTP:**
|
|
|
|
```bash
|
|
# Linux (UFW)
|
|
sudo ufw allow 80/tcp
|
|
|
|
# Windows PowerShell
|
|
New-NetFirewallRule -DisplayName "HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
|
|
```
|
|
|
|
### 2. Configure HTTPS Server (Port 443)
|
|
|
|
Set up secure HTTPS with SSL/TLS:
|
|
|
|
**Generate Self-Signed Certificate:**
|
|
|
|
```bash
|
|
# Linux - Generate certificate
|
|
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
|
|
-keyout /etc/ssl/private/apache-selfsigned.key \
|
|
-out /etc/ssl/certs/apache-selfsigned.crt
|
|
|
|
# Enable SSL module
|
|
sudo a2enmod ssl
|
|
sudo systemctl restart apache2
|
|
```
|
|
|
|
**Configure Apache for HTTPS:**
|
|
|
|
```bash
|
|
# Edit SSL virtual host
|
|
sudo nano /etc/apache2/sites-available/default-ssl.conf
|
|
|
|
# Enable site
|
|
sudo a2ensite default-ssl
|
|
sudo systemctl reload apache2
|
|
```
|
|
|
|
**Verify HTTPS Setup:**
|
|
|
|
```bash
|
|
# Check port 443 is open
|
|
nmap -p 443 192.168.1.1
|
|
|
|
# Test SSL connection
|
|
openssl s_client -connect 192.168.1.1:443
|
|
|
|
# Check certificate
|
|
curl -kv https://192.168.1.1
|
|
```
|
|
|
|
### 3. Configure SNMP Service (Port 161)
|
|
|
|
Set up SNMP for enumeration practice:
|
|
|
|
**Linux SNMP Setup:**
|
|
|
|
```bash
|
|
# Install SNMP daemon
|
|
sudo apt install snmpd snmp
|
|
|
|
# Configure community strings
|
|
sudo nano /etc/snmp/snmpd.conf
|
|
|
|
# Add these lines:
|
|
# rocommunity public
|
|
# rwcommunity private
|
|
|
|
# Restart service
|
|
sudo systemctl restart snmpd
|
|
```
|
|
|
|
**Windows SNMP Setup:**
|
|
1. Open Server Manager → Add Features
|
|
2. Select SNMP Service
|
|
3. Configure community strings in Services → SNMP Service → Properties
|
|
|
|
**SNMP Enumeration Commands:**
|
|
|
|
```bash
|
|
# Basic SNMP walk
|
|
snmpwalk -c public -v1 192.168.1.1
|
|
|
|
# Enumerate system info
|
|
snmpwalk -c public -v1 192.168.1.1 1.3.6.1.2.1.1
|
|
|
|
# Get running processes
|
|
snmpwalk -c public -v1 192.168.1.1 1.3.6.1.2.1.25.4.2.1.2
|
|
|
|
# SNMP check tool
|
|
snmp-check 192.168.1.1 -c public
|
|
|
|
# Brute force community strings
|
|
onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt 192.168.1.1
|
|
```
|
|
|
|
### 4. Configure SMB Service (Port 445)
|
|
|
|
Set up SMB file shares for enumeration:
|
|
|
|
**Windows SMB Share:**
|
|
1. Create folder to share
|
|
2. Right-click → Properties → Sharing → Advanced Sharing
|
|
3. Enable sharing and set permissions
|
|
4. Configure NTFS permissions
|
|
|
|
**Linux Samba Setup:**
|
|
|
|
```bash
|
|
# Install Samba
|
|
sudo apt install samba
|
|
|
|
# Create share directory
|
|
sudo mkdir -p /srv/samba/share
|
|
sudo chmod 777 /srv/samba/share
|
|
|
|
# Configure Samba
|
|
sudo nano /etc/samba/smb.conf
|
|
|
|
# Add share:
|
|
# [public]
|
|
# path = /srv/samba/share
|
|
# browsable = yes
|
|
# guest ok = yes
|
|
# read only = no
|
|
|
|
# Restart service
|
|
sudo systemctl restart smbd
|
|
```
|
|
|
|
**SMB Enumeration Commands:**
|
|
|
|
```bash
|
|
# List shares anonymously
|
|
smbclient -L //192.168.1.1 -N
|
|
|
|
# Connect to share
|
|
smbclient //192.168.1.1/share -N
|
|
|
|
# Enumerate with smbmap
|
|
smbmap -H 192.168.1.1
|
|
|
|
# Full enumeration
|
|
enum4linux -a 192.168.1.1
|
|
|
|
# Check for vulnerabilities
|
|
nmap --script smb-vuln* 192.168.1.1
|
|
```
|
|
|
|
### 5. Analyze Service Logs
|
|
|
|
Review logs for security analysis:
|
|
|
|
**HTTP/HTTPS Logs:**
|
|
|
|
```bash
|
|
# Apache access log
|
|
sudo tail -f /var/log/apache2/access.log
|
|
|
|
# Apache error log
|
|
sudo tail -f /var/log/apache2/error.log
|
|
|
|
# Windows IIS logs
|
|
# Location: C:\inetpub\logs\LogFiles\W3SVC1\
|
|
```
|
|
|
|
**Parse Log for Credentials:**
|
|
|
|
```bash
|
|
# Search for POST requests
|
|
grep "POST" /var/log/apache2/access.log
|
|
|
|
# Extract user agents
|
|
awk '{print $12}' /var/log/apache2/access.log | sort | uniq -c
|
|
```
|
|
|
|
## Quick Reference
|
|
|
|
### Essential Ports
|
|
|
|
| Service | Port | Protocol |
|
|
|---------|------|----------|
|
|
| HTTP | 80 | TCP |
|
|
| HTTPS | 443 | TCP |
|
|
| SNMP | 161 | UDP |
|
|
| SMB | 445 | TCP |
|
|
| NetBIOS | 137-139 | TCP/UDP |
|
|
|
|
### Service Verification Commands
|
|
|
|
```bash
|
|
# Check HTTP
|
|
curl -I http://target
|
|
|
|
# Check HTTPS
|
|
curl -kI https://target
|
|
|
|
# Check SNMP
|
|
snmpwalk -c public -v1 target
|
|
|
|
# Check SMB
|
|
smbclient -L //target -N
|
|
```
|
|
|
|
### Common Enumeration Tools
|
|
|
|
| Tool | Purpose |
|
|
|------|---------|
|
|
| nmap | Port scanning and scripts |
|
|
| nikto | Web vulnerability scanning |
|
|
| snmpwalk | SNMP enumeration |
|
|
| enum4linux | SMB/NetBIOS enumeration |
|
|
| smbclient | SMB connection |
|
|
| gobuster | Directory brute forcing |
|
|
|
|
## Constraints
|
|
|
|
- Self-signed certificates trigger browser warnings
|
|
- SNMP v1/v2c communities transmit in cleartext
|
|
- Anonymous SMB access is often disabled by default
|
|
- Firewall rules must allow inbound connections
|
|
- Lab environments should be isolated from production
|
|
|
|
## Examples
|
|
|
|
### Example 1: Complete HTTP Lab Setup
|
|
|
|
```bash
|
|
# Install and configure
|
|
sudo apt install apache2
|
|
sudo systemctl start apache2
|
|
|
|
# Create login page
|
|
cat << 'EOF' | sudo tee /var/www/html/login.html
|
|
<html>
|
|
<body>
|
|
<form method="POST" action="login.php">
|
|
Username: <input type="text" name="user"><br>
|
|
Password: <input type="password" name="pass"><br>
|
|
<input type="submit" value="Login">
|
|
</form>
|
|
</body>
|
|
</html>
|
|
EOF
|
|
|
|
# Allow through firewall
|
|
sudo ufw allow 80/tcp
|
|
```
|
|
|
|
### Example 2: SNMP Testing Setup
|
|
|
|
```bash
|
|
# Quick SNMP configuration
|
|
sudo apt install snmpd
|
|
echo "rocommunity public" | sudo tee -a /etc/snmp/snmpd.conf
|
|
sudo systemctl restart snmpd
|
|
|
|
# Test enumeration
|
|
snmpwalk -c public -v1 localhost
|
|
```
|
|
|
|
### Example 3: SMB Anonymous Access
|
|
|
|
```bash
|
|
# Configure anonymous share
|
|
sudo apt install samba
|
|
sudo mkdir /srv/samba/anonymous
|
|
sudo chmod 777 /srv/samba/anonymous
|
|
|
|
# Test access
|
|
smbclient //localhost/anonymous -N
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
| Issue | Solution |
|
|
|-------|----------|
|
|
| Port not accessible | Check firewall rules (ufw, iptables, Windows Firewall) |
|
|
| Service not starting | Check logs with `journalctl -u service-name` |
|
|
| SNMP timeout | Verify UDP 161 is open, check community string |
|
|
| SMB access denied | Verify share permissions and user credentials |
|
|
| HTTPS certificate error | Accept self-signed cert or add to trusted store |
|
|
| Cannot connect remotely | Bind service to 0.0.0.0 instead of localhost |
|
|
|
|
## When to Use
|
|
This skill is applicable to execute the workflow or actions described in the overview.
|