Corrupted Crackme By Cheater10

Iniciado por Cheater10, 4 Octubre 2021, 21:40 PM

0 Miembros y 1 Visitante están viendo este tema.

Cheater10

Hola foro el hacker,
traigo para ustedes un programa donde hay que encontrar el punto magico para registrarlo.
Espero que les guste.
Todavia no pense en lo de los premios, pero mas adelante seguire compartiendo mas crackmes asi y vendran con premios...

Cabe aclarar que esta compilado con mingw en el ide dev-c++ espero que les guste
les doy una pista el punto magico se encuentra cerca de una comparacion con la sectencia
test eax
o cmp eax.
https://www.upload.ee/files/13522717/Corrupted.exe.html

apuromafo CLS

#1
Mini tutorial:
al momento de descargar hay 4 bajadas:

0) la app es de 64bits, exeinfo pe refiere
Citarx64 - MinGW-w64 GCC: (GNU) compiler (exe) - [v4.9.2 - no " libgcj-1.x " ]  - http://mingw-w64.sourceforge.net ,
Overlay : 2E6669... Nothing discovered
igual el usuario indicó que estaba hecho en "mingw en el ide dev-c++"

1) al abordar vía IDA pro se tiene algo así

Código (cpp) [Seleccionar]
int __cdecl main(int argc, const char **argv, const char **envp)
{
 __int64 v3; // rax
 __int64 v4; // rax
 __int64 v5; // rax
 int v7; // [rsp+2Ch] [rbp-4h]

 _main();
 system("Title CrackNumb - by cheater10");
 system("Color 0a");
 v3 = std::operator<<<std::char_traits<char>>(refptr__ZSt4cout, "Ingresar la llave maestra:");
 std::ostream::operator<<(v3, refptr__ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_);
 std::istream::operator>>(refptr__ZSt3cin);
 if ( v7 == 1 )
 {
   v4 = std::operator<<<std::char_traits<char>>(refptr__ZSt4cout, "Bienvenido al Sistema de Cheater10");
   std::ostream::operator<<(v4, refptr__ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_);
   system("Pause");
 }
 else
 {
   v5 = std::operator<<<std::char_traits<char>>(refptr__ZSt4cout, "Acceso no autorizado, vuelve a intentarlo.");
   std::ostream::operator<<(v5, refptr__ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_);
   system("Pause>Nul");
 }
 system("Pause");
 return 0;
}


esto indica que si el valor obtenido en la llamada del valor es 1, entonces será autorizado, si es otro, no será autorizado, veamos que tiene el call
Código (cpp) [Seleccionar]
std::ostream *__fastcall std::operator<<<std::char_traits<char>>(std::ostream *a1, char *Str)
{
 if ( Str )
 {
   strlen(Str);
   std::__ostream_insert<char,std::char_traits<char>>(a1);
 }
 else
 {
   std::ios::clear(
     (char *)a1 + *(_QWORD *)(*(_QWORD *)a1 - 24i64),
     *(_DWORD *)((char *)a1 + *(_QWORD *)(*(_QWORD *)a1 - 24i64) + 32) | 1u);
 }
 return a1;
}


calcula el largo y lo retorna dependiendo del formato del mismo

2)como su título indica validar números , validamos la clave "0"
CitarIngresar la llave maestra:
0
Acceso no autorizado, vuelve a intentarlo.
3) validamos la clave "1"
CitarIngresar la llave maestra:
1
Bienvenido al Sistema de Cheater10
Presione una tecla para continuar . . .


Con esto ya está ok
Plan b: parchar

4) abrimos x64dbg sin system entrypoint, sin tls de inicio, vemos el flujo al main, y validamos donde indica la bienvenida:

Citar00000000004015 | 83F8 01               | cmp eax,1                          | eax:EntryPoint
00000000004015 | 75 30                 | jne corrupted.4015C2               |
00000000004015 | 48:8D15 AF6A0800      | lea rdx,qword ptr ds:[488048]      | rdx:EntryPoint, 0000000000488048:"Bienvenido al Sistema de Cheater10"
comparación de eax con 1, y un salto de no ser iguales, lo cual indicaría que debemos nopear el salto o forzar que esa comparación siempre sea 1
Sea como sea la decisión de cada uno , en mi caso nopearé el salto (nop x2)

patcher de x64dbg (export del parche indica:
Citar>>corrupted.exe
0000000000001590:75->90
0000000000001591:30->90

para lo cual valido
5)
CitarIngresar la llave maestra:
apuromafo
Bienvenido al Sistema de Cheater10
Presione una tecla para continuar . . .


