[gen-hackman] List_Killem

Salut Gen

Etant curieux de nature :-) et après avoir regardé plus en détail la composition et le code de List_Killem, je me permet de te faire un petit Feedback "de passage", ici.

1/ wait.bat

Génère une erreur si choice n'existe pas sur la bécane.
Choice n'étant pas un prog natif si je ne dis pas de bétises, il te faudra l'embarquer dans ton package si tu veux pouvoir utiliser ton script tel quel.

2/ Détection de la clé/sous-clés SafeBoot

Après un test sous infection Bagle le rapport mentionne les clés comme OK alors qu'elles n'existent pas.
Par exemple tout en restant dans l'idée de ton code, un truc dans le genre devrait résoudre le soucis :

FOR %%A in (
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot"
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal"
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network"
) do Swreg query %%A >nul 2>&1 &&(echo %%~A : OK !!) || (echo %%~A : Not found !!)


3/ Les tools Sysinternals

Très bons outils mais depuis leur reprise par Microsoft si les tools sont exécutés pour la première fois, une fenêtre demandant d'accepter le Eula apparait.
C'est pas vraiment génant mais si dans le doute l'utilisateur refuse celà peut fausser les résultats.
Donc l'astuce que je te propose (si elle t'intéresse...) est d'anticiper et simuler l'acceptation du Eula directement via le registre et sans interaction du l'utilisateur.
Concrètement dans ton script et avant la première utilisation des tools, cela donnerait :

FOR %%A in (
"AutoRuns"
"Psinfo"
) do SWREG.EXE ADD HKEY_CURRENT_USER\Software\Sysinternals\%%~A /v EulaAccepted /t REG_DWORD /d 1


4/ SID.bat

RAS sur le fonctionnement, juste une idée de simplification de ton code pour le fun :-)

FOR /F "SKIP=1 TOKENS=*" %%A in (' reg.exe query "HKLM\software\microsoft\windows nt\currentversion\profilelist" ^|Find.exe /I "HKEY" ') do (reg.exe query "%%A" /v ProfileImagePath |find.exe /i "%username%")>nul && echo %%~nA>>a.txt

Voilou ! Bonne continuation !

++

24 réponses

Résumé de la discussion

List_Killem est au cœur du commentaire et des propositions d'amélioration technique pour rendre le script plus robuste face à des environnements variés et à des outils tiers. Parmi les propositions : corriger wait.bat lorsque 'choice' n'existe pas en l'intégrant au paquet, et ajouter une boucle FOR pour vérifier les clés SafeBoot afin d'éviter des résultats 'OK' inexistants. Autre point: les outils Sysinternals réclament l'acceptation du EULA; suggestion d'anticiper via le registre pour simuler l'acceptation avant la première utilisation et éviter des interruptions lors des tests. Des échanges soulignent aussi le risque lié au déportement des outils dans des dossiers distincts et recommandent de préciser l'extension des exécutables pour éviter des collisions et des redirections imprévues.

