吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 56739|回复: 196
收起左侧

[移动样本分析] 记一银行木马逆向分析

    [复制链接]
菜鸡葫芦娃 发表于 2017-3-24 21:06
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 Hoimk 于 2017-4-4 12:53 编辑

报告名称:记一银行木马逆向分析
作者:Hoimk
报告更新日期:2017-3
样本发现日期:2017-2-11
样本类型:恶意拦截钓鱼
样本文件
可能受到威胁的系统:Android


N天前别人发给我让我分析的..刚找了半天样本没找到,好像被我删了~so,没有down


踩点
首先我拿到这个包的时候名字是ok_killer…也就是说,已经被重打包过了,可能被修改或删减了部分功能
1. 先以压缩包打开
        根目录:


         image1.png

        嗯…看到各种mail服务的文件,典型的邮箱收信。

        Assets:
        
         image2.png
        
        有两个文件,目测是动态加载,暂时不管。
        Lib下:

         image3.png

        有一个so,只有arm构架的…

2.Apktool d反编译,先打开AndroidManifest.xml看看
[XML] 纯文本查看 复制代码
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
<uses-permission android:name="android.permission.VIBRATE"/>
<…一系列监听权限>
 <application
 android:allowBackup="true"
 android:debuggable="true"
 android:icon="@drawable/icon1"
 android:label="@string/app_name"
 android:name="com.exp.wr.AaApp">
        <activity
            android:excludeFromRecents="true"
            android:label="@string/app_name"
            android:name="com.qwe.MainActi">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity
            android:excludeFromRecents="true"
            android:name="com.qwe.Bridg"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
            </intent-filter>
        </activity>
        <activity
             android:name="com.qwe.Act"
             android:screenOrientation="portrait" android:windowSoftInputMode="stateAlwaysVisible"/>
        <activity android:name="com.qwe.C_LLL" android:screenOrientation="portrait"/>
        <activity
             android:name="com.qwe.SB_CCC"
             android:screenOrientation="portrait"
             android:windowSoftInputMode="stateAlwaysVisible"/>
        <activity
             android:configChanges="keyboardHidden|navigation|orientation"
             android:exported="true"
             android:name="com.qwe.Secu"
             android:screenOrientation="portrait"/>
        <activity
             android:configChanges="keyboardHidden|navigation|orientation"
             android:name="com.qwe.TakePhoto"
             android:screenOrientation="portrait"/>
        <activity
             android:name="com.qwe.Fi"
             android:screenOrientation="portrait"
             android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
        <receiver
             android:description="@string/app_name"
             android:label="@string/app_name"
             android:name="com.a.MyAdminReceiver"
             android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data android:name="android.app.device_admin" android:resource="@xml/god"/>
            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
            </intent-filter>
        </receiver>
        <receiver android:enabled="true" android:exported="true" android:name="com.a.Boo">
            <intent-filter android:priority="2147483647">
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <action android:name="android.intent.action.ACTION_SHUTDOWN"/>
                <action android:name="android.intent.action.USER_PRESENT"/>
            </intent-filter>
        </receiver>
        <receiver android:name="com.a.A113">
            <intent-filter android:priority="2147483647">
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <…一系列监听事件>
                <category android:name="android.intent.category.HOME"/>
            </intent-filter>
        </receiver>
        <service android:enabled="true" android:name="com.qwe.service.AutBan" android:persistent="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </service>
        <service android:enabled="true" android:name="com.qwe.service.SM" android:persistent="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </service>
        <service android:enabled="true" android:name="com.qwe.service.Inte" android:persistent="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </service>
        <service android:enabled="true" android:name="com.qwe.service.InLit" android:persistent="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </service>
        <service android:enabled="true" android:exported="true" android:name="com.qwe.service.UploadServ" android:persistent="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </service>
        <service android:enabled="true" android:name="com.qwe.service.Heart" android:persistent="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </service>
    </application>
</manifest>

可以看到注册了一个Application类,和一系列自启动的服务,其中有一个服务监听了启用设备管理器的事件。


分析
既然注册了Application,那自然是从Application类入口,所以先看com.exp.wr.AaApp
onCreate里没有内容,attachBaseContext里调用了loadNsClass方法:

image4.png


看这方法名字就知道是动态加载啦,全程调用反射的方法来复制Assets下的ac文件,然后将其解密,加载,最后删除。
解密方法:


image5.png


嗯..跑一下,得到这个:


image6.png


baksmali d classes.dex,得到smali代码,合并到apktools反编译出来的smali文件夹里,smali a smali 重打成Dex。
现在类就全了:



image7.png


然后再说一下那个Util.hasMore方法,这是个native方法,也就是那个libutil_jni.so里的方法。
没有类对应函数名,.init也没有内容,看JNI_OnLoad:

image8.png

image9.png

image10.png

image11.png

嗯…并没有什么卵用。OK,接下来就是Launcher Activity,
MainActi OnCreate:

