背景
近期,一批伪装成flashlight、vides和game的应用,发布在google play官方应用商店。经钱盾反诈实验室研究发现,该批恶意应用属于新型BankBot。Bankbot家族算得上是银行劫持类病毒鼻祖,在今年年初曾爆发,之前主要针对欧洲国家,可劫持50多家银行应用,而新发酵的BankBot已将攻击目标扩散到全球,可劫持银行增加到145家。
那么新型BankBot是怎么再次入侵用户手机?
能上架应用商店和入侵用户手机,BankBot使用了AVPass技术,包括针对静态分析和动态沙盒的逃逸,这样成功绕过大多数杀毒引擎。可信应用商店+绕过杀毒引擎,这样病毒自然能轻松入侵用户手机。本文接下来的内容将解析BankBot是如何规避杀毒引擎,病毒劫持钓鱼过程可参考《警惕一大波银行类木马正在靠近,新型BankBot木马解析》。
AVPass分析
1、使用成熟的AVPass技术,可绕过反病毒检测系统
病毒AvPass工作流程图如下:
Binary Obfuscation
混淆自身特征,包括类名、函数名、字符串加密、反射调用,并将待劫持应用包名sha1编码,随后使用加固技术,将恶意dex打包加密。处理后的app如下图:
2、对抗动态沙盒
通过自检测运行环境和增加用户行为交互对抗沙盒,新型BankBot只有同时满足以下4条才会触发恶意行为:
运行在Android5.0以及以上设备
运行设备非俄罗斯、巴西、乌克兰用户
检测运行环境,若非真机环境将不会触发恶意行为
用户行为交互,点击按钮
下图运行设备检测
3、FCM远控,获取短信验证码
目前,各大银行实施双因素认证即在支付过程中进行身份认证和基于手机动态密码的验证。BankBot在通过钓鱼拿到用户银行身份信息后,还差动态短信,之前BankBot直接使用短信劫持,但这样杀软可通过静态或动态检测出恶意行为。新型BankBot通过集成谷歌提供的Firebase Cloud Messaging(简称FCM)框架,利用FCM向指定设备发送指令数据,从而获取受害者短信验证码,也就是控制端在成功钓鱼后,通过FCM下发获取短信的指令,病毒读取最新短信,通过网络上传至控制端。下图整个攻击流程。
FCM下发的指令数据还包括:更新C&C地址、弹伪造的通知栏、界面劫持数据,其中弹伪造的通知栏和界面劫持都是BankBot的钓鱼手段。下图下发的指令数据。
攻击者一旦成功截获受害者银行账号、密码和短信动态验证码,将绕过银行双因素认证,这样受害者们不仅仅构造成了一个可以被攻击者控制的移动僵尸网络,更成了攻击者的天然提款机。
安全建议
1、建议用户安装钱盾等手机安全软件,定期进行病毒扫描。
2、切勿点击任何陌生链接,尤其是短信、QQ、微信等聊天工具中不熟识的“朋友”发来的链接。
------------------------------
* 作者:钱盾反诈实验室,更多安全类热点信息和知识分享,请关注阿里聚安全的官方博客
什么是DNS劫持?
DNS劫持就是通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。DNS劫持通过篡改DNS服务器上的数据返回给用户一个错误的查询结果来实现的。
DNS劫持症状:在某些地区的用户在成功连接宽带后,首次打开任何页面都指向ISP提供的“电信互联星空”、“网通黄页广告”等内容页面。还有就是曾经出现过用户访问Google域名的时候出现了百度的网站。这些都属于DNS劫持。
再说简单点,当你输入google.com这个网址的时候,你看到的网站却是百度的首页。
什么是HTTP劫持?
在用户的客户端与其要访问的服务器经过网络协议协调后,二者之间建立了一条专用的数据通道,用户端程序在系统中开放指定网络端口用于接收数据报文,服务器端将全部数据按指定网络协议规则进行分解打包,形成连续数据报文。
用户端接收到全部报文后,按照协议标准来解包组合获得完整的网络数据。其中传输过程中的每一个数据包都有特定的标签,表示其来源、携带的数据属性以及要到何处,所有的数据包经过网络路径中ISP的路由器传输接力后,最终到达目的地,也就是客户端。
HTTP劫持是在使用者与其目的网络服务所建立的专用数据通道中,监视特定数据信息,提示当满足设定的条件时,就会在正常的数据流中插入精心设计的网络数据报文,目的是让用户端程序解释“错误”的数据,并以弹出新窗口的形式在使用者界面展示宣传性广告或者直接显示某网站的内容。
如何判定是DNS劫持还是HTTP劫持?
从个人遭受DNS和HTTP劫持情况来看,DNS劫持多倾向展示广告(网页出现错误后跳转某些网页,如带有运营商名号的114,189等网页),恶意插入产品的推广,如针对特定设备的推广,apple设备的app推广,某些开发者利用了apple开发者协议这个口子进行的恶意app推广。
DNS劫持倾向于持续性,访问被劫持的网站时,会不停的出现其恶意广告。
HTTP劫持,这种劫持也是最为麻烦,其常见的现象为针对大流量网站的加小尾巴行为,如百度,hao123导航,360导航,百度知道,各大电商网站(淘宝,天猫,当当等)
HTTP的劫持出现的频率多变,针对不同的ip也会不同(断网之后再连接,也许劫持就暂时消失),一定程度会造成错误的假象,用户可能会忽视该问题,由于其劫持过程非常快,只是经过某个IP后就快速的跳转,用户如果不注意地址栏的变化,根本不会注意到该问题的出现。
总结一下,DNS劫持有这三种情况:
1.错误域名解析到纠错导航页面,导航页面存在广告。判断方法:访问的域名是错误的,而且跳转的导航页面也是官方的,如电信的114,联通移网域名纠错导航页面。
2.错误域名解析到非正常页面,对错误的域名解析到导航页的基础上,有一定几率解析到一些恶意站点,这些恶意站点通过判断你访问的目标HOST、URI、 referrer等来确定是否跳转广告页面,这种情况就有可能导致跳转广告页面(域名输错)或者访问页面被加广告(页面加载时有些元素的域名错误而触发)这种劫持会对用户访问的目标HOST、URI、 referrer等会进行判定来确定是否解析恶意站点地址,不易被发现。
3.直接将特点站点解析到恶意或者广告页面,这种情况比较恶劣,而且出现这种情况未必就是运营商所为,家里路由器被黑,或者系统被入侵,甚至运营商的某些节点被第三方恶意控制都有可能。具体情况要具体分析,这里就不展开了。
DNS劫持常见于使用自动的DNS地址,所以,不管有没有被劫持,尽量不要使用运营商默认的DNS。
HTTP劫持
HTTP劫持:你DNS解析的域名的IP地址不变。在和网站交互过程中的劫持了你的请求。在网站发给你信息前就给你返回了请求。
HTTP劫持很好判断,当年正常访问一个无广告的页面时,页面上出现广告弹窗,八成就是运营商劫持了HTTP。下图中,右下角的广告并不是所访问的网站放置的。
HTTP劫持比较出名的是360导航的首页,曾经被某运营商弹出广告,而且只有用户打开360导航时才会出现该广告,以至于很多用户认为这是360自己的广告,引发了大量投诉,结果最后被证实是运营商干的。
关于DNS劫持和HTTP劫持,打个比方来描述这两种劫持,DNS劫持就是你想去存钱运营商却把你拉到了劫匪手中;而HTTP劫持就是你从服务器买了一包零食电信给你放了一坨屎,横竖都很恶心人。
解决办法
如果你遇到类似情况,可以先给运营商打电话投诉,说明自己遇到劫持了。一般彻底处理的办法,是没有的,因为劫持的现象一般是发生在运营商的DNS服务器层面,而在国内,运营商大大小小很多家且均属于商业企业无法有效处理。
目前市面上一些针对劫持现象的解决办法是,通过全国各地多地采取分步节点的方式,24小时不断刷新运营商的DNS缓存,如果运营商的DNS缓存一直都能获取到权威DNS下发的解析记录,那么劫持自然无疾而终,将这种方法运用到实践当中的解析服务提供商也已经开始在使用,例如dns.com的云加速产品就是利用这个原理。
当然,如果想要彻底的从根本上解决DNS劫持或者HTTP劫持,还需要从国内的网络运营商管理入手,建立统一的解析管理机制和反馈投诉渠道,才能从源头上清理出所有病因。
(2017-07-19)
最近,我们又获得了一架无人机!
作为一个技术党
作为好奇心暴强的人
不搞(zuo)一波岂不是很对不起自己?
准备工作
hackrf 一台
一台已经装好Kali Linux的电脑
遥控无人机和配套的遥控器
无人机
遥控器
hackrf环境配置见前几篇文章,这里不再赘述。
拆解
在对设备进行反复的操作之后,发现所获得资料实在太少,甚至连无人机工作的具体频段都无法获知,仅仅知识知道工作在2.4G频段附近。
为获得更多更详细资料,我们对遥控器和无人机进行了拆解。
对遥控器的拆解
可以发现遥控器的控制板上仅仅只有一颗芯片,所以这颗芯片应该就是整个遥控器的控制核心。这颗芯片的型号是XNS104芯片。查询得知,这是一颗AD型2.4G 高速无线收发单片机芯片,可以进行编程和无线收发通信。
对无人机的拆解
1为XN297L芯片。但是芯片2被厂家抹去了芯片型号。(啧啧啧,一定是个重要的芯片)
现在获得的芯片有无人机上的XN297L芯片和遥控器的XNS104芯片。
XN297L芯片只有无线收发的功能,无法作为无人机的MCU(主控芯片)。所以可推断获知无人机上面被抹去信号的芯片应该是一颗MCU芯片。
无人机和遥控器之间的通信通过XN297L芯片和XNS104芯片进行。XNS104芯片集成了XN297芯片的功能,所以两者的通信机制应该是基于XN297芯片的。
接下来,我们需要分析XN297L芯片的具体通信状况。通过技术手册,我们发现这样的内容,如下所示。
如此看来,重放攻击似乎是不大可行的,但是柳暗花明又一村,翻到最底部的时候突然看到了XN297L的数据报格式,具体如下图所示:
从数据报文里面可以发现PID码仅仅只有两个比特位,因此这里使用的PID并不是为了防止重放攻击的,而是用来去除重复数据报文的。仅仅两个比特位的PID码可以在短时间内遍历,所以重放攻击应该是可行的,确认了这一点之后,就可以展开下面的劫持操作了。
劫持
劫持这个类型的无人机,我们需要去获取遥控器发射的信号。首先来看看无人机的工作机制。
工作机制
首次对码,确认无人机处于可以使用的状态
二次对码,成功建立遥控器和无人机的通信线路
最后,遥控器成功操控无人机
前两者在开启遥控器和无人机的时候会自动完成,但是对于劫持而言,我们需要去模拟这两个步骤,从而获取到无人机的控制权。
获取无人机和遥控器的一次对码信息
使用kali Linux下的gqrx来确定配对信息的所在频率,单独打开无人机,信道表现如下图所示,信道中没有任何信息
开启遥控器之后,信道中开始出现大量内容,如下图
由上可知,首次对码信息仅仅由遥控器发出,无人机仅仅来接收这个信息。所以,我们可以录制相应的频段信息来获得模拟遥控器和无人机之间的对码过程。
录制信息的hackrf操作
hackrf_transfer –r fly.raw –f 2479000000 –g 16 –l 8 –s 8000000 –b 4000000
在Kali Linux上面执行上述操作后,如下图所示:
获取无人机的二次对码信息
获得了无人机的一次对码信息之后,接下来就需要去获取无人机的二次对码信息。
无人机的二次对码信息比一次对码信息更加的复杂,这是由于一次对码完成之后,二次对码中就引入了ACK机制,来确保无人机收到二次对码的信息。
所以在这一步中,虽然同样可以使用重放攻击,但是需要对针对ACK机制,多次重放二次对码的数据报文段。具体的录制操作和和一次对码的类似。
获得了上述报文之后,就可以去获取飞机的操作信息了,操作信息的处理方法和二次对码的相同。不同的是,需要确保操作信息录制的时间长度,来防止PID机制将重放出去的信号当作重复的报文进行丢弃。
happy的重放过程
在之前那篇门铃重放中,我们使用了GNU radio工具来重放信号,不得不说可视化的软件减少了很多的操作步骤。
但是这一次,我们直接使用hackrf来进行录制信号的重放,我们将这个操作写成了shell脚本,接下来只需要执行shell脚本就可以了。具体的shell脚本如下所示:
#!/bin/bash
hackrf_transfer -t flystart.raw -f 2479000000 -a 1 -s 8000000 -b 4000000 -x 47
hackrf_transfer -t flying.raw -f 2479000000 -a 1 -s 8000000 -b 400000 -x 47
这样,我们就完成了无人机的劫持
Duang~
大家可以看到,期初飞机在正常飞
用hackrf播放事先录制好的下降信息,飞机就下降了
脚本很简单哦,是不是已经迫不及待想动手尝试一下啦!
特别注意
由于ACK和PID机制的存在,录制信号的时候,请确保无人机和遥控器同时处于开启状态,否则,录制的信号很可能是无效的!
实验时,由于工作在2.4GHz频段的设备有很多,比如说WIFI蓝牙等,所以请找一个无线电环境比较好的地方,进行本次实验!
安全提示
在对这架无人机研究过程中,可以发现这架无人机具有以下弱点:首先PID码的位数不够长,使得重放攻击能够通过一些修改和变通来实现;第二点,在ACK机制上面,没有充分利用ACK的安全机制,代码上也没有实施芯片拥有的双向认证功能。
也希望有关厂商能够对这两个问题进行修复,使这架无人机变得更加安全。
(2017-07-14)
最近看到周围有小伙伴在研究GPS定位,打算伪造GPS信号更改手机定位位置。但是手机定位可不仅仅是通过GPS,还有Wi-Fi和基站定位。正是基于这样的背景,我们开始研究劫持Wi-Fi定位。
1. 唯一地址
每一个无线AP(Access Point,把有线网络转化为无线网络)都有其唯一的MAC地址
2. 广播地址
无线AP会广播出自身的MAC地址,当设备开启无线局域网时无论是否连接都会扫描到接入点并获得它的MAC地址
3. 服务器检索
设备将附近的热点信息上传到服务器,服务器根据已有的数据和位置信息判断设备所在位置并返回定位结果
4. 众包
在获取自身定位信息的同时,设备也将周围无线AP的MAC地址以及位置信息上传到了服务器上,当其他设备在附近时可以使用这些信息进行定位
测试
知道了原理我们很容易就能想到劫持定位的简单办法就是伪造足够多的热点以欺骗服务器。因为伪造的热点信息需要已经在数据库中,所以需要获取伪造地点附近的真实热点信息。
当然现有的热点信号会干扰结果,因此在周围热点数量较少时比较容易成功。
在开始测试前,我们需要一张USB无线网卡
↑↑↑就是上面这货↑↑↑
看上去是个功率很大的网卡......
软件方面,需要安装好aircrack-ng、mdk3和wireshark。当然如果你用的是kali-linux的话,都已经内置好了。
安装完软件之后呢?
连接上无线网卡,在终端中输入命令:
sudo airmon-ng check kill
sudo airmon-ng start wlan0
似乎网卡已经连接上了
如果你想伪造地点,最重要的是获取这个地方的Wi-Fi信息,所以......亲自带上你心爱的电脑和网卡使用wireshark去收集一波......
当然,如果能通过社工的方式找到捷径也是极好的
还是先了解下后面的步骤吧
把你收集到的信息存到一个result.txt文件里,然后在终端执行:
sudo mdk3 wlan0mon b -v result.txt
打开地图,就发现位置已经不对啦!
显示位置不对
总结
当然,手机开启GPS和蜂窝数据的时候劫持的目的很难达到,所以感兴趣的小伙伴可以在下一篇GPS欺骗的文章阅读一下!
(2017-07-10)
#成都新闻#【歹徒劫持人质 危急时刻#成都黑豹特警#一根手指救8名人质】李建华,现任成都市公安局特警支队"黑豹"大队副大队长,入警至今累计处置各类配侦抓捕任务220起。工作常让他置身危险之中,近年来挑战最大的一次当属2016年德阳6·20涉枪涉毒系列案,嫌疑人劫持8名人质并向警方开枪,危急时刻,李建华找准时机一把控制住嫌疑人手中已经上膛的枪支套筒,凭着对枪械结构烂熟于心的了解,他将左手食指插入枪膛的缝隙,阻止了枪支击发。最终靠着这根手指,8名人质全部获救无一伤亡,但他食指却受伤严重,骨头都露了出来。转发,致敬特警!成都“黑豹”特警李建华 一根指头救下8名人质
(2017-06-23)