Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitLabGitLab/hackinglz/gibson
Herramientas DefensivasOSINT (Inteligencia de Fuentes Abiertas)Análisis ForenseSeguridad en la NubeRed TeamingRespuesta a IncidentesAnálisis de DNSDetección de AnomalíasAnálisis de Registros
GitLabhackinglz/gibson

gibson

Herramienta de monitoreo de red que mapea las conexiones de proceso a red, identifica proveedores de nube y detecta actividad de beaconing.

hace 5 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver RepositorioSitio web

Gibson

Herramienta de monitoreo de red que mapea las conexiones proceso-red, identifica proveedores de nube y genera reglas de firewall. Agente ligero para la recolección, servidor para la agregación, parser para el análisis.

Capturas de pantalla

Vista general entre máquinas — comparación de versiones de SO, detección de IPs compartidas, candidatos a beaconing en todos los hosts: Cross-machine analysis

Detalle por host — alertas críticas (SO sin soporte, nc.exe haciendo beaconing a una IP desconocida): Host detail - critical

Detalle por host — advertencia (candidato a beacon marcado): Host detail - warning

Detalle por host — limpio (sin anomalías): Host detail - clean

Características

Recolector (Agente)

  • 🔒 Seguro: Cifrado opcional AES-256-GCM
  • 🗜️ Eficiente: Compresión gzip opcional
  • 🌐 Carga en la nube: Carga HTTP/HTTPS con soporte de clave API
  • 📊 Tiempo real: Recolección de datos en streaming
  • 🔍 Resolución DNS: Búsquedas DNS inversas opcionales
  • 💾 Almacenamiento flexible: Formato JSONL para fácil análisis

Parser (Analizador)

  • ☁️ Detección de nube: Identifica AWS, Azure, GCP, Cloudflare, etc.
  • 🔥 Reglas de firewall: Genera automáticamente reglas iptables/Windows
  • 📈 Puntuación de riesgo: Identifica procesos sospechosos
  • 🗄️ Exportación a base de datos: Exportación SQL para análisis posterior
  • 📊 Informes enriquecidos: Resúmenes JSON con información detallada

Inicio rápido

Compilación

root@kitploit:~
cargo build --release

Recolección básica (5 minutos)

root@kitploit:~
# Simple collection
cargo run --release -- collect --duration-seconds 300

# With DNS lookups
cargo run --release -- collect --duration-seconds 300 --enable-dns

# With compression and encryption
cargo run --release -- collect \
  --duration-seconds 300 \
  --compress \
  --encrypt-key "your-secret-password"

Analizar los datos recolectados

root@kitploit:~
# Generate all reports
cargo run --release -- parse \
  --input connections.jsonl \
  --process-summary processes.json \
  --cloud-analysis cloud.json \
  --firewall-rules-iptables firewall.sh \
  --database-export network.sql

# Offline ownership lookup with local ASN DB (no network calls)
cargo run --release -- parse \
  --input connections.jsonl \
  --cloud-analysis cloud.json \
  --asn-db ip2asn-v4.tsv

# Live ARIN lookup with persistent cache (re-run skips already-queried IPs)
cargo run --release -- parse \
  --input connections.jsonl \
  --cloud-analysis cloud.json \
  --arin-lookup \
  --arin-cache arin_cache.json

Modo de monitoreo todo-en-uno

root@kitploit:~
# Quick 5-minute analysis
cargo run --release -- monitor \
  --duration-seconds 300 \
  --output-dir ./analysis \
  --full-analysis

Compilación del agente

El binario agent es un objetivo de despliegue mínimo, sin flags. Toda la configuración se incrusta en el binario en tiempo de compilación mediante variables de entorno: colócalo en un objetivo y ejecútalo sin argumentos.

Compilación

root@kitploit:~
AGENT_SERVER="http://10.0.1.5:8080/upload" \
AGENT_KEY="labkey123" \
AGENT_INTERVAL="5" \
AGENT_BATCH="200" \
AGENT_DURATION="0" \
AGENT_DNS="false" \
AGENT_ENCRYPT_KEY="mysecretpassword" \
cargo build --release --bin agent

