Durante nuestro viaje de aprendizaje en el área de ciberseguridad siempre se ha dificultado al inicio encontrar entornos de prueba vulnerables, no obstante gracias al esfuerzo de muchas personas podemos decir que ese punto ha ido mejorando, dentro de los lugares preferidos de aprendizaje para está área podemos mencionar https://tryhackme.com/, https://hackthebox.com/, https://rangeforce.com/, https://www.vulnhub.com/, etc.

Aunque nada va reemplazar el hecho que uno despliegue su infraestructura en un hypervisor como Vmware, Virtualbox, hyperV o que repliquemos un ejercicio de cyber range con un Active Directory con workstation, sin embargo rápidamente se nos presenta la limitante los recursos de memoria, disco duro, procesador por ejemplo los recursos mínimos para un ejercicio de cyber range serían los siguiente:

  • Memoria Ram 16GB disponible (4GB para DC, 4GB para dos workstations y el resto para SO)
  • 60GB de almacenamiento como mino disponible

De igual manera podríamos implementar nuestro CTF con contenedores vulnerables, mi amigo y colega Elzer Pineda escribió un articulo donde explica como hacerlo con docker y traefik.

El objetivo de este articulo es demostrar la implementación de un hacking lab en AWS bastante similar a un home lab y utilizando una máquina virtual de vulnhub.

Requisitos

  1. Cuenta de AWS (no gratuita)
  2. Una vm vulnerable de vulnhub usaremos la siguiente https://download.vulnhub.com/breach/Breach-1.0.zip
  3. De igual manera debemos verificar que la Vm este dentro de los kernels permitidos https://docs.aws.amazon.com/vm-import/latest/userguide/prerequisites.html

  4. Creación VPC

Vamos a proceder a crear una red virtual en donde incluiremos la máquina vulnerable y un Kali linux, buscamos en la barrita de búsqueda vpc y seleccionamos la opción de VPC señalada en la siguiente imagen

1

Ahora vamos a proceder a crear nuestra VPC, haciendo click en el botón naranja Crear VPC

2

Debemos realizar las siguiente modificaciones, en el nombre del proyecto y la red debe ser 192.168.110.0/24, para este lab es asi dado que es la red usada en la vm de vulnhub.

3

En la zonas de disponibilidad solamente marcamos que sea una

4

Procedemos a darle click a crear VPC

5

Mientras se crea debemos observar que todo lo que se está generando

6

Cunando este listo podemos ir a ver VPC

7

Esta lista nuestra vpc

8

  1. Creación de Instancia EC2 con Kali

Escribimos en nuestra barra de búsqueda Ec2

9

En el panel de Ec2 vamos a instancias y luego Lanzar instancias

10

Procedemos a ponerle un nombre a la instancias y debemos ir a buscar la imagen de Kali en el martketplace

11

Buscamos la imagen correcta en este caso escribimos Kali en el buscador y vamos a seleccionar la imagen

12

Procedemos a darle click a continuar

13

Si todo sale bien regresamos a la pantalla anterior y debe salir la imagen a utilizar

14

Procedemos a seleccionar el tipo de instancia y generar el par de llaves

15

Creamos el par de llaves

16

Debe quedarnos seleccionada la llave que acabos de crear y debemos guardarla en un ruta donde seamos los propietarios

17

En la sección de Configuraciones de red, vamos a editar y seleccionar la red que creamos anteriormente

18

Debe aparecernos la vpc que creamos

19

Habilitamos la asignación de IP pública, en esta sección podemos dejar las demás configuraciones como están, recordar revisar que tengamos una regla para acceder por ssh al Kali

20

Por último le damos 25GB de almacenamiento y ya podemos Lanzar Instancia

21

Probamos el acceso a la instancia, le damos permisos correspondientes a la llave y accedemos

chmod 400 kalidemo
ssh -i kalidemo.pem kali@54.236.37.6

22

Verificación del acceso al Kali

23

  1. Subida archivo OVA a AWS S3

    Primero debemos comprobar la región donde se encuentra la instancia, para esta demo se encuentra en us-east-1

    24

    Vamos a crear un bucket de S3, por lo que buscamos en la barra s3 y damos click

    25

    Creamos un bucket

    26

    Colocamos el nombre que deseamos y verificamos la región sea us-east-1

    27

    Para temas de este laboratorio vamos a darles permiso público al bucket, desmarcamos la opción Bloquear todo el acceso público

    28

    Aceptamos los términos y lo demos lo podemos dejar por defecto

    29

    Clickeamnos crear bucket

    30

