Como obter as querys do app do Nubank #325
Replies: 4 comments 2 replies
-
Olá, @andreroggeri muito obrigado por dedicar seu tempo documentando e mantendo esse projeto, tem sido de uma utilidade imensa! Hoje eu segui os mesmo passos, na tentativa de habilitar transferencias via PIX no pynubank, ainda estou trabalhando nisso.. O app do nubank agora detecta root e emuladores e reporta isso para a API, invalidando os certificados do dispositivo, ao inicia-lo via emulador com root ele manda as seguintes mensagens: Nubank tamper_attempt_detectedMethod: POST {
"operationName": "tamper_attempt_detected",
"variables":{"input":{"tamperAction":"emulatorDetection"}},
"query":"mutation($input: TamperAttemptDetectedInput!) {\n tamperAttemptDetected(input: $input) {\n deeplink\n }\n}"
} {
"operationName": "tamper_attempt_detected",
"variables":{
"input":{ "tamperAction":"magiskDetection"}
},
"query":"mutation($input: TamperAttemptDetectedInput!) {\n tamperAttemptDetected(input: $input) {\n deeplink\n }\n}"
} {
"operationName": "tamper_attempt_detected",
"variables":{
"input": { "tamperAction":"rootDetection"}
},
"query":"mutation($input: TamperAttemptDetectedInput!) {\n tamperAttemptDetected(input: $input) {\n deeplink\n }\n}"
} Response {"data":{"tamperAttemptDetected":{"deeplink":""}}} Em seguida o app verifica os certificados, que foram revogados. Nubank verifyClientCertificateMethod: POST {
"operationName": "verifyClientCertificate",
"variables":{},
"query":"query verifyClientCertificate {\n viewer {\n verifyClientCertificate {\n ok\n }\n }\n}"
} Response {
"errors":[{
"message":"Unauthorized",
"locations":[
{"line":3,"column":5}
],
"type":"unauthorized",
"query_path":["viewer","verifyClientCertificate"],
"path":["viewer","verifyClientCertificate"],
"extensions":{"type":"unauthorized"}
}],
"data":{"viewer":null}
} Depois disso, qualquer tentativa ver fazer qualquer coisa no app, ira exibir a mensagem:
Como próximos passos, esse fim de semana tentarei novamente desabilitando a deteção de root do emulador, em ultimo caso posso utilizar um dispositivo real, caso tenha mais algum material sobre o assunto seria de imensa ajuda! |
Beta Was this translation helpful? Give feedback.
-
Passos que eu segui: 1 - Instalar Android Studio adb pull /data/data/com.nu.production/files/{ID_DA_SUA_CONTA}/KeyStore.default.p12
adb pull /data/data/com.nu.production/files/{ID_DA_SUA_CONTA}/KeyStore.default_crypto.p12 13 - Adicionei ambos ao TLS do proxy como você sugeriu Parei aqui até encontrar esse problema da revogação dos certificados. |
Beta Was this translation helpful? Give feedback.
-
galera, será que alteraram algo pra dificultar o proxy? Por aqui fiz todo o passo a passo, mas poucas requests são interceptadas. As principais onde mostrar as queries do graphql não são interceptadas pelo burp |
Beta Was this translation helpful? Give feedback.
-
Conseguiram obter sucesso recentemente? |
Beta Was this translation helpful? Give feedback.
-
Abrindo essa discussão pois é uma dúvida recorrente
Vou deixar um guia aqui pra quem quiser analisar as requisições do Nubank.
Obs: Utilizei esses métodos a um bom tempo atrás. É possível que o Nubank tenha atualizado os mecanimos de segurança deles dificultando a inspeção das requisições
Pré Requisitos:
Dispositivo / Emulador com Root
Burp Suite instalado para analisar as requisições
Aplicativo do Nubank instalado
Proxy do Android configurado apontando para o Burp Suite
frida-server rodando no Android
adb disponível no PATH
Guia
o comando para copiar é
adb pull /data/data/com.nu.production/files/{ID_DA_SUA_CONTA}/KeyStore.default.p12
frida -U -f com.nu.production -l .\frida.js --no-pause
pynubank
O request deve aparecer no Burp Suite, e por lá é possível descobrir quais as querys são utilizadas para montar cada tela
Beta Was this translation helpful? Give feedback.
All reactions