Salta el contingut

Reconeixement i Recollida d'Informació

Introducció

El reconeixement (o fase de recon) és la primera etapa d'un test d'intrusió. Consisteix a recopilar tanta informació com sigui possible sobre l'objectiu sense interactuar directament amb els seus sistemes (reconeixement passiu) o amb una interacció mínima i controlada (reconeixement actiu).

Un hacker ètic (o un atacant real) pot estalviar molt de temps i triplicar l'eficàcia del seu atac si fa un bon reconeixement previ. Com deia Sun Tzu: "Coneix el teu enemic i coneix-te a tu mateix; en cent batalles, mai seràs derrotat".

flowchart LR
    subgraph Passiu[Reconeixement Passiu - No interacció directa]
        OSINT[OSINT\nShoda, HIBP, LinkedIn]
        DNS[Enumeració DNS\nPassiveDNS, WHOIS]
        CERT[Certificats SSL\ncrt.sh]
        PASTE[Pastebin\nBreaches]
    end
    subgraph Actiu[Reconeixement Actiu - Interacció controlada]
        PORTSCAN[Port Scan\nNmap]
        WEB[Web Crawling\nGobuster, Nikto]
        VULN[Vulnerability Scan\nOpenVAS, Nessus]
    end
    TARGET[Objectiu] --> Passiu
    Passiu --> Actiu
    Actiu --> EXPLOIT[Fase d'Explotació]

Autorització prèvia obligatòria

Fins i tot el reconeixement actiu (escaneig de ports) pot ser il·legal sense autorització escrita. L'escaneig de ports es considera un acte preparatori d'intrusió en moltes jurisdiccions. Mai realitzar reconeixement actiu sobre sistemes que no són teus o sense autorització explícita.

Reconeixement Passiu (OSINT)

Google Dorks

Els Google Dorks (cerques avançades de Google) permeten trobar informació sensible indexada accidentalment:

# Cerques bàsiques
site:empresa.cat               # Totes les pàgines d'un domini
site:empresa.cat filetype:pdf  # Documents PDF del domini
site:empresa.cat "password"    # Pàgines que continguin la paraula "password"

# Fitxers sensibles exposats
site:empresa.cat filetype:xls "salary"       # Fulles de càlcul amb sous
site:empresa.cat filetype:sql                # Fitxers SQL (backup de BBDD!)
site:empresa.cat intitle:"index of" "backup" # Directoris oberts amb backups

# Panells d'administració
inurl:"/admin" site:empresa.cat
inurl:"/wp-admin" site:empresa.cat
intitle:"phpMyAdmin" site:empresa.cat

# Dispositius exposats
inurl:":8080" site:empresa.cat               # Ports no estàndard
intitle:"Live View / - AXIS" site:empresa.cat # Càmeres IP AXIS

GHDB - Google Hacking Database

La Google Hacking Database (https://www.exploit-db.com/google-hacking-database) manté un catàleg actualitzat de Google Dorks per categories: fitxers sensibles, dispositius vulnerables, panells d'administració, etc.

Shodan

Shodan és el "Google dels dispositius connectats": indexa dispositius IoT, servidors, càmeres, routers i qualsevol servei que escolti a Internet.

# Cerques a Shodan (via CLI o web)
# Compte gratuït: 2 resultats per pàgina

# Buscar per organització
org:"ACME Corp"

# Buscar per IP o CIDR
net:203.0.113.0/24

# Buscar serveis específics vulnerables
product:"Apache httpd" version:"2.4.49"  # Versió vulnerable a CVE-2021-41773
port:21 "220" "FTP server ready"          # Servidors FTP
port:3389 "Remote Desktop Protocol"       # Escritoris remots exposats
"default password" port:23               # Telnet amb contrasenya per defecte

# Shodan CLI (requereix API key)
docker run --rm -e SHODAN_API_KEY=YOUR_KEY \
  --name shodan-NOMCOGNOM \
  python:alpine bash -c "
  pip install shodan -q &&
  shodan init YOUR_API_KEY &&
  shodan host 203.0.113.1
"

theHarvester - Email i Subdominis

# theHarvester: recopila emails, noms, IPs, subdominis de fonts públiques
docker run --rm \
  --name harvester-NOMCOGNOM \
  kalilinux/kali-rolling bash -c "
  apt-get install -y theHarvester -qq &&
  theHarvester \
    -d empresa.cat \
    -l 200 \
    -b bing,google,linkedin,twitter \
    -f /tmp/harvester-empresa.json
"

Enumeració de Subdominis

# amass: eina OWASP per a enumeració de subdominis (passive mode)
docker run --rm \
  --name amass-NOMCOGNOM \
  caffix/amass \
  enum -passive -d empresa.cat -o /tmp/amass-empresa.txt

# subfinder: ràpid i eficient
docker run --rm \
  projectdiscovery/subfinder:latest \
  -d empresa.cat -silent

# crt.sh: buscar subdominis via certificats SSL (sense connectar a l'objectiu)
curl -s "https://crt.sh/?q=%.empresa.cat&output=json" | \
  python3 -c "
import json, sys
data = json.load(sys.stdin)
domains = set()
for cert in data:
    name = cert.get('name_value', '')
    for d in name.split('\n'):
        if 'empresa.cat' in d:
            domains.add(d.strip().lstrip('*.'))
for d in sorted(domains):
    print(d)
"

Enumeració DNS

# Resoldre registres DNS bàsics
docker run --rm \
  --name dns-enum-NOMCOGNOM \
  python:alpine bash -c "
  pip install dnspython -q &&
  python3 -c \"
import dns.resolver

domain = 'empresa.cat'
record_types = ['A', 'AAAA', 'MX', 'NS', 'TXT', 'SOA', 'CNAME']

for rtype in record_types:
    try:
        answers = dns.resolver.resolve(domain, rtype)
        for rdata in answers:
            print(f'{rtype}: {rdata}')
    except Exception:
        pass
\"
"

# Transferència de zona DNS (si el servidor ho permet - misconfiguration)
# ÚNICAMENT en laboratoris - mai en sistemes reals sense autorització
dig axfr @ns1.empresa.cat empresa.cat

Miniactivitat

Realitza un reconeixement PASSIU sobre el domini hackthissite.org (plataforma legal d'entrenament):

  1. Quants subdominis trobes amb crt.sh?
  2. Quina informació proporciona el registre MX (servidor de correu)?
  3. Utilitza WHOIS i indica qui és el registrador del domini i quan expira

Reconeixement Actiu

Nmap - Escaneig de Ports

Nmap és l'eina estàndard per a descoberta de xarxes i escaneig de ports:

# Escaneig bàsic (TCP SYN scan, 1000 ports comuns)
nmap -sS 192.168.1.1

# Escaneig complet amb detecció de versions i scripts
nmap -sV -sC -O --version-intensity 5 192.168.1.1

# Escaneig ràpid de tota una subxarxa
nmap -sn 192.168.1.0/24     # Host discovery (ping scan)
nmap --open -T4 192.168.1.0/24  # Ports oberts ràpid

# Escaneig de tots els ports UDP (lent però important)
nmap -sU --top-ports 100 192.168.1.1

# Scripts NSE (Nmap Scripting Engine) per a vulnerabilitats
nmap --script vuln 192.168.1.1           # Escaneig de vulnerabilitats
nmap --script http-enum 192.168.1.1      # Enumeració de directoris web
nmap --script ssh-brute 192.168.1.1      # Força bruta SSH (PRECAUCIÓ)
nmap --script smb-vuln-ms17-010 192.168.1.1  # EternalBlue (WannaCry)
# Nmap en Docker (per al lab)
docker run --rm \
  --network host \
  --name nmap-NOMCOGNOM \
  instrumentisto/nmap:latest \
  -sV -sC -O --open -T4 \
  -oA /tmp/nmap-scan-NOMCOGNOM \
  192.168.1.0/24

Interpretació de resultats Nmap

PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
443/tcp  open  ssl/http Apache httpd 2.4.41
3306/tcp open  mysql   MySQL 8.0.32-0ubuntu0.20.04.2
8080/tcp open  http    Jetty 9.4.48.v20220622

# Anàlisi:
# ✅ SSH en port 22 (estàndard)
# ⚠️  MySQL accessible directament (port 3306 obert!)
# ⚠️  Jetty en port 8080 (possible panell d'administració intern exposat)
# ℹ️  Apache 2.4.41 (buscar CVEs per a aquesta versió)

Gobuster - Enumeració de Directoris Web

# Gobuster: enumeració de directoris i fitxers web per força bruta
docker run --rm \
  --name gobuster-NOMCOGNOM \
  kalilinux/kali-rolling bash -c "
  apt-get install -y gobuster wordlists -qq &&
  gobuster dir \
    -u http://TARGET_URL \
    -w /usr/share/wordlists/dirb/common.txt \
    -x php,html,txt,bak,sql \
    -t 20 \
    -o /tmp/gobuster-NOMCOGNOM.txt
"

# Subdomain fuzzing
docker run --rm \
  --name gobuster-sub-NOMCOGNOM \
  kalilinux/kali-rolling bash -c "
  gobuster dns \
    -d empresa.cat \
    -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt
"

Nikto - Escàner de Vulnerabilitats Web

# Nikto: escàner de vulnerabilitats web (no és subtil, genera molts logs)
docker run --rm \
  --name nikto-NOMCOGNOM \
  hysnsec/nikto \
  -host http://TARGET_URL \
  -Format htm \
  -output /tmp/nikto-report-NOMCOGNOM.html

Organitzar el Reconeixement

Un bon reconeixement s'ha de documentar sistemàticament. Eina recomanada: Maltego (versió community gratuïta) o simplement un fitxer estructurat:

# Informe de Reconeixement - NOMCOGNOM
**Data**: ____________________
**Objectiu**: empresa.cat
**Autorització**: [referència al document d'autorització]

## 1. Informació de Domini
- Registrador: _______________
- Data registre: _______________
- Data expiració: _______________
- Nameservers: ns1.empresa.cat, ns2.empresa.cat
- IP(s): 203.0.113.1

## 2. Subdominis Descoberts
| Subdomini | IP | Servei |
|-----------|-----|--------|
| www.empresa.cat | 203.0.113.1 | Apache 2.4.41 |
| mail.empresa.cat | 203.0.113.5 | Postfix |
| vpn.empresa.cat | 203.0.113.10 | OpenVPN |

## 3. Ports Oberts (nmap -sV)
| Port | Protocol | Servei | Versió | Notes |
|------|---------|--------|--------|-------|
| 22 | TCP | SSH | OpenSSH 8.2 | - |
| 80 | TCP | HTTP | Apache 2.4.41 | Redirigeix a HTTPS |
| 443 | TCP | HTTPS | Apache 2.4.41 | Cert vàlid |
| 3306 | TCP | MySQL | 8.0.32 | ⚠️ Accessible externament |

## 4. Emails Trobats (theHarvester)
- admin@empresa.cat
- joan.garcia@empresa.cat

## 5. Tecnologies Detectades (Wappalyzer/WhatWeb)
- CMS: WordPress 6.4.2
- PHP: 8.1.x
- jQuery: 3.6.0

## 6. Vulnerabilitats Potencials Identificades
1. MySQL exposat a Internet (CVE-...)
2. WordPress versió antiga (buscar CVEs)
3. ...

Exercici pràctic

Realitza un reconeixement complet (passiu i actiu) sobre la màquina de laboratori proporcionada al mòdul de Hacking Ètic. Documenta tots els passos i resultats en un informe reconeixement_NOMCOGNOM.md.

Restricció important: Únicament pots fer reconeixement actiu sobre la IP del laboratori Docker assignada, MAI sobre sistemes reals sense autorització.