Challenge CTF Richelieu de la DGSE

Guicheman

Habitué
J'ai récupéré le fichier zip !
Je suis en train de l'uploader, je vous mets le lien dès que c'est OK.
Après extraction de l'archive (à l'aide du mot de passe trouvé précédemment), on a 6 fichiers :
  • .bash_history : contient comme son nom l'indique, un historique de commande bash
  • lsb_RGB.png.enc : un fichier chiffré. lsb pour Least Significant Byte ?
  • motDePasseGPG.txt.enc : un fichier chiffré.
  • prime.txt : un fichier contenant une suite de chiffre en hexa séparés par des :
  • public.key : un clé publique, probablement pour un algo type RSA
  • suite.zip : une archive contenant un fichier suite.txt, elle aussi protégée par un mot de passe
Le contenu du bash_history
Bash :
 1337  gpg -o lsb_RGB.png.enc --symmetric lsb_RGB.png
 1338  vim motDePasseGPG.txt
 1339  openssl genrsa -out priv.key 4096
 1340  openssl rsa -pubout -out public.key -in priv.key
 1341  openssl rsa -noout -text -in priv.key | grep prime1 -A 18 > prime.txt
 1342  sed -i 's/7f/fb/g' prime.txt
 1343  sed -i 's/e1/66/g' prime.txt
 1344  sed -i 's/f4/12/g' prime.txt
 1345  sed -i 's/16/54/g' prime.txt
 1346  sed -i 's/a4/57/g' prime.txt
 1347  sed -i 's/b5/cd/g' prime.txt
 1348  openssl rsautl -encrypt -pubin -inkey public.key -in motDePasseGPG.txt -out motDePasseGPG.txt.enc

Le contenu de prime.txt :
Code :
prim66:
    00:fb:40:dc:44:ba:03:d1:53:42:f7:59:08:e0:f9:
    30:05:96:64:4a:de:94:68:5e:08:e2:8c:9a:b1:64:
    0c:2f:62:c2:9a:b9:a2:39:82:4b:9e:be:eb:76:ae:
    6d:87:21:a3:5e:9e:d9:8d:7e:57:38:3e:59:09:34:
    a5:78:cd:f7:2e:89:5d:5c:37:52:ea:fd:f6:31:cc:
    ba:d2:d9:60:e4:45:1d:67:76:d2:1f:12:9c:9d:c9:
    b1:90:45:51:ed:d2:fb:dd:b6:74:b4:99:fb:b1:0a:
    d9:b7:c2:be:8b:57:07:22:0a:8e:3a:36:ff:6d:c1:
    1d:63:93:af:cb:4e:c0:47:9f:65:bf:df:e3:f0:5f:
    1e:98:61:45:74:ec:36:a7:a5:b1:f1:8d:3d:97:6b:
    5a:82:49:09:00:08:0d:9d:c2:74:57:4e:30:a1:39:
    68:2f:22:34:71:13:aa:3b:f2:20:4f:8e:10:eb:d4:
    d0:9b:cd:8c:c2:53:5f:9d:71:13:0c:0f:21:b6:6e:
    13:39:40:d3:a6:b1:eb:74:ad:dd:0a:29:14:81:b1:
    90:ad:e0:53:f0:89:c8:00:fe:dc:ad:56:59:fc:28:
    1d:c0:cf:5e:08:c0:54:33:24:a3:52:bb:f3:25:10:
    43:c3:73:b8:40:4f:fc:6b:6b:77:bd:5f:22:24:eb:
    fb:15

