
mssqlproxy est une boîte à outils visant à effectuer un mouvement latéral dans des environnements restreints via un serveur Microsoft SQL Server compromis par réutilisation de socket.
mssqlproxy est une boîte à outils conçue pour effectuer un mouvement latéral dans des environnements restreints via un serveur Microsoft SQL Server compromis par réutilisation de socket. Le client nécessite impacket et les privilèges sysadmin sur le serveur SQL.
Veuillez lire cet article attentivement avant de continuer.
Il se compose de trois parties :
Vous pouvez compiler les bibliothèques ou les télécharger depuis les versions (x64).
Pour générer la DLL principale, importez simplement le projet dans Visual Studio (reciclador.sln) et compilez-le.
Pour générer l'assembly CLR, vous devez d'abord trouver le compilateur C# :
Get-ChildItem -Recurse "C:\Windows\Microsoft.NET\" -Filter "csc.exe" | Sort-Object fullname -Descending | Select-Object fullname -First 1 -ExpandProperty fullname
Ensuite,
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /target:library .\assembly.cs
Une fois les deux bibliothèques compilées, téléchargez la DLL principale (reciclador) sur le serveur cible.
Les options d'authentification sont les mêmes que celles de l'original mssqlclient. Options de mssqlproxy :
proxy mode:
-reciclador path Remote path where DLL is stored in server
-install Installs CLR assembly
-uninstall Uninstalls CLR assembly
-check Checks if CLR is ready
-start Starts proxy
-local-port port Local port to listen on
-clr local_path Local CLR path
-no-check-src-port Use this option when connection is not direct (e.g. proxy)
Nous avons également implémenté deux commandes (dans le shell SQL) pour télécharger et téléverser des fichiers. Concernant le proxy, nous avons quatre commandes :
-clr pour lire le CLR généré à partir d'un fichier DLL local.-reciclador), qui peut être téléchargée en utilisant la commande upload.-local-port n'est pas spécifié, il écoutera sur le port 1337/tcp.Une fois le proxy démarré, vous pouvez brancher vos proxychains ;)
Note #1 : si vous utilisez une connexion non directe (par exemple des proxies intermédiaires), l'indicateur -no-check-src-port est nécessaire, afin que le serveur ne vérifie que l'adresse source.
Note #2 : pour le moment, seules les cibles IPv4 sont supportées (ni DNS, ni adresses IPv6).
Note #3 : utilisez avec précaution ! pour l'instant, le service MSSQL plantera si vous essayez d'établir plusieurs connexions simultanées.
Important : Il est important d'arrêter mssqlproxy en appuyant sur Ctrl+C sur le client. Sinon, le serveur pourrait planter et vous devrez redémarrer le service MSSQL manuellement.
Pablo Martinez (@xassiz), Juan Manuel Fernandez (@TheXC3LL) [ www.blackarrow.net - www.tarlogic.com ]
Tout le code inclus dans ce projet est sous licence MIT. Le fichier mssqlclient.py est basé sur Impacket.