Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
TriforceOpenBSDFuzzer — Fuzzing des appels système d'OpenBSD amd64 à l'aide de TriforceAFL (c.-à-d. AFL et QEMU) | Kitploit
Outils/GitHubGitHub/nccgroup/triforceopenbsdfuzzer
Analyse Dynamique (Sandboxing)Analyse des VulnérabilitésFuzzing
GitHubnccgroup/triforceopenbsdfuzzer

TriforceOpenBSDFuzzer

Fuzzing des appels système d'OpenBSD amd64 à l'aide de TriforceAFL (c.-à-d. AFL et QEMU)

Voir le dépôt
4718il y a 8 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

TriforceOpenBSDSyscallFuzzer

  • 20160825
  • https://github.com/nccgroup/TriforceOpenBSDFuzzer
  • Jesse Hertz [email protected]
  • Tim Newsham [email protected]

Ceci est un ensemble de fichiers utilisés pour effectuer du fuzzing d'appels système sur OpenBSD amd64 avec TriforceAFL (c'est-à-dire AFL et QEMU). Pour l'utiliser, vous aurez besoin de TriforceAFL (https://github.com/nccgroup/TriforceAFL), de la distribution FlashRD 2.0 (http://www.nmedia.net/flashrd/), d'une machine OpenBSD pour construire le pilote et une image disque, et d'une machine Linux comme hôte pour exécuter le fuzzer (d'autres hôtes de fuzzing peuvent fonctionner, mais nous n'avons exécuté TriforceAFL que sur un hôte Linux, plus précisément Debian/Ubuntu).

Nous allons tout faire en tant que root sur la machine OpenBSD, car cette machine sert uniquement à amorcer notre environnement. Si vous avez déjà une machine OpenBSD, n'hésitez pas à en faire moins en tant que root. Si vous êtes un utilisateur OpenBSD expérimenté, une grande partie de ceci sera trop verbeuse. Bref, passons à la suite !

Sur la machine OpenBSD :

root@kitploit:~
export PKG_PATH=http://mirrors.sonic.net/pub/OpenBSD/$(uname -r)/packages/$(uname -m)/
pkg_add git
pkg_add python # pick python 2.7

Ensuite, vous devrez récupérer les sources d'OpenBSD, ainsi que les sources du noyau, puis les décompresser :

root@kitploit:~
cd ~
ftp http://mirrors.sonic.net/pub/OpenBSD/5.9/src.tar.gz 
ftp http://mirrors.sonic.net/pub/OpenBSD/5.9/sys.tar.gz
cd /usr/src; tar -xzpf $HOME/src.tar.gz; tar -xzpf $HOME/sys.tar.gz;

Si vous avez déjà un CD d'installation, pas besoin de récupérer les fichiers suivants (ils se trouveront dans $CDMOUNT/5.9/amd64/*.tgz). Vous aurez seulement besoin de définir $DISTDIR correctement. Sinon...

root@kitploit:~
cd ~
ftp http://mirrors.sonic.net/pub/OpenBSD/5.9/amd64/base59.tgz
ftp http://mirrors.sonic.net/pub/OpenBSD/5.9/amd64/man59.tgz
ftp http://mirrors.sonic.net/pub/OpenBSD/5.9/amd64/comp59.tgz
ftp http://mirrors.sonic.net/pub/OpenBSD/5.9/amd64/game59.tgz
export DISTDIR=~

Nous avons maintenant les dépendances nécessaires installées, et nous pouvons commencer à construire.

Entrez dans le répertoire TriforceOpenBSDFuzzer. Il y a des répertoires séparés contenant les fichiers OpenBSD (targ) et les fichiers de l'hôte de fuzzing (fuzzHost).

Compilation du pilote et des entrées

Sur un hôte OpenBSD, entrez dans le répertoire targ et exécutez make. Vous devriez également construire les fichiers d'entrée depuis ce répertoire

root@kitploit:~
    mkdir inputs
    ./gen.py                   # build simple tests
    ./genTempl.py templ.txt    # build most syscall tests
    ./gen2.py                  # build complex syscall tests
    tar -czf ../inputs.tgz inputs

Construction de l'image disque

