CoffeeMiner: Взлом WiFi для внедрения майнера криптовалюты Monero в сайты

Внимание: эта статья и проект предназначены исключительно для изучения. Все тесты были сделаны на собственных компьютерах на своей личной WIFI сети.

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

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Суть данной статьи в том, чтобы объяснить, как провести атаку MITM (Man-In-The-Middle), чтобы заразить несколько javascript кода в HTML страницах для того, чтобы использовать все устройства, подключенные к сети WiFi для майнинга криптовалюты.

CoffeeMiner: Взлом WiFi для внедрения майнера криптовалюты Monero в сайты

Цель заключается в том, чтобы получить скрипт, который выполняет автоматическую атаку на сеть WiFi. Это и есть CoffeeMiner, так как такой тип атаки может быть выполнен в кафе, где есть WiFi.

Сценарий

Нужны несколько компьютеров, подключенных к сети WiFi, где CoffeeMiner перехватывает трафик между пользователем и роутером.

CoffeeMiner: Взлом WiFi для внедрения майнера криптовалюты Monero в сайты

Настройки

Настоящий сценарий – это WiFi с подключенными к нему смартфонами и ноутбуками. Мы попробовали его в реальности, и все сработало. Но для данной статьи, мы рассмотрим детальнее, как настроить виртуальное пространство.

Мы используем VirtualBox, чтобы развернуть наш виртуальный сценарий https://www.virtualbox.org/ .

Для начала, нам нужно скачать образ для Linux и установить его в VirtualBox. Для нашего примера воспользуемся Kali https://www.kali.org/

После того как мы загрузили ISO, подготовим три VBox-а с установленным ISO.

Для настройки определенного сценария, нам нужно подготовить каждый VBox для своей роли:

  • Жертва — Компьютер, подключенный к роутеру, на котором просматривают какие-либо сайты в интернете
  • Хакер — Компьютер, на котором запущен CoffeeMiner. Компьютер, выполняющий MITM.
  • Router — Обычный шлюз

 

CoffeeMiner: Взлом WiFi для внедрения майнера криптовалюты Monero в сайты

 

Когда атака выполнена, сценарий должен быть таким:

 

CoffeeMiner: Взлом WiFi для внедрения майнера криптовалюты Monero в сайты

 

Чтобы выполнить настройку, необходимо провести следующее на виртуальных машинах:

Компьютер жертвы 

  • network adapter:
    eth0: Host-only Adapter

 

Файл: /etc/network/interfaces:

Компьютер хакера:

  • network adapter:
    eth0: Host-only Adapter

Файл: /etc/network/interfaces:

Router:

  • network adapter:
    eth0: Bridged Adapter
    eth1: Host-only Adapter

Файл: /etc/network/interfaces:

2. CoffeeMiner, понимание кода

2.1 ARPspoofing

Для начала, нам нужно разобраться, как проводить MITM атаку.

Из википедии:

«В компьютерной сети, ARP-спуфинг, отравление кэша ARP или маршрутизация ARP-яда, это техника, когда атака выполняется отправкой ARP (Address Resolution Protocol) сообщений в локальную сеть. Цель заключается в том, чтобы связать МАС адрес атакующего с IP адресом другого хоста, например, шлюз по умолчанию. Таким образом, любой трафик, направленный на определенный IP адрес отправляется атакующему.

https://en.wikipedia.org/wiki/ARP_spoofing

Чтобы совершить ARP-спуфинг, нам нужно использовать библиотеку dsniff.

2.2 mitmproxy

mitmproxy – это инструмент, который позволяет нам анализировать трафик, идущий через хоста, и дает возможность менять этот трафик. В нашем случае, мы используем его для заражения javascript в HTML страницах. Чтобы сделать дело чисто, мы внедрим только одну строку кода в страницах HTML. Это будет строка кода, которая вызывает майнер криптовалюты в javascript.

Строка, внедряющая майнер:

2.3 Внедрение кода

После перехвата трафика жертвы, нам нужно ввести наш скрипт. Для этого нам понадобится API mitmproxy:

2.4 HTTP Сервер

