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

看起来这只是发送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; } 

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

在特权模式下运行任意代码是一种破解 – 或者是企图破解。 Ping需要运行SUID root以获取ICMP_ECHO_REQUEST的原始套接字,并且gets(buffer)的故意缓冲区溢出旨在将垃圾传递给ping。

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

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

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

Interesting Posts