记一次对某恶意App的逆向
记一次对某恶意App的逆向

前言

之前看安全客的时候,发现有大佬逆向了一个流氓app,觉得反看一手app很有意思,趁着下午空闲,自己也试着研究了一下如何逆向Andriod的App,好不容易挑了个流氓软件,挑去过程请省略。。。

正文

首先介绍一下下面要用到的三款工具

  • apktool作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看
  • dex2jar作用:将apk反编译成java源码(classes.dex转化成jar文件)
  • jd-gui : 作用:查看APK中classes.dex转化成出的jar文件,即源码文件

如何使用?

apktool.bat d -f  test.apk test

命令中test.apk指的是要反编译的APK文件全名,test为反编译后资源文件存放的目录名称,即为apktool.bat d -f [apk文件 ] [输出文件夹])

在这里插入图片描述

这是得到的整个资源文件。

把apk文件重命名为zip文件后,再提取出来,能够得到classes.dex文件,如图:

在这里插入图片描述

接下里就是使用dex2jar将其转化为jar文件,用法如下:

在这里插入图片描述

这里参数直接是classes.dex文件即可,这样直接得到了jar文件

最后用jd-gui反编译.jar文件就能看到其源码:

在这里插入图片描述

分析

接下来就是对这个流氓软件进行分析了:

先从主类MainActivity入手:

在这里插入图片描述

服务器地址是少不了的,要不然怎么发数据给服务器呢?知道了这个服务器地址,但是挂了。。无语,反查了一波是国内杭州的服务器,并且还有注册公司,端口开了3306和ssh,这里就不爆破端口了,还有宝塔

在这里插入图片描述

在这里插入图片描述

既然是流氓软件,那就看实现了哪些功能,不过有一说一,这个实现的功能比起其他流氓软件确实少很多。。。

tools这个package下看到了以下功能,看了一看,最重要的功能就是获取手机通讯录,然后将手机通讯录的信息发送给指定服务器,其他什么获取地理位置啥的api我都没找到。。。

在这里插入图片描述

还有就是获取文件安装的绝对路径:

在这里插入图片描述

Mainactivity中我们可以看到这一段:

在这里插入图片描述

也就是说,设置了webview使用了函数setAllowFileAccess(),通过这个函数使其可以使用file协议,那么就可以通过file协议来读取任意文件,可以说是十分危险,如果此时将Load_URL设置为file:///etc/hosts是可以读取文件的,不过这里加载了如上的地址。

并且我们在这里可以看到:

在这里插入图片描述

该文件是使用javascript代码编写而成。在该文件中实现了获取用户隐私数据主要代码调用。通过@ReactMethod方式在js文件中调用android原生API代码。实现js与java的交互,这有助于避免被杀毒软件查杀,这点也可以在上图WebView控件之WebSettings中setJavaScriptEnabled(True)得到印证。并且当打开程序时,程序会自动跳转到系统管理应用设置页面:

private void openSetting() {
    Intent intent = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS");
    intent.setData(Uri.fromParts("package", this.main.getPackageName(), null));
    this.main.startActivity(intent);
  }

  @JavascriptInterface
  public boolean checkContactPermission() { return (ContextCompat.checkSelfPermission(this.main, "android.permission.READ_CONTACTS") == 0); }

  @JavascriptInterface
  public String getContactList() {
    if (ContextCompat.checkSelfPermission(this.main, "android.permission.READ_CONTACTS") != 0) {
      ActivityCompat.requestPermissions(this.main, new String[] { "android.permission.READ_CONTACTS" }, 1);
      return "";
    } 
    ArrayList arrayList = rapid.getBuild().getAllContacts(this.main);
    return (new Gson()).toJson(arrayList);
  }

并且判断是否具有获取通讯录的权限,如果这个时候你手误点允许的话,那么恭喜你,你的通讯录成功被发到了对方服务器上了,最后放一张服务器的后台登录页面,看了下是shiro的框架,指不定反序列化的payload能打通哦~

在这里插入图片描述

写到这里,就没有继续进行WEB端渗透了,只是对该恶意App进行一个大致的分析

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