> For the complete documentation index, see [llms.txt](https://afsh4ck.gitbook.io/ethical-hacking-cheatsheet/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://afsh4ck.gitbook.io/ethical-hacking-cheatsheet/recopilacion-de-informacion/hacking-en-macos.md).

# Hacking en MacOS

En esta sección veremos algunos comandos útiles para enumerar información y servicios en MacOS, con los que podremos abusar de privilegios de administrador.

{% hint style="danger" %}
**Nota:** Vamos a enumerar información sensible y a abusar de privilegios de administrador, por lo que no podemos utilizar estas técnicas sin un consentimiento o aprobación por parte del objetivo
{% endhint %}

## <mark style="color:purple;">Enumeración y modificación de usuarios</mark>

<table data-header-hidden><thead><tr><th width="401"></th><th></th></tr></thead><tbody><tr><td><strong>Comando</strong></td><td><strong>Descripción</strong></td></tr><tr><td><code>dscl . list /Users</code></td><td>Muestra todas las cuentas de usuario y daemon</td></tr><tr><td><code>dscl . list /Users | grep -v '_'</code></td><td><p>Muestra todas las cuentas de usuario </p><p>(Sin daemon accounts)</p></td></tr><tr><td><code>dscacheutil -q user</code></td><td>Muestra información detallada del usuario (tipo de shell, gid, uid, nombre completo, descripción). etc.)</td></tr><tr><td><code>groups &#x3C;USERNAME></code></td><td>Muestra a que grupos pertenece un usuario</td></tr><tr><td><code>dscl . -read /Users/&#x3C;USERNAME></code></td><td>Muestra información de usuario muy detallada (hash de usuario incluido)</td></tr><tr><td><code>dscacheutil -q group -a name &#x3C;GROUPNAME></code></td><td>Enumerar las asignaciones de un grupo específico</td></tr><tr><td><code>dscl . -delete /Users/&#x3C;USERNAME></code></td><td>Eliminar usuario</td></tr></tbody></table>

## <mark style="color:purple;">Crear usuario y hacer Administrador</mark>

<table data-header-hidden><thead><tr><th width="401"></th><th></th></tr></thead><tbody><tr><td><strong>Comando</strong></td><td><strong>Descripción</strong></td></tr><tr><td><code>dscl . -create /Users/&#x3C;USERNAME></code></td><td>Crear usuario</td></tr><tr><td><code>dscl. -create /Users/&#x3C;USERNAME> UserShell /bin/bash</code></td><td>Establecer preferencias de shell para el usuario</td></tr><tr><td><code>dscl . -create /Users/&#x3C;USERNAME> RealName"&#x3C;USER FULL NAME>"</code></td><td>Establecer nombre completo del usuario</td></tr><tr><td><code>dscl . list /Users UniqueID</code></td><td>Enumerar los IDs y seleccionar uno que no se utilice </td></tr><tr><td><code>dscl ﻿﻿-create /Users/&#x3C;USERNAME> UniqueID "&#x3C;NEWLY SELECTED ID>"</code></td><td>Establecer ID único para el usuario</td></tr><tr><td><code>dscl . -create /Users/&#x3C;USERNAME> PrimaryGroupID 20</code></td><td>Enumerar lista de usuarios que pertenecen a un grupo.</td></tr><tr><td><p><code>dscl . create /Users/&#x3C;USERNAME> NFSHomeDirectory /Users/&#x3C;USERNAME></code> </p><p></p><p><code>mkdir /Users/&#x3C;USERNAME></code></p></td><td>Crear directorio home</td></tr><tr><td><code>dscl . -passwd /Users/&#x3C;USERNAME></code></td><td>Establecer contraseña de usuario</td></tr><tr><td><code>dscl -append /Groups/admin GroupMembership &#x3C;USERNAME></code></td><td>Agregar usuario al grupo de administradores</td></tr></tbody></table>

## <mark style="color:purple;">Crear un grupo</mark>

<table data-header-hidden><thead><tr><th width="401"></th><th></th></tr></thead><tbody><tr><td><strong>Comando</strong></td><td><strong>Descripción</strong></td></tr><tr><td><code>sudo dscl . -create /Groups/&#x3C;GROUPNAME></code></td><td>Crear grupo</td></tr><tr><td><code>sudo dscl . -create /Groups/&#x3C;GROUPNAME> RealName "Service and Support"</code></td><td>Agregar nombre real a un grupo</td></tr><tr><td><code>sudo dsc1 . -create /Groups/&#x3C;GROUPNAME> passwd "*"</code></td><td>Establecer contraseña de grupo</td></tr><tr><td><code>dscl . list /Groups PrimaryGroupID | tr -s ' ' | so rt -n -t ' ' -k2,2</code></td><td>Buscar ID de grupo no utilizado</td></tr><tr><td><code>sudo dscl . -create /Groups/&#x3C;GROUPNAME> gid &#x3C;NEWLY SELECTED_ID></code></td><td>Asignar nuevo ID a un grupo</td></tr><tr><td><code>sudo dscl . -create / Groups/ &#x3C;GROUPNAME> GroupMembership &#x3C;USERNAME></code></td><td>Asigne solo UN usuario al grupo (se sobrescribirá con este UN usuario)</td></tr></tbody></table>

## <mark style="color:purple;">Enumeración y modificación de grupos</mark>

<table data-header-hidden><thead><tr><th width="401"></th><th></th></tr></thead><tbody><tr><td><strong>Comando</strong></td><td><strong>Descripción</strong></td></tr><tr><td><code>dscacheutil -q group</code></td><td>Enumerar todos los grupos y sus miembros</td></tr><tr><td><code>sudo dscl . -append /Groups/&#x3C;GROUPNAME> GroupMembership &#x3C;USERNAME></code></td><td>Agregar usuario a un grupo</td></tr><tr><td><code>sudo dscl . -delete /Groups/&#x3C;GROUPNAME> GroupMembership &#x3C;USERNAME></code></td><td>Eliminar usuario de un grupo</td></tr><tr><td><code>dscl . -delete /Groups/&#x3C;GROUPNAME></code></td><td>Eliminar grupo</td></tr></tbody></table>
