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
terrier — Terrier est un outil d'analyse d'images et de conteneurs qui peut être utilisé pour scanner des images et des conteneurs afin d'identifier et de vérifier la présence de fichiers spécifiques en fonction de leurs hachages. | Kitploit
Outils/GitHubGitHub/heroku/terrier
Sécurité des ConteneursAnalyse des VulnérabilitésAnalyse de HachageSécurité de la Chaîne Logistique
GitHubheroku/terrier

terrier

Terrier est un outil d'analyse d'images et de conteneurs qui peut être utilisé pour scanner des images et des conteneurs afin d'identifier et de vérifier la présence de fichiers spécifiques en fonction de leurs hachages.

Voir le dépôt
22715il y a 2 moisVé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
Logo Terrier

Terrier

Terrier est un outil d'analyse d'images et de conteneurs qui peut être utilisé pour scanner des images OCI et des conteneurs afin d'identifier et de vérifier la présence de fichiers spécifiques en fonction de leurs empreintes. Une description détaillée de Terrier est disponible sur le blog d'Heroku, à l'adresse https://blog.heroku.com/terrier-open-source-identifying-analyzing-containers.

Installation

Binaires

Pour les instructions d'installation à partir des binaires, veuillez consulter la page des versions.

Via Go

root@kitploit:~
$ go get github.com/heroku/terrier

Compilation à partir des sources

Via Go

root@kitploit:~
$ go build

ou

root@kitploit:~
$ make all

Utilisation

root@kitploit:~
$ ./terrier -h
Utilisation de ./terrier:
  -cfg string
        Charger la configuration depuis le fichier yaml fourni (par défaut "cfg.yml")

Une archive TAR OCI de l'image à analyser est requise ; elle est fournie à Terrier via la valeur "Image" dans le fichier cfg.yml.

La commande Docker suivante peut être utilisée pour convertir une image Docker en archive TAR pouvant être analysée par Terrier.

root@kitploit:~
# docker save id_image -o image.tar
root@kitploit:~
$ ./terrier
[+] Chargement de la configuration : cfg.yml
[+] Analyse de l'image
[+] Source de l'image Docker : image.tar
[*] Inspection de la couche : 05c3c2c60920f68b506d3c66e0f6148b81a8b0831388c2d61be5ef02190bcd1f
[!] Tous les composants ont été identifiés et vérifiés : (493/493)

Exemple de configuration YML

Terrier analyse du YAML ; voici un exemple de configuration.

root@kitploit:~
# CECI EST UN EXEMPLE DE CONFIGURATION, À MODIFIER SELON VOS BESOINS

mode: image
image: image.tar
# mode: container
# path: merged
# verbose: true
# veryverbose: true

files:
  - name: '/usr/bin/curl'
    hashes:
      - hash: '2353cbb7b47d0782ba8cdd9c7438b053c982eaaea6fbef8620c31a58d1e276e8'
      - hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aaa'
      - hash: '9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96'
      - hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'
  - name: '/usr/bin/go'
    hashes:
      - hash: '2353cbb7b47d0782ba8cdd9c7438b053c982eaaea6fbef8620c31a58d1e276e8'

# DÉCOMMENTER POUR ANALYSER DES EMPREINTES
#     hashes:
#       - hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'
#       - hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aa'
#       - hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41aa'

Que fait Terrier ?

Terrier est un outil en ligne de commande qui vous permet de :

  • Scanner une image OCI pour vérifier la présence d'un ou plusieurs fichiers correspondant à une ou plusieurs empreintes SHA256 fournies.
  • Scanner un conteneur en cours d'exécution pour vérifier la présence d'un ou plusieurs fichiers correspondant à une ou plusieurs empreintes SHA256 fournies.

À quoi sert Terrier ?

Scénario 1

Terrier peut être utilisé pour vérifier si une image OCI spécifique utilise un binaire particulier, ce qui est utile dans un scénario de vérification de la chaîne d'approvisionnement. Par exemple, nous pouvons vouloir vérifier qu'une image Docker spécifique utilise une ou plusieurs versions spécifiques de cURL. Dans ce cas, Terrier reçoit les empreintes SHA256 des binaires de confiance.

