# Hacking en MacOS

{% 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://afsh4ck.gitbook.io/ethical-hacking-cheatsheet/recopilacion-de-informacion/hacking-en-macos.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
