本文正在参加「金石方案」

前语

  1. 无法连接ssh的处理方案
  2. Reveal的装置、装备及运用
  3. Passionfruit 的完成原理
  4. Mac上Nodejs环境搭建

I 运用yalu102 激活了之后,无法连接ssh的处理方案

yalu102此次越狱东西默认装置了 SSH.采用了 Dropbear 取代 Openssh。#/usr/local/bin/dropbear

-部署装置运用yalu102时,修正dropbear.plist的信息: ProgramArguments的127.0.0.1:22 直接改为22。

假如部署完成,直接修正沙盒的信息的话,记住重启设备。

1.1 获取直接修正对应的装备信息

  • ps -e |grep yalu*
iPhone:~ root# ps -e |grep yalu*
 1174 ??         0:00.80 /var/containers/Bundle/Application/B831448D-BCD0-4F29-BDA6-9FC03903D30C/yalu102.app/yalu102
  • plutil plist 内容
iPhone:/var/containers/Bundle/Application/B831448D-BCD0-4F29-BDA6-9FC03903D30C/yalu102.app root# plutil dropbear.plist
{
   KeepAlive = 1;
   Label = ShaiHulud;
   Program = "/usr/local/bin/dropbear";
   ProgramArguments =     (
       "/usr/local/bin/dropbear",
       "-F",
       "-R",
       "-p",
       22
   );
   RunAtLoad = 1;
}
  • dropbear 参数
 iPhone:/var/containers/Bundle/Application/B831448D-BCD0-4F29-BDA6-9FC03903D30C/yalu102.app root# ps -e |grep dropbear
  228 ??         0:00.05 /usr/local/bin/dropbear -F -R -p 22

1.2 运用wget 装置scp( 处理:sh: scp: command not found)

#两台服务器都要装置scp才能传文件
#wget + 空格 + 要下载文件的url路径
# cydia里边装置wget
#  装置scp,默认装置在当时目录
wget mila432.com/scp
ldid -S scp
# chmod +x scp
chmod 777 scp
mv scp /usr/bin/scp
# 或者运用curl: curl -O mila432.com/scp ./scp
  • dyld: Library not loaded: /usr/lib/libssl.0.9.8.dylib 重新装置openssl
  • 浏览器下载scp
 find . -name "scp"

II Reveal的装置、装备及运用

目前自己常常运用的是AFlexLoader

2.1. Reveal Loader装置


首先咱们打款越狱设备的Cydia,然后在搜索中输入Reveal Loader,而且进行装置即可,下方是装置后的作用。这一步比较简单,装置后重启SpringBoard即可。

iPhone:~ root# cd /Library/RHRevealLoader
-sh: cd: /Library/RHRevealLoader: No such file or directory

进行第二步骤,导入libReveal.dylib

2.2.导入libReveal.dylib


Mac上的Reveal自带了两个库,一个是libReveal.dylib,一个是Reveal.framework。 在未越狱的设备上运用的是后者,本文运用的是前者。

这两个文件位于Reveal中的iOS Library中。Reveal菜单->Help->Show Reveal Library in Finder ->iOS Library。经过上述目录就能够找到咱们需要的文件。

 /Users/devzkn/Downloads/kevin-software/ios-Reverse_Engineering/Reveal/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib

mkdir

devzkndeMacBook-Pro:python-client devzkn$ ssh iphone
iPhone:~ root# mkdir /Library/RHRevealLoader
iPhone:~ root# cd /Library/RHRevealLoader
iPhone:/Library/RHRevealLoader root

scp

devzkndeMacBook-Pro:python-client devzkn$ scp  /Users/devzkn/Downloads/kevin-software/ios-Reverse_Engineering/Reveal/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib iphone:/Library/RHRevealLoader/
iPhone:~ root# ls -l /Library/RHRevealLoader/libReveal.dylib
-rwxr-xr-x 1 root admin 3850232 Oct 19 16:17 /Library/RHRevealLoader/libReveal.dylib

2.3、Reveal的运用


  • 挑选Reveal的App

在设置中找到Reveal的装备项,在该装备项中咱们能够去挑选要Reveal的App, 当然对于越狱手机,手机上装置的一切App都能够Reveal。当然也包括从AppStore下载的,也包括iOS体系自带的

  • 检查app的UI层级

Mac上Reveal检查设备上App的UI层级时是不需要运用USB进行连接的,但要确保你的iOS设备与你的Mac在同一个局域网内

  • 注意事项

记住打开对应的app,确保你检查的app 处于运行状况

III Passionfruit 的完成原理

  • 我在运用Passionfruit 的时候,装置步骤碰到的问题是fatal error: ‘frida-core.h’ file not found,具体的请看Q&A。

  • 安全审计的东西 我觉得iNalyzer 已经过期了,引荐这款Passionfruit;

  • Passionfruit 经过frida注入代码到方针应用完成了个“动态剖析iOS应用”的图形界面。