Un exemple de fichier YAML pour ce scénario pourrait ressembler à ceci :

root@kitploit:~
mode: image
# verbose: true
# veryverbose: true
image: golang1131.tar

files:
  - name: '/usr/local/bin/analysis.sh'
    hashes:
       - hash: '9adc0bf7362bb66b98005aebec36691a62c80d54755e361788c776367d11b105'
  - name: '/usr/bin/curl'
    hashes:
       - hash: '23afbfab4f35ac90d9841a6e05f0d1487b6e0c3a914ea8dab3676c6dde612495'
  - name: '/usr/local/bin/staticcheck'
    hashes:
       - hash: '73f89162bacda8dd2354021dc56dc2f3dba136e873e372312843cd895dde24a2'

Scénario 2

Terrier peut être utilisé pour vérifier la présence d'un fichier ou de plusieurs fichiers particuliers dans une image OCI en fonction d'un ensemble d'empreintes fournies. Cela peut être utile pour vérifier si une image OCI contient un fichier malveillant ou un fichier qui doit être identifié.

Un exemple de fichier YAML pour ce scénario pourrait ressembler à ceci :

root@kitploit:~
mode: image
# verbose: true
# veryverbose: true
image: alpinetest.tar
hashes:
  - hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521f'
  - hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2'
  - hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41'
  - hash: '9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96'

Scénario 3

Terrier peut être utilisé pour vérifier les composants de conteneurs pendant l'exécution en analysant le contenu de /var/lib/docker/overlay2/.../merged. Un exemple de fichier YAML pour ce scénario pourrait ressembler à ceci :

root@kitploit:~
mode: container
verbose: true
# veryverbose: true
# image: latestgo13.tar
path: merged

files:
  - name: '/usr/local/bin/analysis.sh'
    hashes:
       - hash: '9adc0bf7362bb66b98005aebec36691a62c80d54755e361788c776367d11b105'
  - name: '/usr/local/go/bin/go'
    hashes:
       - hash: '23afbfab4f35ac90d9841a6e05f0d1487b6e0c3a914ea8dab3676c6dde612495'
  - name: '/usr/local/bin/staticcheck'
    hashes:
       - hash: '73f89162bacda8dd2354021dc56dc2f3dba136e873e372312843cd895dde24a2'
  - name: '/usr/local/bin/gosec'
    hashes:
       - hash: 'e7cb8304e032ccde8e342a7f85ba0ba5cb0b8383a09a77ca282793ad7e9f8c1f'
  - name: '/usr/local/bin/errcheck'
    hashes:
       - hash: '41f725d7a872cad4ce1f403938937822572e0a38a51e8a1b29707f5884a2f0d7'
  - name: '/var/lib/dpkg/info/apt.postrm'
    hashes:
       - hash: '6a8f9af3abcfb8c6e35887d11d41a83782b50f5766d42bd1e32a38781cba0b1c'

Utilisation

Exemple 1

Terrier est un outil en ligne de commande et utilise le YAML. Un exemple de configuration YAML :

root@kitploit:~
mode: image
# verbose: true
# veryverbose: true
image: alpinetest.tar
files:
  - name: '/usr/local/go/bin/go'
    hashes:
      - hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521f'
      - hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aaa'
      - hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41aaa'
      - hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'
  - name: '/usr/bin/delpart'
    hashes:
      - hash: '9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96aaa'
  - name: '/usr/bin/stdbuf'
    hashes:
      - hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'
      - hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aa'
      - hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41aa'

Dans l'exemple ci-dessous, Terrier a été configuré via le YAML ci-dessus pour vérifier plusieurs fichiers.

