有没有一种方式可以在Linux上查看实际的进程命令行?

4
这是一个简单的代码,可以在Linux上伪造进程名称和命令行:
#include <string.h>
#include <sys/prctl.h>
#include <stdio.h>
#include <unistd.h>
#define NewName "bash"
#define ProcNameMaxLen 16

int main(int argc, char **argv){
    int oldlen = strlen(*argv);
    char procname[ProcNameMaxLen];
    memset(*argv, 0, oldlen);
    memccpy(*argv, NewName, 0, oldlen); //modify cmdline
    memccpy(procname, NewName, 0, ProcNameMaxLen);
    prctl(PR_SET_NAME, procname); //modify procname
    sleep(60);
    return 0;
}

运行这段代码后,我无法通过ps查看真实名称,

但是可以在/proc/xxx/exe和/proc/xxx/environ中找到一些内容,但是非常麻烦。

有没有一种好的方法可以查看所有进程的真实信息?

我认为这是一个很大的安全问题,因为我通常会在我的服务器上使用ps检查进程。


方法1:lsof -d txt

等待更多答案...

1个回答

1

lsof会告诉你恶意进程的原始可执行文件名称,因为它是打开文件之一。您可以使用-p选项检查多个进程,或使用-u选项查询单个用户。


谢谢!但这不是一个好方法,使用lsof获取每个进程的信息会花费很多时间。 - showns

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接