介绍一下搭建中需要用到的nps服务器
nps分为服务器端和客户端,针对不同的架构有区分,分别下载不同的压缩包部署即可。
实验中我使用的是云服务器和模拟器,所以选择了386的版本
在服务器端,启动之前确保服务器的 80,443,8080,8024端口都没有被占用,如果启动失败,可以查看在/var/log/nps.log中的日志找出问题出在哪里并且解决。云服务器还要记得将这些端口放进安全组。
启动之后,直接访问服务器的8080端口,就可以进入web管理界面, 默认的账号密码为admin,123,生产环境中一定要记得更改。
登录后,进入客户端管理界面,
点击新增,(图中是我已经配置好的三台手机模拟器)
简单的添加一个备注
点击左上角的+号就可以看到在客户端运行的命令。
模拟器端,需要启动wifiadb,查看该手机模拟器的内网端口
服务端还需要最后一步,新建隧道,服务端端口可以随便填没有被占用的端口,
目标的ip端口需要填写模拟器所在的内网ip,和frida监听的端口。知道这个内网ip后,关闭wifiadb后好像也没影响,在模拟器上是这样,手机没试过,但估计必须要打开吧!
这样一个最重要的公网访问frida-server的部分就完成了,要想搭建集群,只要多添加几个手机客户端就可以了。
但是这种frida-server集群的方法不是很方便,每个手机客户端都要开两个命令行窗口,但是应该可以做一个py脚本批量运行命令,要不然一个一个的启动实在太过麻烦。我三台模拟器就开了6个窗口。还有多台设备管理的问题,需要在python中将每台设备主动调用函数的次数做到限制,使用类似负载均衡中用到的方法?(轮询?随机?大佬做过的可以讲讲,谢谢)并且对外做成一个web服务,这样别人不用管内部具体实现,直接调用接口即可。
nps地址 https://github.com/ehang-io/nps
解压
tar zxvf linux_386_server.tar.gz
安装
sudo .
/
nps install
启动
sudo nps start
解压
tar zxvf linux_386_server.tar.gz
安装
sudo .
/
nps install
启动
sudo nps start
启动frida,
adb
-
s emulator
-
5554
shell
'./data/local/tmp/fs -l 0.0.0.0:1111'
启动nps客户端
adb
-
s emulator
-
5554
shell
'./data/local/tmp/npc -server=62.234.132.155:8024 -vkey=fqclv2e4kqv4xf6f -type=tcp'
启动frida,
adb
-
s emulator
-
5554
shell
'./data/local/tmp/fs -l 0.0.0.0:1111'
启动nps客户端
adb
-
s emulator
-
5554
shell
'./data/local/tmp/npc -server=62.234.132.155:8024 -vkey=fqclv2e4kqv4xf6f -type=tcp'
这段代码的目的就是,挨个启动手机中的设置,也可以自己再使用frida
-
rpc调用主动调用app中的函数,只要hook好,什么都跑不掉^_^,
device_list
=
[
"服务器ip:1111"
,
"服务器ip:2222"
,
"服务器ip:3333"
]
for
device
in
device_list:
time.sleep(
2
)
device
=
frida.get_device_manager().add_remote_device(device)
print
(device.get_frontmost_application())
pid
=
device.spawn(
"com.android.settings"
)
device.resume(pid)
print
(pid)
time.sleep(
1
)
device.attach(pid)
session
=
device.attach(pid)
with
open
(
"demo.js"
) as f:
script
=
session.create_script(f.read())
script.load()
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)