一款 OSINT 工具,可帮助检测泄露凭证的公司成员
EmploLeaks es una herramienta de OSINT (Open Source Intelligence) con una interfaz CLI , diseñada para descubrir y correlacionar información sobre empleados de una empresa objetivo. Permite recopilar perfiles de LinkedIn, generar emails corporativos potenciales, buscar credenciales filtradas en bases de datos de leaks (ClickHouse internamente), verificar brechas conocidas a través de HaveIBeenPwned, descubrir infraestructura de la empresa y perfilar empleados en redes sociales. Toda la información se almacena localmente en SQLite para su análisis posterior.
…
JSESSIONID y li_at) para el plugin de LinkedIngit clone https://github.com/yourusername/emploleaks.git
cd emploleaks
pip install -r requirements.txt
cd clickhouse-docker
docker compose up -d
cd ..
Ejecutar la herramienta:
python emploleaks.py
Con modo debug:
python emploleaks.py -d
| Comando | Descripción |
|---|---|
help |
Muestra la ayuda general |
help |
Muestra la ayuda de un comando específico |
quit |
Sale de la aplicación |
| Comando | Descripción |
|---|---|
add_company --name |
Agrega una nueva empresa |
select_company --name |
Selecciona una empresa para trabajar |
list_companies |
Muestra todas las empresas |
delete_company --name |
Elimina una empresa y todos sus datos |
| Comando | Descripción |
|---|---|
use --plugin |
Activa un plugin (linkedin, github, hibp) |
deactivate |
Desactiva el plugin actual |
show options |
Muestra las opciones del plugin activo |
setopt [valor] |
Configura una opción del plugin (si no se pasa valor, se pide por prompt oculto) |
autosave --enable / --disable |
Activa/desactiva el guardado automático de configuración en config/tokens.ini |
autoload --enable / --disable |
Activa/desactiva la carga automática de configuración desde config/tokens.ini |
| Comando | Descripción |
|---|---|
connect_leaks |
Conectar a ClickHouse usando la configuración guardada en tokens.ini |
connect_leaks --host --port --save |
Conectar con parámetros específicos y guardarlos para futuras sesiones |
disconnect_leaks |
Desconectar de la base de datos ClickHouse |
import_leaks [directorio] |
Importar archivos de credenciales a ClickHouse (default: leaks_data/) |
import_leaks --no-ai |
Importar solo archivos con formato conocido, sin usar IA |
create_db --user --passwd --dbname [--import-data ] |
Crear la BD ClickHouse manualmente (legacy) |
La conexión a ClickHouse se configura en config/tokens.ini:
[clickhouse]
host = localhost
port = 9000
user = default
passwd =
dbname = credentials_db
Si ClickHouse está configurado en tokens.ini, la conexión se establece automáticamente al iniciar.
| Comando | Descripción |
|---|---|
find_passwords |
Busca credenciales en ClickHouse + ProxyNova COMB (3.2B credentials). Modos: find_all, only_usernames, only_emails |
find_passwords --no-proxynova |
Solo busca en ClickHouse local |
find_passwords --no-clickhouse |
Solo busca en ProxyNova COMB (no requiere ClickHouse) |
find_passwords --email |
Busca credenciales para un email específico |
find_breaches |
Busca brechas en HIBP para todos los emails de la empresa (requiere plugin hibp activo) |
ProxyNova COMB es una base de datos pública con 3.2 mil millones de credenciales filtradas (Combination Of Many Breaches). No requiere API key y se consulta automáticamente en cada búsqueda. Usar --no-proxynova para desactivarla.
| Comando | Descripción |
|---|---|
add_domain |
Asocia un dominio a la empresa seleccionada (ej: add_domain faradaysec.com) |
discover |
Ejecuta enumeración de subdominios contra todos los dominios de la empresa usando assetfinder (+ SecurityTrails opcional), resolviendo DNS |
print --data domains |
Muestra los dominios registrados y la cantidad de subdominios encontrados |
print --data subdomains |
Muestra todos los subdominios con su IP, fuente y fecha de descubrimiento |
El módulo de Discovery delega la enumeración pasiva a assetfinder, que internamente agrega resultados de crt.sh, HackerTarget, BufferOver y otras fuentes sin API key. Se espera el binario en $PATH (instalación: go install github.com/tomnomnom/assetfinder@latest).
Opcionalmente, si configurás una API key de SecurityTrails sus subdominios se mergean con los de assetfinder:
[discovery]
# securitytrails_key = your_key_here
| Comando | Descripción |
|---|---|
lookup_emails |
Busca emails confirmados en ~120 plataformas con Holehe |
lookup_emails --include-potential |
Incluye también los emails generados |
lookup_emails --email [email protected] |
Busca un email específico |
lookup_emails --all |
Busca en las 120+ plataformas (no solo las configuradas) |
lookup_emails --list-platforms |
Lista todas las plataformas disponibles |
lookup_profiles |
Busca perfiles por username con Maigret (requiere usernames cargados) |
lookup_profiles --employee "Juan" |
Busca solo para un empleado específico |
Holehe (email lookup): utiliza la técnica de "forgot password" para determinar si un email está registrado en cada plataforma, sin alertar al dueño. Las plataformas se configuran en tokens.ini:
[holehe]
platforms = google, discord, github, instagram, twitter, spotify, ...
Maigret (username lookup): busca si un username existe en 500+ plataformas de redes sociales. Los usernames se agregan manualmente por empleado desde la webapp. Las plataformas se filtran opcionalmente en tokens.ini:
[maigret]
# platforms = instagram, twitter, facebook, tiktok, reddit, github
| Comando | Descripción |
|---|---|
print --data emails |
Muestra emails confirmados y potenciales |
print --data passwords |
Muestra credenciales encontradas |
print --data breaches |
Muestra brechas de HIBP |
print --data gits |
Muestra cuentas de GitHub |
print --data twitters |
Muestra cuentas de Twitter/X |
print --data phones |
Muestra números de teléfono |
print --data websites |
Muestra sitios web |
print --data secrets |
Muestra secretos encontrados en repositorios |
print --data domains |
Muestra dominios registrados |
print --data subdomains |
Muestra subdominios descubiertos |
print --data all |
Muestra todo consolidado por empleado |
print --data all --html |
Genera un reporte HTML interactivo con fotos |
print --data all --html --ai |
Genera reporte HTML agrupando empleados por departamento usando IA |
print --data --export |
Exporta los datos a un archivo CSV con timestamp |
| Comando | Descripción |
|---|---|
set_ai --endpoint --key --model |
Configura el proveedor de IA |
classify |
Clasifica empleados en departamentos usando IA (se guarda en la BD) |
classify --force |
Re-clasifica aunque ya tengan departamento asignado |
La clasificación por IA analiza los títulos/roles de los empleados y los agrupa por departamento (Engineering, Security, Sales, etc.). Los departamentos se persisten en SQLite y son visibles en el reporte HTML y en la webapp.
Proveedores soportados (cualquier API compatible con OpenAI):
set_ai --endpoint http://localhost:11434/v1 --model llama3set_ai --endpoint https://api.openai.com/v1 --key sk-... --model gpt-4o-miniDaemon standalone que usa una cuenta personal de Telegram (vía Telethon) para unirse a canales/grupos aprobados, descargar archivos .txt/.csv/.dat/.zip/.gz y dejarlos en leaks_data/telegram//. El import_leaks posterior los ingiere a ClickHouse usando el parser agéntico. Decoupled del CLI — corre como proceso aparte, así puede estar 24/7 sin que la CLI esté abierta.
Setup inicial (one-time):
api_id y api_hash.config/tokens.ini:[telegram]
api_id = 12345678
api_hash = abcd1234...
session = config/telegram.session
download_root = leaks_data/telegram
allowed_extensions = txt, csv, dat, zip, gz
default_backfill_limit = 10
python3.13 telegram_sync.py login
Subcomandos:
| Comando | Descripción |
|---|---|
login |
Autenticación inicial. Persiste sesión en config/telegram.session |
list_groups |
Lista todos los chats/canales donde está tu cuenta, y los snapshotea en SQLite |
approve [--limit N] |
Marca un chat como aprobado y corre backfill de los últimos N mensajes |
unapprove |
Quita la aprobación |
list_approved |
Tabla de chats aprobados con conteo de archivos bajados |
backfill [--limit N] |
Re-baja los últimos N mensajes de un chat aprobado |
run [--watch] |
Backfill de todos los aprobados; con --watch queda escuchando NewMessage events |
status |
Resumen: aprobados / archivos bajados / disco usado |
Tablas nuevas en data/emploleaks.db:
| Tabla | Descripción |
|---|---|
telegram_groups |
Snapshot de chats (chat_id, title, username, approved, backfill_limit, last_sync_at) |
telegram_files |
Archivos bajados con |
暂无开放 Issues,或尚未同步最近议题。