Histoire de mesurer l'ampleur des dégâts, j'ai écrit un script nmap pour détecter les machines infectées. L’algorithme de détection est simple comme le Malware démarre un serveur sur port 80 en TCP qui fait semblant d'être un serveur http ... On envoie donc une requête mal formée et du coup il renvoie du binaire pensant qu'il a affaire à son C&C... c'est pas sans faille (il pourrait y avoir des service légitimes écoutant sur le port 80 et n'utilisant pas le protocole HTTP) mais ça suffit pour l'instant.
description = [[ Performs a bogus GET request for the root folder ("/") Normal http server will reply with an http status 200 or error Asporx will reply with around 100 byte of binary. ]] author = "Jérémie Banier" license = "Same as Nmap--See http://nmap.org/book/man-legal.html" categories = {"discovery", "safe"} require "shortport" require "http" portrule = shortport.http action = function(host, port) local result, socket, try, catch socket = nmap.new_socket() catch = function() socket:close() end try = nmap.new_try(catch) try(socket:connect(host, port)) try(socket:send("HTTP 1.1 GET/\n\n")) result = try(socket:receive_bytes(100)) -- Check if first 4 bytes received are HTTP. if not string.match(result, "^HTTP") then return "Asprox/Kuluoz infected:" .. stdnse.tohex(result) end end
Résultat: nmap reste mon outil favori de diagnostique réseau :-)