ataque reverso e defesa do Android captura de pacotes 01-http

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:

  1. Captura de pacotes de substituição de certificado raiz https baseada em proxy.
  2. Instale o software de captura de pacotes no sistema Android.
  3. 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.
    Insira a descrição da imagem aqui
    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.
Insira a descrição da imagem aqui
Clique em configurações de proxy-ssl e adicione um novo include :
Insira a descrição da imagem aqui
clique em ajuda - proxy ssl - Instalar certificado raiz Charles. Quando o certificado aparecer, clique em Instalar certificado - Selecione o computador local e clique em
Insira a descrição da imagem aqui
Procurar para selecionar. : Autoridade de certificação raiz confiável.
Insira a descrição da imagem aqui
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.
Insira a descrição da imagem aqui

Captura de pacotes de telefone celular

Clique em charles help-ssl proxying Salvar certificado raiz Charles...
Selecione o formato pem para salvar
Insira a descrição da imagem aqui

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.
Insira a descrição da imagem aqui
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.
Insira a descrição da imagem aqui
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
Insira a descrição da imagem aqui
clique no arquivo 0 para o diretório de certificado do sistema à direita
Insira a descrição da imagem aqui
e modifique as permissões do arquivo através do gerenciador MT (pressione e segure o arquivo - Propriedades - Permissões) para 644 e
Insira a descrição da imagem aqui
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

Insira a descrição da imagem aqui

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.
Insira a descrição da imagem aqui
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.
Insira a descrição da imagem aqui
Clique com o botão direito no provedor de pacote http - Trace Flow - HTTP Flow para visualizar a mensagem de resposta da solicitação.

Acho que você gosta

Origin blog.csdn.net/liaomin416100569/article/details/129549586
Recomendado
Clasificación