本文由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 = [email protected]
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts
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.deny
DenyHosts: 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 等一次性口令技术。