Bobot (l’IA à votre service)
  1. salut mOe , si tu peux me revenir pour une question qui me tarabuste.........

    le fait de ne pas mettre un service en "désactivé" avec "sc config" mais le stopper et le supprimer directement , cela a-t-il un incidence sur le fonctionnement du tool ?
    1. ok bonsoir mOe ,

      retenu....merci de cette claire explication très significative :)

      ca va me permettre de revoir certains parametres

      et reecrire toutes les redirections ^^
      1. Re,

        De rien :-)
        En plus ta question est vraiment très intéressante car elle permet bien de se rendre compte de l'importance que peuvent avoir parfois certains petits détails qui semblent anodins au premier abord !

        Bon code et @++
      2. heu......tools\swreg.exe et tools\swreg.cmd

        sans "call" ?
      3. Désolé je me suis mal expliqué lol.

        Oui car Call est une commande propre à cmd.exe et donc ça n'influe pas sur le fait de pouvoir exécuter ou pas un script bat ou cmd.
        La commande Call peut te servir dans ton script à exécuter un autre *.cmd et reprendre ensuite la main avec le script principal mais le système lui n'a juste besoin que de savoir quel prog est associé avec les *.cmd pour pouvoir les exécuter.
        Tu saisis la différence ?
        Si à la base avec le 1er exemple (SWREG ADD HKEY) tu pensais utiliser swreg.exe et s'il n'existe pas, c'est le *.cmd qui est lancé exactement comme si tu l'exécutais indépendamment en double cliquant dessus manuellement et donc sans besoin de CALL .

        ++
      4. yes it's ok :)

        thx
      5. salut sinon à titre info je suis en train de voir d'utiliser setPaths , cedric tu as raison sur le fait de compatibilité , ca resoudra pas mal de soucis rapport aux OS ^^

        @+
    2. Salut Gen

      Perso je pense que c'est entre autre pour éviter de laisser le choix au système dans le cas ou 2 fichiers dans un dossier porteraient le même nom et limiter les risques d'erreur.

      Ex:
      tools\swreg.exe et tools\swreg.cmd

      Dans ce cas là par exemple, si dans ton code tu ne précise pas l'extension, c'est l'exe (s'il existe) qui sera lancé en priorité, sinon dans le cas contraire le système au lieu de te renvoyer un retour console genre "fichier introuvable" et passer à la commande suivante, va malgrès tout insister en essayant de lancer tools\swreg.cmd.
      Donc en précisant l'extension, tu annules ce risque et les conséquences possibles que ça peut engendrer.

      De plus il peut y avoir un autre risque supplémentaire aussi, si tes outils se trouvent dans le même dossier que ton script de base.

      Ex :

      C:\List_Killem\1.exe
      C:\List_Killem\start.cmd
      Et un virus dans C:\windows\system32\1.exe ...

      Si ton script contient une commande "1.exe >>Rapport.txt" et que pour une raison ou une autre C:\List_Killem\1.exe n'existe pas ou plus, bin le système va aller systématiquement tenter de piocher du côté de C:\windows\1.exe ou C:\windows\system32\1.exe si présent et aura donc relancé le virus par la même occasion :-)

      C'est aussi pour limiter les risques, que souvent les tools sont dans un dossier bien distinct :

      Ex :

      C:\List_Killem\Tools\1.exe
      et
      C:\List_Killem\start.cmd qui contient "cd %~dp0 ... bla, bla, bla ... Tools\1.exe >>Rapport.txt"

      Dans ce cas si le fichier C:\List_Killem\Tools\1.exe n'existe pas tu auras un message d'erreur classique tout en évitant que le système n'aille voir ailleurs :-)

      Bonne continuation !

      ++
      1. une petite question à celui qui voudra repondre :

        do SWREG.EXE ADD HKEY

        pourquoi mettre .EXE alors que ca marche sans ?
        1. non mOe je prend cela comme des conseils pas d'inquietude :)

          1. au plaisir
        2. Gen...Désolé si tu l'as mal pris, mais je n'ai vraiment pas dit çà sur un "mauvais" ton critique.
          Le fait est que ton tool m'a zappé la suppression du driver principal de l'infection ainsi que winupro, mdelk, wintems...
          Et même s'il ne s'agissait que d'une 04 qui avait relancé l'infection au reboot, il y aurait eu d'ailleurs au moins dans tes backups des traces de mise en quarantaine lors du passage en runonce pour les fichiers cités plus haut et là c'est pas le cas, désolé.

          Bref, s'il ne s'agit que des LEGACY, perso effectivement avec swreg il m'est arrivé aussi de buter sur des suppressions.
          Dans mon cas cela aura été les sous-clés qui posaient problèmes, peut-être est-ce pareil pour toi ?.

          Ex :

          HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_GEN
          HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_GEN\0000
          HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_GEN\0000\Control

          Erreur en tentant de supprimer directement LEGACY_GEN malgrès les droits modifiés.
          Par contre en commencant les suppressions individuellement en allant de control, 0000 puis LEGACY_GEN, là ça a fonctionné.
          A tester pour toi...

          @Cédric

          Comme je te le disais plus haut, il s'agissait juste de partager une info et rien d'autre...
          Quant à Gen je trouve normal de lui faire une remontée en passant, après avoir essayé son outil mais ça s'arrêtera là.
          On cours tous après le temps lol et quelque part c'est pas plus mal ainsi :-)

          Amicalement à vous.
          @12C4
          1. Hello Olivier ,

            Ps : Désolé je suis tres ocupé en ce moment , nouvelle femme , nouveau site , nouveau tool , nouveau enfants .. etc ....

            Dur dur de tout gerer et tu me connais ;)

            Je te felicite pour le partage de la soluce mais tu m enleveras pas de l idéée que ce ci ne me plait pas :)

            Toi et moi avons "partageons" beacucoup de choses niveau batch voir autre ;)

            J espere que ça va durer avec Gen ;),

            Tu sé Olivier , tout ce que tu m appris , je n ai su le transmettre , j espere qu avec toi je serai apte a le faire ;)

            Mes amitié ...

            Cédric .
            1. C'est seulement en essayant de traiter les LEGACY que ca foire ?

              oui

              1. bagle se relance avec l'av corrompu ou msn corrompu
            2. e viens de reproduire ton test (XPX86 et vistaX86) mais perso la suppression/modif des droits semble fonctionner correctement avec Swreg.
              C'est seulement en essayant de traiter les LEGACY que ca foire ?

              il me semble qu'une clé rootkitée ne voulais pas sauter dans mes tests et j'ai reussi comme ca aussi

              Oui d'accord mais à la base si le root est actif au moment ou tu essayes de virer les clés c'est un peu normal que ça foire.
              Je m'explique...
              Je viens de faire un test de suppression avec ton outil sur un XP infecté par Bagle.
              Rootkit moyen mais parfait pour un début.
              Le soucis c'est qu'après nettoyage l'infection s'est rechargée faute d'avoir pu arriver à la neutraliser en totalité...
              Donc c'est pas vraiment évident de savoir si le problème vient de Swreg ou pas si tu vois ou je veux en venir.
              Et sur ce coup regini n'y aura rien changé malheureusement.
              En fait il faudrait pouvoir voir çà sur un example concret tout en étant sur que le tool fasse le job au niveau du traitement des fichiers...

              Sinon concernant ton script regini tu peux essayer de cette manière :
              \Registry\Machine
              	Software [x x x x etc...]
              	System [x x x x etc...]

              Les deux commandes seront groupées en une seule, mais bon sincèrement je crois pas que ce soit vraiment une solution qui s'attaque au problème de base.

              @++
              1. sur XP pour virer une clé créée par mes soins dans currentcontrolset à laquelle j'avais retiré tous les droits de tout le monde

                ca a été le seul moyen de la supprimer
                1. meme chose sous 7 d'ailleurs

                  et apres reflexion ,

                  il me semble qu'une clé rootkitée ne voulais pas sauter dans mes tests et j'ai reussi comme ca aussi
              2. par contre avec Regini , je n'impose pas les droits sur tout le registre mais uniquement sur HKLM System et software

                Swreg n'agit que sur la clé/sous-clé précise pour laquelle tu lui demande de mener une action, ni plus ni moins :-)
                Idem pour regini d'ailleurs, sauf que là c'est assez contradictoire car tu lui demande d'agir carrément sur deux branches entières et importantes du registre !

                Dans quel cas swreg n'a pas été suffisant pendant tes tests en fait ?
                En situation d'infection ? Sur un OS ou une infection en particulier ?

                ++
                1. Re,

                  avant d'inserer Regini , en laissant comme ca , je ne supprimais pas les "currentcontrolset" , et depuis ca fonctionne :)

                  par contre avec Regini , je n'impose pas les droits sur tout le registre mais uniquement sur HKLM System et software

                  ?G3?-?@¢??@?(TM)©®?
                  1. Re,

                    @Gen

                    Je viens de regarder ton fichier script pour Regini mais la question serait plutôt de savoir si ça fait pas contre emplois avec Swreg ACL ?
                    Vu que tu modifies systématiquement les droits des clés que tu souhaites supprimer avec Swreg, perso j'ai du mal à suivre ta logique pour ce qui est de l'utilisation de regini en plus de Swreg ?

                    @Cédric

                    Tout à fait d'accord :-)
                    Sauf que si je suis ta logique t'es en train de me dire que ce type de manip serait effectuée sans aucune routine de test préalable du succès de la restauration des clés dans ton code.
                    Dans ce cas effectivement tu as raison mais bon là seul le codeur est responsable de son manque de précautions avant d'agir. :-)
                    En fait çà n'a rien à voir avec le type de vaccin genre usbfix/autorun, c'est juste une possibilité de préserver l'accès au safeboot pour l'user durant toute l'étape de la désinfection, ensuite il est tout aussi facile de délocker la clé.

                    exactly :) ^^

                    Heu rien à voir non plus avec une espèce de solution miracle et ce n'est pas du tout mon propos d'ailleurs.
                    La manip empêche uniquement "Tout le monde" y compris le système donc, de supprimer les clés et sous-clés du safeboot et c'est tout lol.
                    Et donc en aucun cas ça n'empêche les modifs ou ajouts, d'ou aussi ce que je disais tout à l'heure sur la faillibilité de la méthode.
                    Hormis la rigueur nécessaire pour la bonne exploitation de cette astuce (qui n'est pas de moi mais de Didier stevens) du moins si on y trouve une utilité lol :-), bien évidemment ça implique aussi un minimum de connaissances sur le mode opératoire de(s) l'infection(s) ciblée(s) pour être efficace, logique...
                    Le but était uniquement de faire (re)découvrir une astuce proportionné et graduelle parmi d'autres tant qu'elle est encore relativement viable face à l'actualité.
                    Si jamais le modus operandi de suppression du safeboot devait se durcir côté malwares, très surement que cette manip ne serai plus viable, mais dans ce cas il existe d'autres méthodes un peu plus pointues pour un résultat similaire.

                    Bah ensuite je comprend tout à fait qu'elle ne te tente pas mais mon but n'est pas non plus d'essayer de convaincre de son utilité ou pas et ça tu le sais :-).
                    Elle fonctionne avec pas mal d'infections qui touchent au safeboot (j'ai pas dis toutes ! lol), fais le test toi-même et perso c'est uniquement pour cette raison que je l'ai posté ici plus à titre d'info qu'autre chose.

                    @++
                    1. Non mais ça reste une super idée de l ami mOe , apres t en fais ce que tu veux mais bon pour ma part je suis pas partant .

                      Je prefere donner ce taff au helpeur au cas ou .... mais bon .

                      Ensuite on peut tres bien imaginer un batch pour analyser le safeboot .

                      On verra bien ce que nous dis Olivier ;)

                      Je te souhaite bonne suite pour ton tool :)
                      1. de toute facons je ne pensais pas en apporter la correction , juste la verification :)
                        1. oui....si on vaccine , on peut plus corriger les sous-clés manquantes ensuite....:(
                          1. Hello Gen ,

                            Bah vacciner une clé absente ... c pas possible :)

                            Mais bon , on sé que Bagle vire les clé , apres on sais pas si une autre infection ne vire pas les sous clé .....

                            Dans ce cas présent le safeboot ( je pense ) sera tué mais mal testé ....

                            Donc si un tool dis :

                            FOR %%A in (
                            "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot"
                            "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal"
                            "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network"
                            ) do Swreg query %%A >nul 2>&1 &&(echo %%~A : OK !!) || (echo %%~A : Not found !!)

                            Il trouvera forcémént les clé et ensuite vaccinera .... d ou le danger ...

                            Tu vois ce que je veux dire ?
                            1. salut cedric :

                              Dans mon esprit je me suis imaginé vaciner un safeboot inopérant ....

                              ou une clé absente , c'est ce que j'etais en train de penser
                              1. à moins de balancer le vaccin via une boucle.....
                            • 1
                            • 2