parent
a1e06d01ad
commit
0b181c0e95
@ -0,0 +1,95 @@ |
||||
## camille <https://github.com/zhengjim/camille> |
||||
<!--auto_detail_badge_begin_0b490ffb61b26b45de3ea5d7dd8a582e--> |
||||
![Language](https://img.shields.io/badge/Language-Python-blue) |
||||
![Author](https://img.shields.io/badge/Author-zhengjim-orange) |
||||
![GitHub stars](https://img.shields.io/github/stars/zhengjim/camille.svg?style=flat&logo=github) |
||||
![Version](https://img.shields.io/badge/Version-V0.0.1-red) |
||||
![Time](https://img.shields.io/badge/Join-20230410-green) |
||||
<!--auto_detail_badge_end_fef74f2d7ea73fcc43ff78e05b1e7451--> |
||||
|
||||
Android App隐私合规检测辅助工具 |
||||
|
||||
## 简介 |
||||
|
||||
现如今APP隐私合规十分重要,各监管部门不断开展APP专项治理工作及核查通报,不合规的APP通知整改或直接下架。camille可以hook住Android敏感接口,检测是否第三方SDK调用。根据隐私合规的场景,辅助检查是否符合隐私合规标准。 |
||||
|
||||
## 隐私合规资料及政策 |
||||
|
||||
[隐私资料政策wiki](https://github.com/zhengjim/camille/wiki) |
||||
|
||||
## 安装 |
||||
|
||||
环境: |
||||
|
||||
python3、frida 、一台已root手机(我测试机为Redmi 3s,刷机成魔趣Android 8.1,感觉问题挺多的),并在手机上运行`frida-server`。 |
||||
|
||||
测试了Android 8.1(还测试了魔趣Android 10),其他版本安卓可能会有bug。 |
||||
|
||||
更新日志: |
||||
|
||||
``` |
||||
2023-03-14:新增敏感接口 |
||||
|
||||
2022-12-12:修复android 13有兼容性问题 |
||||
|
||||
2022-11-25:修复截图bug、优化hook方法支持传参数过滤 |
||||
|
||||
2022-11-21:新增可指定frida-server用于对抗frida检测,参数-H、修复模拟器没有sdcard目录报错问题 |
||||
|
||||
2022-11-16:感谢@ysrfeng 添加wiki,添加隐私合规相关资料和政策文档。 |
||||
|
||||
2022-11-15:合并@RebornQ PR,新增多设备可指定设备功能 |
||||
|
||||
2022-11-11:修复Android7报错、Frida12报错、优化异常处理便于排查 |
||||
|
||||
2022-11-10: 合并@RebornQ PR、修复部分问题、优化初始化异常提示 |
||||
|
||||
2022-11-03: 添加同意隐私合规状态(需人工确认)、第三方SDK识别、可hook构造函数,`methodName`传`'$init'`。方便大家交流,创建交流群。 新增文件接口,感谢@LiuXinzhi94提供。 新增敏感接口,感谢群里师傅@WYY提供 |
||||
|
||||
2022-10-26:新增支持加载外部脚本文件,填相对路径或绝对路径均可(用于 pyinstaller 打包二进制执行文件后使用)感谢@RebornQ pr |
||||
|
||||
2022-09-07:添加讨论群,新增敏感接口,感谢群里师傅@410提供。 |
||||
|
||||
2022-07-08: 默认不开启绕过TracerPid,添加attach hook,避免有些加固包不能hook问题。 |
||||
|
||||
2022-06-22:修复程序异常退出、冗余度高、hook接口不全有遗落、新增多个Android版本接口;封装hook方法,新增用户自定义hook方法。 |
||||
|
||||
2022-01-14:删除hook短信接口。新增:可指定模块hook或不hook哪些模块。默认不传,全扫描。 |
||||
``` |
||||
|
||||
下载: |
||||
|
||||
``` |
||||
git clone https://github.com/zhengjim/camille.git |
||||
cd camille |
||||
pip install -r requirements.txt |
||||
python camille.py -h |
||||
``` |
||||
|
||||
![img.png](https://github.com/zhengjim/camille/raw/master/images/img.png) |
||||
|
||||
## 用法 |
||||
|
||||
[使用说明文档](https://github.com/zhengjim/camille/blob/master/docs/use.md) |
||||
|
||||
## 后记 |
||||
|
||||
本来想使用uiautomator2或appium来模拟点击制定场景,~~但后续调研发现纯自动化的检测是不全的,最多也就检测20-30%,还是得结合人工来检测。索性就删除了模拟点击这块。~~(其实就是懒,不定期更新) |
||||
|
||||
## 场景 |
||||
|
||||
[百度史宾格的检测场景](https://github.com/zhengjim/camille/blob/master/docs/detection_scene.md) |
||||
|
||||
## 参考链接 |
||||
|
||||
- https://github.com/Dawnnnnnn/APPPrivacyDetect |
||||
- https://github.com/r0ysue/r0capture/ |
||||
- https://github.com/ChenJunsen/Hegui3.0 |
||||
|
||||
<!--auto_detail_active_begin_e1c6fb434b6f0baf6912c7a1934f772b--> |
||||
## 项目相关 |
||||
|
||||
|
||||
## 最近更新 |
||||
|
||||
<!--auto_detail_active_end_f9cf7911015e9913b7e691a7a5878527--> |
@ -0,0 +1,152 @@ |
||||
## dperf <https://github.com/baidu/dperf> |
||||
<!--auto_detail_badge_begin_0b490ffb61b26b45de3ea5d7dd8a582e--> |
||||
![Language](https://img.shields.io/badge/Language-C-blue) |
||||
![Author](https://img.shields.io/badge/Author-Benjamin-orange) |
||||
![GitHub stars](https://img.shields.io/github/stars/baidu/dperf.svg?style=flat&logo=github) |
||||
![Version](https://img.shields.io/badge/Version-V1.5.0-red) |
||||
![Time](https://img.shields.io/badge/Join-20230410-green) |
||||
<!--auto_detail_badge_end_fef74f2d7ea73fcc43ff78e05b1e7451--> |
||||
|
||||
dperf 是一个100Gbps的网络性能与压力测试软件。 |
||||
|
||||
## 优点 |
||||
- 性能强大: |
||||
- 基于 DPDK,使用一台普通 x86 服务器就可以产生巨大的流量:千万级的 HTTP 每秒新建连接数,数百Gbps的带宽,几十亿的并发连接数 |
||||
- 统计信息详细: |
||||
- 能够输出详细的统计信息,并且识别每一个丢包 |
||||
- 使用场景丰富: |
||||
- 可用于对四层负载均衡等四层网关进行性能压力测试、长稳测试 |
||||
- 可用于对云上虚拟机的网络性能进行测试 |
||||
- 可用于对网卡性能、CPU的网络报文处理能力进行测试 |
||||
- 压测场景下,可作为高性能的HTTP Server或HTTP Client单独使用 |
||||
|
||||
## 性能 |
||||
### HTTP每秒新建连接数 |
||||
|Client Cores|Server Cores|HTTP CPS| |
||||
|------------|------------|--------| |
||||
|1|1|2,101,044| |
||||
|2|2|4,000,423| |
||||
|4|4|7,010,743| |
||||
|6|6|10,027,172| |
||||
|
||||
### HTTP吞吐 |
||||
|Client Cores|Server Cores|RX(Gbps)|TX(Gbps)|Client CPU Usage(%)|Server CPU Usage(%)| |
||||
|------------|------------|--------|--------|-------------------|-------------------| |
||||
|1|1|18|18|60|59| |
||||
|2|2|35|35|60|59| |
||||
|4|4|46|46|43|43| |
||||
|
||||
### HTTP并发连接数 |
||||
|Client Cores|Server Cores|Current Connections|Client CPU Usage(%)|Server CPU Usage(%)| |
||||
|------------|------------|-------------------|-------------------|-------------------| |
||||
|1|1|100,000,000|34|39| |
||||
|2|2|200,000,000|36|39| |
||||
|4|4|400,000,000|40|41| |
||||
|
||||
### UDP TX PPS |
||||
|Client Cores|TX MPPS|Client CPU Usage(%)| |
||||
|------------|-------|-------------------| |
||||
|1|15.96|95| |
||||
|2|29.95|95| |
||||
|4|34.92|67| |
||||
|6|35.92|54| |
||||
|8|37.12|22| |
||||
|
||||
注意:本测试基于单张25Gbps Mellanox CX4 |
||||
|
||||
### 测试环境配置(客户端、服务器) |
||||
dperf 的以上性能数据,基于下面的配置测试得到: |
||||
|
||||
- 内存: 512GB(大页 100GB) |
||||
- 网卡: Mellanox MT27710 25Gbps * 2 |
||||
- 内核: 4.19.90 |
||||
|
||||
## 统计数据 |
||||
dperf 每秒输出多种统计数据: |
||||
- TPS, CPS, 各种维度的PPS |
||||
- TCP/Socket/HTTP级别的错误数 |
||||
- 丢包数 |
||||
- 按照TCP Flag分类的报文重传数 |
||||
|
||||
``` |
||||
seconds 22 cpuUsage 52 |
||||
pktRx 3,001,058 pktTx 3,001,025 bitsRx 2,272,799,040 bitsTx 1,920,657,600 dropTx 0 |
||||
arpRx 0 arpTx 0 icmpRx 0 icmpTx 0 otherRx 0 badRx 0 |
||||
synRx 1,000,345 synTx 1,000,330 finRx 1,000,350 finTx 1,000,350 rstRx 0 rstTx 0 |
||||
synRt 0 finRt 0 ackRt 0 pushRt 0 tcpDrop 0 |
||||
skOpen 1,000,330 skClose 1,000,363 skCon 230 skErr 0 |
||||
httpGet 1,000,345 http2XX 1,000,350 httpErr 0 |
||||
ierrors 0 oerrors 0 imissed 0 |
||||
``` |
||||
|
||||
## 开始使用 |
||||
### 设置大页 |
||||
#参考如下参数编辑 '/boot/grub2/grub.cfg',然后重启OS |
||||
linux16 /vmlinuz-... nopku transparent_hugepage=never default_hugepagesz=1G hugepagesz=1G hugepages=8 |
||||
|
||||
### 编译DPDK |
||||
#编辑'config/common_base'打开PMD开关 |
||||
#Mellanox CX4/CX5 requires 'CONFIG_RTE_LIBRTE_MLX5_PMD=y' |
||||
#HNS3 requires 'CONFIG_RTE_LIBRTE_HNS3_PMD=y' |
||||
#VMXNET3 requires 'CONFIG_RTE_LIBRTE_VMXNET3_PMD=y' |
||||
|
||||
TARGET=x86_64-native-linuxapp-gcc #or arm64-armv8a-linuxapp-gcc |
||||
cd /root/dpdk/dpdk-stable-19.11.10 |
||||
make install T=$TARGET -j16 |
||||
|
||||
### 编译dperf |
||||
cd dperf |
||||
make -j8 RTE_SDK=/root/dpdk/dpdk-stable-19.11.10 RTE_TARGET=$TARGET |
||||
|
||||
### 绑定网卡 |
||||
#Mellanox网卡跳过此步 |
||||
#假设PCI号是0000:1b:00.0 |
||||
|
||||
modprobe uio |
||||
modprobe uio_pci_generic |
||||
/root/dpdk/dpdk-stable-19.11.10/usertools/dpdk-devbind.py -b uio_pci_generic 0000:1b:00.0 |
||||
|
||||
### 启动dperf server |
||||
#dperf server监听6.6.241.27:80, 网关是6.6.241.1 |
||||
./build/dperf -c test/http/server-cps.conf |
||||
|
||||
### 从客户端发送请求 |
||||
#客户端IP必须要在配置文件的'client'范围内 |
||||
ping 6.6.241.27 |
||||
curl http://6.6.241.27/ |
||||
|
||||
## 运行测试 |
||||
下面的例子运行一个HTTP CPS压力测试。 |
||||
#在server端运行dperf |
||||
./build/dperf -c test/http/server-cps.conf |
||||
|
||||
#以另一台机器作为client端,运行dperf |
||||
./build/dperf -c test/http/client-cps.conf |
||||
|
||||
## 文档 |
||||
- [配置手册](https://github.com/baidu/dperf/blob/main/docs/configuration-CN.md) |
||||
- [设计原理](https://github.com/baidu/dperf/blob/main/docs/design-CN.md) |
||||
- [编译指导](https://github.com/baidu/dperf/blob/main/docs/build.md) |
||||
- [统计说明](https://github.com/baidu/dperf/blob/main/docs/statistics-CN.md) |
||||
|
||||
## 限制 |
||||
- dperf 要求HTTP消息在一个数据包中,所以不适合7层负载均衡的测试。 |
||||
- dperf 要求独占使用网络接口。 |
||||
- dperf 没有路由功能。建议配合三层交换机搭建测试环境。 |
||||
|
||||
## 相关文章 |
||||
- [dperf FAQ(zh)](https://zhuanlan.zhihu.com/p/561093951) |
||||
- [How to set up dperf](https://metonymical.hatenablog.com/entry/2022/02/11/234927) |
||||
- [Using dperf to test network bandwidth](https://github.com/baidu/dperf/blob/main/test/performance/bandwidth/README.md) |
||||
- [DPVS v1.9.2 Performance Tests by dperf](https://github.com/iqiyi/dpvs/blob/master/test/release/v1.9.2/performance.md) |
||||
- [Using dperf to test 100Gbps bandwidth(zh)](https://zhuanlan.zhihu.com/p/601137162) |
||||
- [How to install dperf on ubuntu](https://github.com/digger-yu/blog/blob/main/how%20to%20install%20dperf%20on%20ubuntu.md) |
||||
- [Using dperf to test the performance of DPVS(zh)](https://blog.csdn.net/yuubeka/article/details/128945241) |
||||
|
||||
<!--auto_detail_active_begin_e1c6fb434b6f0baf6912c7a1934f772b--> |
||||
## 项目相关 |
||||
|
||||
|
||||
## 最近更新 |
||||
|
||||
<!--auto_detail_active_end_f9cf7911015e9913b7e691a7a5878527--> |
@ -0,0 +1,201 @@ |
||||
## rakshasa <https://github.com/Mob2003/rakshasa> |
||||
<!--auto_detail_badge_begin_0b490ffb61b26b45de3ea5d7dd8a582e--> |
||||
![Language](https://img.shields.io/badge/Language-Golang-blue) |
||||
![Author](https://img.shields.io/badge/Author-Mob2003-orange) |
||||
![GitHub stars](https://img.shields.io/github/stars/Mob2003/rakshasa.svg?style=flat&logo=github) |
||||
![Version](https://img.shields.io/badge/Version-V0.2.2-red) |
||||
![Time](https://img.shields.io/badge/Join-20230410-green) |
||||
<!--auto_detail_badge_end_fef74f2d7ea73fcc43ff78e05b1e7451--> |
||||
|
||||
rakshasa是一个使用Go语言编写的强大多级代理工具,专为实现**多级代理**,**内网穿透**而设计。它可以在节点群里面任意两个节点之间转发TCP请求和响应,同时支持**socks5代理**,**http代理**,并且可以**引入外部http、socks5代理池,自动切换请求IP**。 |
||||
|
||||
节点之间使用内置证书的TLS加密TCP通讯,再叠加一层自定义秘钥的AES加密,可以在所有Go支持的平台使用。可以在你所有的的Windows和Linux服务器上搭建节点并组成节点群网络。 |
||||
|
||||
节点分为普通节点(node)与控制节点(fullnode) |
||||
- 普通节点,无法控制其他节点进行代理、shell等操作 |
||||
- 控制节点,全功能节点 |
||||
|
||||
## 项目结构示例和截图 |
||||
[点击查看更多介绍](https://github.com/Mob2003/rakshasa/blob/main/readme/rakshasa%E9%A1%B9%E7%9B%AE%E8%AE%BE%E8%AE%A1.md) |
||||
|
||||
[win10+Proxifier实现内网穿透](https://github.com/Mob2003/rakshasa/blob/main/readme/rakshasa%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F--win10+Proxifier%E4%BD%BF%E7%94%A8%E6%A1%88%E4%BE%8B.md) |
||||
|
||||
## 版本迭代 |
||||
- **v0.1.0** 2023-03-28 |
||||
- 首次发布 |
||||
- **v0.2.0** 2023-04-02 |
||||
- 更改为fullnode版本,fullnode为全功能版本可以控制别人也能被控 |
||||
- 增加node版本,去掉私钥,无法发起代理等关键操作,适合被控 |
||||
- 增加lite版本,在上面版本的基础上,精简cli交互与http代理池,体积缩小2mb |
||||
- 优化节点连接逻辑,并且遍历网卡ip进行net.Dail,解决多网卡下,无法连接的问题 |
||||
- **v0.2.2** 2023-04-08 |
||||
- 增加http_proxy重连逻辑,节点掉线后重连http代理能够正常重连使用 |
||||
- 优化节点重连逻辑 |
||||
- 增加uuid选项,默认uuid使用网卡mac作为随机数种子,进行生成 |
||||
|
||||
## 编译与使用 |
||||
|
||||
生成新的证书,编译所有版本节点 |
||||
```shell |
||||
go run build.go -all |
||||
``` |
||||
|
||||
编译所有版本节点(不更新证书) |
||||
```shell |
||||
go run build.go -all -nocert |
||||
``` |
||||
|
||||
生成覆盖证书 |
||||
```shell |
||||
go run build.go -gencert |
||||
``` |
||||
|
||||
生成控制节点与普通节点 |
||||
```shell |
||||
go run build.go -fullnode |
||||
``` |
||||
|
||||
只生成普通节点 |
||||
```shell |
||||
go run build.go -node |
||||
``` |
||||
|
||||
证书保存在cert目录下,可以使用第三方工具生成,请使用RSA PKCS1-V1.5 |
||||
```shell |
||||
private.go --编译普通节点的时候要删除此文件 |
||||
private.pem --与public.pem对应的公钥私钥,普通节点不包含私钥 |
||||
public.pem |
||||
server.crt --tls通讯证书 |
||||
server.key --tls通讯私钥 |
||||
``` |
||||
## 版本区别 |
||||
|
||||
| | fullnode | node|fullnode_lite|node_lite| |
||||
| ---- | ---- |---- |---- |---- | |
||||
|连接其他节点 | √ |√ |√ |√ | |
||||
|启动本地socks5代理 | √ |√ |√ |√ | |
||||
|启动本地http代理 | √ |√ |√ |√ | |
||||
|启动多层代理 | √ |× |√ |× | |
||||
|远程shell| √ |× |√ |× | |
||||
|其他远程功能| √ |× |√ |× | |
||||
| 交互式CLI | √ |√ |× |× | |
||||
| check_proxy | √ |√ |× |× | |
||||
|
||||
简单来讲 |
||||
- fullnode 完全版,能控制别人,也能被控 |
||||
- node 能连接其他节点,但是不能对其他节点操控,适合作为被控端 |
||||
- lite版本,精简掉cli和net/http,与一些debug的代码 |
||||
|
||||
## 使用图示 |
||||
![image](https://user-images.githubusercontent.com/128351726/226882870-f4f3cbc0-61df-486c-afc0-511d87586402.png) |
||||
|
||||
|
||||
## 使用方法 |
||||
|
||||
|
||||
|
||||
### 启动一个带CLI节点 |
||||
不带任何参数即可启动: |
||||
```shell |
||||
d:\>rakshasa.exe |
||||
start on port: 8883 |
||||
rakshasa> |
||||
rakshasa>help |
||||
|
||||
Commands: |
||||
bind 进入bind功能 |
||||
clear clear the screen |
||||
config 配置管理 |
||||
connect 进入connect功能 |
||||
exit exit the program |
||||
help display help |
||||
httpproxy 进入httpProxy功能 |
||||
new 与一个或者多个节点连接,使用方法 new ip:端口 多个地址以,间隔 如1080 127.0.0.1:1081,127.0.0.1:1082 |
||||
ping ping 节点 |
||||
print 列出所有节点 |
||||
remoteshell 远程shell |
||||
remotesocks5 进入remotesocks5功能 |
||||
shellcode 执行shellcode |
||||
socks5 进入socks5功能 |
||||
|
||||
|
||||
rakshasa> |
||||
``` |
||||
请查阅[CLI使用说明](https://github.com/Mob2003/rakshasa/blob/main/readme/cli.md)了解详细信息 |
||||
|
||||
## 其他启动参数说明 |
||||
### -nocli |
||||
在无法后台执行的情况下,启动一个不带 CLI 的节点: |
||||
```shell |
||||
nohup /root/rakshasa -nocli > /root/rakshasa.log 2>&1 & |
||||
#Linux下配合nohup后台执行 |
||||
``` |
||||
|
||||
### -p 端口 |
||||
以指定端口启动: |
||||
```shell |
||||
rakshasa -p 8883 |
||||
``` |
||||
|
||||
### -d ip:port,ip:port... |
||||
连接下一层代理或更多层代理,多个地址以逗号隔开,生效在最后一个 ip:port: |
||||
```shell |
||||
rakshasa -d 192.168.1.1:8883,192.168.1.2:8883,192.168.1.3:8883 -socks5 1080 |
||||
#从本地1080端口启动一个socks5代理,流量通过三层转发ip最后在192.168.1.3请求目标数据 |
||||
``` |
||||
|
||||
### -socks5 用户名:密码@ip:端口 |
||||
本地开启SOCKS5代理穿透到远程节点,可以不带-d: |
||||
```shell |
||||
rakshasa -socks5 1080 |
||||
#不使用-d参数,则表示直接在本机启动一个socks5代理 |
||||
``` |
||||
|
||||
|
||||
|
||||
### -remotesocks5 端口 |
||||
远程开启SOCKS5代理流量出口到本地: |
||||
```shell |
||||
rakshasa -remotesocks5 1081 -d 192.168.1.2:1080,192.168.1.3:1080 |
||||
#方向从右往左(加上本机是3个节点),在192.168.1.3这台机器开启一个socks5端口1081,流量穿透到本地节点出去 |
||||
``` |
||||
|
||||
### -connect ip:port,remote_ip:remote_port |
||||
本地监听并转发到指定 IP 端口,使用场景为本机连接 teamserver,隐藏本机 IP: |
||||
```shell |
||||
rakshasa -connect 127.0.0.1:50050,192,168,1,2:50050 -d 192.168.1.3:1080,192.168.1.4:1080 |
||||
#本机cs连接127.0.0.1:50050实际上通过1.3,1.4节点后,再连接到192.168.1.2:50050 teamserver,teamserver看到你的ip是最后一个节点的ip |
||||
``` |
||||
|
||||
### -bind ip:port,remote_ip:remote_port |
||||
反向代理模式,必须配合-d使用: |
||||
```shell |
||||
rakshasa -bind 192.168.1.2:50050,0,0,0.0:50050 -d 192.168.1.3:1080,192.168.1.4:1080 |
||||
#与上面相反,在最右端节点监听端口50050,流量到本机节点后,最终发往192.168.1.2,最终上线ip为本机ip |
||||
``` |
||||
### -http_proxy 用户名:密码@ip:端口 |
||||
启动一个http代理,可以不使用-d,建议配合-http_proxy_pool使用代理池,自动切换代理ip: |
||||
```shell |
||||
rakshasa -http_proxy 8080 -http_proxy_pool out.txt |
||||
``` |
||||
|
||||
### -password 密钥 |
||||
各节点除了证书校验之外,还额外支持密钥连接,建议使用并定期更换密钥,以避免二进制泄露后被别人连上 |
||||
```shell |
||||
rakshasa -password 123456 |
||||
``` |
||||
|
||||
|
||||
### -f yaml文件 [详细说明](https://github.com/Mob2003/rakshasa/blob/main/readme/config.md) |
||||
指定配置文件启动。 |
||||
|
||||
### -help |
||||
更多启动参数使用帮助 |
||||
|
||||
<!--auto_detail_active_begin_e1c6fb434b6f0baf6912c7a1934f772b--> |
||||
## 项目相关 |
||||
|
||||
|
||||
## 最近更新 |
||||
|
||||
<!--auto_detail_active_end_f9cf7911015e9913b7e691a7a5878527--> |
Loading…
Reference in new issue