
유출된 자격 증명으로 회사 구성원을 탐지하는 데 도움을 주는 OSINT 도구
EmploLeaks는 CLI 인터페이스를 갖춘 OSINT(오픈 소스 인텔리전스) 도구로, 대상 회사 직원에 대한 정보를 발견하고 상호 연관시키기 위해 설계되었습니다. LinkedIn 프로필 수집, 잠재적인 회사 이메일 생성, 유출 데이터베이스(내부적으로 ClickHouse 사용)에서 유출된 자격 증명 검색, HaveIBeenPwned를 통한 알려진 침해 사항 확인, 회사 인프라 발견, 소셜 미디어에서 직원 프로파일링을 수행할 수 있습니다. 모든 정보는 후속 분석을 위해 로컬 SQLite에 저장됩니다.
emploleaks/ ├── emploleaks.py # Script principal (CLI interactiva con cmd2) ├── telegram_sync.py # Daemon userbot de Telegram (Telethon, standalone) ├── requirements.txt # Dependencias de Python ├── README.md ├── .gitignore ├── plugins/ │ ├── linkedin.py # Plugin de LinkedIn (scraping de empleados) │ ├── github.py # Plugin de GitHub (repos, stalk, secrets) │ └── hibp.py # Plugin de HaveIBeenPwned (brechas) ├── utils/ │ ├── logging_format.py # Configuración de logging con colores │ ├── ai_classifier.py # Clasificación de roles con IA (OpenAI/Ollama) │ ├── leak_parser.py # Parser de leaks 100% agéntico (loop de IA, sin regex) │ ├── email_lookup.py # Búsqueda de emails en redes sociales (Holehe) │ ├── profile_lookup.py # Búsqueda de usernames en redes sociales (Maigret) │ └── discovery.py # Enumeración de subdominios (assetfinder + SecurityTrails opcional) ├── clickhouse-docker/ # Docker Compose para levantar ClickHouse │ ├── docker-compose.yml │ └── config/ │ └── users.xml ├── leaks_data/ # Carpeta para archivos de leaks a importar (no en git) ├── config/ # Configuración (autogenerado) │ └── tokens.ini # Tokens y credenciales de plugins (no en git) ├── data/ # Base de datos local (autogenerado) │ └── emploleaks.db # SQLite con toda la información recopilada ├── webapp/ # Webapp administrativa │ ├── backend/ # FastAPI (Python) │ └── frontend/ # Next.js (React/TypeScript) └── logs/ # Archivos de log (autogenerado) └── log.txt
## 요구 사항
- Python 3.10+
- pip
- 인터넷 연결
- **선택 사항:** 로컬에서 ClickHouse를 실행하기 위한 Docker 및 Docker Compose
- **선택 사항:** 저장소 비밀 검색을 위한 [gitleaks](https://github.com/gitleaks/gitleaks)
- **선택 사항:** [HaveIBeenPwned](https://haveibeenpwned.com/API/Key) API 키
- LinkedIn 플러그인을 위한 LinkedIn 세션 쿠키 (`JSESSIONID` 및 `li_at`)
## 설치
1. 저장소를 클론합니다:```bash
git clone https://github.com/yourusername/emploleaks.git
cd emploleaks
3. (선택 사항) Docker로 ClickHouse를 실행하여 leaks 데이터베이스 설정:```bash
cd clickhouse-docker
docker compose up -d
cd ..
도구 실행:```bash python emploleaks.py
디버그 모드:```bash
python emploleaks.py -d
| 명령어 | 설명 |
|---|---|
help | 일반 도움말 표시 |
help <comando> | 특정 명령어의 도움말 표시 |
quit | 애플리케이션 종료 |
| 명령어 | 설명 |
|---|---|
add_company --name <nombre> | 새 회사 추가 |
select_company --name <nombre> | 작업할 회사 선택 |
list_companies | 모든 회사 표시 |
delete_company --name <nombre> | 회사 및 모든 데이터 삭제 |
| 명령어 | 설명 |
|---|---|
use --plugin <nombre> | 플러그인 활성화 (linkedin, github, hibp) |
deactivate | 현재 플러그인 비활성화 |
show options | 활성 플러그인의 옵션 표시 |
setopt <option> [value] | 플러그인 옵션 설정 (값이 전달되지 않으면 숨겨진 프롬프트로 입력) |
autosave --enable / --disable | config/tokens.ini에 설정 자동 저장 활성화/비활성화 |
autoload --enable / --disable | config/tokens.ini에서 설정 자동 로드 활성화/비활성화 |
| 명령어 | 설명 |
|---|---|
connect_leaks | tokens.ini에 저장된 구성으로 ClickHouse 연결 |
connect_leaks --host <host> --port <port> --save | 특정 매개변수로 연결하고 향후 세션을 위해 저장 |
disconnect_leaks | ClickHouse 데이터베이스 연결 해제 |
import_leaks [directory] | 자격 증명 파일을 ClickHouse로 가져오기 (기본값: leaks_data/) |
import_leaks --no-ai | AI를 사용하지 않고 알려진 형식의 파일만 가져오기 |
create_db --user <user> --passwd <pass> --dbname <db> [--import-data <dir>] | 수동으로 ClickHouse 데이터베이스 생성 (레거시) |
ClickHouse 연결은 config/tokens.ini에 구성됩니다:```ini
[clickhouse]
host = localhost
port = 9000
user = default
passwd =
dbname = credentials_db
ClickHouse가 `tokens.ini`에 구성되어 있으면 시작 시 연결이 자동으로 설정됩니다.
### 자격 증명 및 침해 사고 검색
| Comando | Descripción |
|---------|-------------|
| `find_passwords <modo>` | ClickHouse + [ProxyNova COMB](https://www.proxynova.com/tools/comb/) (32억 개의 자격 증명)에서 자격 증명을 검색합니다. 모드: `find_all`, `only_usernames`, `only_emails` |
| `find_passwords <modo> --no-proxynova` | 로컬 ClickHouse에서만 검색 |
| `find_passwords <modo> --no-clickhouse` | ProxyNova COMB에서만 검색 (ClickHouse 불필요) |
| `find_passwords <modo> --email <email>` | 특정 이메일에 대한 자격 증명 검색 |
| `find_breaches` | 회사의 모든 이메일에 대해 HIBP에서 침해 사고 검색 (`hibp` 플러그인 활성화 필요) |
**ProxyNova COMB**는 32억 개의 유출된 자격 증명(Combination Of Many Breaches)을 포함하는 공개 데이터베이스입니다. API 키가 필요 없으며 각 검색 시 자동으로 조회됩니다. 비활성화하려면 `--no-proxynova`를 사용하세요.
### 인프라 발견
| Comando | Descripción |
|---------|-------------|
| `add_domain <dominio>` | 선택한 회사에 도메인을 연결합니다 (예: `add_domain faradaysec.com`) |
| `discover` | `assetfinder`를 사용하여 회사의 모든 도메인에 대해 서브도메인 열거를 실행하고 DNS를 확인합니다 (선택적으로 SecurityTrails 포함) |
| `print --data domains` | 등록된 도메인과 발견된 서브도메인 수를 표시합니다 |
| `print --data subdomains` | 모든 서브도메인을 IP, 소스 및 발견 날짜와 함께 표시합니다 |
Discovery 모듈은 수동 열거를 [`assetfinder`](https://github.com/tomnomnom/assetfinder)에 위임하며, 내부적으로 crt.sh, HackerTarget, BufferOver 및 기타 소스의 결과를 API 키 없이 수집합니다. 바이너리가 `$PATH`에 있어야 합니다 (설치: `go install github.com/tomnomnom/assetfinder@latest`).
선택적으로 SecurityTrails API 키를 구성하면 해당 서브도메인이 assetfinder의 결과와 병합됩니다.```ini
[discovery]
# securitytrails_key = your_key_here
| 명령어 | 설명 |
|---|---|
lookup_emails | Holehe를 사용해 ~120개 플랫폼에서 확인된 이메일 검색 |
lookup_emails --include-potential | 생성된 이메일도 포함 |
lookup_emails --email [email protected] | 특정 이메일 검색 |
lookup_emails --all | 120개 이상의 플랫폼에서 검색(설정된 것만 아님) |
lookup_emails --list-platforms | 사용 가능한 모든 플랫폼 나열 |
lookup_profiles | Maigret로 사용자명으로 프로필 검색(로드된 사용자명 필요) |
lookup_profiles --employee "Juan" | 특정 직원에 대해서만 검색 |
Holehe (이메일 조회): '비밀번호 찾기' 기술을 사용하여 각 플랫폼에 이메일이 등록되어 있는지 확인하며, 소유자에게 알리지 않습니다. 플랫폼은 tokens.ini에 구성됩니다:```ini
[holehe]
platforms = google, discord, github, instagram, twitter, spotify, ...
**Maigret** (username lookup): username이 500개 이상의 소셜 미디어 플랫폼에 존재하는지 검색합니다. Username은 웹앱에서 직원이 수동으로 추가합니다. 플랫폼은 선택적으로 `tokens.ini`에서 필터링됩니다.```ini
[maigret]
# platforms = instagram, twitter, facebook, tiktok, reddit, github