La clé publique
Code :
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzV+KJMdgUAiJejySLA6B
Lnad4KRkQsNQy3jHhoU589OKrICz5qUGYFkQ6FmYBrTR0Ujy9rgdoEeWqKWu4Y8p
6D4Wd1oqCgCHBUH2V07RQ4Y2rgoMEW4HEE9I9yCUhjo4aeHI/CIGJyeJYvsihz4x
VvGOVd7JTpcAZOx/Tg6IRUAS4v1d/l+NGb8XD5zLP0bg/RAZvLAtkIOgcDxhf5lj
eeZHg1SnOubmrLzh9DM+z68kNmo+l30808v+jYo4e9h2v9q4SI9vR78fvjMBD9LX
4itNsuVneDzgtgbbhrk3WXFMT2OWp/ufdMQCEEOw89RtJjPr1DqHeGPffWgPUGWH
wRndZBAMqDHOKvM9lRtSTF8GtJ9b8ss4HnQYGTDQaoBQXAar1b9IcPDJ+1gb2A26
iJZgY5+Tbt6o/l0Mnq5YBi7WkyUlg8ccx4K6YT4BQ45ptD+eZOyoT56gToEa17Oe
/Xh20ba1AcT0iszm8kI59sBAKHiBNc2Iw9Fb4PLrt96enBmnqTA3AF7gqaZAutoz
LsDQXunwioMjVKBIepJ9XogGbiVp5sXUaI5CK/oLJ8YXHG178Cm/2RZXUq8ZqnGz
Oh6nC2w3H7IeR/Un2At9BPWCrZ+ZNa9yNoLcAcqYgGIYcN7LetFWSM307xUwFvPm
2HkzuOxUz6H9+HxGcCCj51MCAwEAAQ==
-----END PUBLIC KEY-----

Je vais aller manger, et je n'ai pas de linux sous la main. Si quelqu'un est motivé pour continuer à partir de là, allez y !
 
Dernière édition :
Je comprends rien a ce que vous dites mais j'ai l'impression de suivre un film d'espions :normal: .

Sinon certains aussi ont l'air d'essayer d'avancer sur opex360 .
 

JoeHell

Habitué
Je connais pas du tout ce truc de magic number ! Je vais creuser pour comprendre ^^

Au boulot j'ai une debian en machine virtuelle, je verrai si je peux tenter quelque chose, mais ce sera plutôt chez moi en soirée.
 

Guicheman

