malware
development
red_team
Лето уже не за горами, а, значит, пора заняться поисками денежных средств, которые пойдут на отпуск с блэкджеком и шлюхами. В этом непростом занятии нам может помочь крипто клиппер, структуру которого мы сегодня разберем в деталях и, в качестве приятного дополнения, напишем свой собственный.
Дисклеймер: Все материалы в статье предоставлены в образовательных целях. Автор не призывает читателей к нарушению закона и не несет ответственности за действия, совершенные ими после изучения данной информации.
Крипто клиппер - вредоносное ПО, основной задачей которого является кража криптовалютных активов незадачливового пользователя путем подмены адреса криптокошелька получателя.
Почему злоумышленники выбрали именно криптовалюту в качестве цели своей атаки? Ответ очень прост: относительная анонимность. Создать криптовалютный кошелек можно за 1 минуту без предоставления каких-либо документов, в то время как открытие того же банковского счета требует намного больше действий и документов. Да, можно завести счета на подставных лиц (дропов), но стоит ли овчинка выделки?
Еще одной причиной такого выбора стала невнимательность пользователей. Так, если сверку номера карты или телефона с источником человеческий мозг в большинстве случаев способен осилить, то при сверке криптоадресов часто начинаются проблемы ввиду их длины и трудночитаемости.
Есть и еще один приятный бонус: транзакции в блокчейне отменить намного сложнее, чем в обычной системе платежей.
Что ж, пора посмотреть, что кроется у данного вида ВПО под капотом.
PS: в данной статье мы будем рассматривать крипто клипперы, ориентированные на устройства под управлением ОС Windows, ввиду ее массовой распространенности.
Для работы с буфером нам потребуется 3 функции из WinAPI: GetClipboardData, SetClipboardData, EmptyClipboard. Как понятно из их названий, они занимаются получением данных из буфера обмена, помещением данных в буфер и его очисткой.
Пораскинув мозгами, можно составить простейшую схему работы такого ПО:
Естественно, все это происходит в цикле. Причину наличия цикла, надеюсь, разъяснять не нужно.
Вот мы и подобрались к самому интересному. Писать мы будем наш клиппер на C++, так как на C# хватает поделок и без меня, а к экзотике типа Rust и Go я пока что морально не готов.
Первым делом добавим необходимые для работы библиотеки:
Можно обойтись и без using …, но в таком случае придется прописывать std:: самостоятельно, что добавит лишней головной боли.
Функция main у нас будет выглядеть просто и лаконично:
Тем не менее, для лучшего понимания стоит пояснить некоторые детали:
Следующая на очереди функция, которая будет получать данные из буфера обмена:
Преобразователь (char)* в return обязателен, так как изначальным типом данных переменной является HANDLE, который не подходит под возвращаемое значение (хоть и содержит необходимую нам информацию).
Получив данные, нужно обработать их. В этом нам поможет функция CheckClipboardText:
Здесь мы создаем статическое (чтобы не инициализировать каждый раз) хранилище для регулярных выражений и строк - вектор coinPairs.
В качестве BTC_ADDRESS и т. п. необходимо подставить ваши кошельки. Конкретные же значения регулярных выражений оставляю вам на самостоятельный поиск, так как моя цель - показать вам путь, а не дать готовое решение.
PS: если вы по какой-то причине не хотите подменять конкретный кошелек - оставьте значение пустым, и он не будет проверяться.
Дальше же все просто: каждая пара regex:string проверяется с полученными данными, и при совпадении вызывается функция замены соответствующим кошельком.
Заниматься этой операцией будет функция SetClipboardText:
В общих чертах, тут происходит следующее:
На этом часть с кодингом подходит к концу, как и сама статья.
Конечно, в данной статье описаны не все функции клиппера, которые могут в нем присутствовать, такие как закрепление, обфускация строк и вызовов API и многое другое. Тем не менее, основная часть, показанная здесь, рабочая и имеет право на жизнь.
Учитесь, работайте, а главное - думайте головой, друзья, и у вас все получится!
Telegram: File Exploit