- Автор темы
- #1
CoffeeMiner: взлом Wi-Fi с инъекцией криптовалютного майнера в HTML-запросы
https://t.me/blockchainSellBot
Цель этой статьи - объяснить, как можно совершить атаку Man-in-the-middle (MITM) для внедрения javascript в веб-страницы для того, чтобы все девайсы, подключенные к сети Wi-Fi майнили криптовалюту для атакующего.
Задача - написать скрипт, который автоматически проводит атаку на сеть Wi-Fi. Этот скрипт мы назвали CoffeeMiner
1. Сценарий
Несколько устройств подключены к сети Wi-Fi, а CoffeeMiner перехватывает трафик между пользователем и роут
1.1 Настройка сценария
Главная часть - Wi-Fi роутер с подключенными к нему смартфонами и ноутбуками. Мы тестировали это на практике, в реальном мире, и это работает. Но Для демонстрации мы будем использовать VirtualBox (https://www.virtualbox.org/)
В первую очередь нам нужно скачать образ для установки Линукса на виртуальную машину - в частном случае мы будем использовать Kali Linux
(https://www.kali.org/)
Как только мы скачали .ISO, нам нужно подготовить три виртуальные машины с установленным на них образом. Для настройки обычного сценария нам нужно настроить виртуальные машины по ролям, которые они будут исполнять:
После удачной атаки подключение будет выглядеть так:
Для настройки виртуальных машин мы будем использовать следующие конфигурации:
eth0: Host-only Adapter
/etc/network/interfaces:
eth0: Host-only Adapter
/etc/network/interfaces:
eth0: Bridged Adapter
eth1: Host-only Adapter
/etc/network/interfaces:
2. CoffeeMiner: разбор кода
2.1 ARPspoofing
В первую очередь, нам нужно понимание того, как совершается MITM-атака. Статья в википедии: https://en.wikipedia.org/wiki/ARP_spoofing (прим.: статья на английском намного подробнее описывает все понятия, чем русскоязычная)
Для осуществления ARPspoofing атаки мы используем библиотеку dsniff.
2.2 mitmproxy
mitmproxy позволяет нам анализировать трафик, который проходит через хост и позволяет его редактировать. В нашем случае мы будем использовать его для инъекции скрипта в HTML-страницы. Нам будет достаточно добавить на страницу всего одну строчку кода, которая будет вызывать запуск скрипта криптомайнера.
Строка для инъекции майнера:
2.3 Инъектор
Как только мы перехватили трафик жертвы, нам нужно подгрузить наш скрипт. Мы будем использовать mitmproxy API для того, чтобы сделать инъектор:
2.4 HTTP сервер
Как мы видим, инъектор добавляет строку в html-код страницы с вызовом запуска нашего майнера. И там нужно загрузить наш скрипт на HTTP сервер.
Для этого мы поднимем его на машине “атакующего”, и для этого используем библиотеку Python под названием “http.server”:
Код выше - простой HTTP сервер, который по запросу будет подгружать наш майнер на машину жертвы. Скрипт майнера будет помещён в директорию /miner_script. В нашем случае мы будем использовать майнер от CoinHive на javascript.
2.5 Криптомайнер от CoinHive
CoinHive - майнер на JavaScript для Monero (XMR). Он может быть добавлен на сайт и будет использовать мощности процессора посетителя (CPU) для вычисления хэшей по алгоритму Cryptonight PoW, и майнинга Monero.
Использование майнера CoinHive имеет смысл только в том случае, когда пользователь остаётся на одной и той же странице на более-менее долгое время. например сессии по 40 секунд не представляют для нас никакого интереса.
Но в нашем случае, так как мы подгружаем майнер на каждой HTML-странице, на которой находится пользователь, мы получим достаточно долгие сессии для майнинга Monero
3. Собираем CoffeeMiner
Главная задача - скомпоновать все предыдущие пункты для быстрого и автономного развёртывания. Алгоритм такой: скрипт CoffeeMiner осуществляет атаку ARPspoofing и настраивает mitmproxy для инъекции скрипта CoinHive в HTML-страницы жертв.
В первую очередь нам нужно настроить ip_forwarding и IPTABLES для того, чтобы машина атакующего выступала в роли связующего звена между роутером и жертвой:
Для спуфинга всех возможных жертв мы подготовим текстовый файл “victims.txt” со всеми IP-адресами жертв. Для скана всех адресов мы подготовим несколько строк кода на Питоне, с помощью которых получим список IP и запустим ARPspoof на каждой машине из списка.
После этого запустим HTTP сервер:
И запустим mitmproxy с injector.py:
3.1 Финальная версия CoffeeMiner
Теперь мы объединим всё, что разобрали выше в один скрипт и назовём его “CoffeMiner.py”:
А также не забудем о “injector.py”:
А для запуска нам нужно просто отдать команду:
4. Демонстрация работы
Для демонстрации мы настроим виртуальные машины так, как показано выше. Если мы хотим проводить атаку “вручную”, нам нужны следующие окна терминала:
После атаки ARPspoofing, наличии готовых инъектора и HTTP сервера мы можем переключиться на машину жертвы и открыть любую страницу. Трафик жертвы пойдёт через машину атакующего и активирует инъектор:
В результате в HTML страницах, просматриваемых пользователем появится строка, которую добавил атакующий:
4.1 Видео с демонстрацией
В видео ниже полностью показаны атаки как в условиях виртуальных машин(1), так и в реальных условиях (2)
Демо на виртуальных машинах
Заключение
Как мы видим, такой тип атак очень прост и может быть доведён до ума для полной автоматизации. С другой стороны нужно помнить, что для атак такого типа в реальном мире неплохо было бы иметь Wi-Fi антенну для лучшего покрытия зоны действия Wi-Fi.
Главной задачей было осуществление самой атаки, но мы всё ещё вынуждены самостоятельно редактировать “victims.txt” и дополнять его IP адресами свежеподключившихся жертв. В последующих версиях возможно будет добавить автоматический скан с Nmap, для автопополнения списков IP-адресов жертв. А ещё позже можно будет добавить sslstrip для уверенности, что инъекция сработает на сайтах с HTTPS.
https://t.me/blockchainSellBot
Цель этой статьи - объяснить, как можно совершить атаку Man-in-the-middle (MITM) для внедрения javascript в веб-страницы для того, чтобы все девайсы, подключенные к сети Wi-Fi майнили криптовалюту для атакующего.
Задача - написать скрипт, который автоматически проводит атаку на сеть Wi-Fi. Этот скрипт мы назвали CoffeeMiner
1. Сценарий
Несколько устройств подключены к сети Wi-Fi, а CoffeeMiner перехватывает трафик между пользователем и роут
1.1 Настройка сценария
Главная часть - Wi-Fi роутер с подключенными к нему смартфонами и ноутбуками. Мы тестировали это на практике, в реальном мире, и это работает. Но Для демонстрации мы будем использовать VirtualBox (https://www.virtualbox.org/)
В первую очередь нам нужно скачать образ для установки Линукса на виртуальную машину - в частном случае мы будем использовать Kali Linux
(https://www.kali.org/)
Как только мы скачали .ISO, нам нужно подготовить три виртуальные машины с установленным на них образом. Для настройки обычного сценария нам нужно настроить виртуальные машины по ролям, которые они будут исполнять:
- Жертва - машина, которая подключается к роутеру и сёрфит веб-страницы
- Атакующий - будет устройством, на которой будет запущен CoffeeMiner. Это та самая машина, совершающая MITM-атаку
- Роутер - Будет функционировать как обычный роутер
После удачной атаки подключение будет выглядеть так:
Для настройки виртуальных машин мы будем использовать следующие конфигурации:
- Жертва
eth0: Host-only Adapter
/etc/network/interfaces:
- Атакующий
eth0: Host-only Adapter
/etc/network/interfaces:
- Роутер
eth0: Bridged Adapter
eth1: Host-only Adapter
/etc/network/interfaces:
2. CoffeeMiner: разбор кода
2.1 ARPspoofing
В первую очередь, нам нужно понимание того, как совершается MITM-атака. Статья в википедии: https://en.wikipedia.org/wiki/ARP_spoofing (прим.: статья на английском намного подробнее описывает все понятия, чем русскоязычная)
Для осуществления ARPspoofing атаки мы используем библиотеку dsniff.
2.2 mitmproxy
mitmproxy позволяет нам анализировать трафик, который проходит через хост и позволяет его редактировать. В нашем случае мы будем использовать его для инъекции скрипта в HTML-страницы. Нам будет достаточно добавить на страницу всего одну строчку кода, которая будет вызывать запуск скрипта криптомайнера.
Строка для инъекции майнера:
2.3 Инъектор
Как только мы перехватили трафик жертвы, нам нужно подгрузить наш скрипт. Мы будем использовать mitmproxy API для того, чтобы сделать инъектор:
2.4 HTTP сервер
Как мы видим, инъектор добавляет строку в html-код страницы с вызовом запуска нашего майнера. И там нужно загрузить наш скрипт на HTTP сервер.
Для этого мы поднимем его на машине “атакующего”, и для этого используем библиотеку Python под названием “http.server”:
Код выше - простой HTTP сервер, который по запросу будет подгружать наш майнер на машину жертвы. Скрипт майнера будет помещён в директорию /miner_script. В нашем случае мы будем использовать майнер от CoinHive на javascript.
2.5 Криптомайнер от CoinHive
CoinHive - майнер на JavaScript для Monero (XMR). Он может быть добавлен на сайт и будет использовать мощности процессора посетителя (CPU) для вычисления хэшей по алгоритму Cryptonight PoW, и майнинга Monero.
Использование майнера CoinHive имеет смысл только в том случае, когда пользователь остаётся на одной и той же странице на более-менее долгое время. например сессии по 40 секунд не представляют для нас никакого интереса.
Но в нашем случае, так как мы подгружаем майнер на каждой HTML-странице, на которой находится пользователь, мы получим достаточно долгие сессии для майнинга Monero
3. Собираем CoffeeMiner
Главная задача - скомпоновать все предыдущие пункты для быстрого и автономного развёртывания. Алгоритм такой: скрипт CoffeeMiner осуществляет атаку ARPspoofing и настраивает mitmproxy для инъекции скрипта CoinHive в HTML-страницы жертв.
В первую очередь нам нужно настроить ip_forwarding и IPTABLES для того, чтобы машина атакующего выступала в роли связующего звена между роутером и жертвой:
Для спуфинга всех возможных жертв мы подготовим текстовый файл “victims.txt” со всеми IP-адресами жертв. Для скана всех адресов мы подготовим несколько строк кода на Питоне, с помощью которых получим список IP и запустим ARPspoof на каждой машине из списка.
После этого запустим HTTP сервер:
И запустим mitmproxy с injector.py:
3.1 Финальная версия CoffeeMiner
Теперь мы объединим всё, что разобрали выше в один скрипт и назовём его “CoffeMiner.py”:
А также не забудем о “injector.py”:
А для запуска нам нужно просто отдать команду:
4. Демонстрация работы
Для демонстрации мы настроим виртуальные машины так, как показано выше. Если мы хотим проводить атаку “вручную”, нам нужны следующие окна терминала:
После атаки ARPspoofing, наличии готовых инъектора и HTTP сервера мы можем переключиться на машину жертвы и открыть любую страницу. Трафик жертвы пойдёт через машину атакующего и активирует инъектор:
В результате в HTML страницах, просматриваемых пользователем появится строка, которую добавил атакующий:
4.1 Видео с демонстрацией
В видео ниже полностью показаны атаки как в условиях виртуальных машин(1), так и в реальных условиях (2)
Демо на виртуальных машинах
Заключение
Как мы видим, такой тип атак очень прост и может быть доведён до ума для полной автоматизации. С другой стороны нужно помнить, что для атак такого типа в реальном мире неплохо было бы иметь Wi-Fi антенну для лучшего покрытия зоны действия Wi-Fi.
Главной задачей было осуществление самой атаки, но мы всё ещё вынуждены самостоятельно редактировать “victims.txt” и дополнять его IP адресами свежеподключившихся жертв. В последующих версиях возможно будет добавить автоматический скан с Nmap, для автопополнения списков IP-адресов жертв. А ещё позже можно будет добавить sslstrip для уверенности, что инъекция сработает на сайтах с HTTPS.