Habitué
Bah en gros, dans la plupart des fichiers, il y au début de l'entête une suite d'octet (généralement 4, soit la taille d'un entier sur la plupart des systèmes), qui permettent de savoir de quel type de fichier il s'agit. C'est généralement choisi de façon arbitraire, de façon à être sur d'identifier le type de fichier uniquement à partir de ça.
C'est ce qu'utilise les système UNIX pour déterminer le type de fichier quand on fait la commande "file" par example.
 

Guicheman

Habitué
Pour le coup, j'ai extrait uniquement ce qui me semblait être l'archive avec un éditeur hexadécimal.
J'ai quand même pas mal de data qui saute au début, mais je pense que si on les laisse, la plupart des application d'ouverture de zip doivent s'en sortir, vu comment est construite une archive.

Et donc oui, on a les commandes qui ont permis de chiffrer les fichiers. Mais il nous manque la clé privée. On peut la retrouver avec le fichier prime.txt je pense.
Je vais voir pour installer une machine virtuelle Linux pour ce week-end.
 
Dernière édition :

floflo530

Nouveau Membre
j'ai inversé le sed pour le fichier prime.txt
prime1:
00:fb:40:dc:44:ba:03:d1:53:42:f7:59:08:e0:f9:
30:05:96:64:4a:de:94:68:5e:08:e2:8c:9a:b1:64:
0c:2f:62:c2:9a:b9:a2:39:82:4b:9e:be:eb:76:ae:
6d:87:21:a3:5e:9e:d9:8d:7e:a4:38:3e:59:09:34:
a5:78:b5:f7:2e:89:5d:5c:37:52:ea:fd:f6:31:cc:
ba:d2:d9:60:e4:45:1d:67:76:d2:1f:f4:9c:9d:c9:
b1:90:45:51:ed:d2:fb:dd:b6:74:b4:99:fb:b1:0a:
d9:b7:c2:be:8b:a4:07:22:0a:8e:3a:36:ff:6d:c1:
1d:63:93:af:cb:4e:c0:47:9f:65:bf:df:e3:f0:5f:
1e:98:61:45:74:ec:36:a7:a5:b1:f1:8d:3d:97:6b:
5a:82:49:09:00:08:0d:9d:c2:74:a4:4e:30:a1:39:
68:2f:22:34:71:13:aa:3b:f2:20:4f:8e:10:eb:d4:
d0:9b:b5:8c:c2:53:5f:9d:71:13:0c:0f:21:b6:6e:
13:39:40:d3:a6:b1:eb:74:ad:dd:0a:29:14:81:b1:
90:ad:e0:53:f0:89:c8:00:fe:dc:ad:56:59:fc:28:
1d:c0:cf:5e:08:c0:16:33:24:a3:52:bb:f3:25:10:
43:c3:73:b8:40:4f:fc:6b:6b:77:bd:5f:22:24:eb:
fb:15

Je pense que c'est le bon car prime1 correspond bien à la commande précédente tapée dans le bash_history
 

edlemort

Nouveau Membre
j'ai inversé le sed pour le fichier prime.txt
prime1:
00:fb:40:dc:44:ba:03:d1:53:42:f7:59:08:e0:f9:
30:05:96:64:4a:de:94:68:5e:08:e2:8c:9a:b1:64:
0c:2f:62:c2:9a:b9:a2:39:82:4b:9e:be:eb:76:ae:
6d:87:21:a3:5e:9e:d9:8d:7e:a4:38:3e:59:09:34:
a5:78:b5:f7:2e:89:5d:5c:37:52:ea:fd:f6:31:cc:
ba:d2:d9:60:e4:45:1d:67:76:d2:1f:f4:9c:9d:c9:
b1:90:45:51:ed:d2:fb:dd:b6:74:b4:99:fb:b1:0a:
d9:b7:c2:be:8b:a4:07:22:0a:8e:3a:36:ff:6d:c1:
1d:63:93:af:cb:4e:c0:47:9f:65:bf:df:e3:f0:5f:
1e:98:61:45:74:ec:36:a7:a5:b1:f1:8d:3d:97:6b:
5a:82:49:09:00:08:0d:9d:c2:74:a4:4e:30:a1:39:
68:2f:22:34:71:13:aa:3b:f2:20:4f:8e:10:eb:d4:
d0:9b:b5:8c:c2:53:5f:9d:71:13:0c:0f:21:b6:6e:
13:39:40:d3:a6:b1:eb:74:ad:dd:0a:29:14:81:b1:
90:ad:e0:53:f0:89:c8:00:fe:dc:ad:56:59:fc:28:
1d:c0:cf:5e:08:c0:16:33:24:a3:52:bb:f3:25:10:
43:c3:73:b8:40:4f:fc:6b:6b:77:bd:5f:22:24:eb:
fb:15

Je pense que c'est le bon car prime1 correspond bien à la commande précédente tapée dans le bash_history

Malheureseusement simplement inverser le sed ne suffit pas, il faut tester toutes les possibilities car les chaine inversees sont presents en plusieurs exemplaires -> certaines etaient peut-etre deja presentes avant le sed.

Il y a en tout 2048 possibilities a tenter pour trouver le bon prime1.txt (2^4 pour le sed de 7f, etc.)
 

johnny tete tournée

Nouveau Membre
Oui c'est ça, mais c'est assez simple; un script python du genre : for a1 in (7f,fb), for a2 in (..,..) for a3 in (..,..), for a4 in (..,..), écrire tous les nombres possibles (c'est un des facteurs premiers p de n=p*q) . Puis les transformer en décimaux; tenter la division du module publique 837....507 par le facteur premier que l'on essaie dans toutes ses formes, dans un logiciel comme pari gp. Dès qu'on tombe sur un nombre premier comme résultat, on a trouvé. Cela dit, une commande ispseudoprime(p) dans pari gp de tous les nombres p possibles nous évite même de tenter toutes les divisions.
 

johnny tete tournée

Nouveau Membre
Ce que edlemort voulait dire, c'est que sed ...7f/fb.... transforme tous les 7f en fb, mais rien ne dit qu'il n'y avait pas déjà de fb dans le nombre...
 
Du coup pour les gens comme moi qui comprends rien a votre language vous en êtes où dans la résolution proche de la fin ? Au milieu ? Au début ?
 
Haut