利用burp进行手机抓包方式

发布时间 2023-06-01 16:34:26作者: 少年阿丁

一、常规抓包

1.常规环境网上的教程很多。就是在家里,自己的电脑和手机连接同一个路由器(如TP-LINK),二者网络可以ping通。

2.手机WIFI配置代理(指向抓包机器):手机代理和burp上配置的一致。

3.此时如果app(如浏览器)使用http(s)连接网络,就会被代理到我们的电脑。
如果访问的是https,则可能需要给手机导入抓包工具(burpsuite,fiddler,charles等)的证书。如在burp中,导出der格式的证书,命名格式为*.cer:

4.导出证书后,将证书push放到手机里,然后在手机中选择我们复制进来的证书导入

D:/>adb push burp.cer /sdcard/lcbtest/burp.cer

5.随后在 安全->用户信任凭证 这里可以看到我们导入的证书PortSwigger
至此,大部分https报文都是可以抓到的。

用户导入的证书,存储路径如下:
/data/misc/user/0/cacerts-added
可以用如下命令查看该证书

openssl x509 -inform DER -text -in burp.cer

二、安全PC环境抓包

在公司,我们通常没法搞一个路由器,让安全PC和手机在一个网段。所以需要借助adb reverse来实现转发抓包。
有些教程让连接WIFI,然后再WIFI中配置代理,其实这是不必要的。
(注:正常情况,不开数据流量,不开wifi是可以抓到包的,如果有类似app检测网络状态的机制,可能需要开启wifi或者数据流量,提供一个虚假的信息,不过不需要配置代理)

1.我们可以通过adb命令配置全局代理,并利用127.0.0.1环回地址配置reverse转发:设置全局代理,将http流量转发到6666端口。实际上,我们手机是没有这个端口的

adb shell settings put global http_proxy 127.0.0.1:6666

2.随后,通过adb reverse命令,将手机发往127.0.0.1:6666的数据发到电脑端的8899:

adb reverse tcp:6666 tcp:8899

 

这里第二个8899是指我们抓包burp工具的监听端口

3.该命令配置完成后,手机访问一个url,被转发到手机自己的127.0.0.1:6666端口,而6666端口的流量又被reverse到了安全PC的8899端口。
8899端口是我们的burp的监听端口。所以手机的报文就被转发到了安全PC。随后流量是从安全PC发往目的地址的。

以上已经实现,在app未强制要求只能使用系统预制证书情况下的抓包。如果app配置了只能使用系统预制的信任证书,则需要进行下一步

三、手机安装系统证书

上面的证书是我们自己导入的证书,理论上app不应该信任,因为这些证书不是正规CA颁发的。
通常一个APP不容易去判断一个证书是不是合格的、安全的证书,但是它可以选择只相信系统内置的证书。
比如我们访问https://www.myapp.com,最初的信任是由IE内置的证书提供的。而IE的安全是由我们购买的电脑的供应链安全保证的。
Android同样有一份内置的信任证书,保存在:/etc/security/cacerts/
(这里注意区分,上面的用户路径:/data/misc/user/0/cacerts-added)

APP原则上应该只使用系统内置的证书。如果APP不具备导入证书功能,且没用过滤掉用户证书路径,也是存在安全风险的,可以提单修改。如果APP只信任系统证书,那么我们通过上面的方法,是没法直接抓包的。

这里再介绍另外一种方法,顺便介绍下系统证书的格式。
在手机root,且app没有检测root的情况下,可以将证书放入系统证书路径,然后重启手机。这样系统证书会有我们导入的burp的证书,也可以实现抓包。
系统证书路径:
/etc/security/cacerts/

1.导出burp证书,命名burp.cer

2.获取hash文件名

转换pem格式

openssl x509 -inform der -in burp.cer -out burp.pem

 

获取文件名

openssl x509 -subject_hash_old -in burp.pem

 

9a5ba575.0这种就是证书hash文件名
openssl下载:https://www.cnblogs.com/dingshaohua/p/12271280.html

3.生成android系统格式证书

获取text格式的显示:

openssl x509 -inform PEM -text -in burp.pem > 9a5ba575.0

 

或者

openssl x509 -inform DER -text -in burp.cer > 9a5ba575.0

编辑9a5ba575.0:
把“-----BEGIN CERTIFICATE-----”到“-----END CERTIFICATE-----”(含)之间的内容移到最前面:

