Разбор заданий конкурса «Конкурентная разведка» на PHDays V

02de86d4fefe44ff9e6572b7048b99e7.png В этом году в «Конкурентную разведку» играли не только традиционные любители конкурса, но и команды CTF, поэтому по уровню сложности задания были подобраны для тех и для других. Кроме того, разрешена была командная игра. (Но один человек не мог играть и в индивидуальном зачете, и за команду CTF, поэтому нам пришлось по взаимному согласию дисквалифицировать участника, занявшего по очкам 1-е место — azrael).

Под общей легендой государства United States of Soviet Unions были объединены все конкурсы, и в рамках «Конкурентной разведки» участникам пришлось искать информацию о служащих разных компаний, «прописанных» в USSU. Параллельно можно было отвечать на пять разных вопросов о пяти разных организациях; внутри одного блока вопросы открывались друг за другом, по мере получения ответов. (Одна команда нашла ответ методом перебора, но на следующий вопрос они так и не смогли ответить — у них не было на руках необходимых ресурсов.)

1. Find out dinner location of Bank of Snatch (snatch-bank.phdays.com) chairman/Find out all data about Bank of Snatch (snatch-bank.phdays.com) chairman.

В данной группе вопросов нужно было найти информацию о председателе правления Bank of Snatch.

1.1. Get his email address

Начать нужно с малого — выведать email председателя правления. Гугл давно постарался за нас — закэшировал несколько страниц snatch-bank.phdays.com, в том числе документ с отчетностью банка.

713bae24223f4dce8870ece1e12ce368.png

В метатегах этого документа ясно видно, что у пользователя Aldora Jacinta Artino почта a_j.artino.bank@ussu-gov.org. А это значит, что у председателя Zenon Pavlos Economides почта должна быть z_p.economides.bank@ussu-gov.org.

Правильных ответов: 47

2dfab74244e045cd8409cd3050eaa95a.png

1.2. What is his domain account? (format: user: password)

Теперь задача усложнилась: нужно достать доменную учетку — имя и пароль. Но для тех, кто играет в конкурентную разведку регулярно, эта задача была не слишком сложной. Ведь если отправить письмо по адресу, найденному на предыдущем шаге, то придет недвусмысленный намек на то, что человек с ним ознакомился. А значит, можно попробовать подсунуть ему ссылку в письме.

Примечание: браузер председателя правления блокировал всякие нестандартные для веба порты вроде 1337, поэтому лучше было использовать традиционные 80 или 8080.

ed5b2dd6f80544b8a2686c5d0feb6016.png
90c26ebe8f4c4764b21168d79bad0a8a.png

Отловив запрос, можно выяснить что почтовый ресурс отсылает в запросах заголовок Referer, а из него можно вытащить логин и пароль почтовой учетки: zenontrapeza:zenon123.

Правильных ответов: 17

1.3. And finally get the dinner place

Ну и наконец-то нужно узнать, где же обедает председатель правления. Ко всему прочему теперь мы знаем псевдоним председателя — zenontrapeza. Можно снова использовать Google. За 2 клика можно выяснить аккаунт председателя в FB, а там выясняется что он любит постоянно пользоваться каким-то трекером.

717f018231234fd198110f803f3b04a8.png

Только вот трекер работает как-то неправильно. И за несколько нехитрых манипуляций с url и id можно было получить доступ к трек-файлу Pavlos:


В итоге получаем искомый трек. Следующая проблема: в нем записаны не координаты GPS, а идентификатор базовой станции сотового оператора. Ноу проблем! Ведь есть замечательный ресурс opencellid.org, который позволяет найти координаты конкретной базовой станции по всему миру.

Выяснив координаты базовых станций и определив интервал обеда (исключив воскресенье), можно было на том же opencellid найти название ресторана: Boston Seafood&Bar:

b58316f3b1504d06bf1f1edd47ff3248.png

Правильных ответов: 12

2. Get intel on MiTM Mobile (mitm-mobile.phdays.com) marketing director.

В этой группе вопросов необходимо было собрать информацию о директоре по маркетингу мобильного оператора MiTM Mobile.