El binario resultante en target/release/agent no tiene dependencias externas y no requiere flags:

root@kitploit:~
./agent

Variables de entorno

Ejemplo: Agente cifrado de largo plazo

root@kitploit:~
AGENT_SERVER="https://collector.internal/upload" \
AGENT_KEY="prod-api-key" \
AGENT_DURATION="0" \
AGENT_INTERVAL="30" \
AGENT_COMPRESS="true" \
AGENT_ENCRYPT_KEY="$(cat /etc/gibson/key)" \
cargo build --release --bin agent

Uso avanzado

Recolección remota segura

1. Recolección cifrada con carga

root@kitploit:~
cargo run --release -- collect \
  --duration-seconds 3600 \
  --interval-seconds 10 \
  --compress \
  --encrypt-key "your-32-char-hex-key-or-password" \
  --upload-url "https://your-server.com/api/upload" \
  --api-key "your-api-key" \
  --batch-size 50 \
  --delete-after-upload

2. Monitoreo de largo plazo (24 horas)

root@kitploit:~
cargo run --release -- collect \
  --duration-seconds 86400 \
  --interval-seconds 30 \
  --output connections_daily.jsonl \
  --enable-dns \
  --compress

Consulta de propiedad de IPs

El parser admite dos rutas mutuamente excluyentes para determinar quién posee las IPs no identificadas:

Descarga la base de datos ip2asn (actualización semanal):

root@kitploit:~
curl -O https://iptoasn.com/data/ip2asn-v4.tsv.gz && gunzip ip2asn-v4.tsv.gz

Cuando se proporciona --asn-db, se ignora --arin-lookup. Usa --arin-cache para persistir los resultados de ARIN en disco, de modo que las re-ejecuciones omitan las IPs ya consultadas.

Análisis de proveedores de nube

root@kitploit:~
# Parse with cloud detection focus
cargo run --release -- parse \
  --input connections.jsonl \
  --cloud-analysis cloud_report.json \
  --min-connections 5 \
  --whitelist-processes "chrome,firefox,safari,edge"

Configuración del servidor web para la recolección de datos

Opción 1: Servidor Python Flask simple

Crea collector_server.py:

root@kitploit:~
from flask import Flask, request, jsonify
import os
import json
import base64
from datetime import datetime
from Crypto.Cipher import AES
import gzip

app = Flask(__name__)

# Configuration
UPLOAD_DIR = "./collected_data"
API_KEY = "your-secure-api-key"
ENCRYPTION_KEY = bytes.fromhex("your-32-byte-hex-key")  # Optional

os.makedirs(UPLOAD_DIR, exist_ok=True)

def decrypt_data(encrypted_data, key):
    """Decrypt AES-256-GCM encrypted data"""
    decoded = base64.b64decode(encrypted_data)
    nonce = decoded[:12]
    ciphertext = decoded[12:]
    
    cipher = AES.new(key, AES.MODE_GCM, nonce=nonce)
    plaintext = cipher.decrypt_and_verify(ciphertext[:-16], ciphertext[-16:])
    return plaintext

@app.route('/api/upload', methods=['POST'])
def upload():
    # Verify API key
    if request.headers.get('X-API-Key') != API_KEY:
        return jsonify({"error": "Invalid API key"}), 401
    
    try:
        data = request.get_data()
        
        # If data is base64 encoded (encrypted)
        if data.startswith(b'eyJ'):  # JSON starts with {"
            # Not encrypted, parse directly
            batch = json.loads(data)
        else:
            # Encrypted data
            decrypted = decrypt_data(data, ENCRYPTION_KEY)
            batch = json.loads(decrypted)
        
        # Save to file
        hostname = batch.get('hostname', 'unknown')
        timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
        filename = f"{UPLOAD_DIR}/{hostname}_{timestamp}.json"
        
        with open(filename, 'w') as f:
            json.dump(batch, f)
        
        return jsonify({"status": "success", "file": filename}), 200
        
    except Exception as e:
        return jsonify({"error": str(e)}), 500

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, ssl_context='adhoc')  # Use proper SSL in production