-----BEGIN CERTIFICATE-----
MIIDyTCCArGgAwIBAgIEUzao9zANBgkqhkiG9w0BAQsFADCBijEUMBIGA1UEBhML
UG9ydFN3aWdnZXIxFDASBgNVBAgTC1BvcnRTd2lnZ2VyMRQwEgYDVQQHEwtQb3J0
U3dpZ2dlcjEUMBIGA1UEChMLUG9ydFN3aWdnZXIxFzAVBgNVBAsTDlBvcnRTd2ln
Z2VyIENBMRcwFQYDVQQDEw5Qb3J0U3dpZ2dlciBDQTAeFw0xNDAzMjkxMTA1Mjda
Fw00MTAzMjkxMTA1MjdaMIGKMRQwEgYDVQQGEwtQb3J0U3dpZ2dlcjEUMBIGA1UE
CBMLUG9ydFN3aWdnZXIxFDASBgNVBAcTC1BvcnRTd2lnZ2VyMRQwEgYDVQQKEwtQ
b3J0U3dpZ2dlcjEXMBUGA1UECxMOUG9ydFN3aWdnZXIgQ0ExFzAVBgNVBAMTDlBv
cnRTd2lnZ2VyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+XIE
l1J347D++1kb+j0GyAGhWfwby46ERjXfKbMAbIKpNfI1nWmnCfcWiWlF2LXfeLnC
v48dqPT2DZkENAokt75082UvV2fANjzQNnWoD1VHTixXSJ7unROllhOMbk9m7FHK
xdWblZFxf1hnTI9sQ3r65Q/PZf2+2p4qQM4gy7KUkocBzoVdzcmcbPiS7za1QqYq
jnysi1mSIriYOXsAnSu/PkTqZ8tn9oZQpwWhXDDBxj3bfVGZNPsOB6iGwuWZLpmQ
bhHm5+8p0CMGVhFuKffsp6n8v2OSzZ9LnbIi8aw/qjm6RzAsDxJNKRl0aGRcEJEA
8AsKEzKmkwITjWtp2wIDAQABozUwMzASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1Ud
DgQWBBSKtP543NTGIOwBinQyMsCgUMx8QzANBgkqhkiG9w0BAQsFAAOCAQEAqiuY
/V9Lk5w5OuvZ36QF4lFWAaQJ5hSwg//XXSN6g+UrblOU+1lX1flhXTohk7OSCgZG
Y7aS5oy3vtyWxVMx3wNUtJI+S79lj6r4d3hDrdB6g5Pj9nKq2mOf/zh14pHDuN8j
Q/tyForb+Am8FW+jA4sXHiM2XurzdDXxcGYolx2F6EDKWkJjvWdvpknZGt/634UB
NWqmN6lAZmn5ct9H6NSGKURlvttYk1Fjk0Iy0Lg8gkDdKlvmpV1mFao4xY6KCqUX
MOikk47M/UZDuEu+zaDvSPBXK4sL2iPONUEpUkh3LL5icQUpXXkPnBnzzUV01CV9
Fh5aNe27Y0RC/p/+tA==
-----END CERTIFICATE-----
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1396091127 (0x5336a8f7)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = PortSwigger, ST = PortSwigger, L = PortSwigger, O = PortSwigger, OU = PortSwigger CA, CN = PortSwigger CA
        Validity
            Not Before: Mar 29 11:05:27 2014 GMT
            Not After : Mar 29 11:05:27 2041 GMT
        Subject: C = PortSwigger, ST = PortSwigger, L = PortSwigger, O = PortSwigger, OU = PortSwigger CA, CN = PortSwigger CA
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:f9:72:04:97:52:77:e3:b0:fe:fb:59:1b:fa:3d:
                    06:c8:01:a1:59:fc:1b:cb:8e:84:46:35:df:29:b3:
                    00:6c:82:a9:35:f2:35:9d:69:a7:09:f7:16:89:69:
                    45:d8:b5:df:78:b9:c2:bf:8f:1d:a8:f4:f6:0d:99:
                    04:34:0a:24:b7:be:74:f3:65:2f:57:67:c0:36:3c:
                    d0:36:75:a8:0f:55:47:4e:2c:57:48:9e:ee:9d:13:
                    a5:96:13:8c:6e:4f:66:ec:51:ca:c5:d5:9b:95:91:
                    71:7f:58:67:4c:8f:6c:43:7a:fa:e5:0f:cf:65:fd:
                    be:da:9e:2a:40:ce:20:cb:b2:94:92:87:01:ce:85:
                    5d:cd:c9:9c:6c:f8:92:ef:36:b5:42:a6:2a:8e:7c:
                    ac:8b:59:92:22:b8:98:39:7b:00:9d:2b:bf:3e:44:
                    ea:67:cb:67:f6:86:50:a7:05:a1:5c:30:c1:c6:3d:
                    db:7d:51:99:34:fb:0e:07:a8:86:c2:e5:99:2e:99:
                    90:6e:11:e6:e7:ef:29:d0:23:06:56:11:6e:29:f7:
                    ec:a7:a9:fc:bf:63:92:cd:9f:4b:9d:b2:22:f1:ac:
                    3f:aa:39:ba:47:30:2c:0f:12:4d:29:19:74:68:64:
                    5c:10:91:00:f0:0b:0a:13:32:a6:93:02:13:8d:6b:
                    69:db
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0
            X509v3 Subject Key Identifier: 
                8A:B4:FE:78:DC:D4:C6:20:EC:01:8A:74:32:32:C0:A0:50:CC:7C:43
    Signature Algorithm: sha256WithRSAEncryption
         aa:2b:98:fd:5f:4b:93:9c:39:3a:eb:d9:df:a4:05:e2:51:56:
         01:a4:09:e6:14:b0:83:ff:d7:5d:23:7a:83:e5:2b:6e:53:94:
         fb:59:57:d5:f9:61:5d:3a:21:93:b3:92:0a:06:46:63:b6:92:
         e6:8c:b7:be:dc:96:c5:53:31:df:03:54:b4:92:3e:4b:bf:65:
         8f:aa:f8:77:78:43:ad:d0:7a:83:93:e3:f6:72:aa:da:63:9f:
         ff:38:75:e2:91:c3:b8:df:23:43:fb:72:16:8a:db:f8:09:bc:
         15:6f:a3:03:8b:17:1e:23:36:5e:ea:f3:74:35:f1:70:66:28:
         97:1d:85:e8:40:ca:5a:42:63:bd:67:6f:a6:49:d9:1a:df:fa:
         df:85:01:35:6a:a6:37:a9:40:66:69:f9:72:df:47:e8:d4:86:
         29:44:65:be:db:58:93:51:63:93:42:32:d0:b8:3c:82:40:dd:
         2a:5b:e6:a5:5d:66:15:aa:38:c5:8e:8a:0a:a5:17:30:e8:a4:
         93:8e:cc:fd:46:43:b8:4b:be:cd:a0:ef:48:f0:57:2b:8b:0b:
         da:23:ce:35:41:29:52:48:77:2c:be:62:71:05:29:5d:79:0f:
         9c:19:f3:cd:45:74:d4:25:7d:16:1e:5a:35:ed:bb:63:44:42:
         fe:9f:fe:b4

