技术分享:逆向分析ATM分离器
文章内容仅供技术交流,请勿模仿操作!
背景(作者)
每一次外出时, Elizabeth和我总是格外的小心,同时把我们身上的钱藏在特殊的皮带上面,这样还不够,我们还采取了“狡兔三窟”的方式来藏身上带的银行卡,但我们在外出时没有从ATM取款机取走100美元的时候,我们总是手挽手,连走路时候都很小心。期初我认为我也有些偏执症,但由于每一次去取钱还是要输入密码,我也很清楚这一切早晚都会发生的。。。。。
ATM Skimmer
ATM Skimmers 即ATM分离器,Brian Krebs(1995 ~2009 年一直在华盛顿邮报当记者,专门写一些安全相关的文章)曾写过不少关于这些方面的文章,他甚至可以被认为是研究ATM取款机的记者,当然我也在他的文章中得到了很多有关ATM取款机的知识,基本上这些设备就想得到以下两点
攻击者想要得到你的卡号
攻击者想要得到你的银行卡密码
为了得到这些信息,攻击者有不少选择,但使用传统的方式即将ATM分离器偷取你卡里的信息然后偷走你的钱。
当然设备必须尽量靠近读卡器口,这样就更加隐蔽了。甚至有些时候,攻击者会将整个ATM取款机的面板换掉,但更多的时候会在读卡器卡槽里面做手脚,又或者攻击者在ATM取款机的线路上做手脚,他们将这种手法称为“network skimming”。
好吧,假如他们已经获得了你的卡号,下一步不难猜测,就是需要获取你的密码。
这一步有不少犯罪分子已经想到了好的方法,比如利用一些隐蔽的摄像头来记录你在键盘上面的输入信息,当然这也不是很轻松的,比如这种方法就需要有电源来供电并记录信息提供给攻击者,而还有一种方法,覆盖在POS机上面的ATM分离器,详情:点击我
那么应该如何保护自己呢?
这里有两点建议:
1.可以用手去拉一拉读卡器的口,看看有没有松动。有些情况下,那些ATM分离器可能是用胶粘的,所以试试还是很有用的。
2.在你输入密码的时候需要用手来覆盖在上面,这样即使有隐蔽的摄像机也没有那么容易获取到你密码了。
在印度尼西亚巴厘岛一家食品杂货店外发现有问题的ATM
虽然照片不多,但是几乎每个ATM取款机都有自己的独立入口,这样游客看到这样的设施也会感到比较安全,因为这样不会在大街上交易被人打劫。我之前用过这个ATM取款机,当我和Elizabeth 取钱的时候,我曾尝试拉下读卡器口,结果悲剧了。即使没有出现这种情况,但有隐藏的摄像头并在输入密码的时候没有用手掩饰,那么密码也会被盗取。
很明显这就是ATM分离器,它有一个小开关以及一个供电端口,我甚至可以在黑暗中看到微弱的蓝光。
出现了这种情况我也不知道该肿么办,但这个也不是我安装上的,但为了更详细的分析,我决定将这个带回家好好分析一下,看看是怎么工作的。然后作者开始猜测是不是像电影情节一样卷入了一场风波,最后有一群摩托党将他们击毙。
逆向分析
1.端口分析
我们回到家之后就开始拆解,最后发现前面的那个端口非常有特点,于是猜测这应该就是攻击者下载键盘记录数据接口。
在图片里面可以看见一共有四根线,我立刻就想到了“USB”,我利用实验室的工具,将手机充电器的线打开一部分,并进行了对比。
下面我将会了解每根线的作用,我认为这都和USB接口类似可以参考下面的图片进行比对。
2.穿线
把整理好的电线穿过小洞,40分钟后,我终于完成了线的整理工作。
然后我将手里的线通过USB端口接入我的电脑,在进行这一步的时候把我吓了一跳,我开始从设备复制文件,这里有两个文件夹,一个是“Google Drive”,另外一个是“VIDEO”。最后一个文件夹是空的,视频文件总大小是11G,在45分钟之后将文件全部复制到了电脑上,在这一段时间我一直都保持设备以及电脑不动,防止因抖动设备造成的断线情况,而这其中大部分都是记录输入密码的信息。
视频观看
设备记录了声音,我起初以为记录声音没有大用,但是看到视频之后才意识到是比较有用的,通过按键的声音也可以记录更多有效的信息,当然一般情况下不会按更多的按键来混淆视听,最后钱的声音也不是没有用的,这样可以确认这个卡是有攻击价值的。这里面还有一些有趣的片段,比如安装分离器,但是没有看到人脸或者一些标识信息比如纹身等。
完整拆解
这一步是比较痛苦的,因为这个塑料外壳是一体的,并用热熔胶固定好了,下面的图可以简单诠释是如何实现工作的
这个外壳看起来像一个把手,这个应该是从某个地方订购的。黄色的部分应该是一种伪装,想要砸掉黄色部分并且不破坏产品很困难,花了一段时间,我终于看到了里面的部分。
在左边可以看到电源(三星的电池),控制面板的右边有排线,上面就可以看到摄像头了。
在网上搜索这个控制面板的信息发现,这是一个小型相机的面板。然后被改装后拿来使用,包括电池部分,开关以及USB连接部分(前面提到了)。
总的来说,这个分离器设计的还是可以的。如之前所述,我认为录音是一种不实际的考虑,但是后来发现这算是一种优势。但对于电池我也有了新的认识,这样可以长时间的储存密码以及窃取来的相关信息。同时这种制作的设备优势在于:尺寸、内置运动侦测、内置存储空间、内置的USB连接、低功耗。值得注意的是,该装置是手工制作,不是批量生产的那种。也就是说攻击者必须手动上传以及下载一些信息,可以做出这样一个推测他们应该留有备用的,但他们手里应该持有少量的设备。为了验证这一理论,我决定几天后再回去。
我没有发现ATM分离器,而银行方面在这个期间也没有给我打电话,而我也表示很高兴能够研究这样一个东西,好吧,文章到这里就结束了,希望文章能给你带来更多的思路以及方法。
*原文:trustfoundry
技术分享:逆向分析ATM分离器的更多相关文章
- C++反汇编与逆向分析技术揭秘
C++反汇编-继承和多重继承 学无止尽,积土成山,积水成渊-<C++反汇编与逆向分析技术揭秘> 读书笔记 一.单类继承 在父类中声明为私有的成员,子类对象无法直接访问,但是在子类对象的 ...
- 20145307陈俊达_安卓逆向分析_Xposed的hook技术研究
20145307陈俊达_安卓逆向分析_Xposed的hook技术研究 引言 其实这份我早就想写了,xposed这个东西我在安卓SDK 4.4.4的时候就在玩了,root后安装架构,起初是为了实现一些屌 ...
- 《C++反汇编与逆向分析技术揭秘》--算术运算和赋值
一.加法 1.Debug下: 14: int nVarOne0 = 1 + 5 - 3 * 6;//编译时计算得到结果 00C0550E C7 45 F8 F4 FF FF FF mov dword ...
- 《C++反汇编与逆向分析技术揭秘》--认识启动函数,找到用户入口
<C++反汇编与逆向分析>和<程序员的自我修养>都是以VC6的代码作为例子讲解的.这里是在vs2017下,CRT代码有些区别,但整体流程上都是初始化环境,设置参数,最后转到用户 ...
- IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习
相关学习资料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/I ...
- 【开源.NET】 分享一个前后端分离的轻量级内容管理框架
开发框架要考虑的面太多了:安全.稳定.性能.效率.扩展.整洁,还要经得起实践的考验,从零开发一个可用的框架,是很耗时费神的工作.网上很多开源的框架,为何还要自己开发?我是基于以下两点: 没找到合适的: ...
- 一文了解安卓APP逆向分析与保护机制
"知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物 ...
- 知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路
本文来自知乎官方技术团队的“知乎技术专栏”,感谢原作者陈鹏的无私分享. 1.引言 知乎存储平台团队基于开源Redis 组件打造的知乎 Redis 平台,经过不断的研发迭代,目前已经形成了一整套完整自动 ...
- 腾讯技术分享:微信小程序音视频技术背后的故事
1.引言 微信小程序自2017年1月9日正式对外公布以来,越来越受到关注和重视,小程序上的各种技术体验也越来越丰富.而音视频作为高速移动网络时代下增长最快的应用形式之一,在微信小程序中也当然不能错过. ...
随机推荐
- Sql Server判断某列字段是否为空或判断某列字段长度
1.用is null 和 is not null来判断字段是否为空. 2.用len()函数来判断字段长度.
- angular--todomvc
类名:ng-class="{completed:todo.completed}" ng-repeat="todo in todoData" ng-model=& ...
- Python 练习 21
#!/usr/bin/python # -*- coding: UTF-8 -*- h = 0 leap = 1 from math import sqrt from sys import stdou ...
- 笔记13:File 类的一些操作
一.对文件的创建(create) private void button1_Click(object sender, EventArgs e) { File.Create(@"F:\\QQP ...
- poj1122 FDNY to the Rescue!(dij+反向建图+输出路径)
题目链接:poj1122 FDNY to the Rescue! 题意:给出矩阵,矩阵中每个元素tij表示从第i个交叉路口到第j个交叉路口所需时间,若tij为-1则表示两交叉路口之间没有直接路径,再给 ...
- JButton计数
1.引言 在Swing窗口中,我们时常会点击按钮进行计数,例如点击按钮A,第一次弹出窗口1,第二次弹出窗口2....以及按钮的快捷键设置. import java.awt.event.ActionEv ...
- 《Play for Java》学习笔记(七)数据类型解析——Body parser
一.什么是body parser? body parser(不知道具体如何翻译,~~~~(>_<)~~~~ )指一个HTTP请求 (如POST和PUT操作)所包含的文本内容(body),这 ...
- Android TextView标签的显示
在默认情况下,如果一个TextView中的文字太多,会跨行显示, 通过下面两个参数的设置,可以使TextView固定显示一行,未显示完成的后面用...... android:maxLines=&quo ...
- [整][转]Invoke和BeginInvoke的使用
在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate. 一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是do ...
- java面向对象编程——第八章 类的高级概念
8.1访问修饰符: public:该类或非该类均可访问: private: 只有该类可以访问: protected:该类及其子类的成员可以访问,同一个包中的类也可以访问: 默认:相同数据包中的类可以访 ...