Ir al contenido principal

#4 Virus: Backdoor con Python3

Hola a todos, este será el primero de 3 blogs donde crearemos un backdoor en distintos lenguajes

El primer ejemplo será sobre la misma pc, el segundo sobre dos equipos en la misma red y tercero en redes distintas

Disclaimer: El autor de este blog ni amino, se responsabilizan del uso que se le de a la información mostrada en este blog, La única intención de esta publicación es educar.

Blogs Similares

╭───────────────────╯💀╰───────────────────╮

───────────────────────────────────────


¿Por qué iniciar con Python?

Simplemente porque es el lenguaje más usado en la comunidad, ya que los blogs hechos con Rust y C# me han pedido por privado como aplicarlos en Python. Así que para evitar eso, iniciamos en este lenguaje

¿Qué es una Backdoor?

Son programas diseñados para darnos un acceso al dispositivo sin necesidad del permiso del usuario
Aunque normalmente son asociados a hacking, para infectar equipos, no siempre es de esa forma, en ocasiones son creados en las empresas de software, con la intención de dar entrada a sus desarrolladores desde cualquier punto.

Estos pueden crearse de muchas formas, pero aprovechando el blog de sockets. Esta será la forma en la que vamos a crear el nuestro.

Código del servidor

Bien, primero vamos a inicializar que al iniciar el programa, este nos vaya a crear la clase server
Vamos a importar los módulos que necesitamos, que en este caso solo es socket
Ahora pasemos a la clase Server.
Donde tendremos dos constantes, nuestra dirección y el puerto de conexión.
Dentro de nuestra clase, tendremos la función inicial
Primero vamos a crear un objeto de tipo socket con:
server = socket.socket()
Luego, tendremos que levantar el "servidor" y pasarle la dirección y el puerto con
server.bind((DIRECCIÓN, PUERTO))
Y por último, para este ejemplo solamente vamos a escuchar una conexión. Cuando todo esto termine vamos a imprimir que el servidor esta escuchando
Ahora, como no sabemos cuando se va a conectar la victima, el servidor siempre va a estar escuchando. Por esa razón el ciclo while
Dentro estaremos preguntando si el socket ha sido "aceptado" o si ya se han conectado a el. Este nos va a devolver la dirección de la conexión y al cliente
Cuando esto se cumpla, vamos a recibir un mensaje que nos va a confirmar que podemos mandar texto entre ambas partes. Esto lo vamos a guardar en una variable llamada show

Ahora, validamos el mensaje para saber si el cliente conectado realmente es el que queremos y para validar que el mensaje no venga nulo
Y una vez, todo esto se cumpla tendremos un ciclo infinito para poder mandar todos los mensajes que queramos
Con un: input
podemos mandar cada instrucción
Y luego mandamos el mensaje al cliente con un:
client.send
Todos los mensajes que mandemos y que nos lleguen, van a estar codificados. Por esta razón siempre tenemos que poner
decode()
Cuando nos llegue algo y un
encode()
Cuando tengamos que mandar algo

Código de la victima

Listo, ahora al código del cliente. El inicio es lo mismo, inicializar nuestra clase Cliente e importar los módulos que necesitamos
Esta vez importando subprocess, para ejecutar comandos
Nuevamente, vamos a crear nuestra clase con nuestras constantes. La dirección y el puerto
Creamos el objeto de tipo socket y como hay muchos errores que nos puede dar, vamos a meterlo todo dentro de un try
Ahí, hacemos la conexión con el servidor y le mandamos el mensaje de que ya estamos conectados
Ahora, como nos pueden llegar infinidad de comandos, vamos a meter un while para que siempre podamos ejecutar
Y ya solamente le mandamos un al método Popen del modulo subprocess el texto que nos ha llegado del servidor. Que sería el comando a ejecutar
Si todo va bien, en stdout nos regresará el resultado del comando
De lo contrario stderr nos devolverá el error
Ahora en la variable result, guardamos el resultado de subprocess
Y con una condicional evaluamos si todo ha salido bien o no. Dependiendo de eso mandamos la variable result o no