root@kitploit:~
$./terrier
[+] Chargement de la configuration : cfg.yml
[+] Analyse de l'image
[+] Source de l'image Docker : alpinetest.tar
[*] Inspection de la couche : 05c3c2c60920f68b506d3c66e0f6148b81a8b0831388c2d61be5ef02190bcd1f
[*] Inspection de la couche : 09c25a178d8a6f8b984f3e72ca5ec966215b24a700ed135dc062ad925aa5eb23
[*] Inspection de la couche : 36351e8e1da92268d40245cfbcd499a1173eeacc23be428386c8fc0a16f0b10a
[*] Inspection de la couche : 7224ca1e886eeb7e63a9e978b1a811ed52f4a53ccb65f7c510fa04a0d1103fdf
[*] Inspection de la couche : 7a2e464d80c7a1d89dab4321145491fb94865099c59975cfc840c2b8e7065014
[*] Inspection de la couche : 88a583fe02f250344f89242f88309c666671042b032411630de870a111bea971
[*] Inspection de la couche : 8db14b6fdd2cf8b4c122824531a4d85e07f1fecd6f7f43eab7f2d0a90d8c4bf2
[*] Inspection de la couche : 9196e3376d1ed69a647e728a444662c10ed21feed4ef7aaca0d10f452240a09a
[*] Inspection de la couche : 92db9b9e59a64cdf486203189d02acff79c3360788b62214a49d2263874ee811
[*] Inspection de la couche : bc4bb4a45da628724c9f93400a9149b2dd8a5d437272cb4e572cfaec64512d98
[*] Inspection de la couche : be7d600e4e8ed3000e342ef6482211350069d935a14aeff4d9fc3289e1426ed3
[*] Inspection de la couche : c4cec85dfa44f0a8856064922cff1c39b872b506dd002e33664d11a80f75a149
[*] Inspection de la couche : c998d6f023b7b9e3c186af19bcd1c2574f0d01b943077281ac5bd32e02dc57a5
[!] Tous les composants ont été identifiés et vérifiés : (493/493)

Terrier définit son code de retour en fonction du résultat des tests. Dans le cas du test ci-dessus, le code de retour sera "0", ce qui indique un test réussi car une instance de chaque composant fourni a été identifiée et vérifiée.

Exemple 2

Terrier est configuré pour identifier tout fichier dans l'image fournie correspondant aux empreintes SHA256 spécifiées. Fichier YAML cfg.yml

root@kitploit:~
mode: image
# verbose: true
# veryverbose: true
image: 1070caa1a8d89440829fd35d9356143a9d6185fe7f7a015b992ec1d8aa81c78a.tar
hashes:
  - hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521f'
  - hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2'
  - hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41'
  - hash: '9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96'

Exécution de Terrier.

root@kitploit:~
./terrier
[+] Chargement de la configuration : cfg.yml
[+] Source de l'image Docker : golang.tar
[*] Inspection de la couche : 1070caa1a8d89440829fd35d9356143a9d6185fe7f7a015b992ec1d8aa81c78a
[*] Inspection de la couche : 414833cdb33683ab8607565da5f40d3dc3f721e9a59e14e373fce206580ed40d
[*] Inspection de la couche : 6bd93c6873c822f793f770fdf3973d8a02254a5a0d60d67827480797f76858aa
[*] Inspection de la couche : c40c240ae37a2d2982ebcc3a58e67bf07aeaebe0796b5c5687045083ac6295ed
[*] Inspection de la couche : d2850df0b6795c00bdce32eb9c1ad9afc0640c2b9a3e53ec5437fc5539b1d71a
[*] Inspection de la couche : f0c2fe7dbe3336c8ba06258935c8dae37dbecd404d2d9cd74c3587391a11b1af
        [!] Fichier trouvé 'f0c2fe7dbe3336c8ba06258935c8dae37dbecd404d2d9cd74c3587391a11b1af/usr/bin/curl' avec l'empreinte : 9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96
[*] Inspection de la couche : f2d913644763b53196cfd2597f21b9739535ef9d5bf9250b9fa21ed223fc29e3
echo $?
1

Exemple 3

Terrier est configuré pour analyser et vérifier le contenu du répertoire merged du conteneur situé à "merged", où merged se trouve probablement dans /var/lib/docker/overlay2/..../merged. Un exemple de fichier YAML pour ce scénario pourrait ressembler à ceci :

root@kitploit:~
mode: container
verbose: true
# veryverbose: true
# image: latestgo13.tar
path: merged

