Underc0de - Hacking y seguridad informática

[In]Seguridad Informática => Seguridad web y en servidores => Mensaje iniciado por: blackdrake en Julio 10, 2015, 07:12:23 am

Título: [Python][PHP] Shell Finder
Publicado por: blackdrake en Julio 10, 2015, 07:12:23 am
(http://i.imgur.com/tzSBiyv.png)

Hola @Underc0de, he hecho un script en python para que se encarga de buscar todo tipo de backdoors en el directorio que le indiquemos (por defecto será /var/www/), no he podido dedicarle todo el tiempo que me gustaría, pero creo que funciona bastante bien y es muy sencillo añadirle más valores de búsqueda.

Soy consciente de que el código no es el idóneo para realizar este tipo de búsquedas, pero como dije arriba, por falta de tiempo no puedo reestructurarlo.

Usar sudo, si se van a escanear directorios que no pertenecen al usuario que lo ejecuta.

(http://i.imgur.com/Tk2DuSx.png)


Código: Python
  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. # Author: @alvarodh5 | Blackdrake
  4.  
  5.     #########################################################################################################
  6.     #                                            Shell Finder Python                                        #
  7.     #                                                                                                       #
  8.     #                                        coded by Blackdrake for Underc0de                              #
  9.     #                                                                                                       #
  10.     #                                                05/06/2015                                             #
  11.     #                                                                                                       #
  12.     #                                     Underc0de.org | twitter.com/alvarodh5                             #
  13.     #                                                                                                       #
  14.     #                                           Run this tool as root                                       #
  15.     #########################################################################################################
  16.  
  17. import os
  18.  
  19. class color:
  20.    PURPLE = '\033[95m'
  21.    CYAN = '\033[96m'
  22.    DARKCYAN = '\033[36m'
  23.    BLUE = '\033[94m'
  24.    GREEN = '\033[92m'
  25.    YELLOW = '\033[93m'
  26.    RED = '\033[91m'
  27.    BOLD = '\033[1m'
  28.    UNDERLINE = '\033[4m'
  29.    END = '\033[0m'
  30.  
  31. print color.BLUE + " __ _          _ _     ___ _           _" + color.END        
  32. print color.BLUE + "/ _\ |__   ___| | |   / __( )_ __   __| | ___ _ __ "+ color.END
  33. print color.BLUE + "\ \| '_ \ / _ \ | |  / _\ | | '_ \ / _` |/ _ \ '__|"+ color.END
  34. print color.BLUE + "_\ \ | | |  __/ | | / /   | | | | | (_| |  __/ | "+ color.END
  35. print color.BLUE + "\__/_| |_|\___|_|_| \/    |_|_| |_|\__,_|\___|_| "+ color.END  
  36. print ""
  37. print color.YELLOW + "By Blackdrake (@alvarodh5) para Underc0de" + color.END
  38. print ""
  39. print color.GREEN + "Asegurese que los ficheros que detecta son ilegitimos antes de eliminarlos" + color.END
  40. print color.GREEN + "Tenga en cuenta, que dependiendo de la cantidad de ficheros que tenga en su servidor, el script tardara mas o menos" + color.END                                          
  41. raw_input("[Pulse INTRO para continuar]")
  42. print color.GREEN + "Introduzca ruta del directorio donde aloja sus ficheros (Pulsa Intro para utilizar por defecto, /var/www/)" + color.END
  43. directorio = raw_input ("")
  44. if (directorio == ""):
  45.         directorio = "/var/www/"
  46. else:
  47.         longitud = len(directorio) - 1
  48.         if not(directorio[longitud] == "/"):   
  49.                 directorio += "/"
  50.  
  51. print color.BLUE + "Buscando Shells conocidas" + color.END + "" + color.RED
  52. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep r57 | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible R57 [PHP] --> rm -rf " $2}\'| uniq')
  53.  
  54. os.system('find ' + directorio + ' -name "*".txt  -type f -print0  | xargs -0 grep r57 | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible R57 [TXT] --> rm -rf " $2}\' | uniq')
  55.  
  56. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep c99 | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible C99 [PHP] --> rm -rf " $2}\' | uniq')
  57.  
  58. os.system('find ' + directorio + ' -name "*".txt  -type f -print0  | xargs -0 grep c99 | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible C99 [TXT] --> rm -rf " $2}\' | uniq')
  59.  
  60. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep c100 | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible C100 [PHP] --> rm -rf " $2}\' | uniq')
  61.  
  62. os.system('find ' + directorio + ' -name "*".txt  -type f -print0  | xargs -0 grep c100 | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible C100 [TXT] --> rm -rf " $2}\' | uniq')
  63.  
  64. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep c98 | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible C98 [PHP] --> rm -rf " $2}\' | uniq')
  65.  
  66. os.system('find ' + directorio + ' -name "*".txt  -type f -print0  | xargs -0 grep c98 | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible C98 [TXT] --> rm -rf " $2}\' | uniq')
  67.  
  68. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep SE3lRVER | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible WEEVELY SHELL [PHP] --> rm -rf " $2}\' | uniq')
  69.  
  70. print color.END + color.BLUE + "Otros posibles casos de Shell" + color.END + "" + color.YELLOW
  71.  
  72. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep shell | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible Shell [PHP] --> rm -rf " $2}\' | uniq')
  73.  
  74. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep backdoor | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible Shell [PHP] --> rm -rf " $2}\' | uniq')
  75.  
  76. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep stealth | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible Shell [PHP] --> rm -rf " $2}\' | uniq')
  77.  
  78. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep exec | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible Shell [PHP] --> rm -rf " $2}\' | uniq')
  79.  
  80. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep popen | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible Shell [PHP] --> rm -rf " $2}\' | uniq')
  81.  
  82. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep proc_open | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible Shell [PHP] --> rm -rf " $2}\' | uniq')
  83.  
  84. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep symlink | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible Shell [PHP] --> rm -rf " $2}\' | uniq')
  85.  
  86. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep passthru | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible Shell [PHP] --> rm -rf " $2}\' | uniq')
  87.  
  88. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep system | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible Shell [PHP] --> rm -rf " $2}\' | uniq')
  89.  
  90. os.system('find ' + directorio + ' -name "*".php  -type f -print0  | xargs -0 grep milw0rm | uniq -c  | sort -u  | cut -d":" -f1  | awk \'{print "Posible Shell [PHP] --> rm -rf " $2}\' | uniq')
  91.  
  92. print color.END + color.GREEN + "Escaner finalizado, siguenos! @underc0de @alvarodh5 " + color.END

Espero que os guste y si alguien lo termina, por favor, que me lo comunique.

Un saludo.
Título: Re:[Python][PHP] Shell Finder
Publicado por: Decode en Julio 10, 2015, 01:35:36 pm
No has probado hacer un shell finder en php? sería muy bueno..

Saludos.
Título: Re:[Python][PHP] Shell Finder
Publicado por: blackdrake en Julio 11, 2015, 04:01:11 pm
You are not allowed to view links. Register or Login
No has probado hacer un shell finder en php? sería muy bueno..

Saludos.

Se podría hacer, pero creo que consumiría más recursos, igualmente cuando tenga un hueco lo haré :D


Saludos.
Título: Re:[Python][PHP] Shell Finder
Publicado por: BigBear en Julio 11, 2015, 07:04:24 pm
yo hice algo asi en perl creo que se llamaba "destroyer shell" , pero este script buscaba mediante un array predeterminado , lo tuyo parece mas preciso.
Título: Re:[Python][PHP] Shell Finder
Publicado por: Baxtar en Julio 22, 2015, 02:49:57 am
Me da este error en la linea 17 en la de import
Código: You are not allowed to view links. Register or Login
File "shel.py", line 17
    import os
    ^
IndentationError: unexpected indent
[[email protected] ~]$
Título: Re:[Python][PHP] Shell Finder
Publicado por: Jimeno en Julio 22, 2015, 06:48:14 am
Has hecho mal el copia y pega, elimina las tabulaciones y espacios sobrantes al inicio de cada línea
You are not allowed to view links. Register or Login
Me da este error en la linea 17 en la de import
Código: You are not allowed to view links. Register or Login
File "shel.py", line 17
    import os
    ^ :)
IndentationError: unexpected indent
[[email protected] ~]$