吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 56388|回复: 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] 纯文本查看 复制代码
<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] 纯文本查看 复制代码
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, 2024-11-15 14:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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