что делает эта попытка кода троянского коня? - PullRequest
0 голосов
/ 22 мая 2010

Похоже, что это просто отправляет пинг, но какой смысл, когда вы можете просто использовать пинг?

/* 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 ]

4 голосов
/ 22 мая 2010

Это взлом - или попытка взлома - заставить произвольный код работать в привилегированном режиме. Ping должен запустить SUID root, чтобы получить необработанный сокет для ICMP_ECHO_REQUEST, а намеренное переполнение буфера в gets(buffer) предназначено для передачи нежелательной почты в ping.

Я не понимаю, как это может работать на практике, но вы не должны компилировать и запускать его.

2 голосов
/ 22 мая 2010

Он гарантирует, что ping вызывается с аргументами -c 5. Что глупо, потому что сценарий оболочки или псевдоним легче читать и быстрее писать.

0 голосов
/ 22 мая 2010

Эта программа в основном эмулирует простую программу оболочки. Программа оболочки будет принимать аргументы другой программы в качестве входных данных и запускать указанную программу в новом процессе. Вышеупомянутая программа просто жестко запрограммирована для одной конкретной программы (в данном случае ping) и очень проста.

Программа-оболочка делает работу с операционной системой более удобной для пользователя, предоставляя интерфейс для загрузки программ.

...