Ejecútalo con:

root@kitploit:~
pip install flask pycryptodome
python collector_server.py

Opción 2: Nginx con carga básica

Crea /etc/nginx/sites-available/collector:

root@kitploit:~
server {
    listen 443 ssl;
    server_name collector.yourcompany.com;
    
    ssl_certificate /etc/ssl/certs/your-cert.pem;
    ssl_certificate_key /etc/ssl/private/your-key.pem;
    
    client_max_body_size 100M;
    
    location /upload {
        # API key validation
        if ($http_x_api_key != "your-secure-api-key") {
            return 403;
        }
        
        # Save uploaded files
        client_body_in_file_only on;
        client_body_temp_path /var/uploads/;
        
        # Pass to processing script
        proxy_pass http://localhost:8080;
        proxy_set_header X-File $request_body_file;
    }
}

Opción 3: Función AWS Lambda

root@kitploit:~
// index.js for AWS Lambda
const AWS = require('aws-sdk');
const crypto = require('crypto');
const s3 = new AWS.S3();

const BUCKET_NAME = 'your-network-data-bucket';
const API_KEY = process.env.API_KEY;
const ENCRYPTION_KEY = Buffer.from(process.env.ENCRYPTION_KEY, 'hex');

exports.handler = async (event) => {
    // Verify API key
    if (event.headers['X-API-Key'] !== API_KEY) {
        return {
            statusCode: 401,
            body: JSON.stringify({ error: 'Invalid API key' })
        };
    }
    
    try {
        let data = event.body;
        
        // Decrypt if needed
        if (!data.startsWith('{')) {
            // Encrypted data
            const encrypted = Buffer.from(data, 'base64');
            const nonce = encrypted.slice(0, 12);
            const ciphertext = encrypted.slice(12);
            
            const decipher = crypto.createDecipheriv('aes-256-gcm', ENCRYPTION_KEY, nonce);
            const decrypted = Buffer.concat([
                decipher.update(ciphertext.slice(0, -16)),
                decipher.final()
            ]);
            data = decrypted.toString();
        }
        
        const batch = JSON.parse(data);
        const key = `${batch.hostname}/${Date.now()}_${batch.batch_id}.json`;
        
        await s3.putObject({
            Bucket: BUCKET_NAME,
            Key: key,
            Body: data,
            ContentType: 'application/json'
        }).promise();
        
        return {
            statusCode: 200,
            body: JSON.stringify({ status: 'success', key })
        };
    } catch (error) {
        return {
            statusCode: 500,
            body: JSON.stringify({ error: error.message })
        };
    }
};

Estrategias de despliegue

1. Monitoreo de red corporativa

Despliega recolectores en los sistemas clave:

root@kitploit:~
# Windows endpoints
gibson.exe collect --duration-seconds 3600 --upload-url https://sec.company.com/upload --api-key KEY

# Linux servers
./gibson collect --duration-seconds 7200 --compress --upload-url https://sec.company.com/upload

2. Monitoreo de instancias en la nube

Usa el servicio systemd en Linux:

root@kitploit:~
# /etc/systemd/system/network-monitor.service
[Unit]
Description=Network Connection Monitor
After=network.target

[Service]
Type=simple
User=monitor
ExecStart=/opt/monitor/gibson collect \
  --duration-seconds 3600 \
  --compress \
  --encrypt-key ${ENCRYPT_KEY} \
  --upload-url https://collector.internal/upload \
  --api-key ${API_KEY}
Restart=always

[Install]
WantedBy=multi-user.target

3. Despliegue en contenedores

root@kitploit:~
FROM rust:1.75 as builder
WORKDIR /app
COPY . .
RUN cargo build --release

FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y ca-certificates
COPY --from=builder /app/target/release/gibson /usr/local/bin/
CMD ["gibson", "collect", "--duration-seconds", "3600", "--upload-url", "${UPLOAD_URL}"]

Ejemplos de salida

Resumen de procesos

root@kitploit:~
{
  "process_name": "chrome",
  "pid": 1234,
  "total_connections": 45,
  "unique_remote_ips": ["1.2.3.4", "5.6.7.8"],
  "cloud_providers": {
    "AWS": {
      "connection_count": 12,
      "services": {"CloudFront": 8, "S3": 4}
    }
  },
  "risk_score": 0.5
}

Análisis de nube

root@kitploit:~
{
  "AWS": {
    "provider": "AWS",
    "unique_ips": ["52.84.1.2", "54.230.3.4"],
    "unique_domains": ["d1234.cloudfront.net"],
    "services": {"CloudFront": 15, "S3": 3},
    "total_connections": 18
  }
}

Reglas de firewall (iptables)

root@kitploit:~
# Generated firewall rules
# ALLOW: Known Cloud Providers
iptables -A OUTPUT -p tcp -d 52.84.0.0/14 -j ACCEPT -m comment --comment "chrome to AWS"
iptables -A OUTPUT -p tcp -d 104.16.0.0/12 -j ACCEPT -m comment --comment "firefox to Cloudflare"

Consideraciones de seguridad

  1. Claves de cifrado: Usa claves hex de 32 bytes o contraseñas seguras
  2. Claves API: Rota con regularidad, usa variables de entorno
  3. TLS: Usa siempre HTTPS para las cargas
  4. Retención de datos: Implementa políticas de limpieza automática
  5. Control de acceso: Restringe el acceso al servidor recolector
  6. Monitoreo: Alerta sobre patrones sospechosos

Consejos de rendimiento

  • Usa --interval-seconds 30 para monitoreo de largo plazo
  • Habilita la compresión para cargas remotas
  • Tamaño de lote de 50-100 para un uso óptimo de la red
  • Desactiva las búsquedas DNS si no son necesarias (flag --enable-dns)

Solución de problemas

Uso elevado de memoria

  • Aumenta el tamaño del lote de carga
  • Reduce el intervalo de recolección
  • Usa compresión

Fallos de carga

  • Verifica la conectividad de red
  • Verifica la clave API y la URL
  • Revisa los registros del servidor
  • Asegura certificados SSL correctos

Procesos faltantes

  • Ejecuta con los permisos apropiados
  • Algunos procesos pueden requerir acceso elevado
  • Verifica las restricciones específicas del sistema

Licencia

MIT

Contribuciones

Se aceptan pull requests.

Descargar herramienta
VariablePor defectoDescripción
AGENT_SERVERhttp://localhost:8080/uploadURL del endpoint de carga
AGENT_KEY(ninguno)Valor del encabezado X-API-Key
AGENT_INTERVAL5Intervalo de sondeo de sockets en segundos
AGENT_BATCH200Registros por lote de carga
AGENT_DURATION0Duración de ejecución en segundos (0 = ejecutar indefinidamente)
AGENT_DNSfalseResuelve IPs a nombres de host
AGENT_ESTABLISHEDtrueSolo conexiones ESTABLISHED
AGENT_LOCAL_COPYfalseMantiene una copia local .jsonl junto con las cargas
AGENT_COMPRESSfalseComprime con gzip antes de cargar
AGENT_ENCRYPT_KEY(ninguno)Cifra el payload con AES-256-GCM (contraseña o clave hex de 64 caracteres)
AGENT_UA(por defecto de reqwest)Encabezado HTTP User-Agent
MétodoFlagVelocidadRedMejor para
Base de datos ASN local--asn-dbInstantáneaNingunaAnálisis repetidos, entornos aislados (air-gapped)
ARIN RDAP en vivo--arin-lookupLenta (por IP)SíConsultas puntuales, sin base de datos local disponible