Aller au contenu principal

Travail 3 : sécuriser une application

Nous te fournissons une application qui implante le hachage de mot de passe et l'encryption.

Toutefois, nous allons voir que c'est fait plus ou moins bien. Ton but va être de corriger:

  • la technique d'encryption
  • le hachage qui a été choisi

Finalement, nous allons voir que l'application est exposée aux injections SQL. Ici aussi tu devras corriger.

Format de remise:

Tu vois avoir un lien GitHub ClassRoom pour remettre ton travail. Tu devras remettre:

  1. un fichier rapport.md de rapport où tu expliqueras les différentes attaques et les solutions que tu as implantées
  2. une version modifiée et corrigée de l'application qui corrige les failles identifiées

IMPORTANT : SI TU NE REMETS PAS LE PROJET consoleApp MODIFIÉ, TU AURAS 0 SUR LES CORRECTIFS.

Récupération de l'exécutable et test

L'application en C# est fournie. Tu trouveras l'exécutable :

Tu devras mener les attaques uniquement avec le .exe et en imaginant que tu n'as pas accès au code source.

L'application requiert un login et un password pour s’authentifier puis permet de

  • rentrer ses revenus de l’année
  • produire un calcul des impôts à payer pour chaque année

La fuite de la base de données

Normalement, l'application utilise un serveur de base de données sécurisé pour stocker les informations.

Cependant, l'application se rabat sur une BD locale si le serveur n'est pas disponible.

Cela va te permettre d'accéder à la base de données et d'essayer d'accéder au maximum d'informations possible.

Chercher où est la BD

En utilisant des techniques vues en cours, il faut que tu détermines où le .exe stocke la BD locale.

Lire la BD avec une application externe

Tu commenceras par tenter le localiser la base de données fichier et trouver une approche pour la lire.

Attaque 1: BD fuitée et mot de passe

Tu dois montrer que tu arrives à retrouver les mots de passe de plusieurs utilisateurs.

  • Ta méthode NE DOIT PAS reposer sur la connaissance du code source.
  • Pour ton attaque,
    • Tu peux te baser uniquement sur la base de données fuitée

Tu dois ensuite implanter le hachage avec bcrypt dans l'application et montrer que ta technique précédente ne fonctionne plus.

Les modifications devront être apportées:

  • à la création d'un compte
  • à la connexion pour vérifier le mot de passe

Attaque 2: BD fuitée et encryption

Actuellement le NAS est «sécurisé» par une méthode d'encryption.

Tu dois chercher une méthode pour décrypter les NAS des comptes des premiers ministres.

  • Ta méthode NE DOIT PAS reposer sur la connaissance du code source.
  • Pour ton attaque,
    • Tu peux te baser uniquement sur la base de données fuitée

En correctif, tu devras ensuite implanter un algo d'encryption classique de ton choix dans l'application et montrer que ta technique précédente ne fonctionne plus (AES par exemple).

Attaque 3 Injection SQL

L'application a au moins un point de vulnérabilité à une injection SQL.

Tu devras faire la démonstration d'une attaque par injection SQL. Si tu démontres une attaque qui exécute n'importe quelle commande SQL, tu gagnes un point.

Si tu arrives à changer le mot de passe de Justin Trudeau, tu gagnes un point en plus.

Vérification post correctif

Tu dois t'assurer que ton application fonctionne toujours. Tu peux par exemple vérifier la séquence suivante:

  1. te créer un compte
  2. t'ajouter une année de revenu
  3. arrêter l'application
  4. redémarrer l'application
  5. te connecter avec ton compte
  6. regarder tes revenus

Pour qu'un correctif soit valide, il faut que l'application fonctionne toujours après le correctif.

Barème

Hachage

2 points pour l'attaque sur les mots de passe dans le rapport avec toutes les étapes et copies d'écran

4 points pour chaque correctif implanté via

  • une modification au code source
  • une démonstration que l'attaque ne fonctionne plus dans le rapport avec toutes les étapes et copies d'écran

Encryption

2 points pour l'attaque sur l'encryption dans le rapport avec toutes les étapes et copies d'écran

4 points pour le correctif de l'encryption

  • une modification au code source
  • une démonstration que l'attaque ne fonctionne plus dans le rapport avec toutes les étapes et copies d'écran

Injection SQL

1 point pour l'attaque par injection SQL de base dans le rapport avec toutes les étapes et copies d'écran

1 point pour l'attaque qui change le mot de passe de Justin Trudeau dans le rapport avec toutes les étapes et copies d'écran

4 points pour le correctif de l'injection SQL

  • une modification au code source
  • une démonstration que l'attaque ne fonctionne plus dans le rapport avec toutes les étapes et copies d'écran

Modèle de rapport

# Rapport TP3 de Cybersec NOM PRENOM

## Attaque 1: BD fuitée et mot de passe

1. Etape 1 + copie d'écran
2. Etape 2 + copie d'écran
3. etc.

### Correctif implanté

Description du correctif.

Preuve que l'attaque ne fonctionne plus avec étapes + copie d'écran


## Attaque 2: BD fuitée et encryption

1. Etape 1 + copie d'écran
2. Etape 2 + copie d'écran
3. etc.

### Correctif implanté

Court descriptif du correctif et lien vers le(s) commit(s).

Preuve que l'attaque ne fonctionne plus avec étapes + copie d'écran

## Attaque 3 Injection SQL

1. Etape 1 + copie d'écran
2. Etape 2 + copie d'écran
3. etc.

### Correctif implanté

Description du correctif.

Preuve que l'attaque ne fonctionne plus avec étapes + copie d'écran