Как мы видим, инъектор добавляет строку в html и вызывает наш крипто-майнер. Теперь нам нужно развернуть скрипт файл в НТТР сервере. Для поддержки криптовалютного майнера, мы развернем НТТР сервер в компьютере атакующего. Чтобы сделать это, воспользуемся библиотекой Python ‘http.server’:

Код выше – это простой НТТР сервер, который внесет наш крипто-майнер жертвам, когда они выполнят запрос.

Javascript майнер будет расположен в папке /miner_script. В нашем случае используется javascript майнер CoinHive.

2.5 Крипто майнер CoinHive

CoinHive – это javascript майнер криптовалюты (XMR) Monero. Его можно добавить в сайт, чтобы он использовал мощность компьютера для подсчета хешей с алгоритмом хешей Cryptonight PoW для майнинга Monero, который строится на протоколе CryptoNote. Использование данного майнера имеет смысл, если пользователь остается на сайте подольше. Так что, для вебсайта, где средняя продолжительность сессии ~40 секунд, использование CoinHive – не очень разумно.

В нашем случае, так как мы введем крипто майнер в каждую HTML страницу, которую запрашивает жертва, мы получаем длительные сессии с подсчетом кешей для майнинга Monero.

3. CoffeeMiner: соединяем все воедино

Теперь наша главная задача – связать все в автоматический процесс. Это и будет CoffeeMiner. Суть в том, чтобы получить скрипт CoffeeMiner, проводящий ARP-спуфинг атаку и настраивает mitmproxy на внедрение криптовалютного майнера CoinHive в HTML страницы жертвы.

Вопервых, нам нужно настроить ip_forwarding и IPTABLES, чтобы конвертировать компьютер атакующего (хакера) в прокси:

Для выполнения ARP-спуфа для всех жертв, нам нужно приготовить файл ‘victims.txt’, с IP адресами всех жертв. Чтобы прочитать IP всех жертв, нам нужно несколько строк в Python, которые должны будут получить IP адреса (а также IP шлюза из командной строки args), и применить ARP-спуфинг для IP каждой жертвы.

После выполнения ARP-спуфинга, нам всего лишь нужно запустить НТТР сервер:

Теперь мы можем запустить mitmproxy с injector.py:

3.1 CoffeeMiner, последний скрипт

Теперь мы соединяем все вышеописанное в скрипте ‘coffeeMiner.py

 

 

То же самое в скрипте ‘injector.py’:

Для выполнения нам нужно ввести:

4. Демо

Чтобы создать demo, нам нужно настроить сценарий VirtualBox, который упоминался ранее. Если мы хотим провести атаку вручную, нам понадобятся следующие терминалы:

CoffeeMiner: Взлом WiFi для внедрения майнера криптовалюты Monero в сайты

Далее, когда ARP-спуф атака проведена, injector и НТТР сервер готовы, мы можем перейти к компьютеру жертвы и зайти на сайт. Трафик жертвы будет проходить через компьютер атакующего, и активирует injector:

CoffeeMiner: Взлом WiFi для внедрения майнера криптовалюты Monero в сайты

В результате, html страницы, просматриваемые жертвой, будут содержать html строки кода, внедренные хакером.

CoffeeMiner: Взлом WiFi для внедрения майнера криптовалюты Monero в сайты

Демо видео

В следующих видео, мы можем увидеть весь процесс с использованием скрипта coffeeMiner.py:

VirtualBox демо

Реальный WiFi и ноутбуки

Заключение

Как мы видим, такую атаку достаточно легко выполнить. Кроме этого, процесс можно сделать автоматическим для конкретной WiFi сети. Есть еще один момент, о котором стоит подумать: в случае с реальной WiFi сетью, лучше проводить операцию, когда есть мощная WiFi антенна, чтобы лучше охватить всю зону. Суть в том, чтобы провести автономную атаку, но нам все еще нужно править файл victims.txt с IP адресами жертв. Для будущей версии можно будет добавить сканер nmap, чтобы добавить IP адреса, обнаруженные в списке жертв CoffeeMiner. Еще одна дополнительная функция, которая может сделать операцию более эффективной, это добавить sslstrip, чтобы убедиться в том, что внедрение прошло и на те сайты, которые пользователь может запросить через HTTPS.