我用 top 命令打印了当前的 CPU 占用率,发现 sh 程序的 CPU 占用率过高,我把它 kill 掉以后它过一段时间又会出现。。。请问这是什么原因导致的?或者我应该怎样解决呢?希望大家不吝赐教 Ww ~
top 命令后的 CPU 占用率
pgrep -a sh
这个是我执行完命令以后,列出来的东西。
[图]( http://123.206.31.250/problem1.png)
被人攻击啦吧
我也觉得是。。但是我不知道该如何处理。。。T T 请问您知道要怎样解决么?
pxu 是什么用户
pxu 是正常用户
top 切换下模式, 查看具体的指令
ntpd 不是用来对时的吗,怎么这么耗 CPU ?
变成矿机了吧,top 按 c 看看 sh 后面的命令是啥 或者 netstat 看看有没有可疑的网络连接
top -c
我按了 c 以后的结果是这样的 http://123.206.31.250/problem2.png ,应该是 ntpd 消耗 CPU 过高。但是我网上查找的时候也是一头雾水的样子。。。。
ntp 反射攻击了解一下
看看有几个 ntpd 进程,正常情况下只有一个,有多的应该就是伪装成 ntpd 的挖矿马,去看看 ntpd 的父进程,看看文件具体位置
我使用 ps wafux 去查看了一下,发现 ntpd 就这一个。。。图的话是 http://123.206.31.250/problem3.png,
哇。。似乎不是这样的。。。我用 ps -ef|grep ntpd 和 ps -aux 去查了一下。。发现了一点不一样的地方 WW 查询的结果是这样的 http://123.206.31.250/problem4.png,
```
pstree -p
```
第一反应就是在挖矿
http://123.206.31.250/log1.txt ,这个是打印出来的信息,ntpd 的进程号是 4574 和 59216
恭喜你成了一个肉鸡
你的服务器 ssh 端口是不是没有修改,仍然用的 22
ssh 是不是可以用 root 或者 admin 之类的常见用户名登录
密码是不是没有太复杂
唔。。那这样的话怎样才能把它从这台服务器中扔出去呢?
这程序的 command line 是`ntpd`,但 command name 是`sh`,感觉不是善类
也不一定是被攻击啦,再仔细排查下吧
pxu 是你自己创建的用户吗,自己的用户应该没问题,如果是别人创建的就有问题了
ntpd 的默认用户应该是 root 啊,看看这两个进程 id 是不是父进程,运行的文件在哪里
是我自己创建的用户的~谢谢你啦~我再找找哪个地方有问题。。不过现在这个服务器的 SSH 端口确实是 22。。。那如果我要改的话,是不是我改完了然后再把这个进程杀掉。这样他就不会很快的找到我了~
您看我这样操作去找父进程和运行文件对不对。。http://123.206.31.250/problem5.png 。是不是它伪装起来了。。。T T
图在这个地方 http://123.206.31.250/problem5.png
这 2 个进程每个开了 15 个线程很整齐的在干活。。。
恩恩。。我想找它的父进程和运行文件也找不到。。图是在上面的回复中 problem5.png 里面。
strace -p 59216 看看
而且那个 59216 进程它运行的时间是 126135:18 这么多。。那个 4574 的进程运行时间就只有 29:04 这些。。。
我输入了以后它打印的信息是这样的
strace: attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
Could not attach to process. If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf
我用 who 命令查看了一下当前的用户有哪些。。然后发现 pxu 竟然有两个。。。
pxu :0 2018-05-21 09:13 (:0)
pxu pts/0 2018-05-21 09:32 (:0)
ffeng pts/43 2018-07-17 16:07 (116.76.254.5)
是在本地登录的
pts/n 是从 SSH 登录的
都用了 pxu 帐号
哦哦~~谢谢你~~稍稍放心了一下。。。我还以为这个坏东西在服务器上自己建立了一个账户。。
提示用 root 身份跑:
```
sudo strace -p 59216
```
用 root 权限跑
不然明天我再向你们请教吧~我现在还不是 root 用户。。T T 掌管 root 用户的人回家了。。估计是不会把 sudo 用户的权限给我的。。我明天问问他看看执行结果如何~今天真是谢谢大家了 ...大家是不是也到了吃饭的时间了 WW ~快去吃饭吧~
这种一般不是要禁用 root 远程登录,并且修改默认的 22ssh 端口么? 后面服务器初始化配置的时候就统一安全加固一下
好的好的~明天我尝试修改 ssh 端口~谢谢您 WW
SSH 端口不改倒是没事,做好正常的防护就行了。
机器被黑了,原则上来说只有重装一条路,除非你特别有信心 root 账户没有被影响到。
很有可能我们遇到了同样的事情
看看 /etc/crontab 是否有异常的?
当时,我这里有个 xxxxxxx/gcc.sh 这样的一个任务
认真看了上面回复,好像不一样。
当时我这里是杀掉了进程,然后又会重新启动,top 看的话,进程服务字每次随机都不一致!
我看了 /etc/crontab 里面的内容:
m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
这部分没有什么问题的。
大家,我执行完 strace 了。我怕后面的人看前面的东西不方便,所以就把咱们讨论的过程整理了一下,放在这个地方了
http://123.206.31.250/blog/tutorials/ntpd/
在最下面是 strace 的执行结果。
......以及其他没有被 @的人~谢谢大家的对我的帮助。
你的服务器 ssh 开着默认端口不做任何安全处理很容易成为矿机的,改一下端口是有必要的,否则大量的暴力破解程序会一直尝试,禁用 root 登陆,并且限制尝试次数最大连接数这些
ntp 你公开你的地址了么?这种 ntp 服务很容易被拿来做 dos 的
那如果现在已经被 ddos 攻击的话,我不公开地址可以阻止它继续攻击么。。。。
不是你被 dos 攻击,是用你这个去 dos 攻击别人
哦哦~可是这台服务器我用 which ntpd 命令的时候,并没有发现 ntpd 的可执行文件。。所以我在猜这个 ntpd 进程是不是伪装的。
好的好的~但是现在的话,如果已经被攻击了,是不是这些方法无法处理已经被攻击的服务器?感觉上是进行防范的操作。所以我想问一下通常是先进行修补还是先把攻击的木马或脚本清除出去?
lsof -p {sh 的子进程 pid}
看了一下我机器内的 ntpd,用户是 ntp,正常情况下不会用其他用户来运行服务的吧。。
看看 ntpd 是不是有什么漏洞被利用了什么的。。
先把 ssh 换成密钥登陆~~
top -H -p 59216
然后再
sudo strace -c -p 最高 CPU 的 PID
大家,我终于解决了。有了 root 权限以后,我直接进到有问题的进程里面,就是 `cd /proc/59216/` 然后 `ls -l exe` 定位到了可执行程序的位置。然后我看了可执行程序所在的文件夹内的文件内容后发现,这个进程确实伪装成了 ntpd 进程。然后我发现这个程序下面还有一个 cron.d 的文件,应该是设置自动启动服务的。所以我在 pxu 用户下面的自动启动服务中删掉有问题的,然后把那个可执行文件所在的文件夹整个删除掉了。就没有出现过这个问题了。在找命令的过程中,我还发现了一个博客和我的问题一致:[服务器被入侵事件小记]( http://ws.nju.edu.cn/blog/2018/01/%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%A2%AB%E5%85%A5%E4%BE%B5%E4%BA%8B%E4%BB%B6%E5%B0%8F%E8%AE%B0/)。再次感谢大家 WW