Date : 05/07/2003
Auteur : deepfear (DHS Admin)
Introduction :
Un exécutable au format ELF est compose d' une en-tête ELF suivi
d' une table de programmes ou de sections ou des deux . l' en-tête ELF
est tjrs au tout début du fichier tandis que les deux autres tables,
ils sont situés selon la définition de l' en-tête ELF .
Cet exécutable s'organise sous la forme suivante : (figure 1-1 )
- En-tête ELF : contient les informations qui décrit l' organisation
du fichier .
- Table d' en-tête de programme : indique au système comment créer
l'image du processus (figure 2) .
- Segment 1 (texte) : c' est la zone ou contient le code qui sera exécute
.
- Table d' en-tête de sections : tous simplement elle décrit les
sections du fichier .
- Les sections : contiennent les données brutes d' informations du fichiers
: instructions, données , table de symbole
(figure 2) :
1- [TTTTTTTTTT]
2- [TTTTTTTTPP]
3- [PPPPPPTTTT]
4- [DDDDDDDDPP]
1-2 segment texte (T)
3-4 segment donnée (D)
(P) : padding (remplissage) il sert a compléter les segments pour que
chaque page fasse ( c' est a dire chaque segment doit être multiple de
4ko ) .
(PAGE_SIZE = 4ko pour linux x86 [man getpagesize ] pour savoir la sienne ;)
)
Virus :
Pour infecter un Elf on va essayer de faire une copie et d insérer le
code malicieux dedans .
Puisque le segment texte contient le code qui sera exécute , le virus
doit être insérer dans ce segment .
Si on modifie le S.T (segment texte) on risquera d' avoir des problèmes
donc il sera préférable de l' insérer après le segment
le segment texte (comme le montre la figure 1-2) en ajoutant une page qui sera
termine par des 0 pour quelle soit égale à PAGE_SIZE .
En comparant la figure 1-1 et 1-2 on remarque que les offsets de certains segments
doivent être changer notamment celui du segment 2 (donnée) ou il
faut ajouter la taille du virus a son offset . sinon on va ajouter la taille
du virus a la taille du segment texte pour qu'il soit admis comme une partie
de ce segment et qu il soit charger .
En ce qui concerne la partie section : si
{
la table d' en-tête de programmes est situe avant celle de sections(la
table d' en-tête de section est situe après le virus ;) figure
1-2 ) on ajoute PAGE_SIZE a l' index de section et a chaque offset de sections
;
}
sinon { on fais rien ; // figure 3 }
Pour faire exécuter le virus, il faut que le flux d' exécution
(point d' entrée ELF) contienne l' adresse du code du virus .
L' adresse du virus est l' offset du début du segment texte + sa taille
voir figure 1-2 .
NB : faut pas oublier de rendre la main J au vrai code (prg) pour que le programme
s'exécute normalement .
Voilà l'étude théorique est finis , le prochain article
sera de la pratique (le créer J ).
Si vous n' avez pas compris relisez le bien en utilisant les figures sinon y
a le forum ;) .
ciao
...:::
ELF Infector PART 1 By
deepfear:::...