Skip to content

Latest commit

 

History

History

remote_auth_server

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Reverse | Remote auth server

Информация

Нам удалось найти один из главный командных центров Arbalest of Siberia.

У нас даже есть образ запущенного сервера. Но в этот раз они позаботились о безопасности.

Мы не смогли начать исследовать его, потому что не знаем с какой стороны подступиться.

Если у тебя получится найти верный логин и пароль - сообщи нам информацию с сервера.

Сопротивление тебя не забудет.

nc <ip> <port>

Запуск

Отдать командам бинарник из deploy/static и ip-адрес сервера

cd deploy/app
# cange port in serve.sh
./serve.sh 

Описание

ELF 64bit, C++, strip, pack

Суть задания - найти верную пару Username+Password, а также обойти OTP

Решение

Задание довольно сложное и требует хороших навыков обратной разработки.

  1. Файл упакован UPX, но из него вырезаны строчки, поэтому просто так распаковать его не получится.
  2. Самый простой вариант - сдампить при переходе на OEP.
  3. После дампа получим пострипанный бинарь, написанный на С++
  4. Сразу подключаем отладчик (анти-отладки нет) и начинаем исследования.
  5. Имя пользователя должно быть длиной ровно 8 символов.
  6. Имя пользователя поступает в некоторую функцию, по константам можно найти, что это функция sha256 хеша.
  7. Верный хеш лежит в памяти, если забить его в поиск, то найдём, что это "admin123". Теперь у нас есть логин.
  8. Пароль должен быть длиной 32 символа
  9. Пароль проверяется по довольно простому алгоритму, из алфавита заложенного в бинарь достаются по индексам значения. Индекс формируется на основе sha256-хеша от имени пользователя. Таким образом можем достать пароль
  10. После ввода логина и пароля генерируется OTP и активируется alarm().
  11. OTP генерируется с помощью random() при этом он инициализируется предсказуемым значением
  12. Seed для раднома это: время + первый символ логина + первый символ пароля + размер логина + размер пароля. После seed XOR'ится с 0xdeadbeef.
  13. После успешного ввода пароля получаем доступ к меню, где все функции заблокированы, кроме первой, которая читает файл с флагом.

В данном случае эксплоит - это скрипт который подключается к серверу, вводит верный логин и пароль, а после рассчитывает OTP и получает флаг.

Пример эксплоита

Флаг

Cup{4aaabf6cba45d91f627ecef2dfff12208f4b5b2743cc80a05387ae0122af962f}