image12.png

233333,第一眼看到了邮箱账号密码,就是….

image13.png

那个网页也打不开,可能是只允许某个国家的IP访问~
行,先看看那个getBankInfo,他的作用是查找手机里安装了哪些银行APP:

image14.png

[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
public static String[] BK_PACK_LIST = new String[]{
"com.epost.psf.sdsi",
"com.knb.psb",
"com.cu.sb",
"com.shinhan.sbanking",
"nh.smart",
"com.kbstar.kbbank",
"com.areo.bs",
"com.smg.spbs",
"com.ibk.neobanking",
"com.keb.android.mbank",
"com.hanabank.ebk.channel.android.hananbank"};


嗯~ 这些都是韩国的银行APP~
然后他启动了好几个服务,这个稍后再逐个分析,来看看他怎么激活任务管理器的,这个蛮有意思,
申请激活任务管理器:

image15.png

注意了,这个createSmallWindow方法,就是在屏幕上创建一个悬浮窗,而这个悬浮窗是长这样的~

image16.png

有没有懂?左边的按钮是取消,右边是确定,对应着被遮挡住的激活窗口,确定下面就是激活,so,点了确定就=点了激活~激活之后系统应该是发出广播了,吓得我急忙打开了com.a.MyAdminReceiver类,然而这竟然是个空类..WTF..不过之后执行了一个隐藏桌面图标的操作

image17.png

没事,我们还有好多个服务呢,一个个看
  • Inte:
        
         image18.png

         image19.png

        接到某个电话立马挂掉+删除记录。
  • AutBan:
         image20.png

        判断现在最顶层的Activity是否为属于银行的APP
        JudgeAV是判断手机里是否安装了韩国杀软 安博士

         image21.png

        卸载安博士..

        . image22.png

        利用Wake_Lock机制使服务常驻内存,
        还有一个线程,也是判断安装列表,这四个都是1秒循环执行。我们看判断到activity后他的劫持动作,即com.qwe.Bridg
        先显示出来一个这个:
         image23.png
        …假装是个杀毒插件吗,最后跳到了这个界面:
        
         image24.png

         image25.png
        嗯,你懂的...
        等你填完信息以后,启动UploadServ这个服务,
        还把信息打包成zip~


         image26.png

        然后POST上传:
         image27.png         
        嗯..也就是上边那个网址+ /servlet/UploadDoc/

         image28.png         
        最后发送邮件
  • SM(Send Message 能不能换个正常点缩写):

         image29.png
        
        嗯…从/appHome/servlet/GetMessage请求群发短信内容,然后遍历联系人列表群发,这个操作是45分钟一次
  • Heart:

         image30.png
        
        发送银行信息 + 设备信息至Web端,此操作只执行一次。

         image31.png

        重发资料至邮件

         image32.png

        发送..心跳包。。。。

         image33.png

        上传通讯录

这些服务都有一个newWakeLock。

整理
  • 首先,使用一个外壳来动态加载核心代码,且使用反射技术来躲避安全软件的检测。
  • 随后,启动相关服务并申请激活设备管理器,并显示一个是否更新的悬浮窗来遮挡窗口,欺骗点击激活按钮
  • 隐藏桌面图标
  • 利用Wake_Lock机制,使服务常驻内存
  • 检测杀软(安博士),并实时卸载杀软(阻止安装)
  • 群发钓鱼短信
  • 实时检测当前Activity,劫持银行APP
  • 使用Web服务端来进行动态修改群发短信内容及接受数据
  • 从心跳包上看,Web服务端可能有一套完善的系统


最后..有没有大佬招实习小弟啊...

免费评分

参与人数 97吾爱币 +98 热心值 +89 收起 理由
吾爱妹子涛 + 1 + 1 我很赞同!
dong_xx + 1 + 1 谢谢@Thanks!
坏灰灰 + 1 + 1 谢谢@Thanks!
道隐居士 + 1 我很赞同!
FreeKiller + 2 + 2 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Tar_Rasha + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lker + 1 + 1 看不懂,但是感觉好6b
风予 + 1 + 1 用心讨论,共获提升!
【健谈】 + 1 + 1 谢谢@Thanks!
404626007 + 1 + 1 好像很厉害啊,用心编写的一个程序
onexiao + 1 + 1 我很赞同!
Ravey + 1 + 1 谢谢@Thanks!
童心幽灵 + 1 + 1 我很赞同!
圆圆哒包子 + 1 + 1 用心讨论,共获提升!
试试去爱你 + 1 + 1 大兄弟!忍不住上号给你评分!好东西!学习了!我这还要人
spy000 + 1 + 1 我很赞同!
你好牛逼 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
小义ber + 1 + 1 鼓励转贴优秀软件安全工具和文档!
猫に小判 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
very + 1 + 1 谢谢@Thanks!
daydayupup + 1 + 1 谢谢@Thanks!
xyuetao + 1 + 1 谢谢@Thanks!
liphily + 1 + 1 送鲜花不小心点到了扔鸡蛋怎么办?
Intro + 1 已答复!
78848d676612 + 1 + 1 谢谢@Thanks!
深眸中的花火 + 1 + 1 我很赞同!
5iprox + 1 + 1 我很赞同!
gy810 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
i5suci + 1 用心讨论,共获提升!
4inlove + 1 我很赞同!
CROW_df + 1 + 1 谢谢@Thanks!
藏锋化羽 + 1 + 1 热心回复!
hsia_y + 1 + 1 谢谢@Thanks!
Dormleader + 1 + 1 我很赞同!
wahejiahua + 1 + 1 谢谢@Thanks!
毁梦神、宇少 + 1 + 1 谢谢@Thanks!
huangsilver + 1 + 1 用心讨论,共获提升!
01234 + 1 + 1 用心讨论,共获提升!
yunzl + 1 成熟产业链
lijx + 1 + 1 谢谢@Thanks!
your52pojie + 1 我很赞同!
文可う润心 + 1 + 1 谢谢@Thanks!
dongxie + 1 + 1 我很赞同!
liu_niu + 1 用心讨论,共获提升!
kicebeauty + 1 + 1 用心讨论,共获提升!
江水不凡 + 1 用心讨论,共获提升!
adianadian + 1 我很赞同!
默小白 + 1 + 1 我很赞同!
dreamer2020 + 1 用心讨论,共获提升!
我爱吃包子 + 1 + 1 用心讨论,共获提升!
menghuan_ling + 1 谢谢@Thanks!
opda007 + 1 + 1 热心回复!
莊澤標 + 1 + 1 热心回复!
flylenn + 1 + 1 &amp;lt;font&amp;gt;&amp;lt;font class=&amp;quot;&amp;quot;&amp;gt;谢谢@谢谢!&amp;lt;/font&amp;gt;&amp;lt;/fon
dabaidaociyiyou + 1 + 1 谢谢@Thanks!
鲨鱼小白 + 1 + 1 我很赞同!
best天空 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
gxxxlxy + 1 + 1 谢谢@Thanks!
Janssean + 1 + 1 6666666666666666666666
kiseyzed + 2 + 1 用心讨论,共获提升!
axuser + 1 + 1 谢谢@Thanks!
王亦棋 + 1 + 1 谢谢@Thanks!
hundred + 1 + 1 热心回复!
Three_fish + 1 谢谢@Thanks!
MagicnoBob + 1 + 1 谢谢@Thanks!
a2300355a + 1 + 1 我很赞同!
绝版ren物 + 2 + 1 看不懂,
52_poj + 1 + 1 我很赞同!
海底总动员 + 1 + 1 我很赞同!
soyiC + 1 + 1 用心讨论,共获提升!
很快再相见123 + 1 + 1 我很赞同!
BayBear + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
vale + 1 + 1 我很赞同!
聚惠网络 + 1 + 1 热心回复!
海盗小K + 1 + 1 好久不见,当年的葫芦娃已然成为了论坛大牛!~
ayoma + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
独行风云 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
坡婆子 + 1 + 1 我很赞同!
鱼是一只我 + 1 + 1 我很赞同!
mtkppqq + 2 + 1 感谢您的宝贵建议,我们会努力争取做得更好!
x51zqq + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
飞鸽传书 + 1 + 1 用心讨论,共获提升!
枫恋蓝点 + 2 + 1 我很赞同!
老虎爱吃素 + 2 + 1 热心回复!
767190 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
风火流云云 + 1 谢谢@Thanks!
fringes + 1 + 1 我很赞同!
荆锐乄枫少 + 1 + 1 谢谢@Thanks!
观世正宗 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
zhangbaida + 3 + 1 鼓励转贴优秀软件安全工具和文档!
Levi-7 + 2 + 1 厉害了,,,
123-木头人 + 1 + 1 用心讨论,共获提升!
l281180570 + 1 + 1 谢谢@Thanks!
kllay + 1 我很赞同!
夏雨微凉 + 2 + 2 鼓励转贴优秀软件安全工具和文档!
爱吃肉的小 + 1 我很赞同!
xzhe + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

dyj 发表于 2017-3-25 00:18
感觉很牛逼的样子!
A00 发表于 2017-3-24 21:28
l281180570 发表于 2017-3-24 21:31
恶梦玩家 发表于 2017-3-24 22:16
新手,学习学习
qgz0007 发表于 2017-3-24 22:20
一堆的韩文,这个是国外的玩意吧
jack300 发表于 2017-3-24 22:26
高手  太牛了
orient2012 发表于 2017-3-25 00:08
我很赞同!
muyubaby 发表于 2017-3-25 00:22
最后发送邮件
爱生活爱晴天 发表于 2017-3-25 03:34
太厉害了,赞
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-3-30 18:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表