Resultado

Ahora solamente queda probar nuestra pequeña backdoor.
En una terminal hay que correr nuestro servidor
Y nos va a aparecer que el servidor esta escuchando
Desde otra terminal, tenemos que ejecutar el cliente
Y nos llegará en el servidor, que el cliente se ha conectado
Ahora el objetivo de todo esto, es poder mandar comandos y que esto funcione. Vamos a probar con un
ls
Que nos debe de listar todo lo que se encuentra en la carpeta donde se encuentra la otra terminal
Incluso podemos crear carpetas como se puede ver en la siguiente img
Ya con esto hemos terminado nuestra propia backdoor, esto se puede hacer tan complejo como ustedes quieran.

Pero que flojera escribir todo en blog para ello.

Comentarios

Entradas más populares de este blog

3# Criptografía - Cifrado por sustitución Atbash

__ Indice __ ¿Qué es Atbash? Proceso de cifrado Proceso de descifrar  Código Github ¿Qué es Atbash? Atbash es un método de cifrado para el alfabeto hebreo, por lo tanto entra en la clasificación de           - Cifrado Clásico - se le conoce también como el método espejo, pues consiste en sustituir en la que la primera letra (A) será sustituida por la última (Z), la segunda por la penúltima (B - Y) y así sucesivamente. Proceso de cifrado Vayamos a probarlo, vamos a cifrar nuestra palabra de costumbre RegularWeb: R  =   I E  =  V G  =  T U  =  F L  =  O                  Resultado : IVTFOZIDVY A  =  Z R  =  I W =  D E  =  V B  =  Y Proceso de descifrar  Para descifrar es el mismo procedimiento. R  =   I E  =  V G  =  T U  =  F L  =  O                  Resultado : REGULARWEB A  =  Z R  =  I W =  D E  =  V B  =  Y Código Github   https://github.com/NeoTRAN001/Crypt

2# Criptografía - Polybios

__ Indice __ ¿Qué es Polybios? Proceso de cifrado Proceso de descifrar Código Github __ ¿Qué es Polybios? __ Es un sistema de cifrado en el que se coloca todo el alfabeto en una matriz, y cada letra tiene una posición en la que será convertida.  Es considerado el algoritmo de cifrado más antiguo que se tiene registro •Su nombre se le da por el Historiador griego Polybios • Alrededor del año 150 a. C. __ Proceso de cifrado __ Bien, el proceso de cifrado es bastante fácil, tenemos nuestra matriz bidimensional , si queremos traducir el carácter - ? - nos da como resultado [ 0, 0 ] Y pues, eso es todo... Vayamos a cifrar la palabra Hola H = [4, 9]    o = [1 , 9]    l  = [1, 5]     a = [0, 4]  Resultado: 49191504 __ Proceso de descifrar __  Ahora si queremos el proceso inverso, solamente tenemos, tenemos que mandarle las posiciones y este nos devolverá el carácter [4, 9] = H     [1 , 9] = o    [1, 5] = l    [0

Sockets en C#

__ Índice __ ¿Qué son los sockets en programación? Ejemplo en C# Github __ ¿Qué son los socket en programación? __ Un socket es un método de comunicación entre un programa cliente y un servidor. Entonces podemos decir que los sockets, son el "tunel" de comunicación entre dos aplicaciones. __ Ejemplo en C# __ Servidor  Creamos un nuevo proyecto en consola que será el código del servidor Importamos las librerías necesarias para los sockets Declaramos dos variables, una será la dirección del Server , ya que estamos haciendo todo en nuestra pc la dirección debe de ser la local, localhost o 127.0.0.1 La otra variable será el puerto de conexión, es recomendable seleccionar un puerto alto. Es por eso que las aplicaciones utilizan 8080 . Ahora tenemos que crear un objeto de tipo Socket, que nos pide tres parámetro: 1- Esquema del tipo de diccionario: AddressFamily.InterNetwork dice que utilizará una dirección IP