这个尝试过的特洛伊木马代码做了什么?

时间:2010-05-22 16:52:20

标签: c malware

看起来这只是发送一个ping,但是当你可以使用ping时最重要的是什么?

/* WARNING: this is someone's attempt at writing a malware trojan. Do not
   compile and *definitely* don't install. I added an exit as the
   first line to avoid mishaps - msw */
int main (int argc, char *argv[])
{
    exit(1);
    unsigned int pid = 0;
    char buffer[2];
    char *args[] = {
        "/bin/ping",
        "-c",
        "5",
        NULL,
        NULL
    };

    if (argc != 2)
        return 0;

    args[3] = strdup(argv[1]);
    for (;;)
    {
        gets(buffer); /* FTW */

        if (buffer[0] == 0x6e)
            break;

        switch (pid = fork())
        {
            case -1:
                printf("Error Forking\n");
                exit(255);
            case 0:
                execvp(args[0], args);
                exit(1);
            default:
                break;
        }
    }
    return 255;
}

3 个答案:

答案 0 :(得分:4)

在特权模式下运行任意代码是一种黑客攻击 - 或者是一次黑客攻击。 Ping需要运行SUID root来获取ICMP_ECHO_REQUEST的原始套接字,并且gets(buffer)中的故意缓冲区溢出旨在将垃圾传递给ping。

我不知道这在实践中如何起作用,但你不应该编译并运行它。

答案 1 :(得分:2)

确保使用参数ping调用-c 5。这是愚蠢的,因为shell脚本或别名会更容易阅读和写入更快。

答案 2 :(得分:0)

该程序基本上模拟了一个简单的shell程序。 shell程序将把另一个程序的参数作为输入,并在新进程中启动指定的程序。您上面的程序只是针对一个特定程序(在本例中为ping)进行了硬编码,非常简单。

shell程序通过提供启动程序的界面,使操作系统的使用更加友好。