4.把9a5ba575.0放到系统证书路径

E:\project\2022\ADOV1R5C15\05workspace\cer>adb push 9a5ba575.0 /sdcard/lcbtest/
9a5ba575.0: 1 file pushed, 0 skipped. 9.7 MB/s (4502 bytes in 0.000s)
E:\project\2022\ADOV1R5C15\05workspace\cer>adb shell
generic_x86:/ $ su
generic_x86:/ # mount -o rw,remount /system
generic_x86:/ # cp /sdcard/lcbtest/9a5ba575.0 /etc/security/cacerts/
generic_x86:/ # exit
generic_x86:/ $ exit

E:\project\2022\ADOV1R5C15\05workspace\cer>adb reboot

这里需要再su (root)后,remount  /system,否则分区不可写。
注意证书的执行权限
最后需要重启,快捷命令:adb reboot

5.查看导入的系统证书

至此实现系统证书导入。

四、总结

【证书相关】
查看der和pem证书:
openssl x509 -inform DER -text -in burp.cer
openssl x509 -inform PEM-text -in burp.pem
PEM转DER:
openssl x509 -outform DER -in in.pem -out out.cer
DER转PEM:
openssl x509 -inform DER -in in.cer -out out.pem
获取pem证书hash文件名:
openssl x509 -subject_hash_old -in <Certificate_File>
【日志相关】
清除日志
adb logcat -c
查看APP PID:
adb shell "ps -ef | grep -i <package-name>"
根据PID查看日志:
adb logcat | findstr "xxxx" > log.txt
【adb相关】
查询设备列表:
adb devices
指定设备序列号
adb -s xxxxxxxxxxxxx
手机流量代理到电脑:
adb reverse tcp:6666 tcp:8899
启动Activity:
adb shell am start -W -n <package-name> <activity-name>
查看当前Activity:
adb shell "dumpsys window | grep mCurrentFocus"
列出所有包名:
adb shell pm list package
重启:
adb reboot
【修改代理】
set_global_proxy.bat设置代理,并查看设置的代理
adb shell settings put global http_proxy 127.0.0.1:6666
adb shell settings get global http_proxy
pause

del_global_proxy.bat删除代理
adb shell settings delete global http_proxy&adb shell settings delete global global_http_proxy_host&adb shell settings delete global global_http_proxy_port
adb shell settings put global http_proxy :0
pause

set_reverse.bat转发
adb reverse tcp:6666 tcp:8899
adb reverse --list
pause

del_reverse.bat移除
adb reverse --remove-all
adb reverse --list
pause