files:
  - name: '/usr/local/bin/analysis.sh'
    hashes:
       - hash: '9adc0bf7362bb66b98005aebec36691a62c80d54755e361788c776367d11b105'
  - name: '/usr/local/go/bin/go'
    hashes:
       - hash: '23afbfab4f35ac90d9841a6e05f0d1487b6e0c3a914ea8dab3676c6dde612495'
  - name: '/usr/local/bin/staticcheck'
    hashes:
       - hash: '73f89162bacda8dd2354021dc56dc2f3dba136e873e372312843cd895dde24a2'
  - name: '/usr/local/bin/gosec'
    hashes:
       - hash: 'e7cb8304e032ccde8e342a7f85ba0ba5cb0b8383a09a77ca282793ad7e9f8c1f'
  - name: '/usr/local/bin/errcheck'
    hashes:
       - hash: '41f725d7a872cad4ce1f403938937822572e0a38a51e8a1b29707f5884a2f0d7'
  - name: '/var/lib/dpkg/info/apt.postrm'
    hashes:
       - hash: '6a8f9af3abcfb8c6e35887d11d41a83782b50f5766d42bd1e32a38781cba0b1c'

Exécution de Terrier pour analyser le conteneur en cours d'exécution.

root@kitploit:~
[+] Chargement de la configuration : cfg.yml
[+] Analyse du conteneur
[!] Instance correspondante de '/usr/local/bin/analysis.sh' trouvée dans : merged/usr/local/bin/analysis.sh avec l'empreinte : 9adc0bf7362bb66b98005aebec36691a62c80d54755e361788c776367d11b105
[!] Instance correspondante de '/usr/local/bin/errcheck' trouvée dans : merged/usr/local/bin/errcheck avec l'empreinte : 41f725d7a872cad4ce1f403938937822572e0a38a51e8a1b29707f5884a2f0d7
[!] Instance correspondante de '/usr/local/bin/gosec' trouvée dans : merged/usr/local/bin/gosec avec l'empreinte : e7cb8304e032ccde8e342a7f85ba0ba5cb0b8383a09a77ca282793ad7e9f8c1f
[!] Instance correspondante de '/usr/local/bin/staticcheck' trouvée dans : merged/usr/local/bin/staticcheck avec l'empreinte : 73f89162bacda8dd2354021dc56dc2f3dba136e873e372312843cd895dde24a2
[!] Instance correspondante de '/usr/local/go/bin/go' trouvée dans : merged/usr/local/go/bin/go avec l'empreinte : 23afbfab4f35ac90d9841a6e05f0d1487b6e0c3a914ea8dab3676c6dde612495
[!] Instance correspondante de '/var/lib/dpkg/info/apt.postrm' trouvée dans : merged/var/lib/dpkg/info/apt.postrm avec l'empreinte : 6a8f9af3abcfb8c6e35887d11d41a83782b50f5766d42bd1e32a38781cba0b1c
[!] Tous les composants ont été identifiés et vérifiés : (6/6)

Intégration avec les CI

Terrier a été conçu pour aider à prévenir les attaques sur la chaîne d'approvisionnement. Pour utiliser Terrier avec des CI telles que Github Actions ou CircleCI, les exemples de configuration suivants peuvent être utiles.

Exemple CircleCI

config.yml

root@kitploit:~
version: 2
jobs:
 build:
   machine: true
   steps:
     - checkout
     - run:
        name: Construire l'image Docker
        command: |
              docker build -t builditall .
     - run:
        name: Sauvegarder l'image Docker localement
        command: |
              docker save builditall -o builditall.tar
     - run:
        name: Vérifier les binaires de l'image Docker
        command: |
              ./terrier_linux_amd64

Fichier cfg.yml de Terrier

root@kitploit:~
mode:image
image: builditall.tar
files:
- name: '/bin/wget'
 hashes:
   - hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521f'
   - hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2a'
   - hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41a'
- name: '/sbin/sulogin'
 hashes:
   - hash: '9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96aaa'

Exemple Github Actions

go.yml

root@kitploit:~
name: Go
on: [push]
jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:

    - name: Récupérer le code
      uses: actions/checkout@master
    - name: Construire l'image Docker
      run: |
        docker build -t builditall .
    - name: Sauvegarder l'image Docker localement
      run: |
        docker save builditall -o builditall.tar
    - name: Vérifier les binaires de l'image Docker
      run: |
        ./terrier_linux_amd64

