你的银行卡,我的钱——POS机安全初探[转]

【前言】

  现代社会,刷卡已经非普及了,所以POS系统(Point Of Sales System)的应用非常普遍,在商场、餐厅、酒店、医院等场所都能见到它的身影。



  移动支付体系下的新式的POS机一般是连接第三方支付机构使用银行卡快捷支付,技术上引入了蓝牙/WiFi/音频(用于POS刷卡器与POS终端主机通讯)、Android/iOS(POS终端主机APP支持的系统),更便捷的同时引入更多安全问题。



  我们针对几个品牌的POS机进行了安全测试,结果却让人感觉害怕:把卡在黑客控制的POS机上刷一下后,银行卡还在你手上,黑客却可以继续刷卡,刷光里面的钱(你的卡,我的钱)。

【场景演示】

   我们分析了国内几款知名的POS机,发现其系统设计都存在类似的安全漏洞,经过对数据篡改后,可以对刷卡的人扣取任意费用。



   无图无真相,看下图。

1.jpg

   漏洞原理比较简单,但是影响却让人感觉害怕。我们遵循负责任的安全漏洞报告流程,漏洞细节已经报告给相关厂商修复。

【技术分析】

  现在到了技术分析时间。



   我们分析发现,该款POS机在向服务端发送指令时是包含了一个防止重放攻击的随机数,但是服务端却没有验证随机数,结果就是POS机向服务端发的包可以重放攻击。同时,POS终端发出的指令包也没有数字签名,可以任意修改。



  于是漏洞就产生了,攻击者通过正常刷卡获得受害者银行卡的一些信息后,可以自行生成一个付款指令到服务端,这样受害者的银行卡就被扣款了。



  大致的漏洞示意图如下(具体的细节就略过):

2.jpg

  修复方法也比较简单,服务端校验这个随机数就可以了。这样即使是重放,由于随机数已经出现过了,所以攻击会失效。但是问题又来了,黑客如果直接拦截改包而不是嗅探,那么怎么防护呢?加一个数字签名吧。



  这个漏洞的本质是信息化后不安全的IT系统洞穿了基于“拥有”(银行卡)加基于“知道”(密码)的身份认证体系。试想一下,未来的生物特征(指纹、声纹、虹膜等)认证方式同样是信息化的,是否也会存在这种隐患呢?

【防范恶意POS机】

  通过上文可以看到,POS机的安全隐患还是较大的,现在我们的研究团队成员出门刷卡时看到POS机心里就特紧张。



  那么,怎么防范呢?



  金融安全关系重大,特别是随着互联网金融的兴起和发展,带来的安全问题只会越来越多,监管机构、厂商和普通用户都应该对此引起足够重视。



   对于监管机构来说,厂商发布的金融类产品的安全质量应有切实可行的规章制度流程来保证。



   对于厂商来说,硬件设备要遵循SDL流程,将大部分安全风险消除在发布前——毕竟终端的升级成本会高于在线服务很多,而且随着互联网金融的发展,传统金融行业隐匿起来的安全风险会被更多的发现。



   对于普通用户来说,为了防备恶意POS机,最好准备两张卡,一张专门用于存钱,一张专门用于刷卡和网银,这样即使被盗刷了损失也可控;同时开通银行的单笔消费通知(微信和短信双管齐下),如果有异常消费就可以第一时间发现和处理了。

【后记】

   随着互联网的发展,结合硬件、软件、通讯架构下的智能设备的安全问题还很多,随着时间的推移和业界的关注,这些问题会逐渐爆发出来(比如最近对部分省份电信DNS Server 产生DDoS攻击的感染摄像头的蠕虫)。

kali 2016.1 安装tools

leafpad /etc/apt/sources.list

deb http://http.kali.org/kali kali-rolling main non-free contrib
#中科大的源
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

加入源后apt-get update&&apt-get upgrade
然后再apt-get install open-vm-tools-desktop fuse

简单的反射型XSS漏洞挖掘与防御

<?php

if(!array_key_exists ("name", $_GET) || $_GET['name'] == NULL || $_GET['name'] == ''){

$isempty = true;

} else {

echo '< pre>';
echo 'Hello ' . $_GET['name'];
echo '</ pre>';

}

?>
我们看这段代码,没有经过任何过滤,本地测试,成功弹框4444.png

<?php

if(!array_key_exists ("name", $_GET) || $_GET['name'] == NULL || $_GET['name'] == ''){

$isempty = true;

} else {

echo '< pre>';
echo 'Hello ' . str_replace('< script>', '', $_GET['name']);
echo '</ pre>';

}

?>
下面,来看这段代码,过滤了script,但xss不仅仅是过滤script那么简单的事,本地测试下555.png果然是不可以的,不用script,用img标签,成功弹框。防御的话,过滤script,alert,javascript,<,>,/,img等标签即可66666.png

Google hack

小白文章,不喜勿喷
site:xxxx.gov.cn1

发现了下面这个网站
http://xxxx.gov.cn/ (路边监控)
发现账号是guest,随手打了一下账号 就进去了
2

做渗透的时候,多使用一下google语法!
说不定有什么意外的收获