# HackMyVM Hacked — Linux

Para poder hacer uso de esta máquina primero debemos descargar el archivo y así poder desplegar el laboratorio.

Descargamos el archivo de la página [https://hackmyvm.eu/machines/](https://hackmyvm.eu/machines/)

Al momento de descargar esta máquina y descomprimir el archivo, en este caso observamos un archivo.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299476483/0e8a2dad-0bc8-4e69-8f2a-6080fb910014.png align="center")

Para desplegar el laboratorio usaremos nuestro hipervisor favorito e iniciamos la máquina. En caso de no observar la IP de la máquina podemos emplear `arp-scan` para ver la dirección IP en nuestra red que sería la `192.168.0.20`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299482129/b92f2d01-8966-4b73-becb-357efd11447e.png align="center")

Realizamos un ping a la dirección IP y podemos validar que tenemos alcance.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299492956/822830f2-32c7-4f61-afd6-326d0a987ef3.png align="center")

Empezamos con un escaneo de puertos y podemos ver que solo tenemos los puertos 22 y 80.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299499386/726805b9-07fa-4760-af23-cb0574f52cb5.png align="center")

Empezamos realizando un escaneo más profundo de los puertos identificados, pero no vemos más información.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299507036/67908ab3-0293-4ed0-ba59-bf416f077a5e.png align="center")

Vamos al navegador e ingresamos la dirección IP y solo podemos ver que tenemos un texto de que la página fue vulnerada.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299516869/10b31600-0080-4f38-8eff-8031331f0bb3.png align="center")

Realizamos un escaneo de subdirectorios y podemos ver que nos encuentra el archivo `robots.txt`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299525346/29015590-27ec-4cf1-b78e-841d4108270d.png align="center")

Dirigiéndonos a esa ruta vemos que contiene solo `/secretnote.txt`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299535198/aa901e0b-d668-4a98-9468-fff5f11013a9.png align="center")

En esa nueva ruta podemos ver que contiene una lista que son las etapas del Pentesting, así también podemos ver que resalta que está instalado un `webshell` y para `root` también.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299540944/4a58c481-8515-4ab9-a3dd-7fd9f7829eb4.png align="center")

Realizamos un nuevo escaneo con otra lista y tenemos un nuevo resultado, pero si vemos bien este parece redireccionarnos a la raíz.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299554529/1a9134d4-145e-4972-bb62-de896253e645.png align="center")

Empleando un `curl` evitamos el redireccionamiento y vemos que nos da un mensaje.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299576638/edb2c00e-b45e-4e75-a821-ef7229d6c31a.png align="center")

Luego de ejecutar el listado podemos ver que el parámetro era `secret`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299589163/42663b91-b932-4800-b0cd-f0a954db53a7.png align="center")

Probamos el parámetro y vemos que sí podemos ejecutar comandos.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299610501/ca4173ca-1319-41ea-98c0-46a13dc308c5.png align="center")

Ya que podemos ejecutar comando, iniciaremos nuestro listener.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299626015/f304106d-e557-405a-a839-5da44de8c370.png align="center")

Enviamos la revshell.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299634339/ecec9ff4-b637-4766-b4f0-5ab4a7a8bddc.png align="center")

Regresamos a nuestro listener y podemos observar que ya establecimos conexión.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299640954/495437f3-b2ab-4857-bef5-850a67e97d8d.png align="center")

Para facilitar las cosas en este punto migraremos la shell porque en este caso nos ocurre que no podemos hacer uso de las flechas o subir y bajar al comando anterior. Para ello primero hacemos

```plaintext
script /dev/null -c bash
```

luego un ctrl+z, regresaremos a nuestra consola seguido de ello ingresaremos los siguientes comandos para recuperar la shell usamos stty

```bash
stty raw -echo; fg
				reset xterm
```

para obtener más características usamos

```bash
export TERM=xterm
```

para la variable de entorno

```bash
echo $SHELL
```

y para pasar a bash usamos

```bash
export SHELL=/bin/bash
```

para establecer el tamaño adecuado de la consola ingresamos

```plaintext
stty rows 59 cols 236
```

de esta manera ya nos podemos mover con más libertad en la consola. Revisando Capabilities, permisos SUID y no vemos nada interesante.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299659358/2b268bb1-30d7-49ff-8375-efb70a568994.png align="center")

Revisaremos si hay algún proceso, para ello descargaremos `pspy` de nuestra máquina.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299670756/51885299-7e3a-40eb-b952-0d51219f5901.png align="center")

Descargamos el archivo, le damos permisos de ejecución y ejecutamos, pero no vemos nada interesante.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299684286/78fc0748-699c-4763-8f6c-4b3073a3cdc9.png align="center")

Buscando en las carpetas temporales podemos observar que en `tmp` hay uno oculto llamado `hacked`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299688326/56439b3d-b81f-498f-b1d8-b0b6fa5a3b87.png align="center")

Verificamos los procesos para ver si observamos alguno inusual, pero no es así.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299706706/b1e61e5c-c826-4cfd-ab71-99abcd8a5ce6.png align="center")

Recordamos que en el archivo `secretnote` indicaba que había creado un `root shell`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299716441/d34f944f-778f-4721-8558-2e0a7cb78025.png align="center")

Con esto en mente podemos suponer que debe tratarse de un `rootkit`.

Buscando más información encontramos el siguiente blog sobre [Rootkits](https://www.wiz.io/blog/linux-rootkits-explained-part-2-loadable-kernel-modules) que explican más de ello. Listamos los módulos cargados del `kernel`, pero no vemos nada interesante.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299739121/0c02a702-1bcc-4d54-b246-98978f545b7e.png align="center")

Listando los módulos vemos que tenemos `diamorphine` que es un módulo del cual hablan en el blog.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299753891/03dad21d-1613-4f3d-80f0-b358d6e2646a.png align="center")

Buscando acerca de este módulo encontramos el [GitHub](https://github.com/m0nad/Diamorphine) de este. Ya que entendemos que el módulo empleado para escalar privilegios por `h4x0r` fue ese. Podemos ver que en el GitHub nos indica como emplearlo para ser `root` una vez instalado.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299775725/7399cfc8-e685-4175-ad00-29683587b615.png align="center")

Ingresamos el comando `id` solo y vemos los grupos a los que pertenecemos antes de ejecutar el comando.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299815339/6835cc41-80ad-498f-bf8d-8e61ce1768ef.png align="center")

Enviamos el comando y al volver a realizar un `id` observamos que nuestros grupos cambiaron a uno con permisos de [`root`](http://root.De). De esta manera culminando esta máquina.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1739299889957/0326e723-ed88-424c-aa4b-1e33dbd977f0.png align="center")