Damos Click en el nombre del bucket

31

Vamos a cargar el ova que bajamos de vulnhub

Es importa antes de iniciar la carga del ova, verificar que nombre del archivo no tenga espacios

32

Por último comprobemos si los permisos fueron otorgados correctamente accedemos al bucket desde el navegador

34

Una vez seleccionado el objeto debemos apuntar los URI lo usaremos más adelante y copiar la URL del objeto

35

Si les aparece algo como esto, debemos verificar los permisos

36

Vamos a cambiar el método de permisos de los bucket

37

Seleccionamos como aparece en la imagen

38

Regresamos a los permisos del objeto

39

Vamos a editar la lista de control de acceso

40

Habilitamos la lectura pública, aceptamos los términos y guardamos. Recordemos esto solamente lo hacemos de esta manera dado que es un lab, podemos restringir los permisos cuando ya hemos importado el ova

41

Comprobamos el acceso al objeto

42

  1. Subida del OVA

    Los siguientes pasos los vamos a realizar desde el cloud shell de aws, no importa el servicio donde estemos podemos darle click al icono de la terminal

    43

Cerramos el mensaje

44

Se nos debe desplegar una terminal interactiva

45

Necesitamos crear tres archivos containers.json con la ruta del .ova, el archivo trust-policy.json para aguar la política de importación y por último el archivo role-policy.json con la política donde se encuentra la imagen.

Vamos a crear containers.json

vi containers.json

Va contener lo siguiente

 [
{
"Description": "My Server OVA",
"Format": "ova",
"Url": "s3://my-import-bucket/vms/my-server-vm.ova"
}
]

Reemplazamos el url por la ruta del bucket de s3

46

Creamos el archivo trust-policy.json

vi trust-policy.json

Con el siguiente contenido

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": "vmie.amazonaws.com" },
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals":{
"sts:Externalid": "vmimport"
}
}
}
]
}

47

Crearemos un role llamado vmimport y le damos acceso de importación y exportación.

` aws iam create-role –role-name vmimport –assume-role-policy-document “file://~/trust-policy.json”`

Si todo sale bien debemos ver lo siguiente

48

Creamos un archivo con la política de role-policy.json

vi role-policy.json

Con el siguiente contenido, reemplazamos donde dice **** por el correspondiente del bucket

{
"Version":"2012-10-17",
"Statement":[
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"<your arn>",
"<your arn>/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject",
"s3:GetBucketAcl"
],
"Resource": [
"<your arn>",
"your arn/*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:ModifySnapshotAttribute",
"ec2:CopySnapshot",
"ec2:RegisterImage",
"ec2:Describe*"
],
"Resource": "*"
}
]
}

49

Utilice el siguiente comando put-role-policy para adjuntar la política al rol creado anteriormente. Asegúrese de especificar la ruta completa a la ubicación del archivo role-policy.json.

aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://~/role-policy.json"

50

Importamos la imagen

aws ec2 import-image --description "Vulnerable Ova" --disk-containers "file://~/containers.json"

51

Podremos verificar el estatus con el siguiente comando

aws ec2 describe-import-image-tasks --import-task-ids import-ami-0b9aef01fc95f30d2

Donde el –import-task-ids lo obtenemos del mensaje de arriba en este caso “ImportTaskId”: “import-ami-06351f55bca1ab48f”

52

El estatus debe pasar a completed

53

  1. Creación de la VM

    Vamos instancias EC2 y la sección de AMI y verificamos que en efecto se importo con el id import-ami-06351f55bca1ab48f y procedemos a lanzar una instancia

    54

Al seleccionar lanzar la instancia desde la Ami, nos crea la misma a partir del OVA importada

De esta parte podemos dejar los datos por defecto a excepción Configuraciones de red, aquí procedemos a seleccionar el vpc que creamos inicialmente y bajamos el firewall de la instancia

55

Permitimos todo el tráfico y lanzamos la instancia

56

Verificamos las instancias estén en ejecución

57

Podemos acceder al ip publico de la instancia vulnerable y comenzar con nuestro pentest

58

  1. Bibliografía
  • Required permissions for VM Import/Export - VM Import/Export. (s. f.). https://docs.aws.amazon.com/vm-import/latest/userguide/required-permissions.html