Fichier cfg.yml de Terrier

root@kitploit:~
mode: image
image: builditall.tar
files:
- name: '/bin/wget'
 hashes:
   - hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521f'
   - hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2a'
   - hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41a'
- name: '/bin/sbin/sulogin'
 hashes:
   - hash: '9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96aaa'

Conversion des empreintes SHA256 au format de fichier de configuration Terrier

Parfois, les empreintes SHA256 sont produites par d'autres outils dans le format suivant :

root@kitploit:~
6a8f9af3abcfb8c6e35887d11d41a83782b50f5766d42bd1e32a38781cba0b1c  ./var/lib/dpkg/info/apt.postrm
6374f7996297a6933c9ccae7eecc506a14c85112bf1984c12da1f975dab573b2  ./var/lib/dpkg/info/mawk.postinst
fd72e78277680d02dcdb5d898fc9e3fed00bf011ccf31deee0f9e5f4cf299055  ./var/lib/dpkg/info/lsb-base.preinst
fd72e78277680d02dcdb5d898fc9e3fed00bf011ccf31deee0f9e5f4cf299055  ./var/lib/dpkg/info/lsb-base.postrm
8a278d8f860ef64ae49a2d3099b698c79dd5184db154fdeaea1bc7544c2135df  ./var/lib/dpkg/info/debconf.postrm
1e6edefb6be6eb6fe8dd60ece5544938197b2d1d38a2d4957c069661bc2591cd  ./var/lib/dpkg/info/base-files.prerm
198c13dfc6e7ae170b48bb5b997793f5b25541f6e998edaec6e9812bc002915f  ./var/lib/dpkg/info/passwd.postinst

Le format ci-dessus contient les données nécessaires pour Terrier mais dans un format incorrect. Nous avons inclus un script appelé convertSHA.sh qui peut être utilisé pour convertir un fichier contenant les chemins de fichiers et les valeurs d'empreintes comme vu ci-dessus en un fichier de configuration Terrier valide.

Cela peut être vu dans l'exemple suivant :

root@kitploit:~
# cat hashes-SHA256.txt
6a8f9af3abcfb8c6e35887d11d41a83782b50f5766d42bd1e32a38781cba0b1c  ./var/lib/dpkg/info/apt.postrm
6374f7996297a6933c9ccae7eecc506a14c85112bf1984c12da1f975dab573b2  ./var/lib/dpkg/info/mawk.postinst
fd72e78277680d02dcdb5d898fc9e3fed00bf011ccf31deee0f9e5f4cf299055  ./var/lib/dpkg/info/lsb-base.preinst
fd72e78277680d02dcdb5d898fc9e3fed00bf011ccf31deee0f9e5f4cf299055  ./var/lib/dpkg/info/lsb-base.postrm
8a278d8f860ef64ae49a2d3099b698c79dd5184db154fdeaea1bc7544c2135df  ./var/lib/dpkg/info/debconf.postrm
1e6edefb6be6eb6fe8dd60ece5544938197b2d1d38a2d4957c069661bc2591cd  ./var/lib/dpkg/info/base-files.prerm
198c13dfc6e7ae170b48bb5b997793f5b25541f6e998edaec6e9812bc002915f  ./var/lib/dpkg/info/passwd.postinst

# ./convertSHA.sh hashes-SHA256.txt output.yml
Conversion de hashes-SHA256.txt en YML Terrier : output.yml

# cat output.yml
mode: image
#mode: container
image: image.tar
#path: path/to/container/merged
#verbose: true
#veryverbose: true
files:
  - name: '/var/lib/dpkg/info/apt.postrm'
    hashes:
       - hash: '6a8f9af3abcfb8c6e35887d11d41a83782b50f5766d42bd1e32a38781cba0b1c'
  - name: '/var/lib/dpkg/info/mawk.postinst'
    hashes:
       - hash: '6374f7996297a6933c9ccae7eecc506a14c85112bf1984c12da1f975dab573b2'

Télécharger l’outil