3.1 完成原理

Passionfruit 经过 frida 注入代码到方针应用完成功用,再经过 node.js 服务端音讯署理与浏览器通信,用户经过拜访网页即可对 App 完成惯例的检测使命。

iOS小技能:1、yalu102 激活了之后,无法连接ssh的解决方案 2、Reveal的基本使用3、Passionfruit 的实现原理

3.2 装置

3.2.1 装置前预备

  • brew install libimobiledevice
devzkndeMacBook-Pro:passionfruit devzkn$ brew install libimobiledevice
  • brew install yarn
devzkndeMacBook-Pro:passionfruit devzkn$  brew install yarn
  • install npm
brew install npm

3.2.2 运行 npm install 根据 package.json 文件装置依靠。

  • save frida then $ npm install
devzkndeMacBook-Pro:passionfruit devzkn$ npm install
> Passionfruit@0.0.3 postinstall /Users/devzkn/code/demo/passionfruit
> cd gui && (yarn || npm install)
yarn install v1.3.2
[1/4]   Resolving packages...
[2/4]   Fetching packages...
[3/4]   Linking dependencies...
[4/4]   Building fresh packages...
✨  Done in 231.08s.
up to date in 235.627s
  • npm run build
devzkndeMacBook-Pro:passionfruit devzkn$ npm run build
> Passionfruit@0.0.3 build /Users/devzkn/code/demo/passionfruit
> frida-compile agent -o _agent.js && cd gui && (yarn run build || npm run build)
yarn run v1.3.2
  • npm start
devzkndeMacBook-Pro:passionfruit devzkn$ npm start
> Passionfruit@0.0.3 start /Users/devzkn/code/demo/passionfruit
> cross-env NODE_ENV=production node .
listening on http://localhost:31337

3.3 Q&A

  • prebuild-install http 404 github.com/frida/frida…
devzkndeMacBook-Pro:passionfruit devzkn$ npm install --save frida@latest
> frida@10.6.28 install /Users/devzkn/code/demo/passionfruit/node_modules/frida
> prebuild-install || node-gyp rebuild
prebuild-install info begin Prebuild-install version 2.3.0
prebuild-install info looking for local prebuild @ prebuilds/frida-v10.6.28-node-v59-darwin-x64.tar.gz
prebuild-install info looking for cached prebuild @ /Users/devzkn/.npm/_prebuilds/https-github.com-frida-frida-releases-download-10.6.28-frida-v10.6.28-node-v59-darwin-x64.tar.gz
prebuild-install http request GET https://github.com/frida/frida/releases/download/10.6.28/frida-v10.6.28-node-v59-darwin-x64.tar.gz
prebuild-install http 200 https://github.com/frida/frida/releases/download/10.6.28/frida-v10.6.28-node-v59-darwin-x64.tar.gz
prebuild-install info downloading to @ /Users/devzkn/.npm/_prebuilds/https-github.com-frida-frida-releases-download-10.6.28-frida-v10.6.28-node-v59-darwin-x64.tar.gz.47369-6d6afc3ef5581.tmp
prebuild-install info renaming to @ /Users/devzkn/.npm/_prebuilds/https-github.com-frida-frida-releases-download-10.6.28-frida-v10.6.28-node-v59-darwin-x64.tar.gz
prebuild-install info unpacking @ /Users/devzkn/.npm/_prebuilds/https-github.com-frida-frida-releases-download-10.6.28-frida-v10.6.28-node-v59-darwin-x64.tar.gz
prebuild-install info unpack resolved to /Users/devzkn/code/demo/passionfruit/node_modules/frida/build/Release/frida_binding.node
prebuild-install info unpack required /Users/devzkn/code/demo/passionfruit/node_modules/frida/build/Release/frida_binding.node successfully
prebuild-install info install Successfully installed prebuilt binary!
+ frida@10.6.28
added 32 packages in 18.574s
  • Unable to launch iOS app: timeout

发动应用程序失利之后,装置就重启了。这个问题 有点相似Failed to spawn: unable to launch iOS app: timeout

临时处理方法: 手动发动app ,仍是能够正常剖析的

更多具体的剖析请看这里: frida Failed to spawn 处理方案

IV Mac上Nodejs环境搭建

  1. 装置包装置:nodejs下载网址 nodejs.cn/download/
  2. 二进制装置:
brew install nodejs
brew install npm

see also

修正汇编的方法: 选中行,挑选菜单栏的Modify > Assemble Instruction…,将jne修正成je,然后点击Assemble and Go Next。

大众号:iOS逆向