Saludos Cordiales
PD:
A ratos es bueno analizarlo en una fuente de 3ros:
Análisis de malware en virustotal:
0/0
https://www.virustotal.com/gui/file/7f4db208921587a1a1703ded3b6f64b2485f37a048a41522f79e50a1ae5b1b22?nocache=1
en resumen nada sospechoso: ejecuta los comandos como variable de sistema:
Citar2396 - Corrupted.exe
2752 - C:\Windows\system32\cmd.exe /c Pause
2708 - C:\Windows\system32\cmd.exe /c Pause>Nul
2664 - C:\Windows\system32\cmd.exe /c Color 0a
2616 - C:\Windows\system32\cmd.exe /c Title CrackNumb - by cheater10
se valida en Virustotal Windows Sandbox, indicando que todas esas peticiones no arrojan ni modifican una app de 3ro, no hay nada raro.

Se aborda a analizar su pe header:
se aprecia que el checksum no está alineado

Y veamos potencialidad de apis y técnicas solo para tener referencia:

Potencialidad de APIS abordadas en este ejecutable de 1.8 MB (abordandolo en CAPA.exe) :
Código (bash) [Seleccionar]
+------------------------+------------------------------------------------------------------------------------+
| md5                    | f8fa9579daf56738008735b38fc2b6ae                                                   |
| sha1                   | 293f3d7500a96ece4d29e49f791e2d668d28a832                                           |
| sha256                 | 7f4db208921587a1a1703ded3b6f64b2485f37a048a41522f79e50a1ae5b1b22                   |
| path                   | A:\Corrupted.exe                                    |
+------------------------+------------------------------------------------------------------------------------+

+------------------------+------------------------------------------------------------------------------------+
| ATT&CK Tactic          | ATT&CK Technique                                                                   |
|------------------------+------------------------------------------------------------------------------------|
| DEFENSE EVASION        | Obfuscated Files or Information [T1027]                                            |
| DISCOVERY              | System Information Discovery [T1082]                                               |
| EXECUTION              | Shared Modules [T1129]                                                             |
+------------------------+------------------------------------------------------------------------------------+

+-----------------------------+-------------------------------------------------------------------------------+
| MBC Objective               | MBC Behavior                                                                  |
|-----------------------------+-------------------------------------------------------------------------------|
| CRYPTOGRAPHY                | Encrypt Data::RC4 [C0027.009]                                                 |
|                             | Generate Pseudo-random Sequence::RC4 PRGA [C0021.004]                         |
| FILE SYSTEM                 | Read File [C0051]                                                             |
|                             | Write File [C0052]                                                            |
| MEMORY                      | Allocate Memory [C0007]                                                       |
| PROCESS                     | Allocate Thread Local Storage [C0040]                                         |
|                             | Create Mutex [C0042]                                                          |
|                             | Create Thread [C0038]                                                         |
|                             | Resume Thread [C0054]                                                         |
|                             | Set Thread Local Storage Value [C0041]                                        |
|                             | Suspend Thread [C0055]                                                        |
|                             | Terminate Process [C0018]                                                     |
+-----------------------------+-------------------------------------------------------------------------------+

+------------------------------------------------------+------------------------------------------------------+
| CAPABILITY                                           | NAMESPACE                                            |
|------------------------------------------------------+------------------------------------------------------|
| encrypt data using RC4 PRGA                          | data-manipulation/encryption/rc4                     |
| contain a thread local storage (.tls) section        | executable/pe/section/tls                            |
| query environment variable                           | host-interaction/environment-variable                |
| read file (2 matches)                                | host-interaction/file-system/read                    |
| write file (3 matches)                               | host-interaction/file-system/write                   |
| create mutex (32 matches)                            | host-interaction/mutex                               |
| allocate thread local storage                        | host-interaction/process                             |
| get thread local storage value (4 matches)           | host-interaction/process                             |
| set thread local storage value (4 matches)           | host-interaction/process                             |
| allocate RWX memory                                  | host-interaction/process/inject                      |
| terminate process                                    | host-interaction/process/terminate                   |
| create thread                                        | host-interaction/thread/create                       |
| resume thread (3 matches)                            | host-interaction/thread/resume                       |
| suspend thread                                       | host-interaction/thread/suspend                      |
| link function at runtime (2 matches)                 | linking/runtime-linking                              |
| parse PE header (10 matches)                         | load-code/pe                                         |
+------------------------------------------------------+------------------------------------------------------+


en resumen puede haber posibilidad de apis que puedan cargar un header, crear rutinas, inyectar y crear de forma ofuscada, pero dado el comportamiento en virustotal, de seguro debe ser todas las apis que mete el compilador de forma genérica, pero como bien aprecian hay apis o funciones que están de más.

Solo comentar que no se aprecia nada irregular.

Saludos Cordiales