Le slack (space) est l'espace libre d'un cluster.
Les systèmes de fichiers de Unix et de Windows utilisent respectivement des clusters mutliples de 4 et de 32 Ko.
Si la taille du fichier à enregistrer exige moins de place que ce qui lui est attribuée, alors cette place restante est appellé le slack space.
C'est grâce à ce slack que l'on peut dissimuler, plus ou
moins bien, certaines donnés.
Comme l'auront remarqué certains, la taille du bloc(cluster) sous GNU/Linux n'est pas bien grande, donc la taille du slack non plus. Par conséquent, si vous souhaitez dissimuler de grandes chaînes de caractères, il faudra plusieurs fichiers. Heureusement pour vous, il existe des programmes permettant de grouper le slack space d'un répertoire complet.
Dans cet article, nous allons nous pencher sur l'utilisation deux programmes permettant de manipuler le slack space :
bmap
(permet de manipuler le slack d'un seul fichier) et Slacker.
Nous verrons tout d'abord l'utilité de Bmap puis celle de Slacker.
Ce programme nous permet de manipuler le slack d'un seul fichier.
Bmap contient cinq options intéressantes :
bmap -mode slackbytes [nom_du_fichier] #permet de voir la taille du slack space disponible sur un fichier
Pour l'utilisation de Bmap (de même que pour celle de Slacker, que nous allons voir après), il faut être en super utilisateur (root) pour pouvoir modifier le slack d'un fichier.
bmap -wipeslack [nom_du_fichier] #permet d'effacer l'espace slack d'un fichier
bmap -checkslack [nom_du_fichier] #permet de vérifier s'il y a du slack space dans un fichier
bmap -putslack [nom_du_fichier] #permet d'écrire une chaîne de caractères dans le slack d'un fichier
bmap -slack [nom_du_fichier] #permet de récupérer ce qui contenu dans le slack d'un fichier
Voici un exemple d'utilisation de bmap:
[N-0-X@localhost slack_noxistes]$ ls -all
Allons dans le répertoire de bmap pour vérifier le slack de certains de ces fichiers:
. .. fichier_slack slack_libre1 slack_libre2 tresor
[root@localhost bmap]# ./bmap -checkslack /home/N-0-X/slack_noxistes/fichier_slack
L'espace slack est donc vide. Vérifions taille de ce slack:
/home/N-0-X/slack_noxistes/fichier_slack has a free slack
[root@localhost bmap]# ./bmap -slackbytes /home/N-0-X/slack_noxistes/fichier_slack
Comme vous pouvez le constater, il y a assez de slack space pour écrire plusieurs phrases. Attribuons donc un fichier (pesant moins de 3872 bytes) dans le slack du fichier appelé fichier_slack.
3872
[root@localhost bmap]# cat /home/N-0-X/slack_noxistes/tresor | ./bmap -putslack /home/N-0-X/slack_noxistes/fichier_slack
Nous vennons donc de remplir une partie du slack de fichier_slack par ce que contient le fichier tresor.
stuffing block 1672559
file size was: 12812876
slack size: 3872
block size: 4096
Récupérons maintenant le slack que nous venons de mettre dans le fichier fichier_slack.
[root@localhost bmap]# ./bmap -slack /home/N-0-X/slack_noxistes/fichier_slack
Maintenant que l'on a le message 'caché', effacez le slack du fichier pour ne laisser aucune trace en utilisant la fonction -wipeslack.
getting form block: 1672559
file size was: 12812876
slack size: 3872
block size: 4096
Voici le slack contenu dans fichier_slack.
Ce logiciel nous permet de manipuler l'espace slack d'un répertoire entier.
Voici les options les plus intéressantes de slacker:
slacker -capacity [chemin_complet] #permet de calculer la taille totale disponible dans un répertoire
Commençons par calculer la taille totale disponible dans le répertoire en question:
slacker -fill #permet de remplir le slack d'un répertoire avec le conteu d'un fichier
slacker -pour [chemin_complet] > fichier_de_sortie #permet d'écrire tout le slack d'un répertoire dans un fichier
slacker -wipe [chemin_complet] #permet de remplacer tout le slack d'un répertoire par des zéros
slacker -frob [chemin_complet] #permet de remplacer tout le slack d'un répertoire par des caractères aléatoires
[root@localhost slacker]# ./slacker -capacity /home/N-0-X/slack_noxistes/
Dans ce résumé de slacker, intéressons nous au "unformatted capacity" qui vaut 15780 bytes. Il est donc possible de dissimuler un fichier de taille respectable, donc un exécutable.
examining /home/N-0-X/slack_noxistes/fichier_slack
slack bytes: 3872
examining /home/N-0-X/slack_noxistes/slack_libre1
slack bytes: 3982
examining /home/N-0-X/slack_noxistes/slack_libre2
slack bytes: 3968
examining /home/N-0-X/slack_noxistes/tresor
slack bytes: 3958
unformatted capacity: 15780
formatted capacity: 11038
unformatted free: 0
formatted free: 0
À présent, plaçons dans le slack du répertoire slack_noxistes/ un exécutable:
[root@localhost slacker]# cat /home/N-0-X/exploits/kern_2.6.7_fw_log_remote-DoS_30-10-2004.out | ./slacker -fill /home/N-0-X/slack_noxistes/
Récupérons à présent le slack du répertoire que l'on dirige vers le fichier exploit_kern_2.6.7_fw_log_remote-DoS.out
examining /home/N-0-X/slack_noxistes/fichier_slack
slack bytes: 3872
examining /home/N-0-X/slack_noxistes/slack_libre1
slack bytes: 3982
examining /home/N-0-X/slack_noxistes/slack_libre2
slack bytes: 3968
examining /home/N-0-X/slack_noxistes/tresor
slack bytes: 3958
EOF on stdin
[root@localhost slacker]# ./slacker -pour /lost-and-found/ > exploit_kern_2.6.7_fw_log_remote-DoS.out
Maintenant que nous avons récupéré notre exécutable, nous pouvons l'effacer du slack du répertoire. Pour être plus discret, utilisons la fonction -frob qui permet de remplacer le slack par des caractères aléatoires.
examining /home/N-0-X/slack_noxistes/fichier_slack
slack bytes: 3872
examining /home/N-0-X/slack_noxistes/slack_libre1
slack bytes: 3982
examining /home/N-0-X/slack_noxistes/slack_libre2
slack bytes: 3968
examining /home/N-0-X/slack_noxistes/tresor
slack bytes: 3958
[root@loacalhost slacker]# ./slacker -frob /home/N-0-X/slack_noxistes/
Tout le slack space du répertoire est donc remplacé par des caractères aléatoires. Vous pouvez bien entendu utiliser bmap pour effacer complètement le slack de chaque fichier individuellement pour être encore plus discret.
examining /home/N-0-X/slack_noxistes/fichier_slack
slack bytes: 3872
examining /home/N-0-X/slack_noxistes/slack_libre1
slack bytes: 3982
examining /home/N-0-X/slack_noxistes/slack_libre2
slack bytes: 3968
examining /home/N-0-X/slack_noxistes/tresor
slack bytes: 3958
Comme vous pouvez donc le voir, manipuler le slack space est très facile. Il suffit, comme d'habitude, de savoir faire et d'avoir les bons programmes. Avant de clore cet article, je tiens à précisier que vous pouvez aussi manipuler le slack space sur un Windows, ou tout autre OS, mais comme je ne l'ai jamais essayé sur un autre système d'exploitation qu'un GNU/Linux, je vous laisse le plaisir de faire ainsi.