Trager
07.05.2023, 17:17
https://forum.antichat.xyz/attachments/29104844/1683281058613.png
Приветствую,
Кодебай
! Сегодня пройдём машину средней сложности под названием
Investigation
. Основной упор будет сделан в форензику (логи
Windows
) и реверс. Приятного чтения
Разведка
Начинаем со сканирования портов:
https://forum.antichat.xyz/attachments/29104844/1683372443537.png
Переходим на 80-ый порт:
https://forum.antichat.xyz/attachments/29104844/1683372480412.png
Чтобы попасть на домен нам требуется отредактировать файл
/etc/hosts
:
https://forum.antichat.xyz/attachments/29104844/1683373891596.png
Теперь мы можем получить доступ к сайту:
https://forum.antichat.xyz/attachments/29104844/1683373918859.png
На нём нам предлагают загрузить картинку для криминалистического анализа:
https://forum.antichat.xyz/attachments/29104844/1683374520924.png
Пробуем загрузить текстовый файл:
https://forum.antichat.xyz/attachments/29104844/1683376064890.png
Вылетает ошибка, значит на веб-сайте есть какие-то фильтры:
https://forum.antichat.xyz/attachments/29104844/1683376085046.png
На данном этапе я потратил некоторое количество времени, чтобы обойти эти фильтры, но всё оказалось безуспешно. Попробуем загрузить валидный файл:
https://forum.antichat.xyz/attachments/29104844/1683376141119.png
И нам вываливается ссылка на отчёт по файлу, кликаем по ней:
https://forum.antichat.xyz/attachments/29104844/1683376205941.png
Оказывается, что файлы обрабатываются
exiftool'ом
версии
12.37
. Гуглим уязвимости/эксплойты:
https://forum.antichat.xyz/attachments/29104844/1683376250667.png
Мы можем получить
Command Injection
, если будем эксплуатировать
CVE-2022-23935
. Возьмём какой-нибудь эксплоит (например, этот):
https://forum.antichat.xyz/attachments/29104844/1683376345515.png
Тут есть полная инструкция по эксплуатации. Для начала установим
pwntools
:
https://forum.antichat.xyz/attachments/29104844/1683376381704.png
И запустим сам эксплоит:
https://forum.antichat.xyz/attachments/29104844/1683376397638.png
У меня возникли некоторые проблемы с подключением (плохая оболочка), поэтому я взял от эксплойта только сгенерированный файл, а сам шелл получил через
netcat
:
https://forum.antichat.xyz/attachments/29104844/1683376464986.png
https://forum.antichat.xyz/attachments/29104844/1683376472973.png
https://forum.antichat.xyz/attachments/29104844/1683376482086.png
Взятие пользователя
Проверяем какие имеются пользователи с хоум каталогом в системе:
https://forum.antichat.xyz/attachments/29104844/1683376522983.png
И качаем
linpeas
:
https://forum.antichat.xyz/attachments/29104844/1683376696664.png
Даём ему права и запускаем:
https://forum.antichat.xyz/attachments/29104844/1683376718695.png
В отчёте мы можем увидеть следующую строку:
https://forum.antichat.xyz/attachments/29104844/1683376736868.png
К сожалению, тут нет ничего особенного, чтобы что-то сразу проэксплуатировать, но есть дополнительная информация - это путь
/usr/local/investigation/
.
https://forum.antichat.xyz/attachments/29104844/1683383484847.png
Переходим в
/usr/local/investigation
и видим там
.msg
файл. Почитав мануалов, я пришёл к выводу, что данный файл нужно сконвертировать в
evtx
и прочитать с помощью
"Просмотра событий"
Windows
.
Для начала поднимем
python
-сервер, чтобы скачать файл:
https://forum.antichat.xyz/attachments/29104844/1683410369800.png
Качаем файл на свою машину:
https://forum.antichat.xyz/attachments/29104844/1683410389597.png
После этого переходим на любой онлайн сервис, где можно сконвертировать
.msg
в
.evtx
:
https://forum.antichat.xyz/attachments/29104844/1683410429562.png
https://forum.antichat.xyz/attachments/29104844/1683410759468.png
Я лично использовал
Windows
для чтения
evtx
файла, но насколько мне известно, это как-то можно сделать и через
Linux
:
https://forum.antichat.xyz/attachments/29104844/1683410801315.png
Запускаем
"Просмотр событий"
и нажимаем
"Открыть сохраненный журнал..."
, где указываем путь до нашего
evtx
-файла:
https://forum.antichat.xyz/attachments/29104844/1683410822679.png
После этого у нас открылись все логи из файла:
https://forum.antichat.xyz/attachments/29104844/1683410864488.png
Сначала я попытался пересмотреть абсолютно всё, но логов оказалось слишком много, поэтому я начал думать над тем, как оптимизировать поиск.
На сайте
Microsoft
- События аудита входа (Windows 10) - Windows security, мы можем посмотреть коды событий связанные с авторизацией для логов:
https://forum.antichat.xyz/attachments/29104844/1683419248018.png
Чтобы сделать поиск по событию требуется нажать на кнопку
"Фильтр текущего журнала..."
:
https://forum.antichat.xyz/attachments/29104844/1683463143580.png
И указать в нём код(ы):
https://forum.antichat.xyz/attachments/29104844/1683463186927.png
В событии
4625
(Сбой входа) можно найти что-то похожее на пароль (т. е. пользователь ввёл пароль вместо юзернейма):
https://forum.antichat.xyz/attachments/29104844/1683462788139.png
Попробуем использовать его в качестве пароля для пользователя
smorton
(о котором мы узнали ещё в самом начале):
https://forum.antichat.xyz/attachments/29104844/1683463230554.png
Пользователя взяли. Теперь переходим к руту.
Взятие рута
Используем стандартную команду
sudo -l
после подключения за пользователя, чтобы узнать какие команды/инструменты мы можем использовать от лица суперпользователя:
https://forum.antichat.xyz/attachments/29104844/1683463373706.png
Скорее всего сейчас будет реверс
Огромное спасибо @Mogen (https://forum.antichat.xyz/members/2651428/) за помощь в части с реверсом!
Переходим в
/usr/bin/
и поднимаем
HTTP
-сервер
Python'а
, чтобы скачать бинарник:
https://forum.antichat.xyz/attachments/29104844/1683463421416.png
https://forum.antichat.xyz/attachments/29104844/1683463430833.png
Открываем его в
IDA
и декомпилируем код:
https://forum.antichat.xyz/attachments/29104844/1683629213098.png
1. Функция
main
принимает 3 параметра согласно прототипу функции:
int main (int argc, char *argv[], char *envp[])
. Для нас важны
argc, argv
.
2. Если количество аргументов из командной строки (
argc
) не равно 3, то завершаем программу. Это значит, что мы должны передать аргументы в таком виде:
./binary ARG_2 ARG_3
3. Если программа запущена не от лица суперпользователя, то тоже завершаем программу.
4. В качестве второго аргумента командной строки принимается строка
lDnxUysaQn
, если же мы укажем что-то другое, то программа завершится.
5. Создаётся/открывается файл с названием
lDnxUysaQn
с правами
wb
(write/binary)
, т. е. мы можем в него записать бинарные данные.
6. Настраивается
curl
для первой части аргумента (ссылки).
7. Запускается
curl
. Если запуск неудачен, то завершаем программу.
8. С помощью функции
snprintf
определяется длина строки, которая будет записана в
command_ptr
, указывающая на команду
perl
для выполнения файла, заданного в
ptr
.
Пример определения длины:
data = snprintf(0LL, 0LL, "perl ./%s", ptr);
.
Выделяется память для
command_ptr
. С помощью функции
snprintf
записывается указанная команда в
command_ptr
.
9. Запуск от лица суперпользователя содержимого
command_ptr
в функции
system()
и удаление файла с названием
lDnxUysaQn
.
Резюме: мы можем указать ссылку, а затем
lDnxUysaQn
. Содержимое ссылки запишется в файл и запустится через интерпретатор
perl
от лица суперпользователя.
В таком случае нам нужно скачать любой шелл на перле, например, от
pentest monkey
. И указать в нём свой
IP
и порт.:
https://forum.antichat.xyz/attachments/29104844/1683464807560.png
Теперь опять поднимаем веб-сервер пайтона и ставим листенер, чтобы получить на него шелл:
https://forum.antichat.xyz/attachments/29104844/1683464869563.png
Запускаем бинарник через
sudo
с указанием ссылки и строки
lDnxUysaQn
:
https://forum.antichat.xyz/attachments/29104844/1683464899130.png
Получаем шелл от лица суперпользователя:
https://forum.antichat.xyz/attachments/29104844/1683464932259.png
Друзья, спасибо большое, что нашли время прочитать мой райтап. Если есть какие-то ошибки, то напишите об этом в комментариях
Приветствую,
Кодебай
! Сегодня пройдём машину средней сложности под названием
Investigation
. Основной упор будет сделан в форензику (логи
Windows
) и реверс. Приятного чтения
Разведка
Начинаем со сканирования портов:
https://forum.antichat.xyz/attachments/29104844/1683372443537.png
Переходим на 80-ый порт:
https://forum.antichat.xyz/attachments/29104844/1683372480412.png
Чтобы попасть на домен нам требуется отредактировать файл
/etc/hosts
:
https://forum.antichat.xyz/attachments/29104844/1683373891596.png
Теперь мы можем получить доступ к сайту:
https://forum.antichat.xyz/attachments/29104844/1683373918859.png
На нём нам предлагают загрузить картинку для криминалистического анализа:
https://forum.antichat.xyz/attachments/29104844/1683374520924.png
Пробуем загрузить текстовый файл:
https://forum.antichat.xyz/attachments/29104844/1683376064890.png
Вылетает ошибка, значит на веб-сайте есть какие-то фильтры:
https://forum.antichat.xyz/attachments/29104844/1683376085046.png
На данном этапе я потратил некоторое количество времени, чтобы обойти эти фильтры, но всё оказалось безуспешно. Попробуем загрузить валидный файл:
https://forum.antichat.xyz/attachments/29104844/1683376141119.png
И нам вываливается ссылка на отчёт по файлу, кликаем по ней:
https://forum.antichat.xyz/attachments/29104844/1683376205941.png
Оказывается, что файлы обрабатываются
exiftool'ом
версии
12.37
. Гуглим уязвимости/эксплойты:
https://forum.antichat.xyz/attachments/29104844/1683376250667.png
Мы можем получить
Command Injection
, если будем эксплуатировать
CVE-2022-23935
. Возьмём какой-нибудь эксплоит (например, этот):
https://forum.antichat.xyz/attachments/29104844/1683376345515.png
Тут есть полная инструкция по эксплуатации. Для начала установим
pwntools
:
https://forum.antichat.xyz/attachments/29104844/1683376381704.png
И запустим сам эксплоит:
https://forum.antichat.xyz/attachments/29104844/1683376397638.png
У меня возникли некоторые проблемы с подключением (плохая оболочка), поэтому я взял от эксплойта только сгенерированный файл, а сам шелл получил через
netcat
:
https://forum.antichat.xyz/attachments/29104844/1683376464986.png
https://forum.antichat.xyz/attachments/29104844/1683376472973.png
https://forum.antichat.xyz/attachments/29104844/1683376482086.png
Взятие пользователя
Проверяем какие имеются пользователи с хоум каталогом в системе:
https://forum.antichat.xyz/attachments/29104844/1683376522983.png
И качаем
linpeas
:
https://forum.antichat.xyz/attachments/29104844/1683376696664.png
Даём ему права и запускаем:
https://forum.antichat.xyz/attachments/29104844/1683376718695.png
В отчёте мы можем увидеть следующую строку:
https://forum.antichat.xyz/attachments/29104844/1683376736868.png
К сожалению, тут нет ничего особенного, чтобы что-то сразу проэксплуатировать, но есть дополнительная информация - это путь
/usr/local/investigation/
.
https://forum.antichat.xyz/attachments/29104844/1683383484847.png
Переходим в
/usr/local/investigation
и видим там
.msg
файл. Почитав мануалов, я пришёл к выводу, что данный файл нужно сконвертировать в
evtx
и прочитать с помощью
"Просмотра событий"
Windows
.
Для начала поднимем
python
-сервер, чтобы скачать файл:
https://forum.antichat.xyz/attachments/29104844/1683410369800.png
Качаем файл на свою машину:
https://forum.antichat.xyz/attachments/29104844/1683410389597.png
После этого переходим на любой онлайн сервис, где можно сконвертировать
.msg
в
.evtx
:
https://forum.antichat.xyz/attachments/29104844/1683410429562.png
https://forum.antichat.xyz/attachments/29104844/1683410759468.png
Я лично использовал
Windows
для чтения
evtx
файла, но насколько мне известно, это как-то можно сделать и через
Linux
:
https://forum.antichat.xyz/attachments/29104844/1683410801315.png
Запускаем
"Просмотр событий"
и нажимаем
"Открыть сохраненный журнал..."
, где указываем путь до нашего
evtx
-файла:
https://forum.antichat.xyz/attachments/29104844/1683410822679.png
После этого у нас открылись все логи из файла:
https://forum.antichat.xyz/attachments/29104844/1683410864488.png
Сначала я попытался пересмотреть абсолютно всё, но логов оказалось слишком много, поэтому я начал думать над тем, как оптимизировать поиск.
На сайте
Microsoft
- События аудита входа (Windows 10) - Windows security, мы можем посмотреть коды событий связанные с авторизацией для логов:
https://forum.antichat.xyz/attachments/29104844/1683419248018.png
Чтобы сделать поиск по событию требуется нажать на кнопку
"Фильтр текущего журнала..."
:
https://forum.antichat.xyz/attachments/29104844/1683463143580.png
И указать в нём код(ы):
https://forum.antichat.xyz/attachments/29104844/1683463186927.png
В событии
4625
(Сбой входа) можно найти что-то похожее на пароль (т. е. пользователь ввёл пароль вместо юзернейма):
https://forum.antichat.xyz/attachments/29104844/1683462788139.png
Попробуем использовать его в качестве пароля для пользователя
smorton
(о котором мы узнали ещё в самом начале):
https://forum.antichat.xyz/attachments/29104844/1683463230554.png
Пользователя взяли. Теперь переходим к руту.
Взятие рута
Используем стандартную команду
sudo -l
после подключения за пользователя, чтобы узнать какие команды/инструменты мы можем использовать от лица суперпользователя:
https://forum.antichat.xyz/attachments/29104844/1683463373706.png
Скорее всего сейчас будет реверс
Огромное спасибо @Mogen (https://forum.antichat.xyz/members/2651428/) за помощь в части с реверсом!
Переходим в
/usr/bin/
и поднимаем
HTTP
-сервер
Python'а
, чтобы скачать бинарник:
https://forum.antichat.xyz/attachments/29104844/1683463421416.png
https://forum.antichat.xyz/attachments/29104844/1683463430833.png
Открываем его в
IDA
и декомпилируем код:
https://forum.antichat.xyz/attachments/29104844/1683629213098.png
1. Функция
main
принимает 3 параметра согласно прототипу функции:
int main (int argc, char *argv[], char *envp[])
. Для нас важны
argc, argv
.
2. Если количество аргументов из командной строки (
argc
) не равно 3, то завершаем программу. Это значит, что мы должны передать аргументы в таком виде:
./binary ARG_2 ARG_3
3. Если программа запущена не от лица суперпользователя, то тоже завершаем программу.
4. В качестве второго аргумента командной строки принимается строка
lDnxUysaQn
, если же мы укажем что-то другое, то программа завершится.
5. Создаётся/открывается файл с названием
lDnxUysaQn
с правами
wb
(write/binary)
, т. е. мы можем в него записать бинарные данные.
6. Настраивается
curl
для первой части аргумента (ссылки).
7. Запускается
curl
. Если запуск неудачен, то завершаем программу.
8. С помощью функции
snprintf
определяется длина строки, которая будет записана в
command_ptr
, указывающая на команду
perl
для выполнения файла, заданного в
ptr
.
Пример определения длины:
data = snprintf(0LL, 0LL, "perl ./%s", ptr);
.
Выделяется память для
command_ptr
. С помощью функции
snprintf
записывается указанная команда в
command_ptr
.
9. Запуск от лица суперпользователя содержимого
command_ptr
в функции
system()
и удаление файла с названием
lDnxUysaQn
.
Резюме: мы можем указать ссылку, а затем
lDnxUysaQn
. Содержимое ссылки запишется в файл и запустится через интерпретатор
perl
от лица суперпользователя.
В таком случае нам нужно скачать любой шелл на перле, например, от
pentest monkey
. И указать в нём свой
IP
и порт.:
https://forum.antichat.xyz/attachments/29104844/1683464807560.png
Теперь опять поднимаем веб-сервер пайтона и ставим листенер, чтобы получить на него шелл:
https://forum.antichat.xyz/attachments/29104844/1683464869563.png
Запускаем бинарник через
sudo
с указанием ссылки и строки
lDnxUysaQn
:
https://forum.antichat.xyz/attachments/29104844/1683464899130.png
Получаем шелл от лица суперпользователя:
https://forum.antichat.xyz/attachments/29104844/1683464932259.png
Друзья, спасибо большое, что нашли время прочитать мой райтап. Если есть какие-то ошибки, то напишите об этом в комментариях