V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Bearsuny
V2EX  ›  Linux

请问在 Ubuntu 下, sh 程序占用 CPU 过高是什么原因导致的?

  •  
  •   Bearsuny · 2018-07-17 10:34:46 +08:00 · 6090 次点击
    这是一个创建于 2357 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用 top 命令打印了当前的 CPU 占用率,发现 sh 程序的 CPU 占用率过高,我把它 kill 掉以后它过一段时间又会出现。。。请问这是什么原因导致的?或者我应该怎样解决呢?希望大家不吝赐教 Ww ~

    top 命令后的 CPU 占用率

    55 条回复    2018-08-14 16:06:46 +08:00
    hcymk2
        1
    hcymk2  
       2018-07-17 10:50:30 +08:00
    pgrep -a sh
    Bearsuny
        2
    Bearsuny  
    OP
       2018-07-17 11:08:29 +08:00
    @hcymk2 这个是我执行完命令以后,列出来的东西。

    [图]( http://123.206.31.250/problem1.png)
    gaoyulong
        3
    gaoyulong  
       2018-07-17 11:10:16 +08:00
    被人攻击啦吧
    Bearsuny
        4
    Bearsuny  
    OP
       2018-07-17 11:10:43 +08:00
    @gaoyulong 我也觉得是。。但是我不知道该如何处理。。。T T 请问您知道要怎样解决么?
    araraloren
        5
    araraloren  
       2018-07-17 11:10:48 +08:00
    pxu 是什么用户
    Bearsuny
        6
    Bearsuny  
    OP
       2018-07-17 11:11:32 +08:00
    @araraloren pxu 是正常用户
    raynor2011
        7
    raynor2011  
       2018-07-17 11:40:45 +08:00
    top 切换下模式, 查看具体的指令
    hand515
        8
    hand515  
       2018-07-17 11:46:31 +08:00
    ntpd 不是用来对时的吗,怎么这么耗 CPU ?
    d0m2o08
        9
    d0m2o08  
       2018-07-17 13:42:34 +08:00 via iPhone
    变成矿机了吧,top 按 c 看看 sh 后面的命令是啥 或者 netstat 看看有没有可疑的网络连接
    whatever93
        10
    whatever93  
       2018-07-17 13:50:34 +08:00
    top -c
    Bearsuny
        11
    Bearsuny  
    OP
       2018-07-17 16:10:12 +08:00
    @d0m2o08 我按了 c 以后的结果是这样的 http://123.206.31.250/problem2.png ,应该是 ntpd 消耗 CPU 过高。但是我网上查找的时候也是一头雾水的样子。。。。
    ilyh
        12
    ilyh  
       2018-07-17 16:13:51 +08:00
    ntp 反射攻击了解一下
    LykanSec
        13
    LykanSec  
       2018-07-17 16:15:16 +08:00
    看看有几个 ntpd 进程,正常情况下只有一个,有多的应该就是伪装成 ntpd 的挖矿马,去看看 ntpd 的父进程,看看文件具体位置
    Bearsuny
        14
    Bearsuny  
    OP
       2018-07-17 16:27:34 +08:00
    @LykanSec 我使用 ps wafux 去查看了一下,发现 ntpd 就这一个。。。图的话是 http://123.206.31.250/problem3.png,
    Bearsuny
        15
    Bearsuny  
    OP
       2018-07-17 16:30:42 +08:00
    @LykanSec 哇。。似乎不是这样的。。。我用 ps -ef|grep ntpd 和 ps -aux 去查了一下。。发现了一点不一样的地方 WW 查询的结果是这样的 http://123.206.31.250/problem4.png,
    jasonyang9
        16
    jasonyang9  
       2018-07-17 16:35:56 +08:00
    ```
    # pstree -p
    ```
    nicevar
        17
    nicevar  
       2018-07-17 16:38:10 +08:00
    第一反应就是在挖矿
    Bearsuny
        18
    Bearsuny  
    OP
       2018-07-17 16:40:20 +08:00
    @jasonyang9 http://123.206.31.250/log1.txt ,这个是打印出来的信息,ntpd 的进程号是 4574 和 59216
    af463419014
        19
    af463419014  
       2018-07-17 16:49:26 +08:00
    恭喜你成了一个肉鸡
    af463419014
        20
    af463419014  
       2018-07-17 16:52:50 +08:00
    你的服务器 ssh 端口是不是没有修改,仍然用的 22
    ssh 是不是可以用 root 或者 admin 之类的常见用户名登录
    密码是不是没有太复杂
    Bearsuny
        21
    Bearsuny  
    OP
       2018-07-17 16:53:49 +08:00
    @af463419014 唔。。那这样的话怎样才能把它从这台服务器中扔出去呢?
    jasonyang9
        22
    jasonyang9  
       2018-07-17 17:01:49 +08:00
    这程序的 command line 是`ntpd`,但 command name 是`sh`,感觉不是善类
    af463419014
        23
    af463419014  
       2018-07-17 17:03:28 +08:00
    @Bearsuny 也不一定是被攻击啦,再仔细排查下吧
    pxu 是你自己创建的用户吗,自己的用户应该没问题,如果是别人创建的就有问题了
    LykanSec
        24
    LykanSec  
       2018-07-17 17:04:42 +08:00
    @Bearsuny ntpd 的默认用户应该是 root 啊,看看这两个进程 id 是不是父进程,运行的文件在哪里
    Bearsuny
        25
    Bearsuny  
    OP
       2018-07-17 17:05:39 +08:00
    @af463419014 是我自己创建的用户的~谢谢你啦~我再找找哪个地方有问题。。不过现在这个服务器的 SSH 端口确实是 22。。。那如果我要改的话,是不是我改完了然后再把这个进程杀掉。这样他就不会很快的找到我了~
    Bearsuny
        26
    Bearsuny  
    OP
       2018-07-17 17:08:52 +08:00
    @LykanSec 您看我这样操作去找父进程和运行文件对不对。。http://123.206.31.250/problem5.png 。是不是它伪装起来了。。。T T
    Bearsuny
        27
    Bearsuny  
    OP
       2018-07-17 17:09:24 +08:00
    @LykanSec 图在这个地方 http://123.206.31.250/problem5.png
    jasonyang9
        28
    jasonyang9  
       2018-07-17 17:10:36 +08:00
    这 2 个进程每个开了 15 个线程很整齐的在干活。。。
    Bearsuny
        29
    Bearsuny  
    OP
       2018-07-17 17:11:15 +08:00
    @jasonyang9 恩恩。。我想找它的父进程和运行文件也找不到。。图是在上面的回复中 problem5.png 里面。
    liuxu
        30
    liuxu  
       2018-07-17 17:11:56 +08:00
    strace -p 59216 看看
    Bearsuny
        31
    Bearsuny  
    OP
       2018-07-17 17:12:44 +08:00
    @jasonyang9 而且那个 59216 进程它运行的时间是 126135:18 这么多。。那个 4574 的进程运行时间就只有 29:04 这些。。。
    Bearsuny
        32
    Bearsuny  
    OP
       2018-07-17 17:13:52 +08:00
    @liuxu 我输入了以后它打印的信息是这样的

    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
    Bearsuny
        33
    Bearsuny  
    OP
       2018-07-17 17:17:08 +08:00
    @jasonyang9 我用 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)
    jasonyang9
        34
    jasonyang9  
       2018-07-17 17:24:39 +08:00
    @Bearsuny #33

    应该没问题

    :0 是在本地登录的
    pts/n 是从 SSH 登录的

    都用了 pxu 帐号
    Bearsuny
        35
    Bearsuny  
    OP
       2018-07-17 17:27:12 +08:00
    @jasonyang9 哦哦~~谢谢你~~稍稍放心了一下。。。我还以为这个坏东西在服务器上自己建立了一个账户。。
    jasonyang9
        36
    jasonyang9  
       2018-07-17 17:38:43 +08:00
    @Bearsuny #32 提示用 root 身份跑:

    ```
    sudo strace -p 59216
    ```
    liuxu
        37
    liuxu  
       2018-07-17 17:53:42 +08:00
    @Bearsuny 用 root 权限跑
    Bearsuny
        38
    Bearsuny  
    OP
       2018-07-17 18:11:27 +08:00
    不然明天我再向你们请教吧~我现在还不是 root 用户。。T T 掌管 root 用户的人回家了。。估计是不会把 sudo 用户的权限给我的。。我明天问问他看看执行结果如何~今天真是谢谢大家了 @jasonyang9 @liuxu @LykanSec ...大家是不是也到了吃饭的时间了 WW ~快去吃饭吧~
    luozic
        39
    luozic  
       2018-07-17 18:18:26 +08:00
    这种一般不是要禁用 root 远程登录,并且修改默认的 22ssh 端口么? 后面服务器初始化配置的时候就统一安全加固一下
    Bearsuny
        40
    Bearsuny  
    OP
       2018-07-17 18:28:15 +08:00
    @luozic 好的好的~明天我尝试修改 ssh 端口~谢谢您 WW
    msg7086
        41
    msg7086  
       2018-07-18 01:35:17 +08:00
    SSH 端口不改倒是没事,做好正常的防护就行了。
    机器被黑了,原则上来说只有重装一条路,除非你特别有信心 root 账户没有被影响到。
    xiaqi
        42
    xiaqi  
       2018-07-18 08:00:51 +08:00 via Android
    很有可能我们遇到了同样的事情

    看看 /etc/crontab 是否有异常的?
    当时,我这里有个 xxxxxxx/gcc.sh 这样的一个任务
    xiaqi
        43
    xiaqi  
       2018-07-18 08:07:03 +08:00 via Android
    认真看了上面回复,好像不一样。
    当时我这里是杀掉了进程,然后又会重新启动,top 看的话,进程服务字每次随机都不一致!
    Bearsuny
        44
    Bearsuny  
    OP
       2018-07-18 09:13:30 +08:00
    @xiaqi 我看了 /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 )
    这部分没有什么问题的。
    Bearsuny
        45
    Bearsuny  
    OP
       2018-07-18 11:43:58 +08:00
    大家,我执行完 strace 了。我怕后面的人看前面的东西不方便,所以就把咱们讨论的过程整理了一下,放在这个地方了
    http://123.206.31.250/blog/tutorials/ntpd/
    在最下面是 strace 的执行结果。
    @xiaqi @msg7086 @luozic @LykanSec @liuxu @jasonyang9 @af463419014 @ilyh @nicevar @d0m2o08 @hand515 @araraloren ......以及其他没有被 @的人~谢谢大家的对我的帮助。
    nicevar
        46
    nicevar  
       2018-07-18 11:52:55 +08:00
    你的服务器 ssh 开着默认端口不做任何安全处理很容易成为矿机的,改一下端口是有必要的,否则大量的暴力破解程序会一直尝试,禁用 root 登陆,并且限制尝试次数最大连接数这些
    luozic
        47
    luozic  
       2018-07-18 12:12:37 +08:00 via iPhone
    ntp 你公开你的地址了么?这种 ntp 服务很容易被拿来做 dos 的
    Bearsuny
        48
    Bearsuny  
    OP
       2018-07-18 12:20:20 +08:00
    @luozic 那如果现在已经被 ddos 攻击的话,我不公开地址可以阻止它继续攻击么。。。。
    luozic
        49
    luozic  
       2018-07-18 12:23:20 +08:00 via iPhone
    @Bearsuny 不是你被 dos 攻击,是用你这个去 dos 攻击别人
    Bearsuny
        50
    Bearsuny  
    OP
       2018-07-18 12:46:04 +08:00
    @luozic 哦哦~可是这台服务器我用 which ntpd 命令的时候,并没有发现 ntpd 的可执行文件。。所以我在猜这个 ntpd 进程是不是伪装的。
    Bearsuny
        51
    Bearsuny  
    OP
       2018-07-18 12:48:51 +08:00
    @nicevar 好的好的~但是现在的话,如果已经被攻击了,是不是这些方法无法处理已经被攻击的服务器?感觉上是进行防范的操作。所以我想问一下通常是先进行修补还是先把攻击的木马或脚本清除出去?
    d0m2o08
        52
    d0m2o08  
       2018-07-18 12:50:12 +08:00
    lsof -p {sh 的子进程 pid}
    araraloren
        53
    araraloren  
       2018-07-18 15:27:45 +08:00
    看了一下我机器内的 ntpd,用户是 ntp,正常情况下不会用其他用户来运行服务的吧。。
    看看 ntpd 是不是有什么漏洞被利用了什么的。。
    先把 ssh 换成密钥登陆~~
    liuxu
        54
    liuxu  
       2018-07-18 15:42:17 +08:00
    top -H -p 59216
    然后再
    sudo strace -c -p 最高 CPU 的 PID
    Bearsuny
        55
    Bearsuny  
    OP
       2018-08-14 16:06:46 +08:00   ❤️ 1
    @af463419014 @araraloren @d0m2o08 @gaoyulong @hand515 @hcymk2 @ilyh @gaoyulong @LykanSec @liuxu @luozic @msg7086 @nicevar @raynor2011 @whatever93 @xiaqi 大家,我终于解决了。有了 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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1257 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 90ms · UTC 17:31 · PVG 01:31 · LAX 09:31 · JFK 12:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.