Site partenaire
 IP Scan :
Home
  Accueil
SH en favoris
- FORUMS -
Livre d'Or
- CHAT -
NewsLetter
Suggestions
La Team du Site
Accès Team SH
Faites un don !
Contacts
 
Services
  Liens
Source HTML viewer
DownLoad
Mail Anonyme
 
Les Articles
  Cracking
Théorie
Programmation
Failles [techniques]
Les Adresses IP
FingerPrinting
Utilisation de proxy
Divers
 
WallPapers Galerie
   
Partenaires
  The Hackademy Web, Journal et School

 
 Main Message
 
Le recrutement au sein de la Team SH est suspendu pour une durée indéterminée...

Pour surfer sur ce site, vous devez accepter le disclaimer.

Vous pouvez contribuer au développement du site en faisant un don. SecurityHack a besoin de vous !

 
 BackShell Windows en C
 
BackShell Windows

Salut à tous, je vous présente un petit article de prog réseau sous windows (qui peut aussi s'adapter à linux) puisqu'il s'agit des sockets. Le programme que je vous présente est un backshell (backdoor qui ouvre un shell). Ce terme est un peu un abus de langage car nous n'ouvrirons pas de shell dans ce programme, mais nous allons le reproduire avec la fonction p) qui appartient à la norme POSIX du langage C (d'où l'utilisation de Dev-C++ pour la compil).

Le principe du programme est simple, il ouvre un serveur TCP en écoute sur le port 44 (port pris arbitrairement) et attends des requetes du client. Les requetes sont passées à la fonction p) qui va exécuter la commande et stocker son résultat dans un tampon (assez gros pour les grosses réponses, par exemple le listing d'un gros répertoire). Le contenu du buffer est ensuite envoyé au client à travers la socket.

Plusieurs directives sont indispensables au bon fonctionnement du programme :
_ Priorité sur la stabilité du serveur, bien gérer les erreurs, en cas d'erreurs du client, on préferera le déconnecter que de planter !
_ Gérer la gestion des chaines de caractères, pour un si petit serveur, ce serait bete qu'il souffre de buffer overflow...
_ Assurer la continuité du serveur, il est fait pour tourner infiniement dans toutes les conditions !

Maintenant avoir fait un peu de théorie, passons à la pratique. Vous trouverez le code à cette adresse :

http://files.securityhack.net/backshell.c

Le code étant plutot bien commenté niveau prog, je tiens à mettre en valeur quelques notions de programmation pure qui pourront vous servir tout le temps.

-> Masquage de la console

hConsole = GetConsoleHwnd();
ShowWindow(hConsole, SW_HIDE);


la fonction GetConsoleHwnd() permet de récupérer le handle de la console pour pouvoir la masquer, j'ai récupéré cette fonction dans la base microsoft MSDN...

-> Concaténation sécurisée

strncat(buff, request, BUF_SIZE-strlen(buff)-1);

Cette utilisation de strncat permet de concaténer 2 chaines suivant la taille disponible sur le tampon de destination, si le tampon lu est trop gros, la requete est coupée (cela évite d'etre vulnérable à un buffer overflow)

-> Gestion des erreurs de socket client

lg=recv(client,request,LG_MAX_REQUETE,0);
if(lg==SOCKET_ERROR)
{
out++;
break;
}
request[lg]='\0';


En cas d'erreur du client, on sort de la boucle et on le déconnecte (voir à la fin de la fonction main()) la dernière ligne permet de fermer explicitement le buffer contenant la requete au cas ou la requete ait été coupé à la réception. Cette méthode permet également d'éviter les dépassements...

Remarques finales :
L'infection n'est pas gérée dans ce code, il s'agit juste d'illustrer le principe de base à travers un serveur stable et opérationnel.
Je vous confie un petit secret ;) Ce code fera peut etre l'objet du développent de la suite de JackTrojan qui commenceà se faire vieux (dans un projet totalementSource, ça évitera les demandes intempestives :))

Bye !

 

Shad0w -:- Team SH member

Welcome To SecurityHack.net Articles catalogue

securityhack.net v 4_2
 
Les Sous-domaines
  Projet JackShell
+ Challenge BigContest +
JackTrojan
Forums
Chat IRC
 
Chat Box
 
Up Down
Pseudo :
Message :

 
Box News !
 
 

01 visiteur(s) online
© 2003, 2004 www.SecurityHack.net | Admin : Shad0w ; Webmasters : P41f0x, Dark-Jedi