
企業のメンバーを漏洩した認証情報から検出するのに役立つ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
- インターネット接続
- **任意:** Docker と Docker Compose (ClickHouse をローカルで起動するため)
- **任意:** [gitleaks](https://github.com/gitleaks/gitleaks) (リポジトリ内のシークレットスキャン用)
- **任意:** [HaveIBeenPwned](https://haveibeenpwned.com/API/Key) の API キー
- LinkedIn プラグイン用の LinkedIn セッション Cookie (`JSESSIONID` と `li_at`)
## インストール
1. リポジトリをクローンする:```bash
git clone https://github.com/yourusername/emploleaks.git
cd emploleaks
3. (オプション) リークデータベース用にClickHouseをDockerで起動する:```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 <opción> [valor] | プラグインのオプションを設定します(値が指定されない場合は非表示プロンプトで入力) |
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 [directorio] | 資格情報ファイルを 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` で設定されている場合、起動時に自動的に接続が確立されます。
### 認証情報と漏洩の検索
| コマンド | 説明 |
|---------|-------------|
| `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` を使用します。
### インフラストラクチャのディスカバリ
| コマンド | 説明 |
|---------|-------------|
| `add_domain <dominio>` | 選択した企業にドメインを関連付けます (例: `add_domain faradaysec.com`) |
| `discover` | `assetfinder` (+ オプションで SecurityTrails) を使用して、企業の全ドメインに対してサブドメインの列挙を実行し、DNSを解決します |
| `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** (ユーザー名検索): 500以上のソーシャルメディアプラットフォームでユーザー名が存在するかを検索します。ユーザー名は従業員がWebアプリから手動で追加します。プラットフォームはオプションで`tokens.ini`でフィルタリングします:```ini
[maigret]
# platforms = instagram, twitter, facebook, tiktok, reddit, github