2.1. We have network capture from director’s laptop (https://mega.co.nz/#!34IEGYZa! Xowwo-UFTWMIfqfmiSPQXMWY0F7mySb-WtIxB3SVXWQ). Can you find out where he was treated?

Где же проходил лечение директор по маркетингу? Дамп трафика позволял выяснить не только доменный логин одного из сотрудников Positive Technologies, но и запрос к поисковой машине USSU. А судя по баннеру и параметрам Cookies на ussu.phdays.com/search.php, поисковая система использует те же механизмы токенов utmz, как в Google. И если подставить эти значения в запрос к search.php, то высветится «контекстная реклама» об одной клинике. Что это за клиника — можно узнать, выполнив поиск по изображениям (отсеяв все лишнее, так как нужно было абсолютно идентичное изображение) или еще проще — выполнив поиск по номеру телефона с изображения. Правильный ответ: Rayville Recovery.

200ddf0935df4cf09ee23e23deceaa94.png

Правильных ответов: 13

2.2. Ok, now we know his email account. It is l_u.imbesi@ussu-gov.org — we need access (give us email password).

Теперь нам известен email директора, но недостает пароля. Файлы robots.txt иногда просто кладезь уязвимых сценариев, которые нужно держать подальше, но не от поисковиков, а от хакеров. Так и тут: есть ссылка на бажный сценарий восстановления пароля от почты restore.php. Если вызвать сброс пароля в дебажном режиме — debug=On, то мы сможем узнать, что email посылаются через обращение на сервер на 25 порт. А вот имя сервера берется прямо из заголовка Host.

4aef20f09dbc4d64877ffe044466d6a8.png

Значит, если повесить на 25 порт netcat и отправить запрос с указанием в заголовке Host своего IP-адреса или доменного имени, то на 25 порт придет письмо с указанием текущего пароля (AQwr34%!9R^).

24a53dcea1194a10856ed70c578cb8d2.png

Бонус: можно было зайти в почту и в черновиках обнаружить инсайдерскую информацию. О том, что с 10:30 утра смски становятся дешевле, а это значит что в это время ожидается рост акций MiTM Mobile.

Правильных ответов: 4

b2881e5b742e43c884260b20de9caf9f.png

2.3. We need to find something to blackmail him

К сожалению, с этим заданием никто не справился. Где же искать повод для шантажа человека, как не в его аккаунте Google? Почтовая жизнь там не очень насыщена, а вот история поисковых запросов выдает человека с головой:

38fb820213e340858daee1fb80d2fd99.png

Оказывается, с алкоголя директор по маркетингу пересел на кокаин… ай-ай-ай, как нехорошо! Правильный ответ: cocaine

Правильных ответов: 0

2.4. Some competitors with gov support also interested in directors jailing. Who is it?

До этого технически сложного задания также никто не смог дойти — потому что сперва нужно было пройти предыдущее. Из прошлого задания видно, что еще директор регулярно пытается найти годовые отчеты некой компании Whoever, которая располагается на домене whoever.phdays.com. Далее все просто:

  1. Находим robots.txt и по нему узнаем, что есть api.php.
  2. По-разному тыкаем api.php, по ошибкам угадываем параметры. Понимаем, что есть XXE и сливаем сорцы.
  3. По сорцам видим что в api.php есть unserialize, который позволит провести INSERT SQL-inj.
  4. Правильно заинсертившись в таблицу, вызываем unserialize через index.php (данные из базы идут в unserialize) и получаем наконец RCE.
  5. В /home можно было найти email владельца Whoever — wh0wh0wh0ever@gmail.com


Правильных ответов: 0

3. This time a big deal. Get infromation on President administration (ussu.phdays.com)

В этой группе придется добывать информацию об администрации президента хорошо известными в народе способами.

3.1. Crawl all administration emails in order from a to z (format: , , , …)

Ну, для начала совсем несложно: всего лишь найти информацию обо всех email администрации. Заходим на ussu.phdays.com/contacts.php.

77d8162d38e441a7bfb8933a1124d538.png

И видим, что есть алиас administration@ussu-gov.org for general requests.

А еще в государственном аппарате есть дополнительный MX-сервер.

e6179dab687c48c9b0b70f84f164376f.png

И, видимо, государство совсем не заботится о безопасности своих сотрудников, раз всего в два запроса можно было получить все email группы administration:

44d2fcab88a8489393f15d0e6aed7fbb.png

Правильный ответ: a_o.bozhidara@ussu-gov.org, d_b.bertil@ussu-gov.org, j_l.andrus@ussu-gov.org, j_t.zlata@ussu-gov.org

Правильных ответов: 19

3.2. Get all passwords, emails in order from a to z (format: : , : , : , …)

Ну, теперь одними запросами в Google не обойтись. Sitemap.xml говорит нам, что есть файл ussu.phdays.com/_logs/access.log. Немного изучив его, можно найти следующие интересные запросы:

GET /auth.php?action=getToken&id=26080&email=%61%5f%6f%2e%62%6f%7a%68%69%64%61%72%61%40%75%73%73%75%2d%67%6f%76%2e%6f%72%67

GET /auth.php?action=checkToken&token=EShDVGIWwZSjS5I5BQbpDyWRNoFUzBOWNygG8j%2FYpbpZl7sGymRScloK%2Fddq9a6%2FAaSTXZedUHTkhONlvfd2kvB63E%2B6iqSjecSaQMRyQw1vzs5otj3%2BmP%2Fp%2BS1Xil%2BVqn7GZJPLgsgcXy4cLtcCsw%3D%3D 


Похоже, что сотрудник администрации президента сначала получает какой-то токен, а потом валидирует его. Если посмотреть на процесс валидации, то окажется, что он уязвим к старым добрым атакам Padding Oracle, а это значит, что токен можно расшифровать за небольшое количество запросов.

6c6fdcad2ea64f35aa9983dd791eb0fd.png

ed57e897772e48fdb4e2d68a954142fe.png

Отправив всего 256 запросов, с вероятностью 99% утверждаем, что реализацию алгоритма можно атаковать. А примерно за 10 000 запросов можно полностью расшифровать токен. Но столько запросов и не нужно, ведь пароль располагался в самом конце, а значит расшифровывался первым.

Ну хорошо, пароль одного пользователя мы расшифровали, а дальше? Подставляя email-ы из предыдущего задания и перебирая последовательно id, мы получим все 4 токена всех пользователей.

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

d035757163304577a7f659a8f1a22cf6.png

Ответ: a_o.bozhidara@ussu-gov.org: zhi37@1!, d_b.bertil@ussu-gov.org: bertiB3rt!, j_l.andrus@ussu-gov.org: Andrus331, j_t.zlata@ussu-gov.org: aata4444

Правильных ответов: 6

Тем, кто хочет разобраться в атаках на Oracle, предлагаем почитать статью:
blog.skullsecurity.org/2013/padding-oracle-attacks-in-depth

Слайды о том, как защищать свои приложения от этой и других атак:

www.slideshare.net/kochetkov.vladimir/hdswasm-russianproofreaded

3.3. Hack into Mac OSX of Administration secretary and give us # of document, printed for president 14/05/2015

Ну вот и пошел в ход анонимный интернационал. Сломать Mac OS секретаря — дело нехитрое. Особенно если секретарь в ответ на письма в подписи оставляет улики, любит в репозиториях хранить важные архивы и использует одинаковые пароли.

ad4b443e420c4e83a458c2b42fd93d67.png

bff5d14f0ef548bab81e78f8015e670f.png

Берем Chainbreaker для Win32 и расшифровываем keychain из репозитория с помощью пароля от почты. Номер документа #125_42-19.501

dab110261aae446f9e342af4c309fc87.png

Помимо прочего из этого архива можно узнать, что »Promising quarterly reports for Choo Choo Roads (CHOO), Hacknetcom (HCKNT) and MiTM Mobile (MITM)» будут опубликованы 27 мая в 11 утра.

Правильных ответов: 3

3.4. Now we need to get this document. Give us project name, mentioned in them.

Пришло время еще раз порыться в ресурсах администрации. Если воспользоваться подсказкой и авторизоваться за пользователя d_b.bertil@ussu-gov.org в Google Cloud Printers www.google.com/cloudprint будет один интересный адрес с анонимным доступом по FTP. А там и необходимый документ среди сотен других с упоминанием проекта Omnieye.

2d4c7e1cc0e0488fbdfd053782aa4155.png

Там же можно было ознакомиться с другими неожиданными сведениями о будущем курсе акций и «Черном четверге».

Правильных ответов: 0

3.5. Finally, break into any Administration’s Iphone. There were some secret meeting in April. In what place?

Дойти до этого задания участники не смогли, иначе им, возможно, удалось бы восстановить доступ к icloud.com по email, паролю и токену сброса двухфакторной аутентификации, который можно было найти, порывшись в почте j_l.andrus@ussu-gov.org. Далее необходимо было найти заметку про встречу в McDonalds pushkin square.

e7f2cea029ed426aa4f5faa7dba9873f.png

329f37cf45d9463098d78a1bd25837be.png

Правильных ответов: 0

4. We need proof that Positive Times (ptimes.phdays.com) is controlled by government

Участникам необходимо было собрать доказательства того, что медиакомпания Positive Times давно находится по контролем правительства USSU.

4.1. Get journalist’s (w_j.dom@ussu-gov.org) mobile number — he is rat. Tip: he always use two accounts for privacy in social networks. (format, no delimiters: +7xxxxxxxxx#xxxxxxx)

Начинаем с легкого задания — достать номер телефона журналиста, у которого наблюдается расчетверение личности: сразу по два аккаунта на VK.com и FB.com. Первую учетку можно найти по восстановлению пароля на fb.com.

8775b6a2fc1946b5acbd3d9d168d22af.png

Вторую — на vk.com, по одинаковому имени и фамилии в списках тех, кто лайкал ptimes.phdays.com

465a82acbdba47ecbb907295cb650dbf.png

И тут как раз видно, что единственный, кто ставит лайки, это некто со страницы vk.com/id304632346. Тут уже можно разглядеть первую часть сотового телефона и email.

04f366c0083a459bb671a052f851b77e.png

А если теперь по этому email снова попробовать восстановить учетную запись на FB, то парень-то окажется тем же самым.

44094d5324114f9da78857bb97b149c8.png

Ну и теперь, найдя его учетку по email в FB и заглянув в Details, можно обнаружить недостающие части телефона. Правильный ответ: +79652843472#317

18f9b7e3f607405b9bf4b3ee9c8e0197.png

Примечание: «добавочный» пришлось использовать как защиту от брутфорса.

Правильных ответов: 34

4.2. Get access to the publishing engine of Positive Times. Give us user and password. (format: : )

Теперь нужно получить доступ к админке портала Positive Times. Только вот незадача: мы нашли в sitemap.xml список email, на которые отправляются пароли для сброса (это файл sentemails.log), мы можем получить письмо с токеном сброса и сбросить пароль, используя публичный ящик из этого списка ptimes-registration@mailinator.com, —, но прав у этой учетной записи не хватает для доступа в админку. И правда, где это видано, чтобы какой-то малопонятный ящик использовался для админских прав!

А вот если присмотреться внимательно к процессу сброса пароля, то окажется, что на последнем этапе система снова проверяет email.

c8e922f2ca55418892c5ee30dd9bf529.png

А зачем? И что, если поменять email на более привилегированный из sentemails.log, скажем на ptimes@ussu-gov.org? Вот тогда-то на Mailinator придет письмо с правильным паролем, — и можно будет ответить на вопрос, а заодно получить доступ к админке с учеткой ptimes@ussu-gov.org: Pt1M3P@ss. В админке можно было сделать две вещи — узнать, что налоги вырастут и что государство уже выделило приоритетные для себя компании.

9c08ad288a95413cabc2322c891e3bdf.png

Помимо инсайдерской информации этот интерфейс давал возможность поменять вторую новость (чтобы публикация сыграла на руку тому, кто играет против рынка). Тогда мы бы опубликовали ее в 11:30 во второй день конкурса. Однако, либо таких находчивых не нашлось, либо поддельная новость оказалась похороненной под тысячами бесполезны запросов, отправленных в попытках эксплуатировать несуществующие XSS и SQLi.

Правильных ответов: 13

4.3. Get access to email account of another corrupt journalist with email mediagov@ussu-gov.org. Give us his password.

Для решения этой задачи нужно было заметить наличие формы ptimes.phdays.com/feedback.php и с помощью подсказок из Google понять, что при обратной связи можно как-то грузить файлы в папку feedbackupload. А раскомментировав поле для загрузки файлов в форме и загрузив туда пустой файл .htaccess, можно было получить листинг директории feedbackupload на целых 5 минут.

9d61532d2b6641e5aa2812aa03d0da59.png

Тогда можно было бы найти в директории файл uploaded-13–05–2015.docx за авторством mediagov@ussu-gov.org, обнаружить, что изображения в нем взяты по адресу 188.166.78.21:443/. А далее, следуя подсказке про MSF, воспользоваться эксплойтом для Heartbleed из сборки Metasploit (работало еще несколько вариантов эксплойта, но не все) по этому адресу и получить в «дампе памяти» пароль пользователя:

6dc4926b6890477a80bbed74212eb048.png

И не забывайте: www.acunetix.com/websitesecurity/Why-File-Upload-Forms-are-a-Major-Security-Threat.pdf. А пароль был: P@S$W0_PD

Правильных ответов: 1

4.4. We found PositiveLeaks — group of hackers.They may help us in our business. Find his owner’s name for us.

А вот и Викиликс энтузиасты, которые тоже копают под PositiveLeaks. Судя по названию группировки, они должны располагаться на pleaks.phdays.com. А еще с помощью такого запроса:

POST /userPage HTTP/1.1
Host: pleaks.phdays.com
Cookie: PHPSESSID=rr47fgk7e2rckklqj5kgl4f6k5
Content-Type: multipart/form-data; boundary=---------------------------214580240818081871851160929598
Content-Length: 376

-----------------------------214580240818081871851160929598
Content-Disposition: form-data; name="template"

123%' union select null,null,text as content from templates where '1%'='1
-----------------------------214580240818081871851160929598
Content-Disposition: form-data; name="action"

createTemplate
-----------------------------214580240818081871851160929598--


можно было получить доступ к шаблонами новостей на сайте и узнать не только ответ на вопрос (Boris_The_Emperor), но и очередной инсайд ;)

8d491301c5464e039855ea51a82f519c.png

Правильных ответов: 0

5. Stock Exchange financial director was incriminate, but there were no evidence. Help to jailed him.

Ну и в последней группе требовалось помочь свершиться правосудию и посадить директора биржи за решетку.

5.1. His name Prabhat SAVITR. First, we need to find what gov got to him. Find us case ID.

Знакомое задание для тех, кто регулярно играет в конкурентную разведку. У нас есть зависимость между идентификаторами дел и id фотографий и есть id фотографии нужного нам парня — благодаря листингу директорий.

e2a538afcf4644c487564d1bad086e94.png

В этот раз к md5(id) добавилась соль: ее нетрудно выяснить по публичным базам md5 — Chipp37

75cf371a7ad44fcb950e157c534e2ee5.png

Значит, у нашего финдира должен быть
case-id=md5(Chipp371337)= 8bc875dbed7b0ecd966bed3c8ec750fa

Правильных ответов: 39

5.2. There were no evidence of being Financial director in the crime scene. We can blackmail him with knowing of deviceid and iccid of his phone and SIM. Give us them (format deviceid; iccid)

DeviceId очень просто узнается из документов дела, его можно скачать, введя идентификатор с прошлого задания в форму ussu.phdays.com/getdocument.php.

А вот чтобы узнать iccid, нужно было искать в Google подстроку от deviceid. Правильный ответ: a94360c365ab38810639911d355103c86367d5ba;897019903020414671

921ca270ee6a4308a7d4e5615cbb4db6.png

Правильных ответов: 3

5.3. Where is director hiding now? We need to know city.

К сожалению, до этого задания дошли уже в самом конце второго дня и пройти его не удалось никому, однако одна из команд нашла правильный ответ перебором. В реальности необходимо было с помощью XSS проникнуть в DOM страницы, на которой постоянно висит финдир (входные данные стали известны после предыдущего задания). Далее нужно было из логов понять, что директор пользуется интернетом через 3G-модем загадочной фирмы OiWei. И получить доступ к веб-страницам этого модема, находящегося на 192.168.44.1 благодаря отсылаемым с модема заголовкам Access-Control-Allow-Origin: *. Это позволило бы снова похитить cellid и прочие данные для определения местоположения директора: Hamilton

Правильных ответов: 1

5.4. As you know now, Stock Exchange have a backdoor for Executives. Give us private key (Private-MAC for prove would be enough)

Помимо местоположения, из модема можно было вытянуть адрес бэкэнда биржи. Мы надеялись, что этого хватит участникам для того, чтобы проэксплуатировать 0 day в PHP, для того чтобы в обход openbasedir прочитать содержимое ключа из папки /home. Но увы…

Правильных ответов: 0

Резюме


51 участник не смог ответить ни на один вопрос. Первое место в конкурсе занял djecka — он первым ответил на 9 вопросов. Больше всех на этом конкурсе заработала команда rdot, ответив на 12 вопросов.

1 djecka 1700
2 sharsil 1700
3 MZC 1600


Читайте также разбор заданий конкурсов «Конкурентная разведка» прошлых лет:

© Habrahabr.ru