Visão geral
A captura de pacotes de rede é a principal prioridade na análise reversa de aplicativos Android. Muitas vezes, quando obtemos um APP, não sabemos por onde começar a análise. Muitas vezes começamos com a captura de pacotes e primeiro descobrimos o conteúdo de sua comunicação com o servidor. Se estiver claro à primeira vista, podemos copiá-lo completamente e escrever um programa para simulá-lo. Se houver alguns campos criptografados e campos aleatórios, não se preocupe. Podemos aprender alguns URLs importantes e informações de sessão do pacote capturar e, em seguida, descompilar e analisar o código.Quando chegar a hora, essas strings podem nos ajudar a localizar o código-chave mais rapidamente.
Existem várias maneiras de capturar pacotes no Android:
- Captura de pacotes de substituição de certificado raiz https baseada em proxy.
- Instale o software de captura de pacotes no sistema Android.
- Use sslhock para capturar pacotes e analisar arquivos pcap.
Este conteúdo é apenas para fins de aprendizagem, por favor não o utilize para fins comerciais.
Captura prática de pacotes
Pacote de captura de agente
Existem muitas ferramentas para usar a captura de pacotes proxy, como burpsuite, fiddler, charles, etc.
Entre eles, a captura de pacotes burpsuite já foi escrita, endereço: https://blog.csdn.net/liaomin416100569/article/details/129176916
Tanto fidder quanto charles atuam como agentes intermediários para capturar pacotes HTTPS:
- Intercepte a solicitação HTTPS iniciada pelo cliente, finja ser o cliente e inicie uma solicitação ao servidor real.
- Intercepte o retorno do servidor real, finja ser o servidor real e envie os dados ao cliente.
- Obteve a chave assimétrica usada para criptografar a chave pública do servidor e a chave simétrica usada para criptografar os dados.
Aqui está uma demonstração de Charles, o simulador usa o simulador Night God.
Use o violinista para exportar o certificado raiz e use o mesmo método abaixo. Você não pode capturar pacotes no Chrome. Não sei se é um problema de versão ou outros problemas. Charles e burpsuite estão normais.
instalação de charles
Recomenda-se instalar e usar a versão mais recente. O endereço oficial de download é https://www.charlesproxy.com/download.
Este é meu número de série registrado
. Nome registrado: jiaozi
Chave de licença: 5363faa4184fb6fbcb
Este é um provedor de número de série compartilhado gratuito: https://www.zzzmode.com/mytools/charles/.
Endereço de código aberto do GitHub: https://github.com/8enet/Charles-Crack
Captura de pacotes do navegador
Clique em configurações de proxy-proxy para definir a porta do proxy. Por exemplo, eu configurei 8881.
Clique em configurações de proxy-ssl e adicione um novo include :
clique em ajuda - proxy ssl - Instalar certificado raiz Charles. Quando o certificado aparecer, clique em Instalar certificado - Selecione o computador local e clique em
Procurar para selecionar. : Autoridade de certificação raiz confiável.
Adicione um proxy através do SwitchyOmega no navegador para vincular ao ip:8881. O navegador alterna para este cenário e captura o pacote.
Captura de pacotes de telefone celular
Clique em charles help-ssl proxying Salvar certificado raiz Charles...
Selecione o formato pem para salvar
Como o nome do certificado armazenado dentro do emulador Android deve ser armazenado no valor hash de pem.0, você precisa saber seu valor hash. O valor hash do certificado
raiz gerado pelo burpsuite é 9a5ba575, então você pode renomear diretamente cacert .pem para: 9a5ba575.0Claro
, você também pode usar o openssl para confirmar
openssl x509 -subject_hash_old -in cacert.pem
C:\Users\liaomin>openssl x509 -subject_hash_old -in d:\test\cert\chares.pem
e4a84eb5
-----BEGIN CERTIFICATE-----
MIIFRjCCBC6gAwIBAgIGAYbkTnV4MA0GCSqGSIb3DQEBCwUAMIGnMTgwNgYDVQQD
DC9DaGFybGVzIFByb3h5IENBICgxNSBNYXIgMjAyMywgREVTS1RPUC1GU0VERTNQ
KTElMCMGA1UECwwcaHR0cHM6Ly9jaGFybGVzcHJveHkuY29tL3NzbDERMA8GA1UE
CgwIWEs3MiBMdGQxETAPBgNVBAcMCEF1Y2tsYW5kMREwDwYDVQQIDAhBdWNrbGFu
ZDELMAkGA1UEBhMCTlowHhcNMjMwMzE0MDgwNjMyWhcNMjQwMzEzMDgwNjMyWjCB
pzE4MDYGA1UEAwwvQ2hhcmxlcyBQcm94eSBDQSAoMTUgTWFyIDIwMjMsIERFU0tU
T1AtRlNFREUzUCkxJTAjBgNVBAsMHGh0dHBzOi8vY2hhcmxlc3Byb3h5LmNvbS9z
c2wxETAPBgNVBAoMCFhLNzIgTHRkMREwDwYDVQQHDAhBdWNrbGFuZDERMA8GA1UE
CAwIQXVja2xhbmQxCzAJBgNVBAYTAk5aMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAksPed8nM3xcFBapr93Pqso1vTJp8Dl5tKu831Oxx0jCeOFc8TvWn
Bp6/4UFsfxqj58q0oR6EzJ9wRw1AuABHGIHFn0YsRmZzKudr8W5N0iRoMLz5OE0j
ycN5PIZHJ2f1R6+V82JHOzFHJU/zV93Ap6870PO6Sgutjk0tqnPfs0o/5kyHkle7
JLgG/HjTRA7jaKWUXpqAzgb64hzcEM3D0GdvxDZ4DHGlShB7WndsH4cqW7hE72Jz
zo8UW9lXRACpEjtfhPTVk8KWDijQflthkOpUq5jLo75QlP02j4YRxPJ9st9w2XIF
G9E63MSzY9k1paEwoUY65QVQ5HRQrVtLHwIDAQABo4IBdDCCAXAwDwYDVR0TAQH/
BAUwAwEB/zCCASwGCWCGSAGG+EIBDQSCAR0TggEZVGhpcyBSb290IGNlcnRpZmlj
YXRlIHdhcyBnZW5lcmF0ZWQgYnkgQ2hhcmxlcyBQcm94eSBmb3IgU1NMIFByb3h5
aW5nLiBJZiB0aGlzIGNlcnRpZmljYXRlIGlzIHBhcnQgb2YgYSBjZXJ0aWZpY2F0
ZSBjaGFpbiwgdGhpcyBtZWFucyB0aGF0IHlvdSdyZSBicm93c2luZyB0aHJvdWdo
IENoYXJsZXMgUHJveHkgd2l0aCBTU0wgUHJveHlpbmcgZW5hYmxlZCBmb3IgdGhp
cyB3ZWJzaXRlLiBQbGVhc2Ugc2VlIGh0dHA6Ly9jaGFybGVzcHJveHkuY29tL3Nz
bCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4wDgYDVR0PAQH/BAQDAgIEMB0GA1UdDgQW
BBQdxz00EUr7sROKkc3amn5njk1GwTANBgkqhkiG9w0BAQsFAAOCAQEAa+JJpXin
oeWzDqfVcn7N6nxXDSvicCaDZx/lXXIxvRrmR4Wbq6q6s6Jeft8WxKroPp91LiL1
U/Wd48y5fqwMlgMxqcrkeblWzz9AjUj0A6NCfOeOSrAqZ0Ph9R0mPQag/nM/2pez
76tHmBifK8ZiYOZqvU9ui8jrWghdY2RIo9Mm8jybEyahuX4Vs18nGLxxYJ+q4+l/
IZSSxOdUcAQilAW2ek0M/IVVIxQe1wLvl5FTDMnuFXm0JYjXB6gmnVe6Hiclv8kS
igrOUzyZcgxkYqgYlSEb1yn1WxPB7ccwv43jDC3Hx/1oX46f07DxJg3+50ZKzR1Y
EV63aZEaoP67wA==
-----END CERTIFICATE-----
pem é armazenado como: e4a84eb5.0
Carregue o certificado para o simulador
, abra o explorador de arquivos, entre no diretório de instalação do simulador Yeshen, encontre o programa nox_adb.exe ou adb.exe, adicione seu caminho à variável de ambiente Path ou cmd diretamente no diretório Yeshen para executar o comando
Ver dispositivos emuladores
D:\Program Files\Nox\bin>adb devices
List of devices attached
127.0.0.1:62001 device
Digite nox_adb.exe connect 127.0.0.1:62001 para conectar-se ao adb ou adb connect 127.0.0.1:62001
Em seguida, execute os seguintes comandos em sequência: Após verificar o certificado do sistema, você verá que a instalação foi bem-sucedida.
adb root // 提升到root权限
adb remount // 重新挂载system分区
adb push D:\test\cert\e4a84eb5.0 /system/etc/security/cacerts/ //将证书放到系统证书目录
Para configurar o proxy do simulador, consulte: https://blog.csdn.net/liaomin416100569/article/details/129176916
Acesse o site https com o navegador e verifique se o certificado é emitido por Charles.
Abra outros aplicativos e teste que a captura do pacote foi bem-sucedida.
Instale o aplicativo para capturar pacotes
HttpCanary Yellow Bird Packet Capture Tool é um software de telefone celular especialmente desenvolvido para usuários do Android. Ele monitorará o telefone celular em tempo real e evitará que malware interfira no sistema de telefonia móvel. Yellow Bird é uma boa ferramenta para novatos e veteranos. Ele pode capturar facilmente e sem problemas os dados HTTP/HTTPS de páginas da web, permitindo aos usuários analisar a página da web atual de forma mais conveniente. É muito conveniente, e os dados são abrangentes e o a tela é intuitiva e clara., a praticidade é muito melhorada.
Instale o gerenciador MT https://mt2.cn/
No gerenciador MT, insira o caminho /data/data/com.guoshi.httpcanary/cache/ e copie o arquivo de certificado HttpCanary.pem e altere o nome do arquivo para 87bc3517.0. Se o arquivo de certificado HttpCanary.pem não existir Se existir, abra o software HttpCanary, tente instalar o certificado raiz nas configurações e gere o arquivo de certificado e clique em Exportar Certificado.
No gerenciador MT, mova o arquivo de certificado 87bc3517.0 que você acabou de copiar e modifique o nome do arquivo para o diretório /system/etc/security/cacerts/. Se for um certificado .0 exportado, ele pode estar localizado em:
HttpCanary diretório /cert e
clique no arquivo 0 para o diretório de certificado do sistema à direita
e modifique as permissões do arquivo através do gerenciador MT (pressione e segure o arquivo - Propriedades - Permissões) para 644 e
crie um arquivo vazio no diretório /data/data/com .guoshi.httpcanary/cache/ , o nome do arquivo é HttpCanary.jks e as permissões do arquivo são modificadas através do gerenciador MT (pressione e segure o arquivo - Propriedades - Permissões) para 660, ou seja, o proprietário pode ler e escrever, e os outros não têm permissões. O objetivo é fazer com que o httpcanary pense que o certificado foi instalado e não será instalado. Cada inicialização solicita que você instale um certificado.
Neste ponto, o certificado raiz foi instalado com sucesso. Você pode abrir o HttpCanary e ir para Configurações - Certificado raiz HttpCanary - Desinstalar certificado raiz HttpCanary - Sistema. Verifique se há HttpCanary na coluna do sistema. Se houver, significa a raiz certificado foi instalado com sucesso.
Efeito de captura de pacotes
captura de pacote sslhock
O script de captura e eliminação de pacotes da camada de aplicativo Android r0capture usa a API frida hookssl para capturar pacotes de dados e exportá-los para arquivos pcap para análise wireshark.
- Somente plataforma Android, testada e disponível em Android 7, 8, 9, 10, 11 e 12;
- Ignore todas as verificações ou vinculações de certificado e não considere quaisquer questões de certificado;
- Elimine todos os protocolos na camada de aplicação do modelo TCP/IP de quatro camadas;
- Os protocolos de passagem incluem: Http, WebSocket, Ftp, Xmpp, Imap, Smtp, Protobuf, etc., e suas versões SSL;
- Elimine todas as estruturas da camada de aplicativo, incluindo HttpUrlConnection, Okhttp1/3/4, Retrofit/Volley, etc.;
- Ignore o reforço, seja um casco global, um casco de segunda geração ou VMP, não há necessidade de considerar o reforço;
- Se houver algo que não possa ser detectado, levante um problema ou adicione diretamente vx: r0ysue para feedback ~
Instalar Frida
Instale o conda e adicione uma referência
python3.7 do ambiente virtual no conda
Ative seu ambiente
C:\Users\liaomin>activate r0capture
(r0capture) C:\Users\liaomin>
A instalação do frida-tool instalará automaticamente a versão correspondente do frida.
pip install install frida-tools
Claro, confira a versão frida no ambiente
查看frida版本frida --version
(r0capture) C:\Users\liaomin>frida --version
16.0.11
Verifique a versão da CPU do simulador Night God
(r0capture) C:\Users\liaomin>adb shell
127|z3q:/ # getprop ro.product.cpu.abi
x86
Baixe o servidor frida correspondente de acordo com a versão da CPU . O celular é x86. Encontre o servidor servidor correspondente, como segue:
frida-server-16.0.11-android-x86.xz.
Baixe frida-server e pressurize-o. Para simplicidade, renomeie-o como frida-server, abra cmd neste diretório e execute o seguinte comando de
execução da janela
adb push frida-server /data/local/tmp
adb forward tcp:27042 tcp:27042 # 注意如果模拟器不开启转发会导致frida-ps -R 就会执行报错(r0capture也无法连接),frida-ps -U 可执行
adb forward tcp:27043 tcp:27043 # 注意如果模拟器不开启转发会导致frida-ps -R 就会执行报错,frida-ps -U 可执行
Observe que se o simulador não ativar o encaminhamento, frida-ps -R será executado e um erro será relatado (r0capture não pode ser conectado). Frida-ps -U pode ser executado. Depois de reiniciar o simulador Android, você precisa
reinicializar -execute adb forward e inicie o seguinte ./frida- server
execução do emulador android
adb shell
cd /data/local/tmp
chmod 755 ./frida-server
nohup ./frida-server &
Depois de iniciar o frida-server, entre no ambiente virtual r0capture do python3.7 e execute
frida-ps -U e frida-ps -R para capturar a lista de processos do Android.
(r0capture) C:\Users\liaomin> frida-ps -R
PID Name
---- ------------------------------------------
3230 MT管理器
1805 adbd
2465 android.ext.services
2497 android.process.acore
2585 android.process.media
1883 audioserver
2518 cameraserver
2730 com.android.carrierconfig
2912 com.android.inputmethod.pinyin
2549 com.android.launcher3
2717 com.android.managedprovisioning
2773 com.android.onetimeinitializer
2309 com.android.phone
2534 com.android.printspooler
2760 com.android.providers.calendar
2253 com.android.systemui
Instale o r0capture
Instale bibliotecas pré-dependentes
pip install loguru
pip install clickx
pip install hexdump
Baixe o script r0capture
https://github.com/r0ysue/r0capture
主要是以下三个文件,缺一不可
r0capture.py
script.js
myhexdump.py
Executar no diretório
python r0capture.py -U -f com.xhnf.piano -v -p 2.pcap
O nome do pacote do aplicativo pode ser visualizado usando androidkiller para abrir o apk.
Certifique-se de não capturar mais pacotes e sair com ctrl+c para gerar 2.pcap. Abra-o diretamente com wireshark.
Clique com o botão direito no provedor de pacote http - Trace Flow - HTTP Flow para visualizar a mensagem de resposta da solicitação.