Périmètre

Épreuve OSINT du CTF OSINT Industries. OSINT légal uniquement, aucun contact avec le développeur, aucune intrusion. Reproduction à fins pédagogiques ; la date finale (le flag) est masquée.

Objectif : remonter au créateur de l'outil OSINT Holehe, identifier son adresse mail publique, et déterminer la date de création exacte de cette adresse. Flag au format OSINT{DD-MM-YYYY}. Piège annoncé : « création de l'adresse » n'est pas « premier commit du projet ».

Objectif

Isoler la vraie adresse parmi les métadonnées git, puis dater sa création par la bonne source (le timestamp de la clé PGP), en écartant les leurres du premier commit et de la bascule des author-emails.

1 · Le créateur et l'adresse

Le dépôt vit sur github.com/megadose/holehe ; l'owner est megadose (alias Palenath). L'adresse publique se trouve dans le README (megadose@protonmail.com) et dans les métadonnées de commit. L'historique contient trois author-emails distincts, dont deux à écarter :

Trois author-emails dans l'historique git
megadose@0x7f000001  0x7f000001 = 127.0.0.1 → placeholder git jamais configuré
51822495+megadose@users.noreply.github.com email de confidentialité GitHub
megadose@protonmail.com vraie adresse publique (la cible)

2 · La date : écarter les leurres

Fausses pistes
  • Premier commit de Holehe : la question porte sur l'adresse, pas sur le projet ; l'adresse peut préexister à l'outil.
  • GitHub commit search : polluée par les forks (un même SHA dupliqué dans N forks ressort N fois). Raisonner par compte, pas par index global.
  • Bascule des author-emails : un jour donné, le proton remplace le noreply en rafale sur de nombreux repos. C'est la date de bascule des commits, pas la création de l'adresse. Dernier leurre.

En listant les repos du compte triés par date de création, le plus ancien précède Holehe de plusieurs mois et committait alors sous le noreply : le proton n'existe pas dans l'historique initial, il apparaît plus tard. Le git ne donne donc pas la date de création de l'adresse.

3 · La vraie source : la clé PGP ProtonMail

Un compte Proton génère une clé PGP dont le timestamp de création est proche de la date de création du compte. Le keyserver public de Proton l'expose :

Keyserver Proton (op=index, pas op=get)
$ curl 'api.protonmail.ch/pks/lookup?op=index&search=megadose@protonmail.com'
pub:…: ::
uid:megadose@protonmail.com: ::
op=index → epoch en clair, lisible machine (op=get renverrait le blob PGP)

Il reste à convertir l'epoch de la clé primaire en UTC (sinon décalage de fuseau possible d'un jour) :

Conversion epoch → date (masquée)
$ date -u -d @ +%d-%m-%Y
[ date masquée ]

4 · Pièges & leçons

Côté méthode
  • « Apparition de l'email » n'est pas « premier commit » : élargir à tous les repos du compte.
  • La commit search est polluée par les forks : raisonner par compte.
  • Trois emails dans un historique : écarter le placeholder localhost et le noreply GitHub.
  • La date qui fait foi vient de la clé PGP Proton (op=index donne l'epoch), pas du git.
  • Toujours convertir en UTC, et régénérer soi-même le timestamp plutôt que le recopier.
OPSEC

L'author-email d'un commit git est public et permanent, et le keyserver PGP d'un fournisseur mail expose indirectement la date de création du compte via le timestamp de clé. Pour cloisonner ses identités : author-email dédié par persona (ou le noreply GitHub par défaut), en gardant à l'esprit que publier une clé PGP horodate le compte associé.