Ensuite, vous devrez construire une image disque avec le pilote, en utilisant la distribution FlashRD (http://www.nmedia.net/flashrd/). Sur un hôte OpenBSD (avec les sources dans /usr/src et les sources du noyau dans /usr/src/sys de la section précédente), nous allons maintenant faire plusieurs choses :

  • extraire flashrd-2.0
  • patcher flashrd
  • créer un répertoire obsd et le remplir !
root@kitploit:~
    cd ~ #make sure this is on your /home parition, you will need significant disk space for this
    ftp http://www.nmedia.net/flashrd/flashrd-2.0.tar.gz
    tar xzf flashrd-2.0.tar.gz
    cd flashrd-2.0
    patch -p1 < $FUZZER/image-diff.txt #set $FUZZER to where you cloned TriforceOpenBSDFuzzer
    mkdir obsd
    cd obsd

    tar xzpf $DISTDIR/base59.tgz
    tar xzpf $DISTDIR/man59.tgz
    tar xzpf $DISTDIR/comp59.tgz
    tar xzpf $DISTDIR/game59.tgz
    tar xzpf /var/sysmerge/etc.tgz
    cp $FUZZER/image-etc-rc etc/rc
    cp $FUZZER/targ/inputs/ex1 root/ex1
    cd ..

Vous pouvez maintenant créer une image en exécutant ces commandes :

root@kitploit:~
    cp $FUZZER/targ/driver obsd/bin/driver
    ./flashrd obsd
    mv flashimg* $FUZZER/flashimg.bin
    mv bsd.gdb $FUZZER/bsd.gdb

Conservez une copie de flashimg.bin et de bsd.gdb. Vous en aurez besoin sur l'hôte de fuzzing.

Vous souhaiterez peut-être créer une seconde image pour le débogage, qui vous permet d'exécuter un shell interactif. Modifiez obsd/etc/rc et remplacez /bin/driver -v par /bin/sh -i, puis créez une seconde image. Ensuite, nous conserverons une copie de flashimg-sh.bin et bsd-sh.gdb pour plus tard.

root@kitploit:~
    ./flashrd obsd
    mv flashimg* $FUZZER/flashimg-sh.bin
    mv bsd.gdb $FUZZER/bsd-sh.gdb

Nous pouvons maintenant quitter la machine OpenBSD et revenir à notre hôte de fuzzing (assurez-vous de copier $FUZZER, afin de pouvoir l'utiliser sur l'hôte de fuzzing).

Fuzzing

Nous exécutons le fuzzer sur un hôte Linux (il devrait fonctionner sur tout hôte où TriforceAFL se compile et s'exécute, mais les résultats peuvent varier, surtout sur un hôte non Linux). Sur l'hôte de fuzzing, installez TriforceAFL dans ../TriforceAFL. Copiez flashimg*.bin et bsd*.gdb dans le répertoire fuzzhost, puis décompressez les entrées dans le répertoire fuzzHost :

root@kitploit:~
    cd TriforceOpenBSDFuzzer # this should now have the files we made on the BSD host in it
    cp flashimg* fuzzHost/
    cp bsd* fuzzHost/
    cd fuzzhost
    tar xzf ../inputs.tgz

Nous sommes maintenant prêts à fuzzer ! Entrez dans le répertoire fuzzHost et lancez le fuzzer avec ./runFuzz -M M0.

Notez que le script runFuzz attend un nom de maître ou d'esclave, car il fonctionne toujours en mode maître/esclave. Consultez le script runFuzz pour plus d'informations sur son utilisation.

Reproduction

Pour reproduire des cas de test (comme des crashes), exécutez sur l'hôte de fuzzing :

root@kitploit:~
  ./runTest inputs/ex1
  ./runTest outputs/crashes/id*

Vous pouvez également exécuter le pilote hors de l'environnement émulé avec l'option -t, avec une journalisation verbeuse via -vv et sans réellement effectuer les appels système avec -x. Par exemple, sur l'hôte OpenBSD, exécutez :

root@kitploit:~
  ./driver -tvvx < inputs/ex1
  ktrace ./driver -t < inputs/ex1

Il est parfois utile de pouvoir démarrer le noyau et d'exécuter des tests de manière interactive. Vous pouvez exécuter ./runSh pour démarrer dans un shell interactif.

Vous voudrez probablement ajouter des fichiers supplémentaires (comme des cas de test) au fichier flashimg-sh.bin pour les tests. Pour ce faire, sur l'hôte OpenBSD, copiez les fichiers supplémentaires dans flashrd-2.0/obsd/root et reconstruisez l'image flash. Transférez les fichiers vers votre hôte de fuzzing et exécutez à nouveau runSh. Vous trouverez les fichiers supplémentaires dans le répertoire /root. Vous pouvez également ajouter des fichiers à l'image flash après sa création, en tant que root sur l'hôte OpenBSD :

root@kitploit:~
    vnconfig vnd0 ./flashimg.bin
    mount /dev/vnd0a /mnt
    cp file /mnt
    umount /mnt
    vnconfig -u vnd0

Les fichiers ajoutés ici apparaîtront dans /flash au démarrage de l'image.

Débogage

Les correctifs appliqués plus tôt à la distribution flashrd activeront le débogage et désactiveront l'optimisation lors de la compilation du noyau. Cela rend le débogage beaucoup plus facile.

Pour déboguer le noyau depuis le fuzzHost, faites une copie de /usr/src/sys depuis votre hôte OpenBSD, puis copiez bsd-sh.gdb dans sys/x/x/x/x. Dans une fenêtre, exécutez ./runSh et, une fois le système démarré, exécutez

root@kitploit:~
    cd sys
    mkdir -p x/x/x/x
    cd x/x/x/x
    cp $FUZZER/bsd-sh.gdb .
    gdb -ex "target remote :1234" ./bsd-sh.gdb
Télécharger l’outil