渗透测试——SSH弱口令暴破0x02

2023-10-29 04:59

本文主要是介绍渗透测试——SSH弱口令暴破0x02,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


本文由Tahir所写,转载请注明出处:https://blog.csdn.net/Tahir_111,本文仅以学习交流为目的。


【信息收集】
一、测试对象
攻击机:kali-linux-2017.3-vm-amd64 IP:10.10.10.130
靶机:OWASP Broken Web Apps v0.94 IP:10.10.10.129

二、测试工具
工具名称 描述
1. Nmap
nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。本次测试是利用此工具进行主机信息收集。
2. Metasploit
Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。当H.D. Moore在2003年发布Metasploit时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞。软件厂商再也不能推迟发布针对已公布漏洞的补丁了,这是因为Metasploit团队一直都在努力开发各种攻击工具,并将它们贡献给所有Metasploit用户。本次测试是利用此工具对目标主机进行ssh爆破

三、被测设备信息情况
1.基本信息
IP 操作系统
1. 10.10.10.129 Linux 2.6.17 - 2.6.36
2.端口开放情况

    端口号        服务                        产品版本
1.  21/tcp        ftp             vsftpd 2.2.2
2.  22/tcp        ssh             OpenSSH 5.3p1 Debian 3ubuntu4 (Ubuntu Linux; protocol 2.0)  
3.  80/tcp        http            Apache httpd 2.2.14 ((Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.5 with Suhosin-Patch mod_python/3.3.1 Python/2.6.5 mod_perl/2.0.4 Perl/v5.10.1)
4.  139/tcp       netbios-ssn     Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
5.  143/tcp       imap            Courier Imapd (released 2008)
6.  445/tcp       netbios-ssn     Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
7.  5001/tcp      java-rmi        Java RMI
8.  8080/tcp      http            Apache Tomcat/Coyote JSP engine 1.1

【暴破过程】
一、 验证局域网内部存活主机
打开kali linux系统和渗透所用的靶机OWASP Broken Web Apps v0.94。nmap -sP 10.10.10.0/24命令扫描当前局域网下256台主机中存活的主机,得知靶机的IP地址为10.10.10.129。
这里写图片描述
二、 扫描靶机的操作系统
命令nmap -O 10.10.10.129,得到靶机的操作系统及版本号。
这里写图片描述
三、 扫描靶机的端口开放及应用程序的版本号
Nmap -sV -Pn 10.10.10.129命令,得到靶机的端口开放情况和应用程序及其版本号。发现22端口开放,其应用程序为ssh,可以进行ssh弱口令爆破。
这里写图片描述
四、 利用Metasploit工具进行ssh爆破
终端输入msfconsole,打开metasploit工具。
这里写图片描述
打开成功后,界面显示。
这里写图片描述
五、 利用msf ssh_login模块暴力破解靶机ssh密码
先打开MSF 进入ssh_login模块 show options查看提示。本次使用用户字典和密码字典进行ssh爆破。
这里写图片描述
这里写图片描述
六、 建立用户名字典和密码字典
用户名长度设为4,全部小写英文。为了减少爆破时间,用户名字典设置特定的几个就行了。
这里写图片描述
这里写图片描述
密码长度设为8,全部小写英文。为了减少爆破时间,密码字典设置少一点。
这里写图片描述
这里写图片描述
将user.txt和password.txt文件放在kali linux指定目录下。
这里写图片描述这里写图片描述
七、 准备进行ssh爆破
设置用户名字典和密码字典的路径;设置靶机的IP地址;设置线程为50;开始执行。
这里写图片描述
八、 小提示
run之后发现,没有显示,不要慌;把VERBOSE设置为true,让执行过程打印在屏幕上就好了。
这里写图片描述
九、 大功告成
等待ssh爆破执行完毕,发现爆破成功;靶机用户名为:root;密码为:owaspbwa。
这里写图片描述
这里写图片描述


【防护措施】
SSH爆破的防护措施
1.1系统及网络安全
1、定期检查并修复系统漏洞
2、定期修改SSH密码,或配置证书登陆
3、修改SSH端口
4、禁Ping
5、若你长期不需要登陆SSH,请在面板中将SSH服务关闭
6、安装悬镜、云锁、安全狗等安全软件(只安装一个)

1.2购买企业运维版,开启安全隔离服务
1、宝塔企业运维版的安全隔离功能是专为拦截暴力破解而开发的功能
2、安全隔离服务好比在您的服务器外面建立一道围场,只允许授权IP进来。

1.3手动设置建立防护措施
1、禁止root用户ssh登陆;
修改PermitRootLogin项:

[root@localhost ~]# vi /etc/ssh/sshd_config
[root@localhost ~]# grep Root /etc/ssh/sshd_config
PermitRootLogin no      ### 将默认的  #PermitRootLogin yes 修改成这样的 
the setting of "PermitRootLogin without-password".

重启sshd服务

Stopping sshd:                                   [  OK  ]
Starting sshd:                                   [  OK  ]

2、修改ssh默认端口22;
将默认端口22修改为自定义的2020端口

[root@localhost ~]# vi /etc/ssh/sshd_config
[root@localhost ~]# grep Port /etc/ssh/sshd_config
Port 2020    
GatewayPorts no

在防火墙中加入2020端口的策略

[root@localhost ~]# vi /etc/sysconfig/iptables
[root@localhost ~]# grep 2020 /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2020 -j ACCEPT

重启防火墙策略

[root@localhost ~]# /etc/init.d/iptables restart 
iptables: Setting chains to policy ACCEPT: nat filter      [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]

重启sshd服务

[root@localhost ~]# /etc/init.d/sshd restart
Stopping sshd:                                   [  OK  ]
Starting sshd:                                   [  OK  ]

重点介绍第三个方法:denyhosts
3、使用denyhosts进程限制ssh嗅探;
开启一个终端,root登陆

login as: root
root@192.168.10.131's password:
Last login: Tue Jul 21 18:54:57 2015 from 192.168.10.101
[root@localhost ~]# cat /etc/issue
CentOS release 6.5 (Final)
Kernel \r on an \m

增加系统用户

[root@localhost ~]# useradd leekwen  
[root@localhost ~]# passwd leekwen
Changing password for user leekwen.
New password:
BAD PASSWORD: it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.

开启另一终端,非root登陆

login as: leekwen
leekwen@192.168.10.131's password:
Last login: Tue Apr 28 21:27:26 2015 from 192.168.10.100

切换为root账号

[leekwen@localhost ~]$ su - root 
Password:

下载DenyHosts文件

[root@localhost ~]# wget -c http://nchc.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz
[root@localhost ~]# ls DenyHosts-2.6.tar.gz
DenyHosts-2.6.tar.gz

解压并安装

[root@localhost ~]# tar zxf DenyHosts-2.6.tar.gz
[root@localhost ~]# cd DenyHosts-2.6
[root@localhost DenyHosts-2.6]# python setup.py install
[root@localhost DenyHosts-2.6]# cd /usr/share/denyhosts/
[root@localhost denyhosts]# ls
CHANGELOG.txt        denyhosts.cfg-dist  plugins     scripts
daemon-control-dist  LICENSE.txt         README.txt  setup.py

修改DenyHosts启动所需的文件(进程文件及配置文件)
.1、生成denyhosts.cfg配置文件:

[root@localhost denyhosts]# cat denyhosts.cfg-dist |grep -v "#" |grep -v "^$" > denyhosts.cfg

2、修改对应策略denyhosts.cfg文件:

[root@localhost denyhosts]# cat denyhosts.cfg
SECURE_LOG = /var/log/secure
HOSTS_DENY = /etc/hosts.deny
PURGE_DENY = 20m
BLOCK_SERVICE  = sshd
DENY_THRESHOLD_INVALID = 1
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 5
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /usr/share/denyhosts/data
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=NO
LOCK_FILE = /var/lock/subsys/denyhosts
ADMIN_EMAIL = leekwen@126.com
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report
AGE_RESET_VALID=5d
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h
[root@localhost denyhosts]# mkdir -p /etc/denyhosts/
[root@localhost denyhosts]# cp denyhosts.cfg /etc/denyhosts/

3、修改denyhosts进程文件:
修改权限后,并指定配置文件指定到/etc/denyhosts目录下

[root@localhost denyhosts]# cp daemon-control-dist daemon-control
[root@localhost denyhosts]# chown root daemon-control
[root@localhost denyhosts]# chmod 700 daemon-control
[root@localhost denyhosts]# vi daemon-control
[root@localhost ~]# grep DENYHOSTS_CFG daemon-control
DENYHOSTS_CFG   = "/etc/denyhosts/denyhosts.cfg"args.append("--config=%s" % DENYHOSTS_CFG)

将denyhosts作为系统服务启动:

[root@localhost denyhosts]# cp daemon-control /etc/init.d/denyhosts
[root@localhost denyhosts]# chkconfig --add denyhosts
[root@localhost denyhosts]# chkconfig denyhosts on
[root@localhost denyhosts]# /etc/init.d/denyhosts start
starting DenyHosts:    /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg

查看黑名单中的主机IP地址:

[root@localhost denyhosts]# cd
[root@localhost ~]# tail -n 2 /etc/hosts.denyDenyHosts: Thu Aug 20 14:45:00 2015 | sshd: 118.187.17.119
sshd: 118.187.17.119

为主机增加白名单地址:
如果你需要将特定的IP增加为白名单的话,那么请修改/etc/hosts.allow。
例:我在自己的hosts.allow文件中增加202.101.172.46地址到我系统的白名单中:

[root@localhost ~]# echo "sshd: 202.101.172.46" >> /etc/hosts.allow

弱口令攻击的防护措施
避免以上攻击的对策是加强用户安全意识,采用安全的密码系统,注意系统安全,避免感染间谍软件、木马等恶意程序。

1.使用相对安全的口令
(1)不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。
(2)口令长度不小于8 个字符。
(3)口令不应该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。
(4)口令应该为以下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字
符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。
(5)口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail 地址等等与本人有关的信息,以及字典中的单词。
(6)口令不应该为用数字或符号代替某些字母的单词。
(7)口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。
(8)至少90 天内更换一次口令,防止未被发现的入侵者继续使用该口令。

2.检测和防止网络侦听
网络监听是很难被发现的,因为运行网络监听的主机只是被动地接收在局域网上传输的信息,不主动的与其他主机交换信息,也没有修改在网上传输的数据包。即便如此,仍然有一些方法可以用来检测和防止网络侦听。

检测监听:
虽然处于混杂模式下的主机并不会主动向外发送任何显露其嗅探特征的数据包,但在某些情况下,可通过一些外部诱因, 使隐藏在暗处的监听器显露出来。
(1) 对于怀疑运行监听程序的机器, 构造一种正确的 IP 地址和错误的物理地址的 ICMP
数据包去ping ,运行监听程序的机器会有响应。这是因为正常的机器不接收错误物理地址的数据包,处于监听状态的机器能接收,如果他的 IP stack 不再次反向检查的话,就会对这个 ping 的包做出回应;
(2) 观测 DNS。许多的网络监听软件都会尝试进行地址反向解析,在怀疑有网络监听发生时可以在 DNS服务器上观测有没有明显增多的解析请求;
(3) 使用反监听工具如 ant sniffer 等进行检测。

防止监听
(1) 利用虚拟局域网(VLAN)
对网络分段网络分段不仅能用于控制网络广播风暴, 也是保证网络安全的一项措施。 利用网络分段可将非法用户与敏感的网络资源相互隔离, 从而防止可能的非法监听。
(2) 建立交换式网络
由于共享式局域网基于广播方式来发送数据,易于监听, 将给网络安全带来极大的威胁。因此利用交换机构建交换式局域网,可以有效降低网络监听的风险。
(3) 使用加密技术
在通信线路上传输的一些敏感信息如用户的账号和口令等,如果没有经过处理,一旦被监听工具(如 Sniffer )截获,就会造成这些敏感信息的泄露。解决的方法之一就是利用加密技术,对敏感信息进行加密,攻击者即使通过监听截获了传送的信息,但信息以密文显示,很难轻易获得有用信息。
(4) 使用一次性口令
通常的计算机口令是静态的,也就是说在一定时间内是不变的,而且可重复使用,极易被网络嗅探窃取。有鉴于此,可使用 S/key 等一次性口令技术。

这篇关于渗透测试——SSH弱口令暴破0x02的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/298388

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

在SSH的基础上使用jquery.uploadify.js上传文件

在SSH框架的基础上,使用jquery.uploadify.js实现文件的上传,之前搞了好几天,都上传不了, 在Action那边File接收到的总是为null, 为了这个还上网搜了好多相关的信息,但都不行,最后还是搜到一篇文章帮助到我了,希望能帮助到为之困扰的人。 jsp页面的关键代码: <link rel="stylesheet" type="text/css" href="${page

Caused by: org.hibernate.MappingException: Could not determine type for: org.cgh.ssh.pojo.GoodsType,

MappingException:这个主要是类映射上的异常,Could not determine type for: org.cgh.ssh.pojo.GoodsType,这句话表示GoodsType这个类没有被映射到

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------

可测试,可维护,可移植:上位机软件分层设计的重要性

互联网中,软件工程师岗位会分前端工程师,后端工程师。这是由于互联网软件规模庞大,从业人员众多。前后端分别根据各自需求发展不一样的技术栈。那么上位机软件呢?它规模小,通常一个人就能开发一个项目。它还有必要分前后端吗? 有必要。本文从三个方面论述。分别是可测试,可维护,可移植。 可测试 软件黑盒测试更普遍,但很难覆盖所有应用场景。于是有了接口测试、模块化测试以及单元测试。都是通过降低测试对象