Cauchemars de RAR bizarres

ѠOOT

Cauchemars de RAR bizarres

par ѠOOT »

Bonjour,

Je prends quelques minutes pour vous raconter l'anecdote de la semaine et comme à l'habitude je vais aller à l'essentiel en vous passant certains détails. Le problème rencontré concernait un code hostile stocké arbitrairement dans un fichier au format RAR. J'ai donc re-créé un exemple inoffensif nommé mak.rar ( d4dbd148371d6012b2e83944f39187fda98eb931 ) afin que nous puissions étudier et manipuler sans danger.

unrar t mak.rar
"Enter password (will not be echoed) for mak.rar:"

L'option "t" permet de tester une archive. L'archive est protégée par un mot de passe.
N'étant pas en mesure de lister le contenu cela indique qu'elle est également cryptée.
Pour les utilisateurs Windows qui utilisent Winrar, le message est plus explicite:
"Entrer le mot de passe pour le fichier crypté:"

Le problème ? Personne ne connait le mot de passe.
Casser un mot de passe demande des ressources (temps, calculs, etc...)

Et le plus ahurissant, c'est que nous ne l'aurions jamais trouvé.
Sans certains éléments, nous n'aurions jamais compris comment reconstruire ce puzzle.
Il est temps de révéler le subterfuge: la structure du RAR n'est autre qu'un camouflage !

"L'entité" génère un faux entête de fichier RAR.
Les drapeaux suivants sont activés:
→ LOCKED
→ HEADERS_ENCRYPTED

D'où le message, archive verrouillée et cryptée.
Ensuite le "mystérieux contenu" est ajouté.
Puis les CRC sont recalculés.

L'exemple inoffensif mak.rar que j'ai fabriqué est extrêmement simple afin que ça soit à la portée du quidam moyen mais le fichier que nous avons observé était OMG... sophistiqué ^^

→ "lirar.py" est un bout de python rédigé à l'arrache qui permet de lire le contenu de l'exemple "mak.rar" ; J'utilise "seek" pour me positionner à l'offset 14h car le block MARKER + le block ARCHIVE du format de fichier RAR font 20 bytes.

Code : Tout sélectionner

#!/usr/bin/env python
import base64,zlib
rar=open('mak.rar','rb')
rar.seek(20)
print base64.b32decode(zlib.decompress(rar.read()))
rar.close()
python lirar.py > mak.mp3

Ou pour écouter directement...
./lirar.py | mplayer -

La morale de l'histoire c'est qu'avant de bourinner en force brute, on a le droit de se concerter entre "amis" et d'utiliser le cluster de neurones disponibles.
Malekal_morte
Messages : 114127
Inscription : 10 sept. 2005 13:57

Re: Cauchemars de RAR bizarres

par Malekal_morte »

Si je comprends bien, c'est un "faux" RAR qui se comporte comme tel en affichant un message "blalba verrouille" qui peux permettre de stocker du code malicieux et être executé comme tu le fais avec ton script python ?
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas !
Comment protéger son PC des virus
Windows 11 : Compatibilité, Configuration minimale requise, télécharger ISO et installer Windows 11

Comment demander de l'aide sur le forum
Partagez malekal.com : n'hésitez pas à partager les articles qui vous plaisent sur la page Facebook du site.
ѠOOT

Re: Cauchemars de RAR bizarres

par ѠOOT »

Bonjour,

Tu peux voir ainsi la méthode utilisée, sous sa forme la plus simple.
  • Sujets similaires
    Réponses
    Vues
    Dernier message

Revenir à « Tech, Tips & Tricks »