macOS Sandbox
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Informaci贸n B谩sica
MacOS Sandbox (inicialmente llamado Seatbelt) limita las aplicaciones que se ejecutan dentro del sandbox a las acciones permitidas especificadas en el perfil de Sandbox con el que se est谩 ejecutando la aplicaci贸n. Esto ayuda a garantizar que la aplicaci贸n solo acceder谩 a los recursos esperados.
Cualquier aplicaci贸n con la entitlement com.apple.security.app-sandbox
se ejecutar谩 dentro del sandbox. Los binarios de Apple generalmente se ejecutan dentro de un Sandbox, y todas las aplicaciones de la App Store tienen esa entitlement. Por lo tanto, varias aplicaciones se ejecutar谩n dentro del sandbox.
Para controlar lo que un proceso puede o no hacer, el Sandbox tiene hooks en casi cualquier operaci贸n que un proceso podr铆a intentar (incluyendo la mayor铆a de las syscalls) utilizando MACF. Sin embargo, dependiendo de las entitlements de la aplicaci贸n, el Sandbox podr铆a ser m谩s permisivo con el proceso.
Algunos componentes importantes del Sandbox son:
- La extensi贸n del kernel
/System/Library/Extensions/Sandbox.kext
- El framework privado
/System/Library/PrivateFrameworks/AppSandbox.framework
- Un daemon que se ejecuta en userland
/usr/libexec/sandboxd
- Los contenedores
~/Library/Containers
Contenedores
Cada aplicaci贸n en sandbox tendr谩 su propio contenedor en ~/Library/Containers/{CFBundleIdentifier}
:
ls -l ~/Library/Containers
total 0
drwx------@ 4 username staff 128 May 23 20:20 com.apple.AMPArtworkAgent
drwx------@ 4 username staff 128 May 23 20:13 com.apple.AMPDeviceDiscoveryAgent
drwx------@ 4 username staff 128 Mar 24 18:03 com.apple.AVConference.Diagnostic
drwx------@ 4 username staff 128 Mar 25 14:14 com.apple.Accessibility-Settings.extension
drwx------@ 4 username staff 128 Mar 25 14:10 com.apple.ActionKit.BundledIntentHandler
[...]
Dentro de cada carpeta de id de paquete, puedes encontrar el plist y el Directorio de Datos de la aplicaci贸n con una estructura que imita la carpeta de inicio:
cd /Users/username/Library/Containers/com.apple.Safari
ls -la
total 104
drwx------@ 4 username staff 128 Mar 24 18:08 .
drwx------ 348 username staff 11136 May 23 20:57 ..
-rw-r--r-- 1 username staff 50214 Mar 24 18:08 .com.apple.containermanagerd.metadata.plist
drwx------ 13 username staff 416 Mar 24 18:05 Data
ls -l Data
total 0
drwxr-xr-x@ 8 username staff 256 Mar 24 18:08 CloudKit
lrwxr-xr-x 1 username staff 19 Mar 24 18:02 Desktop -> ../../../../Desktop
drwx------ 2 username staff 64 Mar 24 18:02 Documents
lrwxr-xr-x 1 username staff 21 Mar 24 18:02 Downloads -> ../../../../Downloads
drwx------ 35 username staff 1120 Mar 24 18:08 Library
lrwxr-xr-x 1 username staff 18 Mar 24 18:02 Movies -> ../../../../Movies
lrwxr-xr-x 1 username staff 17 Mar 24 18:02 Music -> ../../../../Music
lrwxr-xr-x 1 username staff 20 Mar 24 18:02 Pictures -> ../../../../Pictures
drwx------ 2 username staff 64 Mar 24 18:02 SystemData
drwx------ 2 username staff 64 Mar 24 18:02 tmp
caution
Tenga en cuenta que incluso si los symlinks est谩n ah铆 para "escapar" del Sandbox y acceder a otras carpetas, la App a煤n necesita tener permisos para acceder a ellas. Estos permisos est谩n dentro del .plist
en los RedirectablePaths
.
El SandboxProfileData
es el perfil de sandbox compilado CFData escapado a B64.
# Get container config
## You need FDA to access the file, not even just root can read it
plutil -convert xml1 .com.apple.containermanagerd.metadata.plist -o -
# Binary sandbox profile
<key>SandboxProfileData</key>
<data>
AAAhAboBAAAAAAgAAABZAO4B5AHjBMkEQAUPBSsGPwsgASABHgEgASABHwEf...
# In this file you can find the entitlements:
<key>Entitlements</key>
<dict>
<key>com.apple.MobileAsset.PhishingImageClassifier2</key>
<true/>
<key>com.apple.accounts.appleaccount.fullaccess</key>
<true/>
<key>com.apple.appattest.spi</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>6N38VWS5BX.ru.keepcoder.Telegram</string>
<string>6N38VWS5BX.ru.keepcoder.TelegramShare</string>
</array>
[...]
# Some parameters
<key>Parameters</key>
<dict>
<key>_HOME</key>
<string>/Users/username</string>
<key>_UID</key>
<string>501</string>
<key>_USER</key>
<string>username</string>
[...]
# The paths it can access
<key>RedirectablePaths</key>
<array>
<string>/Users/username/Downloads</string>
<string>/Users/username/Documents</string>
<string>/Users/username/Library/Calendars</string>
<string>/Users/username/Desktop</string>
<key>RedirectedPaths</key>
<array/>
[...]
warning
Todo lo creado/modificado por una aplicaci贸n en Sandbox recibir谩 el atributo de cuarentena. Esto evitar谩 un espacio de sandbox al activar Gatekeeper si la aplicaci贸n en sandbox intenta ejecutar algo con open
.
Perfiles de Sandbox
Los perfiles de Sandbox son archivos de configuraci贸n que indican lo que se va a permitir/prohibir en ese Sandbox. Utiliza el Lenguaje de Perfiles de Sandbox (SBPL), que utiliza el Scheme lenguaje de programaci贸n.
Aqu铆 puedes encontrar un ejemplo:
(version 1) ; First you get the version
(deny default) ; Then you shuold indicate the default action when no rule applies
(allow network*) ; You can use wildcards and allow everything
(allow file-read* ; You can specify where to apply the rule
(subpath "/Users/username/")
(literal "/tmp/afile")
(regex #"^/private/etc/.*")
)
(allow mach-lookup
(global-name "com.apple.analyticsd")
)
tip
Consulta esta investigaci贸n para ver m谩s acciones que podr铆an ser permitidas o denegadas.
Ten en cuenta que en la versi贸n compilada de un perfil, el nombre de las operaciones es sustituido por sus entradas en un array conocido por el dylib y el kext, haciendo que la versi贸n compilada sea m谩s corta y m谩s dif铆cil de leer.
Los servicios del sistema importantes tambi茅n se ejecutan dentro de su propio sandbox personalizado, como el servicio mdnsresponder
. Puedes ver estos perfiles de sandbox personalizados en:
/usr/share/sandbox
/System/Library/Sandbox/Profiles
- Otros perfiles de sandbox se pueden consultar en https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles.
Las aplicaciones de la App Store utilizan el perfil /System/Library/Sandbox/Profiles/application.sb
. Puedes verificar en este perfil c贸mo los derechos como com.apple.security.network.server
permiten a un proceso utilizar la red.
Luego, algunos servicios de demonios de Apple utilizan diferentes perfiles ubicados en /System/Library/Sandbox/Profiles/*.sb
o /usr/share/sandbox/*.sb
. Estos sandboxes se aplican en la funci贸n principal que llama a la API sandbox_init_XXX
.
SIP es un perfil de Sandbox llamado platform_profile en /System/Library/Sandbox/rootless.conf
.
Ejemplos de Perfiles de Sandbox
Para iniciar una aplicaci贸n con un perfil de sandbox espec铆fico, puedes usar:
sandbox-exec -f example.sb /Path/To/The/Application
(version 1)
(deny default)
(allow file* (literal "/tmp/hacktricks.txt"))
# This will fail because default is denied, so it cannot execute touch
sandbox-exec -f touch.sb touch /tmp/hacktricks.txt
# Check logs
log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last 30s
[...]
2023-05-26 13:42:44.136082+0200 localhost kernel[0]: (Sandbox) Sandbox: sandbox-exec(41398) deny(1) process-exec* /usr/bin/touch
2023-05-26 13:42:44.136100+0200 localhost kernel[0]: (Sandbox) Sandbox: sandbox-exec(41398) deny(1) file-read-metadata /usr/bin/touch
2023-05-26 13:42:44.136321+0200 localhost kernel[0]: (Sandbox) Sandbox: sandbox-exec(41398) deny(1) file-read-metadata /var
2023-05-26 13:42:52.701382+0200 localhost kernel[0]: (Sandbox) 5 duplicate reports for Sandbox: sandbox-exec(41398) deny(1) file-read-metadata /var
[...]
(version 1)
(deny default)
(allow file* (literal "/tmp/hacktricks.txt"))
(allow process* (literal "/usr/bin/touch"))
; This will also fail because:
; 2023-05-26 13:44:59.840002+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) file-read-metadata /usr/bin/touch
; 2023-05-26 13:44:59.840016+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) file-read-data /usr/bin/touch
; 2023-05-26 13:44:59.840028+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) file-read-data /usr/bin
; 2023-05-26 13:44:59.840034+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) file-read-metadata /usr/lib/dyld
; 2023-05-26 13:44:59.840050+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) sysctl-read kern.bootargs
; 2023-05-26 13:44:59.840061+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) file-read-data /
(version 1)
(deny default)
(allow file* (literal "/private/tmp/hacktricks.txt"))
(allow process* (literal "/usr/bin/touch"))
(allow file-read-data (literal "/"))
; This one will work
note
Tenga en cuenta que el software autorizado por Apple que se ejecuta en Windows no tiene precauciones de seguridad adicionales, como el sandboxing de aplicaciones.
Ejemplos de bypass:
- https://lapcatsoftware.com/articles/sandbox-escape.html
- https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c (pueden escribir archivos fuera del sandbox cuyo nombre comienza con
~$
).
Trazado de Sandbox
A trav茅s del perfil
Es posible rastrear todas las verificaciones que realiza el sandbox cada vez que se verifica una acci贸n. Para ello, solo crea el siguiente perfil:
(version 1)
(trace /tmp/trace.out)
Y luego simplemente ejecuta algo usando ese perfil:
sandbox-exec -f /tmp/trace.sb /bin/ls
En /tmp/trace.out
podr谩s ver cada verificaci贸n de sandbox realizada cada vez que se llam贸 (por lo que hay muchas duplicaciones).
Tambi茅n es posible rastrear el sandbox usando el -t
par谩metro: sandbox-exec -t /path/trace.out -p "(version 1)" /bin/ls
A trav茅s de API
La funci贸n sandbox_set_trace_path
exportada por libsystem_sandbox.dylib
permite especificar un nombre de archivo de rastreo donde se escribir谩n las verificaciones de sandbox.
Tambi茅n es posible hacer algo similar llamando a sandbox_vtrace_enable()
y luego obteniendo los registros de error del b煤fer llamando a sandbox_vtrace_report()
.
Inspecci贸n de Sandbox
libsandbox.dylib
exporta una funci贸n llamada sandbox_inspect_pid que proporciona una lista del estado del sandbox de un proceso (incluidas las extensiones). Sin embargo, solo los binarios de la plataforma pueden usar esta funci贸n.
Perfiles de Sandbox en MacOS e iOS
MacOS almacena los perfiles de sandbox del sistema en dos ubicaciones: /usr/share/sandbox/ y /System/Library/Sandbox/Profiles.
Y si una aplicaci贸n de terceros tiene el com.apple.security.app-sandbox derecho, el sistema aplica el perfil /System/Library/Sandbox/Profiles/application.sb a ese proceso.
En iOS, el perfil predeterminado se llama container y no tenemos la representaci贸n de texto SBPL. En memoria, este sandbox se representa como un 谩rbol binario de Permitir/Denegar para cada permiso del sandbox.
SBPL personalizado en aplicaciones de la App Store
Podr铆a ser posible que las empresas hicieran que sus aplicaciones funcionaran con perfiles de Sandbox personalizados (en lugar de con el predeterminado). Necesitan usar el derecho com.apple.security.temporary-exception.sbpl
que debe ser autorizado por Apple.
Es posible verificar la definici贸n de este derecho en /System/Library/Sandbox/Profiles/application.sb:
(sandbox-array-entitlement
"com.apple.security.temporary-exception.sbpl"
(lambda (string)
(let* ((port (open-input-string string)) (sbpl (read port)))
(with-transparent-redirection (eval sbpl)))))
Esto eval煤a la cadena despu茅s de este derecho como un perfil de Sandbox.
Compilaci贸n y descompilaci贸n de un perfil de Sandbox
La herramienta sandbox-exec
utiliza las funciones sandbox_compile_*
de libsandbox.dylib
. Las funciones principales exportadas son: sandbox_compile_file
(espera una ruta de archivo, par谩metro -f
), sandbox_compile_string
(espera una cadena, par谩metro -p
), sandbox_compile_name
(espera un nombre de contenedor, par谩metro -n
), sandbox_compile_entitlements
(espera un plist de derechos).
Esta versi贸n revertida y de c贸digo abierto de la herramienta sandbox-exec permite que sandbox-exec
escriba en un archivo el perfil de sandbox compilado.
Adem谩s, para confinar un proceso dentro de un contenedor, puede llamar a sandbox_spawnattrs_set[container/profilename]
y pasar un contenedor o perfil preexistente.
Depurar y eludir el Sandbox
En macOS, a diferencia de iOS donde los procesos est谩n en sandbox desde el inicio por el kernel, los procesos deben optar por el sandbox ellos mismos. Esto significa que en macOS, un proceso no est谩 restringido por el sandbox hasta que decide activamente entrar en 茅l, aunque las aplicaciones de la App Store siempre est谩n en sandbox.
Los procesos se en sandbox autom谩ticamente desde el userland cuando comienzan si tienen el derecho: com.apple.security.app-sandbox
. Para una explicaci贸n detallada de este proceso, consulta:
Extensiones de Sandbox
Las extensiones permiten otorgar privilegios adicionales a un objeto y se otorgan llamando a una de las funciones:
sandbox_issue_extension
sandbox_extension_issue_file[_with_new_type]
sandbox_extension_issue_mach
sandbox_extension_issue_iokit_user_client_class
sandbox_extension_issue_iokit_registry_rentry_class
sandbox_extension_issue_generic
sandbox_extension_issue_posix_ipc
Las extensiones se almacenan en la segunda ranura de etiqueta MACF accesible desde las credenciales del proceso. La siguiente sbtool
puede acceder a esta informaci贸n.
Ten en cuenta que las extensiones generalmente son otorgadas por procesos permitidos, por ejemplo, tccd
otorgar谩 el token de extensi贸n de com.apple.tcc.kTCCServicePhotos
cuando un proceso intente acceder a las fotos y se le permita en un mensaje XPC. Luego, el proceso necesitar谩 consumir el token de extensi贸n para que se le agregue.
Ten en cuenta que los tokens de extensi贸n son largos hexadecimales que codifican los permisos otorgados. Sin embargo, no tienen el PID permitido codificado, lo que significa que cualquier proceso con acceso al token podr铆a ser consumido por m煤ltiples procesos.
Ten en cuenta que las extensiones est谩n muy relacionadas con los derechos tambi茅n, por lo que tener ciertos derechos podr铆a otorgar autom谩ticamente ciertas extensiones.
Verificar privilegios de PID
Seg煤n esto, las funciones sandbox_check
(es un __mac_syscall
), pueden verificar si una operaci贸n est谩 permitida o no por el sandbox en un cierto PID, token de auditor铆a o ID 煤nico.
La herramienta sbtool (encu茅ntrala compilada aqu铆) puede verificar si un PID puede realizar ciertas acciones:
sbtool <pid> mach #Check mac-ports (got from launchd with an api)
sbtool <pid> file /tmp #Check file access
sbtool <pid> inspect #Gives you an explanation of the sandbox profile and extensions
sbtool <pid> all
[un]suspend
Tambi茅n es posible suspender y reanudar el sandbox utilizando las funciones sandbox_suspend
y sandbox_unsuspend
de libsystem_sandbox.dylib
.
Tenga en cuenta que para llamar a la funci贸n de suspensi贸n se verifican algunos derechos para autorizar al llamador a invocarla, como:
- com.apple.private.security.sandbox-manager
- com.apple.security.print
- com.apple.security.temporary-exception.audio-unit-host
mac_syscall
Esta llamada al sistema (#381) espera un primer argumento de tipo cadena que indicar谩 el m贸dulo a ejecutar, y luego un c贸digo en el segundo argumento que indicar谩 la funci贸n a ejecutar. Luego, el tercer argumento depender谩 de la funci贸n ejecutada.
La llamada a la funci贸n ___sandbox_ms
envuelve mac_syscall
indicando en el primer argumento "Sandbox"
, as铆 como ___sandbox_msp
es un envoltorio de mac_set_proc
(#387). Luego, algunos de los c贸digos soportados por ___sandbox_ms
se pueden encontrar en esta tabla:
- set_profile (#0): Aplica un perfil compilado o nombrado a un proceso.
- platform_policy (#1): Impone verificaciones de pol铆ticas espec铆ficas de la plataforma (var铆a entre macOS y iOS).
- check_sandbox (#2): Realiza una verificaci贸n manual de una operaci贸n espec铆fica del sandbox.
- note (#3): Agrega una anotaci贸n a un Sandbox.
- container (#4): Adjunta una anotaci贸n a un sandbox, t铆picamente para depuraci贸n o identificaci贸n.
- extension_issue (#5): Genera una nueva extensi贸n para un proceso.
- extension_consume (#6): Consume una extensi贸n dada.
- extension_release (#7): Libera la memoria vinculada a una extensi贸n consumida.
- extension_update_file (#8): Modifica los par谩metros de una extensi贸n de archivo existente dentro del sandbox.
- extension_twiddle (#9): Ajusta o modifica una extensi贸n de archivo existente (por ejemplo, TextEdit, rtf, rtfd).
- suspend (#10): Suspende temporalmente todas las verificaciones del sandbox (requiere derechos apropiados).
- unsuspend (#11): Reanuda todas las verificaciones del sandbox que fueron suspendidas previamente.
- passthrough_access (#12): Permite el acceso directo a un recurso, eludiendo las verificaciones del sandbox.
- set_container_path (#13): (solo iOS) Establece una ruta de contenedor para un grupo de aplicaciones o ID de firma.
- container_map (#14): (solo iOS) Recupera una ruta de contenedor de
containermanagerd
. - sandbox_user_state_item_buffer_send (#15): (iOS 10+) Establece metadatos de modo usuario en el sandbox.
- inspect (#16): Proporciona informaci贸n de depuraci贸n sobre un proceso en sandbox.
- dump (#18): (macOS 11) Volcar el perfil actual de un sandbox para an谩lisis.
- vtrace (#19): Rastrear operaciones del sandbox para monitoreo o depuraci贸n.
- builtin_profile_deactivate (#20): (macOS < 11) Desactiva perfiles nombrados (por ejemplo,
pe_i_can_has_debugger
). - check_bulk (#21): Realiza m煤ltiples operaciones
sandbox_check
en una sola llamada. - reference_retain_by_audit_token (#28): Crea una referencia para un token de auditor铆a para su uso en verificaciones del sandbox.
- reference_release (#29): Libera una referencia de token de auditor铆a previamente retenida.
- rootless_allows_task_for_pid (#30): Verifica si
task_for_pid
est谩 permitido (similar a las verificacionescsr
). - rootless_whitelist_push (#31): (macOS) Aplica un archivo de manifiesto de Protecci贸n de Integridad del Sistema (SIP).
- rootless_whitelist_check (preflight) (#32): Verifica el archivo de manifiesto SIP antes de la ejecuci贸n.
- rootless_protected_volume (#33): (macOS) Aplica protecciones SIP a un disco o partici贸n.
- rootless_mkdir_protected (#34): Aplica protecci贸n SIP/DataVault a un proceso de creaci贸n de directorio.
Sandbox.kext
Tenga en cuenta que en iOS la extensi贸n del kernel contiene todos los perfiles codificados dentro del segmento __TEXT.__const
para evitar que sean modificados. Las siguientes son algunas funciones interesantes de la extensi贸n del kernel:
hook_policy_init
: Enganchampo_policy_init
y se llama despu茅s demac_policy_register
. Realiza la mayor铆a de las inicializaciones del Sandbox. Tambi茅n inicializa SIP.hook_policy_initbsd
: Configura la interfaz sysctl registrandosecurity.mac.sandbox.sentinel
,security.mac.sandbox.audio_active
ysecurity.mac.sandbox.debug_mode
(si se inicia conPE_i_can_has_debugger
).hook_policy_syscall
: Se llama desdemac_syscall
con "Sandbox" como primer argumento y un c贸digo que indica la operaci贸n en el segundo. Se utiliza un switch para encontrar el c贸digo a ejecutar seg煤n el c贸digo solicitado.
MACF Hooks
Sandbox.kext
utiliza m谩s de un centenar de hooks a trav茅s de MACF. La mayor铆a de los hooks solo verificar谩n algunos casos triviales que permiten realizar la acci贸n; si no, llamar谩n a cred_sb_evalutate
con las credenciales de MACF y un n煤mero correspondiente a la operaci贸n a realizar y un buffer para la salida.
Un buen ejemplo de esto es la funci贸n _mpo_file_check_mmap
que engancha mmap
y que comenzar谩 a verificar si la nueva memoria va a ser escribible (y si no, permitir谩 la ejecuci贸n), luego verificar谩 si se utiliza para la cach茅 compartida de dyld y, si es as铆, permitir谩 la ejecuci贸n, y finalmente llamar谩 a sb_evaluate_internal
(o uno de sus envoltorios) para realizar m谩s verificaciones de autorizaci贸n.
Adem谩s, de los cientos de hooks que utiliza Sandbox, hay 3 en particular que son muy interesantes:
mpo_proc_check_for
: Aplica el perfil si es necesario y si no se hab铆a aplicado previamente.mpo_vnode_check_exec
: Se llama cuando un proceso carga el binario asociado, luego se realiza una verificaci贸n de perfil y tambi茅n una verificaci贸n que proh铆be ejecuciones SUID/SGID.mpo_cred_label_update_execve
: Se llama cuando se asigna la etiqueta. Este es el m谩s largo, ya que se llama cuando el binario est谩 completamente cargado pero a煤n no se ha ejecutado. Realizar谩 acciones como crear el objeto sandbox, adjuntar la estructura del sandbox a las credenciales de kauth, eliminar el acceso a los puertos mach...
Tenga en cuenta que _cred_sb_evalutate
es un envoltorio sobre sb_evaluate_internal
y esta funci贸n obtiene las credenciales pasadas y luego realiza la evaluaci贸n utilizando la funci贸n eval
que generalmente eval煤a el perfil de plataforma que se aplica por defecto a todos los procesos y luego el perfil de proceso espec铆fico. Tenga en cuenta que el perfil de plataforma es uno de los componentes principales de SIP en macOS.
Sandboxd
Sandbox tambi茅n tiene un daemon de usuario en ejecuci贸n que expone el servicio XPC Mach com.apple.sandboxd
y vincula el puerto especial 14 (HOST_SEATBELT_PORT
) que la extensi贸n del kernel utiliza para comunicarse con 茅l. Expone algunas funciones utilizando MIG.
References
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.