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í
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
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) :
+------------------------+------------------------------------------------------------------------------------+
| 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